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.

824 lines
36 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 System;
  7. using System.Collections.Generic;
  8. using System.Configuration;
  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 CartonNoManageController : ControllerBase
  19. {
  20. private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
  21. private CartonNoManageApp App = new CartonNoManageApp();
  22. public ActionResult Index()
  23. {
  24. return View();
  25. }
  26. public ActionResult CartonNoAdd()
  27. {
  28. return View();
  29. }
  30. public ActionResult CartonNoUpdate()
  31. {
  32. return View();
  33. }
  34. public ActionResult SeachLotNo()
  35. {
  36. return View();
  37. }
  38. public ActionResult CartonNoAddByASN()
  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 CartonNo, Pagination pagination)
  59. {
  60. DataTable ListData = App.GetSubGridJson(CartonNo, ref pagination);
  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. [HttpGet]
  71. [HandlerAjaxOnly]
  72. public ActionResult GetSubGridJsons(string CartonNo,string WorkPointCode ,Pagination pagination)
  73. {
  74. DataTable ListData = App.GetSubGridJsons(CartonNo, WorkPointCode, ref pagination);
  75. var JsonData = new
  76. {
  77. total = pagination.total,
  78. page = pagination.page,
  79. records = pagination.records,
  80. rows = ListData,
  81. };
  82. return Content(JsonData.ToJson());
  83. }
  84. [HttpGet]
  85. [HandlerAjaxOnly]
  86. public ActionResult GetSubGridJson_Add(string queryJson,string WorkPoint, Pagination pagination)
  87. {
  88. DataTable ListData = App.GetSubGridJson_Add(queryJson, WorkPoint, ref pagination);
  89. var JsonData = new
  90. {
  91. total = pagination.total,
  92. page = pagination.page,
  93. records = pagination.records,
  94. rows = ListData,
  95. };
  96. return Content(JsonData.ToJson());
  97. }
  98. [HttpGet]
  99. [HandlerAjaxOnly]
  100. public ActionResult GetSubGridJson_AddByAsn(string queryJson, string WorkPoint, Pagination pagination)
  101. {
  102. DataTable ListData = App.GetSubGridJson_AddByAsn(queryJson, WorkPoint, ref pagination);
  103. var JsonData = new
  104. {
  105. total = pagination.total,
  106. page = pagination.page,
  107. records = pagination.records,
  108. rows = ListData,
  109. };
  110. return Content(JsonData.ToJson());
  111. }
  112. //[HttpGet]
  113. //[HandlerAjaxOnly]
  114. //public ActionResult GetFormJson(string keyValue)
  115. //{
  116. // //var data = maintainAppApp.GetForm(keyValue);
  117. // //return Content(data.ToJson());
  118. //}
  119. [HttpPost]
  120. [HandlerAjaxOnly]
  121. [ValidateAntiForgeryToken]
  122. public ActionResult SubmitForm(string POCode, string PORow, string keyValue)
  123. {
  124. int i = App.CreateItemLotNo(POCode, PORow, keyValue);
  125. if (i > 0)
  126. {
  127. return Success("发布成功!");
  128. }
  129. else
  130. {
  131. return Error("发布失败!");
  132. }
  133. }
  134. [HttpGet]
  135. [HandlerAjaxOnly]
  136. public ActionResult GetSubGridJsonByCreate(string POCode, string PORow)
  137. {
  138. DataTable ListData = App.GetSubGridJsonByCreate(POCode, PORow);
  139. var JsonData = new
  140. {
  141. rows = ListData,
  142. };
  143. return Content(JsonData.ToJson());
  144. }
  145. [HttpGet]
  146. [HandlerAjaxOnly]
  147. public ActionResult GetVendorLotNo(string VenCode, string WorkPoint)
  148. {
  149. DataTable ListData = App.GetVendorLotNo(VenCode, WorkPoint);
  150. var JsonData = new
  151. {
  152. VendorLotNo = ListData.Rows[0][0].ToString(),
  153. };
  154. return Content(JsonData.ToJson());
  155. }
  156. [HttpPost]
  157. [HandlerAjaxOnly]
  158. [ValidateAntiForgeryToken]
  159. public ActionResult DeleteCartonNo(string keyValue, string Work)
  160. {
  161. string msg = App.DeleteCartonNo(keyValue, Work);
  162. if (string.IsNullOrEmpty(msg))
  163. {
  164. return Success("删除成功!");
  165. }
  166. else
  167. {
  168. return Error(msg);
  169. }
  170. }
  171. [HttpGet]
  172. [HandlerAjaxOnly]
  173. public ActionResult CheckIsAll(string CartonNo)
  174. {
  175. string _result = App.CheckIsAll(CartonNo);
  176. var JsonData = new
  177. {
  178. result = _result
  179. };
  180. return Content(JsonData.ToJson());
  181. }
  182. #region 打印
  183. /// <summary>
  184. /// 打印数据参数:服务器的URL+打印的文件名,转化为Base64编码
  185. /// </summary>
  186. protected string strPrintData;
  187. /// <summary>
  188. /// 标识是否安装了控件
  189. /// </summary>
  190. protected bool bIsInstallPrintControl = true;
  191. /// <summary>
  192. /// 打印控件的Cookie值
  193. /// </summary>
  194. protected string strPrintControlCookie = "";
  195. /// <summary>
  196. /// 获取Url中去掉文件名的路径
  197. /// </summary>
  198. /// <returns></returns>
  199. private string GetUrlPath()
  200. {
  201. string strUrl = Request.Url.ToString();
  202. int iEnd = strUrl.LastIndexOf("/");
  203. strUrl = strUrl.Substring(0, iEnd + 1);
  204. return strUrl;
  205. }
  206. /// <summary>
  207. /// 设置控件调用的Cookie值,判断是否安装了打印控件
  208. /// </summary>
  209. /// <param name="pJson"></param>
  210. private void SetCookieAndURL(PrintJson pJson)
  211. {
  212. bIsInstallPrintControl = false;
  213. strPrintControlCookie = "";
  214. HttpCookie pCookieInstall = Request.Cookies["InstallPrintControl"];
  215. if (pCookieInstall != null)
  216. { //Cookie存在
  217. strPrintControlCookie = pCookieInstall.Value.ToString();
  218. //以Cookie值查找在数据表中是否存在
  219. string strSql = @"Select * From sys_SRM_CheckInstall Where Cookie = @Cookie";
  220. SqlParameter[] pmcCookie = { new SqlParameter("Cookie", strPrintControlCookie) };
  221. using (SqlDataReader drCookie = DbHelper.ExecuteReader(DbHelper.ConnectionString, CommandType.Text, strSql, pmcCookie))
  222. {
  223. if (drCookie.Read())
  224. { //标识为已经安装
  225. bIsInstallPrintControl = true;
  226. }
  227. drCookie.Close();
  228. }
  229. //更新Cookie的保存时间
  230. pCookieInstall.Expires = DateTime.Now.AddYears(10);
  231. Response.SetCookie(pCookieInstall);
  232. }
  233. else
  234. {//Cookie不存在,则新建Cookie
  235. strPrintControlCookie = System.Guid.NewGuid().ToString();
  236. pCookieInstall = new HttpCookie("InstallPrintControl", strPrintControlCookie);
  237. pCookieInstall.Expires = DateTime.Now.AddYears(10);
  238. Response.Cookies.Add(pCookieInstall);
  239. }
  240. string strUrl = Server.MapPath("/PrintTemp/") + "IsCheckInstall";
  241. pJson.SetCookieAndURL(strPrintControlCookie, strUrl);
  242. }
  243. [HttpPost]
  244. [HandlerAjaxOnly]
  245. public ActionResult PrintItemLot(string keyValue,string Type)
  246. {
  247. string strSql = string.Empty;
  248. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  249. string CusterJC = ConfigurationManager.ConnectionStrings["CusterJC"].ConnectionString;
  250. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  251. string strPrintFileName = Server.MapPath("/ReportFile/") + "CartonNo.fr3";
  252. PrintJson pJson = new PrintJson(Server.MapPath("./PrintTemp"), strPrintFileName);
  253. pJson.CheckRegister("苏州智合诚信息科技有限公司", "56DD3B4C172D0D140841CAC98A58A819F4E28EDA5D6E45711DDD64F6A439F68B6A7870CD7DAFD69A919CB870207FE4BB206F92BE3D53C221B019E0797E739EBA4"); //注册信息
  254. SetCookieAndURL(pJson);// 设置控件调用的Cookie值,判断是否安装了打印控件
  255. string strPrintTempFile = string.Empty;
  256. log.Info("界面传参:"+ Type);
  257. if (CusterJC == "咖博士")
  258. {
  259. pJson.MasterOptions(1, "ContainerCode", false); //主从关系
  260. strSql = @" SELECT DISTINCT a.ContainerCode,f.VenName
  261. FROM ICSContainer a
  262. LEFT JOIN ICSContainerLot b ON a.ID=b.ContainerID AND a.WorkPOint=b.WorkPOint
  263. LEFT JOIN ICSInventoryLot c ON b.lotno=c.lotno AND b.WorkPOint=c.WorkPOint
  264. LEFT JOIN icsVendor f ON a.EATTRIBUTE8=f.VenCode and a.WorkPoint=f.WorkPoint
  265. LEFT JOIN ICSInventory g ON c.InvCode=g.INvCode AND c.WorkPoint=g.WorkPoint
  266. WHERE 1=1 and a.ContainerType='ContainerType01'
  267. and a.ContainerCode IN (" + keyValue.TrimEnd(',') + ") and a.WorkPoint=" + WorkPoint.TrimEnd(',');
  268. DataTable dtInInfo = DbHelper.ExecuteTable(DbHelper.ConnectionString, CommandType.Text, strSql, true, null);
  269. strSql = @" SELECT DISTINCT c.invCode,g.InvName,sum(c.Quantity) AS Quantity,a.ContainerCode,f.VenName
  270. FROM ICSContainer a
  271. LEFT JOIN ICSContainerLot b ON a.ID=b.ContainerID AND a.WorkPOint=b.WorkPOint
  272. LEFT JOIN ICSInventoryLot c ON b.lotno=c.lotno AND b.WorkPOint=c.WorkPOint
  273. LEFT JOIN icsVendor f ON a.EATTRIBUTE8=f.VenCode and a.WorkPoint=f.WorkPoint
  274. LEFT JOIN ICSInventory g ON c.InvCode=g.INvCode AND c.WorkPoint=g.WorkPoint
  275. WHERE 1=1 and a.ContainerType='ContainerType01'
  276. and a.ContainerCode IN (" + keyValue.TrimEnd(',') + ") and a.WorkPoint=" + WorkPoint.TrimEnd(',');
  277. strSql += " group by c.InvCode,g.InvName,a.ContainerCode,f.VenName ";
  278. DataTable dtInMaterial = DbHelper.ExecuteTable(DbHelper.ConnectionString, CommandType.Text, strSql, true, null);
  279. strPrintTempFile = pJson.ShowReport(dtInInfo,dtInMaterial); //产生JSON文件内容
  280. }
  281. else
  282. {
  283. if (Type == "1")
  284. {
  285. strSql = @"
  286. SELECT DISTINCT f.VenCode,f.VenName, e.EATTRIBUTE4 as PODXEATTRIBUTE4,ContainerCode as QRLotNo,g.invcode,g.invname,g.invstd,e.pocode,CONVERT(varchar(100), a.MTIME, 112) AS BatchCode,g.InvUnit,SUM(c.Quantity) AS Quantity
  287. ,CAST(f.VenCode+'_'+g.InvCode+'_'+CAST(SUM(c.Quantity) AS NVARCHAR(20))+'_'+g.InvUnit+'_'+CONVERT(varchar(100), a.MTIME, 112) AS NVARCHAR(100)) AS erweima,g.EATTRIBUTE11,g.EATTRIBUTE12,g.EATTRIBUTE13,g.EATTRIBUTE14,g.EATTRIBUTE15
  288. ,g.EATTRIBUTE16,g.EATTRIBUTE17,g.EATTRIBUTE18,
  289. CASE WHEN g.EATTRIBUTE19='1'THEN''WHEN g.EATTRIBUTE19='0'THEN'' END EATTRIBUTE19,c.ProductDate
  290. FROM ICSContainer a
  291. LEFT JOIN ICSContainerLot b ON a.ID=b.ContainerID AND a.WorkPOint=b.WorkPOint
  292. LEFT JOIN ICSInventoryLot c ON b.lotno=c.lotno AND b.WorkPOint=c.WorkPOint
  293. left join ICSInventoryLotDetail d on c.lotNo=d.LotNo and c.WorkPoint=d.WorkPoint
  294. LEFT JOIN dbo.ICSPurchaseOrder e ON e.POCode=d.TransCode AND e.Sequence=d.TransSequence AND e.WorkPoint=d.WorkPoint
  295. LEFT JOIN icsVendor f ON f.VenCode=e.VenCode AND f.WorkPoint=e.WorkPoint
  296. LEFT JOIN ICSInventory g ON e.InvCode=g.INvCode AND e.WorkPoint=g.WorkPoint
  297. WHERE 1=1
  298. and a.ContainerCode IN (" + keyValue.TrimEnd(',') + ") and a.WorkPoint in (" + WorkPoint.TrimEnd(',') + ") GROUP BY f.VenCode,f.VenName, e.EATTRIBUTE4 ,ContainerCode,g.INVCode,g.INvName,g.INvStd,e.POCode,g.InvUnit,CONVERT(varchar(100), a.MTIME, 112), g.EATTRIBUTE11,g.EATTRIBUTE12,g.EATTRIBUTE13,g.EATTRIBUTE14,g.EATTRIBUTE15,g.EATTRIBUTE16,g.EATTRIBUTE17,g.EATTRIBUTE18,g.EATTRIBUTE19,c.ProductDate ";
  299. }
  300. else if(Type == "2")
  301. {
  302. strSql = @" SELECT DISTINCT f.VenCode,f.VenName, e.EATTRIBUTE4 as PODXEATTRIBUTE4,ContainerCode as QRLotNo,g.invcode,g.invname,g.invstd,e.OOCode,CONVERT(varchar(100), a.MTIME, 112) AS BatchCode,g.InvUnit,SUM(c.Quantity) AS Quantity
  303. ,CAST(f.VenCode+'_'+g.InvCode+'_'+CAST(SUM(c.Quantity) AS NVARCHAR(20))+'_'+g.InvUnit+'_'+CONVERT(varchar(100), a.MTIME, 112) AS NVARCHAR(100)) AS erweima,g.EATTRIBUTE11,g.EATTRIBUTE12,g.EATTRIBUTE13,g.EATTRIBUTE14,g.EATTRIBUTE15
  304. ,g.EATTRIBUTE16,g.EATTRIBUTE17,g.EATTRIBUTE18,
  305. CASE WHEN g.EATTRIBUTE19='1'THEN''WHEN g.EATTRIBUTE19='0'THEN'' END EATTRIBUTE19,c.ProductDate
  306. FROM ICSContainer a
  307. LEFT JOIN ICSContainerLot b ON a.ID=b.ContainerID AND a.WorkPOint=b.WorkPOint
  308. LEFT JOIN ICSInventoryLot c ON b.lotno=c.lotno AND b.WorkPOint=c.WorkPOint
  309. left join ICSInventoryLotDetail d on c.lotNo=d.LotNo and c.WorkPoint=d.WorkPoint
  310. LEFT JOIN dbo.ICSOutsourcingOrder e ON e.OOCode=d.TransCode AND e.Sequence=d.TransSequence AND e.WorkPoint=d.WorkPoint
  311. LEFT JOIN icsVendor f ON f.VenCode=e.VenCode AND f.WorkPoint=e.WorkPoint
  312. LEFT JOIN ICSInventory g ON e.InvCode=g.INvCode AND e.WorkPoint=g.WorkPoint
  313. WHERE 1=1
  314. and a.ContainerCode IN (" + keyValue.TrimEnd(',') + ") and a.WorkPoint in (" + WorkPoint.TrimEnd(',') + @")
  315. GROUP BY f.VenCode,f.VenName, e.EATTRIBUTE4 ,ContainerCode,g.INVCode,g.INvName,g.INvStd,e.OOCode,g.InvUnit,CONVERT(varchar(100), a.MTIME, 112), g.EATTRIBUTE11,g.EATTRIBUTE12,g.EATTRIBUTE13,g.EATTRIBUTE14,g.EATTRIBUTE15,g.EATTRIBUTE16,g.EATTRIBUTE17,g.EATTRIBUTE18,g.EATTRIBUTE19,c.ProductDate ";
  316. }
  317. log.Info("获取sql:" + strSql);
  318. DataTable dtInMaterial = DbHelper.ExecuteTable(DbHelper.ConnectionString, CommandType.Text, strSql, true, null);
  319. strPrintTempFile = pJson.ShowReport(dtInMaterial,null); //产生JSON文件内容
  320. }
  321. //把服务器的URL + 此文件名 传递给控件,由控件下载还原数据进行打印
  322. string strServerURL = GetUrlPath() + "PrintTemp/";
  323. string strData = strServerURL + strPrintTempFile;
  324. strPrintData = PrintFunction.EnBase64(strData);
  325. var JsonData = new
  326. {
  327. strPrintData_1 = strPrintData,
  328. bIsInstallPrintControl_1 = bIsInstallPrintControl,
  329. strPrintControlCookie_1 = strPrintControlCookie
  330. };
  331. //string sql = @"UPDATE dbo.ICSCarton
  332. // SET PrintTimes=ISNULL(PrintTimes,0)+1,
  333. // lastPrintTime=GETDATE()
  334. // WHERE CartonNO IN (" + keyValue.TrimEnd(',') + ") and WorkPoint='" + WorkPoint + "'";
  335. //SqlHelper.ExecuteNonQuery(sql);
  336. return Content(JsonData.ToJson());
  337. }
  338. [HttpPost]
  339. [HandlerAjaxOnly]
  340. public ActionResult PrintItemLotByContainerType01(string keyValue)
  341. {
  342. string strSql = string.Empty;
  343. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  344. string CusterJC = ConfigurationManager.ConnectionStrings["CusterJC"].ConnectionString;
  345. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  346. string strPrintFileName = Server.MapPath("/ReportFile/") + "CartonNo.fr3";
  347. PrintJson pJson = new PrintJson(Server.MapPath("./PrintTemp"), strPrintFileName);
  348. pJson.CheckRegister("苏州智合诚信息科技有限公司", "56DD3B4C172D0D140841CAC98A58A819F4E28EDA5D6E45711DDD64F6A439F68B6A7870CD7DAFD69A919CB870207FE4BB206F92BE3D53C221B019E0797E739EBA4"); //注册信息
  349. pJson.MasterOptions(1, "ContainerCode", false); //主从关系
  350. SetCookieAndURL(pJson);// 设置控件调用的Cookie值,判断是否安装了打印控件
  351. string strPrintTempFile = string.Empty;
  352. if (CusterJC == "咖博士")
  353. {
  354. strSql = @" SELECT DISTINCT a.ContainerCode,f.VenName
  355. FROM ICSContainer a
  356. LEFT JOIN ICSContainerLot b ON a.ID=b.ContainerID AND a.WorkPOint=b.WorkPOint
  357. LEFT JOIN ICSInventoryLot c ON b.lotno=c.lotno AND b.WorkPOint=c.WorkPOint
  358. LEFT JOIN icsVendor f ON a.EATTRIBUTE8=f.VenCode and a.WorkPoint=f.WorkPoint
  359. LEFT JOIN ICSInventory g ON c.InvCode=g.INvCode AND c.WorkPoint=g.WorkPoint
  360. LEFT JOIN ICSASNDetail h ON c.lotno=h.lotno AND c.WorkPoint=h.WorkPoint
  361. WHERE 1=1 and a.ContainerType='ContainerType01'
  362. and h.ASNCode IN (" + keyValue.TrimEnd(',') + ") and a.WorkPoint=" + WorkPoint.TrimEnd(',');
  363. DataTable dtInInfo = DbHelper.ExecuteTable(DbHelper.ConnectionString, CommandType.Text, strSql, true, null);
  364. strSql = @" SELECT DISTINCT c.invCode,g.InvName,sum(c.Quantity) AS Quantity,a.ContainerCode,f.VenName
  365. FROM ICSContainer a
  366. LEFT JOIN ICSContainerLot b ON a.ID=b.ContainerID AND a.WorkPOint=b.WorkPOint
  367. LEFT JOIN ICSInventoryLot c ON b.lotno=c.lotno AND b.WorkPOint=c.WorkPOint
  368. LEFT JOIN icsVendor f ON a.EATTRIBUTE8=f.VenCode and a.WorkPoint=f.WorkPoint
  369. LEFT JOIN ICSInventory g ON c.InvCode=g.INvCode AND c.WorkPoint=g.WorkPoint
  370. LEFT JOIN ICSASNDetail h ON c.lotno=h.lotno AND c.WorkPoint=h.WorkPoint
  371. WHERE 1=1 and a.ContainerType='ContainerType01'
  372. and h.ASNCode IN (" + keyValue.TrimEnd(',') + ") and a.WorkPoint=" + WorkPoint.TrimEnd(',');
  373. strSql += " group by c.InvCode,g.InvName,a.ContainerCode,f.VenName ";
  374. DataTable dtInMaterial = DbHelper.ExecuteTable(DbHelper.ConnectionString, CommandType.Text, strSql, true, null);
  375. strPrintTempFile = pJson.ShowReport(dtInInfo, dtInMaterial); //产生JSON文件内容
  376. }
  377. //把服务器的URL + 此文件名 传递给控件,由控件下载还原数据进行打印
  378. string strServerURL = GetUrlPath() + "PrintTemp/";
  379. string strData = strServerURL + strPrintTempFile;
  380. strPrintData = PrintFunction.EnBase64(strData);
  381. var JsonData = new
  382. {
  383. strPrintData_1 = strPrintData,
  384. bIsInstallPrintControl_1 = bIsInstallPrintControl,
  385. strPrintControlCookie_1 = strPrintControlCookie
  386. };
  387. //string sql = @"UPDATE dbo.ICSCarton
  388. // SET PrintTimes=ISNULL(PrintTimes,0)+1,
  389. // lastPrintTime=GETDATE()
  390. // WHERE CartonNO IN (" + keyValue.TrimEnd(',') + ") and WorkPoint='" + WorkPoint + "'";
  391. //SqlHelper.ExecuteNonQuery(sql);
  392. return Content(JsonData.ToJson());
  393. }
  394. [HttpPost]
  395. [HandlerAjaxOnly]
  396. public ActionResult PrintItemLotByOOContainerType01(string keyValue)
  397. {
  398. string strSql = string.Empty;
  399. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  400. string CusterJC = ConfigurationManager.ConnectionStrings["CusterJC"].ConnectionString;
  401. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  402. string strPrintFileName = Server.MapPath("/ReportFile/") + "CartonNo.fr3";
  403. PrintJson pJson = new PrintJson(Server.MapPath("./PrintTemp"), strPrintFileName);
  404. pJson.CheckRegister("苏州智合诚信息科技有限公司", "56DD3B4C172D0D140841CAC98A58A819F4E28EDA5D6E45711DDD64F6A439F68B6A7870CD7DAFD69A919CB870207FE4BB206F92BE3D53C221B019E0797E739EBA4"); //注册信息
  405. //pJson.MasterOptions(1, "ContainerCode", false); //主从关系
  406. SetCookieAndURL(pJson);// 设置控件调用的Cookie值,判断是否安装了打印控件
  407. string strPrintTempFile = string.Empty;
  408. //string strSql = @"SELECT * FROM ICSContainer WHERE EATTRIBUTE3='SRM'
  409. //and ContainerCode IN (" + keyValue.TrimEnd(',') + ") and WorkPoint=" + WorkPoint.TrimEnd(',') + "";
  410. //DataTable dtInInfo = DbHelper.ExecuteTable(DbHelper.ConnectionString, CommandType.Text, strSql, true, null);
  411. if (CusterJC == "咖博士")
  412. {
  413. strSql = @" SELECT DISTINCT a.ContainerCode,f.VenName
  414. FROM ICSContainer a
  415. LEFT JOIN ICSContainerLot b ON a.ID=b.ContainerID AND a.WorkPOint=b.WorkPOint
  416. LEFT JOIN ICSInventoryLot c ON b.lotno=c.lotno AND b.WorkPOint=c.WorkPOint
  417. LEFT JOIN icsVendor f ON a.EATTRIBUTE8=f.VenCode and a.WorkPoint=f.WorkPoint
  418. LEFT JOIN ICSInventory g ON c.InvCode=g.INvCode AND c.WorkPoint=g.WorkPoint
  419. LEFT JOIN ICSOASNDetail h ON c.lotno=h.lotno AND c.WorkPoint=h.WorkPoint
  420. WHERE 1=1 and a.ContainerType='ContainerType01'
  421. and h.OASNCode IN (" + keyValue.TrimEnd(',') + ") and a.WorkPoint=" + WorkPoint.TrimEnd(',');
  422. DataTable dtInInfo = DbHelper.ExecuteTable(DbHelper.ConnectionString, CommandType.Text, strSql, true, null);
  423. strSql = @" SELECT DISTINCT c.invCode,g.InvName,sum(c.Quantity) AS Quantity,a.ContainerCode,f.VenName
  424. FROM ICSContainer a
  425. LEFT JOIN ICSContainerLot b ON a.ID=b.ContainerID AND a.WorkPOint=b.WorkPOint
  426. LEFT JOIN ICSInventoryLot c ON b.lotno=c.lotno AND b.WorkPOint=c.WorkPOint
  427. LEFT JOIN icsVendor f ON a.EATTRIBUTE8=f.VenCode and a.WorkPoint=f.WorkPoint
  428. LEFT JOIN ICSInventory g ON c.InvCode=g.INvCode AND c.WorkPoint=g.WorkPoint
  429. LEFT JOIN ICSOASNDetail h ON c.lotno=h.lotno AND c.WorkPoint=h.WorkPoint
  430. WHERE 1=1 and a.ContainerType='ContainerType01'
  431. and h.OASNCode IN (" + keyValue.TrimEnd(',') + ") and a.WorkPoint=" + WorkPoint.TrimEnd(',');
  432. strSql += " group by c.InvCode,g.InvName,a.ContainerCode,f.VenName ";
  433. DataTable dtInMaterial = DbHelper.ExecuteTable(DbHelper.ConnectionString, CommandType.Text, strSql, true, null);
  434. strPrintTempFile = pJson.ShowReport(dtInInfo, dtInMaterial); //产生JSON文件内容
  435. }
  436. //把服务器的URL + 此文件名 传递给控件,由控件下载还原数据进行打印
  437. string strServerURL = GetUrlPath() + "PrintTemp/";
  438. string strData = strServerURL + strPrintTempFile;
  439. strPrintData = PrintFunction.EnBase64(strData);
  440. var JsonData = new
  441. {
  442. strPrintData_1 = strPrintData,
  443. bIsInstallPrintControl_1 = bIsInstallPrintControl,
  444. strPrintControlCookie_1 = strPrintControlCookie
  445. };
  446. //string sql = @"UPDATE dbo.ICSCarton
  447. // SET PrintTimes=ISNULL(PrintTimes,0)+1,
  448. // lastPrintTime=GETDATE()
  449. // WHERE CartonNO IN (" + keyValue.TrimEnd(',') + ") and WorkPoint='" + WorkPoint + "'";
  450. //SqlHelper.ExecuteNonQuery(sql);
  451. return Content(JsonData.ToJson());
  452. }
  453. #region 根据单号打印条码信息
  454. [HttpPost]
  455. [HandlerAjaxOnly]
  456. public ActionResult PrintItemCartonLot(string keyValue, string WorkPoint)
  457. {
  458. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  459. WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
  460. string strPrintFileName = Server.MapPath("/File/LablesFile/") + "lot_SRM条码打印.fr3";
  461. PrintJson pJson = new PrintJson(Server.MapPath("./PrintTemp"), strPrintFileName);
  462. pJson.CheckRegister("苏州智合诚信息科技有限公司", "56DD3B4C172D0D140841CAC98A58A819F4E28EDA5D6E45711DDD64F6A439F68B6A7870CD7DAFD69A919CB870207FE4BB206F92BE3D53C221B019E0797E739EBA4"); //注册信息
  463. pJson.MasterOptions(1, "ASNCode", false); //主从关系
  464. SetCookieAndURL(pJson);// 设置控件调用的Cookie值,判断是否安装了打印控件
  465. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  466. string strSql = @"SELECT distinct a.InvCode,b.POCode,CONVERT(varchar(100),b.CreateDateTime, 23) PODate,g.BatchCode,a.Quantity,c.InvName,
  467. b.VenCode,h.VenName,c.InvUnit,
  468. CONVERT(NVARCHAR(50),a.LotNO) AS QRLotNo,CONVERT(varchar(100), a.ProductDate, 23) as PRODUCTDATE,CONVERT(varchar(100), getdate(), 23) as PreArriveDate
  469. ,a.EATTRIBUTE2,a.EATTRIBUTE3,CONVERT(varchar(100),dateadd(day,c.EffectiveDays,a.ProductDate), 23) AS exprdate,i.asnCode,b.EATTRIBUTE3 as DXEATTRIBUTE3
  470. ,a.EATTRIBUTE4 as DXEATTRIBUTE4
  471. ,c.EATTRIBUTE11,c.EATTRIBUTE12,c.EATTRIBUTE13,c.EATTRIBUTE14,c.EATTRIBUTE15
  472. ,c.EATTRIBUTE16,c.EATTRIBUTE17,c.EATTRIBUTE18,Y.ContainerCode
  473. FROM ICSInventoryLot a
  474. left join ICSExtension g on a.ExtensionID=g.ID and a.WorkPoint=g.WorkPoint
  475. left join ICSInventoryLotDetail e on a.lotNo=e.LotNo and a.WorkPoint=e.WorkPoint
  476. LEFT JOIN dbo.ICSPurchaseOrder b ON b.POCode=e.TransCode AND b.Sequence=e.TransSequence AND a.WorkPoint=b.WorkPoint
  477. LEFT JOIN dbo.ICSInventory c ON a.InvCode=c.InvCode AND a.WorkPoint=c.WorkPoint
  478. left join dbo.ICSInventoryBatchEnable d on c.InvCode=d.InvCode and c.WorkPoint=d.WorkPoint AND d.BatchEnable=1
  479. left join ICSWarehouse f on d.WHCode=f.WarehouseCode and d.WorkPoint=f.WorkPoint
  480. left join ICSVendor h on b.VenCode=h.VenCode and b.WorkPoint=h.WorkPoint
  481. LEFT JOIN icsasndetail i ON a.lotNO=i.LotNO AND a.workPoint=i.workPoint
  482. LEFT JOIN ICSContainerLot X ON A.LotNo =X.LotNo AND a.workPoint=X.workPoint
  483. LEFT JOIN ICSContainer Y ON X.ContainerID=Y.ID AND Y.workPoint=X.workPoint
  484. WHERE Y.ContainerCode in(" + keyValue.TrimEnd(',') + ") and a.WorkPoint in (" + WorkPoint.Trim(',') + ") ";
  485. DataTable dtInInfo = DbHelper.ExecuteTable(DbHelper.ConnectionString, CommandType.Text, strSql, true, null);
  486. string strPrintTempFile = pJson.ShowReport(dtInInfo); //产生JSON文件内容
  487. //把服务器的URL + 此文件名 传递给控件,由控件下载还原数据进行打印
  488. string strServerURL = GetUrlPath() + "PrintTemp/";
  489. string strData = strServerURL + strPrintTempFile;
  490. strPrintData = PrintFunction.EnBase64(strData);
  491. var JsonData = new
  492. {
  493. strPrintData_1 = strPrintData,
  494. bIsInstallPrintControl_1 = bIsInstallPrintControl,
  495. strPrintControlCookie_1 = strPrintControlCookie
  496. };
  497. // string sql = @"UPDATE dbo.ICSASN
  498. // SET ADDITION1=ISNULL(ADDITION1,0)+1,
  499. // ADDITION2=CONVERT(varchar(100), GETDATE(), 21)
  500. // WHERE STNO in (" + keyValue.TrimEnd(',') + ") and WorkPoint=" + WorkPoint.TrimEnd(',') + "";
  501. // SqlHelper.ExecuteNonQuery(sql);
  502. return Content(JsonData.ToJson());
  503. }
  504. #endregion
  505. /// <summary>
  506. /// 写日志(用于跟踪)
  507. /// </summary>
  508. private void WriteLog(string strMessage)
  509. {
  510. string strLogFile = Server.MapPath("./Cookie_Log.txt");
  511. StreamWriter swLogFile = null;
  512. try
  513. {
  514. if (!System.IO.File.Exists(strLogFile))
  515. {
  516. swLogFile = System.IO.File.CreateText(strLogFile);
  517. }
  518. else
  519. {
  520. swLogFile = System.IO.File.AppendText(strLogFile);
  521. }
  522. swLogFile.WriteLine(strMessage);
  523. }
  524. catch
  525. {
  526. }
  527. finally
  528. {
  529. if (swLogFile != null)
  530. swLogFile.Close();
  531. }
  532. }
  533. /// <summary>
  534. ///判断数据表中是否存在,若不存在则新建一条记录,若存在则更新最后访问的时间
  535. /// </summary>
  536. /// <param name="strCookie"></param>
  537. private void UpdateCheckInstall(string strCookie)
  538. {
  539. bool bIsExist = false;
  540. //判断记录是否存在
  541. GetLastAccessTime(strCookie, ref bIsExist);
  542. string strSql = "";
  543. SqlParameter[] pmcCookie = { new SqlParameter("Cookie", strCookie) };
  544. if (bIsExist)
  545. { //存在则更新最后访问的时间
  546. strSql = @"Update sys_SRM_CheckInstall
  547. Set LastAccessTime = getDate()
  548. Where Cookie = @Cookie";
  549. }
  550. else
  551. { //不存在则新建一条记录
  552. strSql = @"Insert into sys_SRM_CheckInstall(Cookie, LastAccessTime)
  553. Values( @Cookie, getDate() )";
  554. }
  555. DbHelper.ExecuteNonQuery(DbHelper.ConnectionString, CommandType.Text, strSql, pmcCookie);
  556. }
  557. public DateTime ToDateTime(object SrcValue)
  558. {
  559. if (Convert.IsDBNull(SrcValue) == true)
  560. return DateTime.MinValue;
  561. else
  562. {
  563. try
  564. {
  565. return Convert.ToDateTime(SrcValue);
  566. }
  567. catch
  568. {
  569. return DateTime.MinValue;
  570. }
  571. }
  572. }
  573. /// <summary>
  574. /// 获取此Cookie的最后访问时间
  575. /// </summary>
  576. /// <param name="strCookie"></param>
  577. /// <returns></returns>
  578. private DateTime GetLastAccessTime(string strCookie, ref bool bIsExist)
  579. {
  580. DateTime dtLastAccessTime = DateTime.MinValue;
  581. bIsExist = false;
  582. string strSql = @"Select * From sys_SRM_CheckInstall Where Cookie = @Cookie";
  583. SqlParameter[] pmcCookie = { new SqlParameter("Cookie", strCookie) };
  584. using (SqlDataReader drCookie = DbHelper.ExecuteReader(DbHelper.ConnectionString, CommandType.Text, strSql, pmcCookie))
  585. {
  586. if (drCookie.Read())
  587. {
  588. dtLastAccessTime = ToDateTime(drCookie["LastAccessTime"]);
  589. bIsExist = true;
  590. }
  591. drCookie.Close();
  592. }
  593. return dtLastAccessTime;
  594. }
  595. [HttpGet]
  596. [HandlerAjaxOnly]
  597. public ActionResult IsCheckInstall(string checkInstall)
  598. {
  599. string strValue = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss 访问,");
  600. if (Request.QueryString["cookie"] != null)
  601. { //有控件上传的Cookie值
  602. string strCookie = Request.QueryString["cookie"].ToString();
  603. //判断数据表中是否存在,若不存在则新建一条记录,若存在则更新最后访问的时间
  604. UpdateCheckInstall(strCookie);
  605. strValue = strValue + "上传的cookie:" + strCookie;
  606. }
  607. else if (checkInstall != null)
  608. {//Ajax检查控件是否安装了,防止那种客户把打印控件卸装了,打印时无法检测到的情况
  609. string strCookie = checkInstall;
  610. //读取最后访问的时间
  611. string strResult = "PrintControlInstall";
  612. bool bIsExist = false;
  613. DateTime dtLastAccessTime = GetLastAccessTime(strCookie, ref bIsExist);
  614. if (!bIsExist || dtLastAccessTime.AddSeconds(30) < DateTime.Now)
  615. {
  616. strResult = "NOT";
  617. }
  618. Response.Clear();
  619. Response.Write(strResult);
  620. strValue = strValue + "检测安装的值:" + strCookie;
  621. }
  622. WriteLog(strValue);
  623. return null;
  624. }
  625. [HttpGet]
  626. [HandlerAjaxOnly]
  627. public ActionResult IsCheckInstall()
  628. {
  629. string strValue = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss 访问,");
  630. if (Request.QueryString["cookie"] != null)
  631. { //有控件上传的Cookie值
  632. string strCookie = Request.QueryString["cookie"].ToString();
  633. //判断数据表中是否存在,若不存在则新建一条记录,若存在则更新最后访问的时间
  634. UpdateCheckInstall(strCookie);
  635. strValue = strValue + "上传的cookie:" + strCookie;
  636. }
  637. else if (Request.QueryString["checkInstall"] != null)
  638. {//Ajax检查控件是否安装了,防止那种客户把打印控件卸装了,打印时无法检测到的情况
  639. string strCookie = Request.QueryString["checkInstall"];
  640. //读取最后访问的时间
  641. string strResult = "PrintControlInstall";
  642. bool bIsExist = false;
  643. DateTime dtLastAccessTime = GetLastAccessTime(strCookie, ref bIsExist);
  644. if (!bIsExist || dtLastAccessTime.AddSeconds(30) < DateTime.Now)
  645. {
  646. strResult = "NOT";
  647. }
  648. Response.Clear();
  649. Response.Write(strResult);
  650. strValue = strValue + "检测安装的值:" + strCookie;
  651. }
  652. WriteLog(strValue);
  653. return null;
  654. }
  655. #endregion
  656. [HttpGet]
  657. [HandlerAjaxOnly]
  658. public ActionResult GetContainerCode(string RoleEnCode, string WorkPoint)
  659. {
  660. string ListData = App.GetContainerCode(RoleEnCode, WorkPoint);
  661. var data = new
  662. {
  663. rows = ListData,
  664. };
  665. return Content(data.ToJson());
  666. }
  667. [HttpPost]
  668. [HandlerAjaxOnly]
  669. public ActionResult SaveICSContainerForBox(string ICSASN)
  670. {
  671. string msg = App.SaveICSContainerForBox(ICSASN);
  672. if (!string.IsNullOrEmpty(msg))
  673. {
  674. return Error(msg);
  675. }
  676. else
  677. {
  678. return Success("添加成功!");
  679. }
  680. }
  681. [HttpPost]
  682. [HandlerAjaxOnly]
  683. public ActionResult SaveICSContainerForBoxByAsn(string ICSASN)
  684. {
  685. string msg = App.SaveICSContainerForBoxByAsn(ICSASN);
  686. if (!string.IsNullOrEmpty(msg))
  687. {
  688. return Error(msg);
  689. }
  690. else
  691. {
  692. return Success("添加成功!");
  693. }
  694. }
  695. [HttpPost]
  696. [HandlerAjaxOnly]
  697. public ActionResult UpdateICSContainerForBox(string ICSASN)
  698. {
  699. string msg = App.UpdateICSContainerForBox(ICSASN);
  700. if (!string.IsNullOrEmpty(msg))
  701. {
  702. return Error(msg);
  703. }
  704. else
  705. {
  706. return Success("修改成功!");
  707. }
  708. }
  709. [HttpGet]
  710. [HandlerAjaxOnly]
  711. public ActionResult IsProductDate()
  712. {
  713. string _result = App.IsProductDate();
  714. var JsonData = new
  715. {
  716. result = _result
  717. };
  718. return Content(JsonData.ToJson());
  719. }
  720. [HttpGet]
  721. [HandlerAjaxOnly]
  722. public ActionResult IsInvCode()
  723. {
  724. string _result = App.IsInvCode();
  725. var JsonData = new
  726. {
  727. result = _result
  728. };
  729. return Content(JsonData.ToJson());
  730. }
  731. }
  732. }