groutingCount.ashx 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473
  1. <%@ WebHandler Language="C#" Class="groutingCount" %>
  2. using System;
  3. using System.Web;
  4. using System.Web.SessionState;
  5. using System.Data;
  6. using System.Text;
  7. using System.Collections;
  8. using System.Collections.Generic;
  9. using Newtonsoft.Json;
  10. using Newtonsoft.Json.Linq;
  11. using Curtain.DataAccess;
  12. using DK.XuWei.WebMes;
  13. public class groutingCount : IHttpHandler, IReadOnlySessionState
  14. {
  15. public void ProcessRequest(HttpContext context)
  16. {
  17. context.Response.ContentType = "text/plain";
  18. //成型(质量)、半检一检(质量)、改洗(质量)、半检二检(质量)、施釉(质量)、烧成(质量)、分级一检(质量)、功能检测(质量)
  19. string dashBoardName = "成型(质量)";
  20. //11:小时质量 21:日质量 31:月质量 41:年质量
  21. int planType = 11;
  22. using(IDataAccess conn = DataAccess.Create())
  23. {
  24. //成型累计
  25. if (context.Request["m"] == "total") {
  26. string dateBegin = DateTime.Now.ToString("yyyy-MM-01 00:00:00");
  27. string dateEnd = DateTime.Now.AddMonths(1).ToString("yyyy-MM-01 00:00:00");
  28. string sqlStr = @"
  29. SELECT
  30. T1.不良数 AS NUM2 ,
  31. T2.总数 - T1.不良数 - (T3.报废数 + T4.开模损 + T5.干燥损) AS NUM1 ,
  32. T3.报废数 + T4.开模损 + T5.干燥损 AS NUM3 ,
  33. ROUND(T1.不良数 / DECODE(NVL(T2.总数,0),0,1,T2.总数),2) * 100 AS UNQUALIFIED,
  34. ROUND((T3.报废数 + T4.开模损 + T5.干燥损) / DECODE(NVL(T2.总数,0),0,1,T2.总数),2) * 100 AS SCRAP,
  35. ROUND((T2.总数 - T1.不良数 - (T3.报废数 + T4.开模损 + T5.干燥损)) / DECODE(NVL(T2.总数,0),0,1,T2.总数),2) * 100 AS QUALIFIED
  36. FROM
  37. (
  38. SELECT
  39. '1' AS 外键,
  40. count( distinct barcode ) AS 不良数
  41. FROM
  42. (
  43. SELECT
  44. distinct barcode
  45. FROM
  46. TP_PM_SEMICHECK s
  47. LEFT JOIN TP_PM_SEMICHECKDEFECT sd ON s.SEMICHECKID = sd.SEMICHECKID
  48. WHERE
  49. s.BACKOUTFLAG = 0
  50. AND s.VALUEFLAG = 1
  51. AND sd.DEFECTPROCEDUREID IN ( 88, 92, 118 )
  52. AND instr( s.GROUTINGLINENAME, 'C' ) = 1
  53. AND instr( s.GROUTINGLINENAME, 'A' ) = 4
  54. AND S.GOODSLEVELTYPEID NOT IN(13,14)
  55. AND s.CREATETIME >= @DATEBEGIN@
  56. AND s.CREATETIME < @DATEEND@
  57. UNION
  58. SELECT
  59. distinct pd.barcode
  60. FROM
  61. TP_PM_PRODUCTIONDATA pd
  62. LEFT JOIN TP_PM_DEFECT d ON pd.PRODUCTIONDATAID = d.PRODUCTIONDATAID
  63. WHERE
  64. pd.CREATETIME >= @DATEBEGIN@
  65. AND pd.CREATETIME < @DATEEND@
  66. AND d.VALUEFLAG = 1
  67. AND d.DEFECTPROCEDUREID IN ( 88, 92, 118 )
  68. AND PD.GOODSLEVELTYPEID NOT IN(7,8)
  69. AND instr( pd.GROUTINGLINENAME, 'C' ) = 1
  70. AND instr( pd.GROUTINGLINENAME, 'A' ) = 4
  71. AND pd.PROCEDUREID = 105
  72. )
  73. ) T1
  74. INNER JOIN (
  75. SELECT
  76. '1' AS 外键,
  77. COUNT( DISTINCT GD.BARCODE ) AS 总数
  78. FROM
  79. TP_PM_GROUTINGDAILYDETAIL GD
  80. WHERE
  81. GD.GROUTINGFLAG = '1' --注浆
  82. AND GD.VALUEFLAG = '1'
  83. AND INSTR( GD.GROUTINGLINECODE, 'C' ) = 1
  84. AND INSTR( GD.GROUTINGLINECODE, 'A' ) = 4
  85. AND GD.CREATETIME > @DATEBEGIN@
  86. AND GD.CREATETIME < @DATEEND@
  87. ) T2 ON T1.外键 = T2.外键
  88. INNER JOIN
  89. (
  90. SELECT
  91. '1' AS 外键,
  92. count( distinct barcode ) AS 报废数
  93. FROM
  94. (
  95. SELECT
  96. distinct barcode
  97. FROM
  98. TP_PM_SEMICHECK s
  99. LEFT JOIN TP_PM_SEMICHECKDEFECT sd ON s.SEMICHECKID = sd.SEMICHECKID
  100. WHERE
  101. s.BACKOUTFLAG = 0
  102. AND s.VALUEFLAG = 1
  103. AND sd.DEFECTPROCEDUREID IN ( 88, 92, 118 )
  104. AND instr( s.GROUTINGLINENAME, 'C' ) = 1
  105. AND instr( s.GROUTINGLINENAME, 'A' ) = 4
  106. AND S.GOODSLEVELTYPEID IN(13,14)
  107. AND s.CREATETIME >= @DATEBEGIN@
  108. AND s.CREATETIME < @DATEEND@
  109. UNION
  110. SELECT
  111. distinct pd.barcode
  112. FROM
  113. TP_PM_PRODUCTIONDATA pd
  114. LEFT JOIN TP_PM_DEFECT d ON pd.PRODUCTIONDATAID = d.PRODUCTIONDATAID
  115. WHERE
  116. pd.CREATETIME >= @DATEBEGIN@
  117. AND pd.CREATETIME < @DATEEND@
  118. AND d.VALUEFLAG = 1
  119. AND d.DEFECTPROCEDUREID IN ( 88, 92, 118 )
  120. AND PD.GOODSLEVELTYPEID IN(7,8)
  121. AND instr( pd.GROUTINGLINENAME, 'C' ) = 1
  122. AND instr( pd.GROUTINGLINENAME, 'A' ) = 4
  123. AND pd.PROCEDUREID = 105
  124. )
  125. ) T3 ON T1.外键 = T3.外键
  126. INNER JOIN
  127. (
  128. SELECT
  129. '1' AS 外键,
  130. COUNT(DISTINCT BARCODE) AS 开模损
  131. from
  132. TP_PM_GROUTINGSCRAPPRODUCT
  133. WHERE
  134. AUDITSTATUS = 1
  135. and
  136. BACKOUTFLAG = 0
  137. and
  138. SCRAPTYPE in (0,1)
  139. and
  140. VALUEFLAG = 1
  141. and
  142. CREATETIME >= @DATEBEGIN@
  143. and
  144. CREATETIME < @DATEEND@
  145. ) T4 ON T1.外键 = T4.外键
  146. INNER JOIN
  147. (
  148. SELECT
  149. '1' AS 外键,
  150. COUNT(DISTINCT S.BARCODE) AS 干燥损
  151. from
  152. TP_PM_SCRAPPRODUCT S
  153. WHERE
  154. S.AUDITSTATUS = 1
  155. and
  156. -- S.SCRAPTYPE = 0
  157. -- AND
  158. S.VALUEFLAG = 1
  159. and
  160. S.CREATETIME >= @DATEBEGIN@
  161. and
  162. S.CREATETIME < @DATEEND@
  163. and
  164. s.PROCEDUREID in (82, 83, 86, 87)
  165. ) T5 ON T1.外键 = T5.外键
  166. ";
  167. //获取查询条件
  168. List<CDAParameter> sqlPara = new List<CDAParameter>();
  169. sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(dateBegin), DataType.DateTime));
  170. sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(dateEnd), DataType.DateTime));
  171. //直接获取不分页数据
  172. DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  173. string jsonStr = new JsonResult(dt).ToJson();
  174. context.Response.Write(jsonStr);
  175. };
  176. //成型缺陷统计
  177. if (context.Request["m"] == "defectname") {
  178. string dateBegin = DateTime.Now.ToString("yyyy-MM-01 00:00:00");
  179. string dateEnd = DateTime.Now.AddMonths(1).ToString("yyyy-MM-01 00:00:00");
  180. string sqlStr = @"
  181. SELECT
  182. t.*,
  183. ROWNUM
  184. FROM
  185. (
  186. SELECT
  187. DEFECTNAME,
  188. sum( total ) as Dtotal
  189. FROM
  190. (
  191. SELECT
  192. sd.DEFECTNAME,
  193. count( DISTINCT s.barcode ) AS total
  194. FROM
  195. TP_PM_SEMICHECK s
  196. LEFT JOIN TP_PM_SEMICHECKDEFECT sd ON s.SEMICHECKID = sd.SEMICHECKID
  197. WHERE
  198. s.BACKOUTFLAG = 0
  199. AND s.VALUEFLAG = 1
  200. AND sd.DEFECTPROCEDUREID IN ( 88, 92, 118 )
  201. AND instr( s.GROUTINGLINENAME, 'C' ) = 1
  202. AND s.CREATETIME >= @DATEBEGIN@
  203. AND s.CREATETIME < @DATEEND@
  204. GROUP BY
  205. sd.DEFECTNAME UNION
  206. SELECT
  207. d.DEFECTNAME,
  208. count( DISTINCT d.barcode ) AS total
  209. FROM
  210. TP_PM_PRODUCTIONDATA pd
  211. LEFT JOIN TP_PM_DEFECT d ON pd.PRODUCTIONDATAID = d.PRODUCTIONDATAID
  212. WHERE
  213. pd.CREATETIME >= @DATEBEGIN@
  214. AND pd.CREATETIME < @DATEEND@
  215. AND d.DEFECTPROCEDUREID IN ( 88, 92, 118 )
  216. AND instr( pd.GROUTINGLINENAME, 'C' ) = 1
  217. AND pd.PROCEDUREID = 105
  218. AND d.VALUEFLAG = 1
  219. GROUP BY
  220. d.DEFECTNAME
  221. )
  222. GROUP BY
  223. DEFECTNAME
  224. ORDER BY
  225. sum( total ) DESC
  226. ) t
  227. WHERE
  228. ROWNUM < 6
  229. ";
  230. //获取查询条件
  231. List<CDAParameter> sqlPara = new List<CDAParameter>();
  232. sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(dateBegin), DataType.DateTime));
  233. sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(dateEnd), DataType.DateTime));
  234. //直接获取不分页数据
  235. DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  236. string jsonStr = new JsonResult(dt).ToJson();
  237. context.Response.Write(jsonStr);
  238. };
  239. //成型位置累计
  240. if (context.Request["m"] == "defectposition") {
  241. string dateBegin = DateTime.Now.ToString("yyyy-MM-01 00:00:00");
  242. string dateEnd = DateTime.Now.AddMonths(1).ToString("yyyy-MM-01 00:00:00");
  243. string sqlStr = @"
  244. SELECT
  245. t.*,
  246. ROWNUM
  247. FROM
  248. (
  249. SELECT
  250. DEFECTPOSITIONNAME,
  251. sum( total ) as PTOTAL
  252. FROM
  253. (
  254. SELECT
  255. sd.DEFECTPOSITIONNAME,
  256. count( DISTINCT s.barcode ) AS total
  257. FROM
  258. TP_PM_SEMICHECK s
  259. LEFT JOIN TP_PM_SEMICHECKDEFECT sd ON s.SEMICHECKID = sd.SEMICHECKID
  260. WHERE
  261. s.BACKOUTFLAG = 0
  262. AND s.VALUEFLAG = 1
  263. AND sd.DEFECTPROCEDUREID IN ( 88, 92, 118 )
  264. AND instr( s.GROUTINGLINENAME, 'C' ) = 1
  265. AND s.CREATETIME >= @DATEBEGIN@
  266. AND s.CREATETIME < @DATEEND@
  267. GROUP BY
  268. sd.DEFECTPOSITIONNAME UNION
  269. SELECT
  270. d.DEFECTPOSITIONNAME,
  271. count( DISTINCT d.barcode ) AS total
  272. FROM
  273. TP_PM_PRODUCTIONDATA pd
  274. LEFT JOIN TP_PM_DEFECT d ON pd.PRODUCTIONDATAID = d.PRODUCTIONDATAID
  275. WHERE
  276. pd.CREATETIME >= @DATEBEGIN@
  277. AND pd.CREATETIME < @DATEEND@
  278. AND d.DEFECTPROCEDUREID IN ( 88, 92, 118 )
  279. AND instr( pd.GROUTINGLINENAME, 'C' ) = 1
  280. AND pd.PROCEDUREID = 105
  281. AND d.VALUEFLAG = 1
  282. GROUP BY
  283. d.DEFECTPOSITIONNAME
  284. )
  285. GROUP BY
  286. DEFECTPOSITIONNAME
  287. ORDER BY
  288. sum( total ) DESC
  289. ) t
  290. WHERE
  291. ROWNUM < 6
  292. ";
  293. //获取查询条件
  294. List<CDAParameter> sqlPara = new List<CDAParameter>();
  295. sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(dateBegin), DataType.DateTime));
  296. sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(dateEnd), DataType.DateTime));
  297. //直接获取不分页数据
  298. DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  299. string jsonStr = new JsonResult(dt).ToJson();
  300. context.Response.Write(jsonStr);
  301. };
  302. //成型产品累计
  303. if (context.Request["m"] == "goodscode") {
  304. string dateBegin = DateTime.Now.ToString("yyyy-MM-01 00:00:00");
  305. string dateEnd = DateTime.Now.AddMonths(1).ToString("yyyy-MM-01 00:00:00");
  306. string sqlStr = @"
  307. SELECT
  308. t.*,
  309. ROWNUM
  310. FROM
  311. (
  312. SELECT
  313. GOODSCODE,
  314. sum( total ) as GTOTAL
  315. FROM
  316. (
  317. SELECT
  318. s.GOODSCODE,
  319. count( DISTINCT s.barcode ) AS total
  320. FROM
  321. TP_PM_SEMICHECK s
  322. LEFT JOIN TP_PM_SEMICHECKDEFECT sd ON s.SEMICHECKID = sd.SEMICHECKID
  323. WHERE
  324. s.BACKOUTFLAG = 0
  325. AND s.VALUEFLAG = 1
  326. AND sd.DEFECTPROCEDUREID IN ( 88, 92, 118 )
  327. AND instr( s.GROUTINGLINENAME, 'C' ) = 1
  328. AND s.CREATETIME >= @DATEBEGIN@
  329. AND s.CREATETIME < @DATEEND@
  330. GROUP BY
  331. s.GOODSCODE UNION
  332. SELECT
  333. pd.GOODSCODE,
  334. count( DISTINCT d.barcode ) AS total
  335. FROM
  336. TP_PM_PRODUCTIONDATA pd
  337. LEFT JOIN TP_PM_DEFECT d ON pd.PRODUCTIONDATAID = d.PRODUCTIONDATAID
  338. WHERE
  339. pd.CREATETIME >= @DATEBEGIN@
  340. AND pd.CREATETIME < @DATEEND@
  341. AND d.DEFECTPROCEDUREID IN ( 88, 92, 118 )
  342. AND instr( pd.GROUTINGLINENAME, 'C' ) = 1
  343. AND pd.PROCEDUREID = 105
  344. AND d.VALUEFLAG = 1
  345. GROUP BY
  346. pd.GOODSCODE
  347. )
  348. GROUP BY
  349. GOODSCODE
  350. ORDER BY
  351. sum( total ) DESC
  352. ) t
  353. WHERE
  354. ROWNUM < 6
  355. ";
  356. //获取查询条件
  357. List<CDAParameter> sqlPara = new List<CDAParameter>();
  358. sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(dateBegin), DataType.DateTime));
  359. sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(dateEnd), DataType.DateTime));
  360. //直接获取不分页数据
  361. DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  362. string jsonStr = new JsonResult(dt).ToJson();
  363. context.Response.Write(jsonStr);
  364. };
  365. //成型线号累计
  366. if (context.Request["m"] == "groutingline") {
  367. string dateBegin = DateTime.Now.ToString("yyyy-MM-01 00:00:00");
  368. string dateEnd = DateTime.Now.AddMonths(1).ToString("yyyy-MM-01 00:00:00");
  369. string sqlStr = @"
  370. SELECT
  371. t.*,
  372. ROWNUM
  373. FROM
  374. (
  375. SELECT
  376. GROUTINGLINENAME,
  377. sum( total ) as LTOTAL
  378. FROM
  379. (
  380. SELECT
  381. s.GROUTINGLINENAME,
  382. count( DISTINCT s.barcode ) AS total
  383. FROM
  384. TP_PM_SEMICHECK s
  385. LEFT JOIN TP_PM_SEMICHECKDEFECT sd ON s.SEMICHECKID = sd.SEMICHECKID
  386. WHERE
  387. s.BACKOUTFLAG = 0
  388. AND s.VALUEFLAG = 1
  389. AND sd.DEFECTPROCEDUREID IN ( 88, 92, 118 )
  390. AND instr( s.GROUTINGLINENAME, 'C' ) = 1
  391. AND s.CREATETIME >= @DATEBEGIN@
  392. AND s.CREATETIME < @DATEEND@
  393. GROUP BY
  394. s.GROUTINGLINENAME UNION
  395. SELECT
  396. pd.GROUTINGLINENAME,
  397. count( DISTINCT d.barcode ) AS total
  398. FROM
  399. TP_PM_PRODUCTIONDATA pd
  400. LEFT JOIN TP_PM_DEFECT d ON pd.PRODUCTIONDATAID = d.PRODUCTIONDATAID
  401. WHERE
  402. pd.CREATETIME >= @DATEBEGIN@
  403. AND pd.CREATETIME < @DATEEND@
  404. AND d.DEFECTPROCEDUREID IN ( 88, 92, 118 )
  405. AND instr( pd.GROUTINGLINENAME, 'C' ) = 1
  406. AND pd.PROCEDUREID = 105
  407. AND d.VALUEFLAG = 1
  408. GROUP BY
  409. pd.GROUTINGLINENAME
  410. )
  411. GROUP BY
  412. GROUTINGLINENAME
  413. ORDER BY
  414. sum( total ) DESC
  415. ) t
  416. WHERE
  417. ROWNUM < 6
  418. ";
  419. //获取查询条件
  420. List<CDAParameter> sqlPara = new List<CDAParameter>();
  421. sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(dateBegin), DataType.DateTime));
  422. sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(dateEnd), DataType.DateTime));
  423. //直接获取不分页数据
  424. DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  425. string jsonStr = new JsonResult(dt).ToJson();
  426. context.Response.Write(jsonStr);
  427. };
  428. }
  429. }
  430. public decimal toNumber(object o)
  431. {
  432. if (o != DBNull.Value)
  433. return Convert.ToDecimal(o);
  434. else
  435. return 0;
  436. }
  437. public bool IsReusable
  438. {
  439. get
  440. {
  441. return false;
  442. }
  443. }
  444. }