GetCheckBarcode.ashx 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605
  1. <%@ WebHandler Language="C#" Class="GetCheckBarcode" %>
  2. using System;
  3. using System.IO;
  4. using System.Collections.Generic;
  5. using System.Web;
  6. using System.Web.SessionState;
  7. using System.Configuration;
  8. using System.Data;
  9. using Newtonsoft.Json;
  10. using Newtonsoft.Json.Linq;
  11. using Curtain.DataAccess;
  12. using Curtain.Log;
  13. using DK.XuWei.WebMes;
  14. using System.Linq;
  15. public class GetCheckBarcode : IHttpHandler
  16. {
  17. public void ProcessRequest(HttpContext context)
  18. {
  19. context.Response.ContentType = "text/plain";
  20. #region 获取切换栏
  21. if (context.Request["m"].ToString() == "getli")
  22. {
  23. using (IDataAccess conn = DataAccess.Create())
  24. {
  25. string sqlStr = "SELECT ITEMSYTPE FROM TP_PM_FIRSTREGISTERITEMS GROUP BY ITEMSYTPE";
  26. DataTable bt = conn.ExecuteDatatable(sqlStr);
  27. List<string> result = new List<string>();
  28. for (int i = 0; i < bt.Rows.Count; i++)
  29. {
  30. result.Add(bt.Rows[i]["ITEMSYTPE"].ToString());
  31. }
  32. context.Response.Write(JsonConvert.SerializeObject(result, Formatting.Indented));
  33. }
  34. }
  35. #endregion
  36. #region
  37. if (context.Request["m"].ToString() == "gettable")
  38. {
  39. using (IDataAccess conn = DataAccess.Create())
  40. {//获取前端传递的表单
  41. var formData = context.Request.Form;
  42. string sqlStr = "SELECT ITEMSID, ITEMSNAME,ITEMSINFO FROM TP_PM_FIRSTREGISTERITEMS WHERE ITEMSYTPE='" + formData["ITEMSYTPE"].ToString() + "' ORDER BY ITEMSID";
  43. DataTable bt = conn.ExecuteDatatable(sqlStr);
  44. List<Dictionary<string, string>> result = new List<Dictionary<string, string>>();
  45. for (int i = 0; i < bt.Rows.Count; i++)
  46. {
  47. Dictionary<string, string> content = new Dictionary<string, string>();
  48. content.Add("ITEMSID", bt.Rows[i]["ITEMSID"].ToString());
  49. content.Add("ITEMSNAME", bt.Rows[i]["ITEMSNAME"].ToString());
  50. content.Add("ITEMSINFO", bt.Rows[i]["ITEMSINFO"].ToString());
  51. result.Add(content);
  52. }
  53. context.Response.Write(JsonConvert.SerializeObject(result, Formatting.Indented));
  54. }
  55. }
  56. #endregion
  57. #region 根据barcode获取产品ID产品名称
  58. if (context.Request["m"].ToString() == "checkbarcode")
  59. {
  60. //获取前端传递的表单
  61. var formData = context.Request.Form;
  62. if (formData["BARCODE"].ToString() != null)
  63. {
  64. using (IDataAccess conn = DataAccess.Create())
  65. {
  66. string sqlStr = @"SELECT GR.BARCODE,GO.GOODSID,GO.GOODSNAME,GR.LOGOID FROM TP_PM_GROUTINGDAILYDETAIL GR
  67. LEFT JOIN TP_MST_GOODS GO ON GR.GOODSID=GO.GOODSID
  68. WHERE GO.VALUEFLAG=1 AND GR.VALUEFLAG=1
  69. AND GR.BARCODE='" + formData["BARCODE"].ToString() + "'";
  70. DataTable dt = conn.ExecuteDatatable(sqlStr);
  71. context.Response.Write(JsonConvert.SerializeObject(dt, Formatting.Indented));
  72. }
  73. }
  74. }
  75. #endregion
  76. //获取产品型号
  77. if (context.Request["m"].ToString() == "getfirstregister")
  78. { //获取前端传递的表单
  79. var formData = context.Request.Form;
  80. using (IDataAccess conn = DataAccess.Create())
  81. {
  82. if (formData["GOODSID"].ToString() != null && formData["GOODSNAME"].ToString() != null)
  83. {
  84. string sqlStr = "SELECT F.*,D.DICTIONARYVALUE AS 产品类型 ,E.DICTIONARYVALUE AS 检验依据 " +
  85. "FROM TP_PM_FIRSTREGISTER F " +
  86. "LEFT JOIN TP_MST_DATADICTIONARY D ON F.FIRGOODSTYPE=D.DICTIONARYID " +
  87. "LEFT JOIN TP_MST_DATADICTIONARY E ON F.FIRBASIS=E.DICTIONARYID " +
  88. "WHERE F.STATUS IN(0,1) AND F.VALUEFLAG = 1 AND F.GOODSID=" + formData["GOODSID"].ToString() + " AND F.LOGOID=" + formData["LOGOID"].ToString();
  89. DataTable bt = conn.ExecuteDatatable(sqlStr);
  90. List<Dictionary<string, string>> result = new List<Dictionary<string, string>>();
  91. for (int i = 0; i < bt.Rows.Count; i++)
  92. {
  93. Dictionary<string, string> content = new Dictionary<string, string>();
  94. //总单id
  95. content.Add("REGISTERID", bt.Rows[i]["REGISTERID"].ToString());
  96. //首件登记单号
  97. content.Add("REGISTERNO", bt.Rows[i]["REGISTERNO"].ToString());
  98. //LOGOID
  99. content.Add("LOGOID", formData["LOGOID"].ToString());
  100. //GOODSID
  101. content.Add("GOODSID", bt.Rows[i]["GOODSID"].ToString());
  102. //生产车间
  103. content.Add("WORKSHOP", bt.Rows[i]["WORKSHOP"].ToString());
  104. //产品名称
  105. content.Add("GOODSNAME", formData["GOODSNAME"].ToString());
  106. //产品型号
  107. content.Add("GOODSCODE", bt.Rows[i]["GOODSCODE"].ToString());
  108. //日期
  109. content.Add("DATA", DateTime.Parse(bt.Rows[i]["ACCOUNTDATE"].ToString()).ToString("yyyy-MM-dd"));
  110. //产品类型
  111. content.Add("产品类型", bt.Rows[i]["产品类型"].ToString());
  112. //产品物料编码
  113. content.Add("MATERIALCODE", bt.Rows[i]["MATERIALCODE"].ToString());
  114. //首件数量
  115. content.Add("FIRQUANTITY", bt.Rows[i]["FIRQUANTITY"].ToString());
  116. //检验依据
  117. content.Add("检验依据", bt.Rows[i]["检验依据"].ToString());
  118. result.Add(content);
  119. }
  120. context.Response.Write(JsonConvert.SerializeObject(result, Formatting.Indented));
  121. }
  122. }
  123. }
  124. //上传图片
  125. if (context.Request["m"].ToString() == "image")
  126. {
  127. if (context.Request.Files.Count > 0)
  128. {
  129. // 获取上传的文件
  130. HttpPostedFile file = context.Request.Files[0];
  131. // 检查文件是否有效
  132. if (file != null && file.ContentLength > 0)
  133. {
  134. // 读取文件内容(作为字节数组)
  135. byte[] fileBytes = new byte[file.ContentLength];
  136. file.InputStream.Read(fileBytes, 0, file.ContentLength);
  137. // 获取其他表单字段
  138. string registerId = context.Request.Form["REGISTERID"];
  139. string type = context.Request.Form["TYPE"];
  140. string field = "";
  141. if (type != null)
  142. {
  143. field = GetFieldByType(int.Parse(type));
  144. //field = int.Parse(type) == 1 ? "PGSIGNATURE" : int.Parse(type) == 2 ? "CJSIGNATURE" : "SKSIGNATURE";
  145. }
  146. string sql = "UPDATE TP_PM_FIRSTREGISTER SET " + field + " =@fileBytes@ WHERE REGISTERID=" + registerId;
  147. CDAParameter parameter = new CDAParameter("fileBytes", fileBytes, DataType.Binary);
  148. int rsult = 0;
  149. using (IDataAccess conn = DataAccess.Create())
  150. {
  151. rsult = conn.ExecuteNonQuery(sql, parameter);
  152. }
  153. // 返回成功响应
  154. context.Response.Write(rsult);
  155. }
  156. }
  157. }
  158. //查找图片
  159. if (context.Request["m"].ToString() == "showimage")
  160. {
  161. // 获取其他表单字段
  162. string registerId = context.Request.Form["REGISTERID"];
  163. string type = context.Request.Form["TYPE"];
  164. string field = "";
  165. if (type != null)
  166. {
  167. field = GetFieldByType(int.Parse(type));
  168. //field = int.Parse(type) == 1 ? "PGSIGNATURE" : int.Parse(type) == 2 ? "CJSIGNATURE" : "SKSIGNATURE";
  169. }
  170. string sqlStr = "SELECT " + field + " FROM TP_PM_FIRSTREGISTER WHERE REGISTERID=" + registerId;
  171. using (IDataAccess conn = DataAccess.Create())
  172. {
  173. try
  174. {
  175. DataTable bt = conn.ExecuteDatatable(sqlStr);
  176. // 将图片转换为二进制
  177. byte[] imageData = (byte[])bt.Rows[0][field];
  178. // 将图像数据转换为 base64 编码的字符串
  179. string base64String = Convert.ToBase64String(imageData);
  180. // 构建包含图像的 HTML 字符串
  181. string htmlString = "data:image/bmp;base64," + base64String;
  182. // 设置响应的内容类型和编码
  183. context.Response.ContentType = "text/html; charset=utf-8";
  184. // 在响应中写入 HTML 字符串
  185. context.Response.Write(JsonConvert.SerializeObject(new Dictionary<string, string>() { { "htmlString", htmlString }, { "code", "200" } }, Formatting.Indented));
  186. }
  187. catch
  188. {
  189. context.Response.Write(JsonConvert.SerializeObject(new Dictionary<string, string>() { { "code", "500" } }, Formatting.Indented));
  190. }
  191. }
  192. }
  193. #region 根据barcode查找填写过数据
  194. if (context.Request["m"].ToString() == "getregister")
  195. {
  196. var formData = context.Request.Form;
  197. if (formData["BARCODE"].ToString() != null)
  198. {
  199. DataTable bt = new DataTable();
  200. string sqlStr = "SELECT ITEMSYTPE,ITEMSID,ITEMSVALUE,ITEMSREMARKS FROM TP_PM_FIRSTREGISTERDETAIL WHERE VALUEFLAG=1 AND BARCODE='" + formData["BARCODE"].ToString() + "'";
  201. using (IDataAccess conn = DataAccess.Create())
  202. {
  203. bt = conn.ExecuteDatatable(sqlStr);
  204. }
  205. List<Dictionary<string, string>> result = new List<Dictionary<string, string>>();
  206. for (int i = 0; i < bt.Rows.Count; i++)
  207. {
  208. Dictionary<string, string> content = new Dictionary<string, string>();
  209. content.Add("ITEMSYTPE", bt.Rows[i]["ITEMSYTPE"].ToString());
  210. content.Add("ITEMSID", bt.Rows[i]["ITEMSID"].ToString());
  211. content.Add("ITEMSVALUE", bt.Rows[i]["ITEMSVALUE"].ToString());
  212. content.Add("ITEMSREMARKS", bt.Rows[i]["ITEMSREMARKS"].ToString());
  213. result.Add(content);
  214. }
  215. context.Response.Write(JsonConvert.SerializeObject(new Dictionary<string, List<Dictionary<string, string>>>() { { "Result", result } }, Formatting.Indented)); ;
  216. }
  217. }
  218. #endregion
  219. //判断总单是否过量
  220. if (context.Request["m"].ToString() == "checkcount")
  221. {
  222. var formData = context.Request.Form;
  223. if (formData["REGISTERID"].ToString() != null && formData["BARCODE"].ToString() != null)
  224. {
  225. using (IDataAccess conn = DataAccess.Create())
  226. {
  227. Boolean result = false;
  228. DataTable bt = conn.ExecuteDatatable(" SELECT COUNT (REGISTERID) AS CHECKQUANTITY FROM TP_PM_FIRSTREGISTERBAR WHERE REGISTERID=" + formData["REGISTERID"].ToString());
  229. DataTable lbt = conn.ExecuteDatatable(" SELECT FIRQUANTITY FROM TP_PM_FIRSTREGISTER WHERE REGISTERID=" + formData["REGISTERID"].ToString());
  230. if (int.Parse(bt.Rows[0][0].ToString()) == int.Parse(lbt.Rows[0][0].ToString()))
  231. {
  232. DataTable dbt = conn.ExecuteDatatable(" SELECT * FROM TP_PM_FIRSTREGISTERBAR WHERE BARCODE=" + formData["BARCODE"].ToString());
  233. result = dbt.Rows.Count == 0 ? true : false;
  234. }
  235. context.Response.Write(JsonConvert.SerializeObject(result));
  236. }
  237. }
  238. }
  239. //条码保存
  240. if (context.Request["m"].ToString() == "check")
  241. {
  242. //获取json数据
  243. using (var reader = new StreamReader(context.Request.InputStream))
  244. {
  245. string json = reader.ReadToEnd();
  246. //json转对象
  247. RootObject rootObject = JsonConvert.DeserializeObject<RootObject>(json);
  248. if (rootObject.barcode != null)
  249. {
  250. using (IDataAccess conn = DataAccess.Create())
  251. {
  252. try
  253. {
  254. //开启事务
  255. conn.BeginTransaction();
  256. //查询首件确定登记项目表
  257. DataTable btITEM = conn.ExecuteDatatable("SELECT * FROM TP_PM_FIRSTREGISTERITEMS");
  258. //查询首件确定登记总单
  259. DataTable bt = conn.ExecuteDatatable("SELECT * FROM TP_PM_FIRSTREGISTER WHERE VALUEFLAG=1 AND REGISTERID='" + rootObject.REGISTERID + "' ");
  260. //查询首件确定登记条码记录
  261. DataTable btBAR = conn.ExecuteDatatable("SELECT * FROM TP_PM_FIRSTREGISTERBAR");
  262. int i = 0;
  263. //当没有传来的条码
  264. if (btBAR.AsEnumerable().Where(ex => ex.Field<string>("BARCODE") == rootObject.barcode).FirstOrDefault() == null)
  265. {
  266. //创建记录
  267. DataTable dt = conn.ExecuteDatatable(@"SELECT SEQ_PM_FIRSTREGISTERBAR_ID.nextval FROM dual");
  268. i = int.Parse(dt.Rows[0][0].ToString());
  269. conn.ExecuteNonQuery(@"INSERT INTO TP_PM_FIRSTREGISTERBAR (
  270. BARID,REGISTERID, BARCODE ) VALUES (@BARID@,@REGISTERID@, @BARCODE@ )",
  271. new CDAParameter("BARID", i),
  272. new CDAParameter("REGISTERID", bt.Rows[0]["REGISTERID"]),
  273. new CDAParameter("BARCODE", rootObject.barcode));
  274. //登记单状态为未登记
  275. if (int.Parse(bt.Rows[0]["STATUS"].ToString()) == 0)
  276. {
  277. //更新已经登记单状态
  278. conn.ExecuteNonQuery("UPDATE TP_PM_FIRSTREGISTER SET STATUS=STATUS+1 WHERE REGISTERID=" + bt.Rows[0]["REGISTERID"]);
  279. }
  280. }
  281. //查询本条的条码ID
  282. DataTable dtAIL = conn.ExecuteDatatable(@"SELECT * FROM TP_PM_FIRSTREGISTERDETAIL WHERE BARCODE='" + rootObject.barcode + "' AND VALUEFLAG=1 ");
  283. //遍历数据
  284. foreach (var item in rootObject.data.Where(ex => ex.judgmentResult != null || ex.textInputValue != "").OrderBy(ex=>ex.ITEMSID))
  285. {
  286. //查找记录
  287. var jilu = dtAIL.AsEnumerable().Where(ex => ex.Field<decimal>("ITEMSID").ToString() == item.ITEMSID ).FirstOrDefault();
  288. //当有记录
  289. if (jilu != null)
  290. {
  291. //记录和所填不一致
  292. if (jilu["ITEMSVALUE"].ToString() != item.judgmentResult || jilu["ITEMSREMARKS"].ToString() != item.textInputValue)
  293. {
  294. //将记录更新
  295. string sqlStr = "UPDATE TP_PM_FIRSTREGISTERDETAIL SET ITEMSVALUE='" + item.judgmentResult + "'," +
  296. " ITEMSREMARKS='" + item.textInputValue + "',UPDATEUSERID='" + rootObject.userId + "'" +
  297. " WHERE BARCODE='" + rootObject.barcode + "' " +
  298. "AND ITEMSID=" + item.ITEMSID;
  299. conn.ExecuteNonQuery(sqlStr);
  300. }
  301. }
  302. //没有记录
  303. else
  304. {
  305. if (Convert.ToInt32(item.ITEMSID) == 20)
  306. {
  307. item.judgmentResult = "1";
  308. }
  309. //添加数据
  310. conn.ExecuteNonQuery(@"INSERT INTO TP_PM_FIRSTREGISTERDETAIL (
  311. REGISTERID, BARID, BARCODE, ITEMSID,ITEMSYTPE,ITEMSNAME, ITEMSINFO,ITEMSVALUE,ITEMSREMARKS,
  312. ACCOUNTID,VALUEFLAG,CREATEUSERID,UPDATEUSERID ) VALUES (
  313. @REGISTERID@, @BARID@, @BARCODE@, @ITEMSID@,@ITEMSYTPE@,@ITEMSNAME@, @ITEMSINFO@, @ITEMSVALUE@, @ITEMSREMARKS@,
  314. @ACCOUNTID@, @VALUEFLAG@, @CREATEUSERID@,@UPDATEUSERID@)",
  315. new CDAParameter("REGISTERID", bt.Rows[0]["REGISTERID"]),
  316. new CDAParameter("BARID", i != 0 ? i : dtAIL.Rows[0]["BARID"]),
  317. new CDAParameter("BARCODE", rootObject.barcode),
  318. new CDAParameter("ITEMSID", item.ITEMSID),
  319. new CDAParameter("ITEMSYTPE", btITEM.AsEnumerable().Where(ex => ex.Field<decimal>("ITEMSID") == decimal.Parse(item.ITEMSID)).FirstOrDefault().Field<string>("ITEMSYTPE")),
  320. new CDAParameter("ITEMSNAME", btITEM.AsEnumerable().Where(ex => ex.Field<decimal>("ITEMSID") == decimal.Parse(item.ITEMSID)).FirstOrDefault().Field<string>("ITEMSNAME")),
  321. new CDAParameter("ITEMSINFO", btITEM.AsEnumerable().Where(ex => ex.Field<decimal>("ITEMSID") == decimal.Parse(item.ITEMSID)).FirstOrDefault().Field<string>("ITEMSINFO")),
  322. new CDAParameter("ITEMSVALUE", item.judgmentResult),
  323. new CDAParameter("ITEMSREMARKS", item.textInputValue == "" ? null : item.textInputValue),
  324. new CDAParameter("ACCOUNTID", rootObject.accountId),
  325. new CDAParameter("VALUEFLAG", 1),
  326. new CDAParameter("CREATEUSERID", rootObject.userId),
  327. new CDAParameter("UPDATEUSERID", rootObject.userId));
  328. }
  329. }
  330. //查询该条码已经填写的判定
  331. DataTable btbarcodecount = conn.ExecuteDatatable("SELECT COUNT(*) FROM TP_PM_FIRSTREGISTERDETAIL WHERE VALUEFLAG=1 AND ITEMSVALUE IS NOT NULL AND BARCODE=" + rootObject.barcode);
  332. //判断综合判定是否填写
  333. bool a = rootObject.data.Where(ex => ex.ITEMSID == btITEM.AsEnumerable().Where(x => x.Field<string>("ITEMSINFO") == null).FirstOrDefault().Field<decimal>("ITEMSID").ToString()).Select(ex => ex.textInputValue).FirstOrDefault() == null ? false : true;
  334. int b = btITEM.AsEnumerable().Where(ex => ex.Field<string>("ITEMSINFO") != null).Count();
  335. //查询首件确定登记条码记录
  336. DataTable btBARNew = conn.ExecuteDatatable("SELECT * FROM TP_PM_FIRSTREGISTERBAR");
  337. bool c = btBARNew.AsEnumerable().Where(ex => ex.Field<string>("BARCODE") == rootObject.barcode).FirstOrDefault() == null ? false : true;
  338. //填写的判定数量等于判定规定&&综合判定填写
  339. if ((int.Parse(btbarcodecount.Rows[0][0].ToString()) == b && a && c)|| rootObject.complete)
  340. {
  341. //更新条码状态
  342. conn.ExecuteNonQuery("UPDATE TP_PM_FIRSTREGISTERBAR SET STATUS=1 WHERE REGISTERID=" + bt.Rows[0]["REGISTERID"] + " AND BARCODE='" + rootObject.barcode + "'");
  343. }
  344. //更新已经检验数量
  345. conn.ExecuteNonQuery("UPDATE TP_PM_FIRSTREGISTER SET CHECKQUANTITY=(SELECT COUNT(*) FROM TP_PM_FIRSTREGISTERBAR WHERE STATUS=1 AND REGISTERID="+bt.Rows[0]["REGISTERID"]+") WHERE REGISTERID=" + bt.Rows[0]["REGISTERID"]);
  346. //查询总单已经检验数量和首件数量
  347. DataTable detailsbarcodecount = conn.ExecuteDatatable("SELECT FIRQUANTITY,CHECKQUANTITY FROM TP_PM_FIRSTREGISTER WHERE REGISTERID=" + bt.Rows[0]["REGISTERID"]);
  348. //当已经检验数量和首件数量相等
  349. if (int.Parse(detailsbarcodecount.Rows[0][0].ToString()) == int.Parse(detailsbarcodecount.Rows[0][1].ToString()))
  350. {
  351. //更新已经登记单状态
  352. conn.ExecuteNonQuery("UPDATE TP_PM_FIRSTREGISTER SET STATUS=2 WHERE REGISTERID=" + bt.Rows[0]["REGISTERID"]);
  353. }
  354. //提交事务
  355. conn.Commit();
  356. context.Response.Write(JsonConvert.SerializeObject(new Dictionary<string, bool>() { { "result", true } }, Formatting.Indented));
  357. }
  358. catch (Exception e)
  359. {
  360. //回滚事务
  361. conn.Rollback();
  362. context.Response.Write(JsonConvert.SerializeObject(new Dictionary<string, bool>() { { "result", false } }, Formatting.Indented));
  363. }
  364. }
  365. }
  366. }
  367. }
  368. //获取总单号
  369. if (context.Request["m"].ToString() == "assemble")
  370. {
  371. using (IDataAccess conn = DataAccess.Create())
  372. {
  373. DataTable dt = conn.ExecuteDatatable(@"SELECT REGISTERID,REGISTERNO FROM TP_PM_FIRSTREGISTER WHERE STATUS IN (2,3)");
  374. context.Response.Write(JsonConvert.SerializeObject(dt, Formatting.Indented));
  375. }
  376. }
  377. //获取总单信息
  378. if (context.Request["m"].ToString() == "getoneassemble")
  379. {
  380. var formData = context.Request.Form;
  381. using (IDataAccess conn = DataAccess.Create())
  382. {
  383. DataTable dt = conn.ExecuteDatatable(@"SELECT
  384. F.REGISTERID,
  385. F.REGISTERNO,
  386. F.LOGOID,
  387. F.GOODSID,
  388. F.GOODSCODE,
  389. F.WORKSHOP,
  390. TO_CHAR(F.ACCOUNTDATE, 'YYYY-MM-DD')AS DATA,
  391. F.MATERIALCODE,
  392. F.FIRQUANTITY,
  393. F.ADVICE,
  394. F.ADVICEREMARKS,
  395. D.DICTIONARYVALUE AS 产品类型 ,
  396. E.DICTIONARYVALUE AS 检验依据 ,
  397. GO.GOODSNAME
  398. FROM TP_PM_FIRSTREGISTER F
  399. LEFT JOIN TP_MST_DATADICTIONARY D ON F.FIRGOODSTYPE = D.DICTIONARYID
  400. LEFT JOIN TP_MST_DATADICTIONARY E ON F.FIRBASIS=E.DICTIONARYID
  401. LEFT JOIN TP_MST_GOODS GO ON F.GOODSID=GO.GOODSID
  402. WHERE F.REGISTERNO = " + formData["REGISTERNO"]);
  403. context.Response.Write(JsonConvert.SerializeObject(dt, Formatting.Indented));
  404. }
  405. }
  406. //根据总单获取产品条码
  407. if (context.Request["m"].ToString() == "getabrcode")
  408. {
  409. var formData = context.Request.Form;
  410. if (formData["REGISTERID"] != null)
  411. {
  412. using (IDataAccess conn = DataAccess.Create())
  413. {
  414. DataTable dt = conn.ExecuteDatatable(@"SELECT BARCODE FROM TP_PM_FIRSTREGISTERBAR WHERE REGISTERID=" + formData["REGISTERID"]);
  415. context.Response.Write(JsonConvert.SerializeObject(dt, Formatting.Indented));
  416. }
  417. }
  418. }
  419. //总单保存
  420. if (context.Request["m"].ToString() == "save")
  421. {
  422. var formData = context.Request.Form;
  423. if (formData["ADVICE"] != null && formData["REGISTERID"] != null)
  424. {
  425. using (IDataAccess conn = DataAccess.Create())
  426. {
  427. try
  428. {
  429. //开启事务
  430. conn.BeginTransaction();
  431. DataTable bt = conn.ExecuteDatatable("SELECT STATUS FROM TP_PM_FIRSTREGISTER WHERE REGISTERID=" + formData["REGISTERID"]);
  432. //更新总单 登记单状态 研发部意见+备注
  433. string strSQL = "UPDATE TP_PM_FIRSTREGISTER SET ADVICE= " + formData["ADVICE"];
  434. if (formData["ADVICEREMARKS"] != null)
  435. {
  436. strSQL += ",ADVICEREMARKS='" + formData["ADVICEREMARKS"] + "'";
  437. }
  438. if (int.Parse(bt.Rows[0]["STATUS"].ToString()) == 2)
  439. {
  440. strSQL += ",STATUS=STATUS+1";
  441. }
  442. strSQL += " WHERE REGISTERID=" + formData["REGISTERID"];
  443. conn.ExecuteNonQuery(strSQL);
  444. //查询签名
  445. DataTable dt = conn.ExecuteDatatable("SELECT PGSIGNATURE, CJSIGNATURE, SKSIGNATURE FROM TP_PM_FIRSTREGISTER WHERE REGISTERID=" + formData["REGISTERID"]);
  446. //当签名不为空时
  447. if (dt.Rows[0]["PGSIGNATURE"].ToString() != string.Empty && dt.Rows[0]["CJSIGNATURE"].ToString() != string.Empty && dt.Rows[0]["SKSIGNATURE"].ToString() != string.Empty)
  448. {
  449. //更新登记单状态
  450. conn.ExecuteNonQuery("UPDATE TP_PM_FIRSTREGISTER SET STATUS=STATUS+1 WHERE REGISTERID=" + formData["REGISTERID"]);
  451. }
  452. //提交事务
  453. conn.Commit();
  454. context.Response.Write(JsonConvert.SerializeObject(new Dictionary<string, bool>() { { "result", true } }, Formatting.Indented));
  455. }
  456. catch (Exception e)
  457. {
  458. //回滚事务
  459. conn.Rollback();
  460. context.Response.Write(JsonConvert.SerializeObject(new Dictionary<string, bool>() { { "result", false } }, Formatting.Indented));
  461. }
  462. }
  463. }
  464. }
  465. ///型式检验查询
  466. if (context.Request["m"].ToString() == "showtest")
  467. {
  468. var formData = context.Request.Form;
  469. if (!string.IsNullOrEmpty(formData["BARCODE"].ToString()))
  470. {
  471. string StrSql = "SELECT --barcode,\n " +
  472. " xuhao,goodscode,goodstypename,TO_CHAR(groutingdate, 'YYYY-MM-DD')AS groutingdate,inspectitem ,technicalrequirement,unitname, " +
  473. " --remarks, ITEMSDETAILID ,\n"+
  474. " listagg(inspectvalue, ', ') within GROUP(ORDER BY inspectvalue) AS inspectvalue,isqualified "+
  475. " FROM (SELECT fd.barcode,g.goodscode,gt.goodstypename,g.groutingdate ,fd.inspectitem,fd.remarks,fdd.xuhao,fdd.ITEMSDETAILID "+
  476. " ,CASE "+
  477. "WHEN fdd.unitname IS NULL THEN "+
  478. " '-' "+
  479. " ELSE "+
  480. " to_char(fdd.unitname) "+
  481. " END unitname "+
  482. " ,fdd.technicalrequirement , "+
  483. " CASE "+
  484. " WHEN fdd.inspectmark = 630 THEN "+
  485. " CASE "+
  486. " WHEN fd.isqualified = 1 THEN "+
  487. " '合格' "+
  488. " ELSE "+
  489. " '不合格' "+
  490. " END "+
  491. " ELSE "+
  492. " to_char(fd.inspectvalue) "+
  493. " END AS inspectvalue "+
  494. " ,CASE"+
  495. " WHEN fd.isqualified = 1 THEN "+
  496. " '合格' "+
  497. " ELSE "+
  498. " '不合格' "+
  499. " END AS isqualified "+
  500. " FROM tp_pm_fqcitemsdata fd "+
  501. " LEFT JOIN tp_pm_fqcitemsdetail fdd "+
  502. " ON fd.itemsdetailid = fdd.itemsdetailid "+
  503. " LEFT JOIN tp_pm_fqcitems f "+
  504. " ON f.itemsid = fd.itemsid "+
  505. " LEFT JOIN tp_pm_groutingdailydetail g "+
  506. " ON g.barcode = fd.barcode "+
  507. " LEFT JOIN tp_mst_goods gg "+
  508. " ON gg.goodsid = g.goodsid "+
  509. " LEFT JOIN tp_mst_goodstype gt "+
  510. " ON gg.goodstypeid = gt.goodstypeid "+
  511. " WHERE fd.barcode = '"+formData["BARCODE"].ToString()+"'"+
  512. " AND f.inspecttype = 615 "+
  513. " AND fd.valueflag = 1) "+
  514. " GROUP BY barcode ,goodscode,goodstypename,groutingdate,inspectitem,unitname,technicalrequirement,isqualified,remarks,xuhao,ITEMSDETAILID "+
  515. " ORDER BY XUHAO,ITEMSDETAILID DESC ";
  516. DataTable dt = new DataTable();
  517. using (IDataAccess conn = DataAccess.Create())
  518. {
  519. dt = conn.ExecuteDatatable(StrSql);
  520. }
  521. context.Response.Write(JsonConvert.SerializeObject(dt, Formatting.Indented));
  522. }
  523. }
  524. if (context.Request["m"].ToString() == "checkexist")
  525. {
  526. var formData = context.Request.Form;
  527. if ( formData["BARCODE"].ToString() != null)
  528. {
  529. using (IDataAccess conn = DataAccess.Create())
  530. {
  531. Boolean result = false;
  532. DataTable bt = conn.ExecuteDatatable("SELECT count(*) FROM TP_PM_FIRSTREGISTER S INNER JOIN TP_PM_FIRSTREGISTERBAR B ON S.REGISTERID=B.REGISTERID WHERE S.STATUS=4 AND B.BARCODE=" + formData["BARCODE"].ToString());
  533. if (int.Parse(bt.Rows[0][0].ToString()) !=0)
  534. {
  535. result = true;
  536. }
  537. context.Response.Write(JsonConvert.SerializeObject(result));
  538. }
  539. }
  540. }
  541. }
  542. public bool IsReusable
  543. {
  544. get
  545. {
  546. return false;
  547. }
  548. }
  549. public class ItemData
  550. {
  551. public string ITEMSID { get; set; }
  552. public string judgmentResult { get; set; }
  553. public string textInputValue { get; set; }
  554. }
  555. public class RootObject
  556. {
  557. public string REGISTERID { get; set; }
  558. public string barcode { get; set; }
  559. public string userId { get; set; }
  560. public string accountId { get; set; }
  561. public bool complete { get; set; }
  562. public List<ItemData> data { get; set; }
  563. }
  564. /// <summary>
  565. /// 获取签名字段
  566. /// </summary>
  567. /// <param name="type"></param>
  568. /// <returns></returns>
  569. public string GetFieldByType(int type)
  570. {
  571. switch (type)
  572. {
  573. case 1:
  574. return "PGSIGNATURE";
  575. case 2:
  576. return "CJSIGNATURE";
  577. case 3:
  578. return "SKSIGNATURE";
  579. case 4:
  580. return "YFSIGNATURE";
  581. case 5:
  582. return "GYSIGNATURE";
  583. case 6:
  584. return "XMZSIGNATURE";
  585. default:
  586. // 可以根据实际需求修改默认返回值
  587. return "UNKNOWN";
  588. }
  589. }
  590. }