testform_importBarCode.ashx 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <%@ WebHandler Language="C#" Class="testform_importBarCode" %>
  2. using System;
  3. using System.Web;
  4. using System.Web.SessionState;
  5. using System.Data;
  6. using DK.XuWei.WebMes;
  7. using Curtain.DataAccess;
  8. using Curtain.Log;
  9. //EXCEL模板,要求
  10. //...
  11. public class testform_importBarCode : IHttpHandler, IReadOnlySessionState
  12. {
  13. public void ProcessRequest(HttpContext context)
  14. {
  15. context.Response.ContentType = "text/plain";
  16. //上传文件
  17. string filePath = "/mes/upload/"+DateTime.Now.ToString("yyyy-MM-dd");
  18. System.IO.Directory.CreateDirectory(context.Server.MapPath(filePath));
  19. string fileName = filePath + "/研发实验单" + DateTime.Now.ToString("yyyy-MM-dd");
  20. fileName += System.IO.Path.GetExtension(context.Request.Files[0].FileName);
  21. string diskFileName = context.Server.MapPath(fileName);
  22. if (System.IO.File.Exists(diskFileName)) System.IO.File.Delete(diskFileName);
  23. context.Request.Files[0].SaveAs(diskFileName);
  24. //读excel
  25. DataTable dt = Import.ExcelToDataTable(diskFileName);
  26. //Logger.Debug(dt.Rows.Count.ToString());
  27. //写入数据
  28. using (IDataAccess conn = DataAccess.Create())
  29. {
  30. int errorLineNo = 0;
  31. conn.BeginTransaction();
  32. try
  33. {
  34. #region 删除实验单所有产品
  35. //object a = context.Request["testformguidMaster"];
  36. //int result0 = conn.ExecuteNonQuery(@"
  37. // DELETE
  38. // TP_PM_TESTFORM2_GOODS
  39. // WHERE
  40. // TESTFORMGUID = @TESTFORMGUID@
  41. // ",
  42. // new CDAParameter("TESTFORMGUID", context.Request["testformguidMaster"])
  43. //);
  44. #endregion
  45. //判断字段包含
  46. string barCodeStr = "";
  47. for (int i=0;i<dt.Rows.Count;i++)
  48. {
  49. if (dt.Rows[i]["产品条码"] + "" == "") {
  50. continue;
  51. }
  52. if (barCodeStr.IndexOf(dt.Rows[i]["产品条码"] + ",") > -1) {
  53. continue;
  54. }
  55. barCodeStr += dt.Rows[i]["产品条码"] + ",";
  56. #region 校验重复
  57. object isExists = conn.ExecuteScalar(
  58. @"SELECT DISTINCT 1 FROM TP_PM_TESTFORM2_GOODS WHERE TESTFORMGUID = @TESTFORMGUID@ AND BARCODE = REPLACE(@BARCODE@,' ','') AND VALUEFLAG = 1",
  59. new CDAParameter("BARCODE", dt.Rows[i]["产品条码"]),
  60. new CDAParameter("TESTFORMGUID", context.Request["testformguidMaster"])
  61. );
  62. if (isExists != null)
  63. {
  64. continue;
  65. }
  66. #endregion
  67. //记录行号
  68. errorLineNo = i;
  69. int result = conn.ExecuteNonQuery(@"
  70. INSERT INTO TP_PM_TESTFORM2_GOODS (
  71. TESTFORMGUID,
  72. BARCODE,
  73. ACCOUNTID,CREATEUSERID,UPDATEUSERID
  74. ) VALUES (
  75. @TESTFORMGUID@,
  76. REPLACE(@BARCODE@,' ',''),
  77. @ACCOUNTID@,@CREATEUSERID@,@UPDATEUSERID@
  78. )
  79. ",
  80. new CDAParameter("TESTFORMGUID",context.Request["testformguidMaster"]),
  81. new CDAParameter("BARCODE",dt.Rows[i]["产品条码"].ToString()),
  82. new CDAParameter("ACCOUNTID",HttpContext.Current.Session["accountId"]),
  83. new CDAParameter("CREATEUSERID",HttpContext.Current.Session["userId"]),
  84. new CDAParameter("UPDATEUSERID",HttpContext.Current.Session["userId"])
  85. );
  86. int result1 = conn.ExecuteNonQuery(@"
  87. UPDATE TP_PM_GROUTINGDAILYDETAIL SET TESTFORMFLAG=2 WHERE BARCODE = @BARCODE@
  88. ",
  89. new CDAParameter("BARCODE",dt.Rows[i]["产品条码"].ToString())
  90. );
  91. }
  92. conn.Commit();
  93. context.Response.Write(new JsonResult(JsonStatus.success).ToJson());
  94. }
  95. catch(Exception e)
  96. {
  97. Logger.Error(e);
  98. conn.Rollback();
  99. context.Response.Write(new JsonResult(JsonStatus.otherError) { message = "行号:" + errorLineNo + " 数据错误,请检查!" }.ToJson());
  100. }
  101. }
  102. }
  103. public bool IsReusable
  104. {
  105. get
  106. {
  107. return false;
  108. }
  109. }
  110. }