QualifiedPercent.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using Curtain.DataAccess;
  2. using System;
  3. using System.Data;
  4. /// <summary>
  5. /// 获取合格率
  6. /// </summary>
  7. public class QualifiedPercent
  8. {
  9. /// <summary>
  10. /// 获取合格率
  11. /// </summary>
  12. /// <param name="conn">连接</param>
  13. /// <param name="planDate">计划日期</param>
  14. /// <returns></returns>
  15. public static DataTable GetQualifiedPercent(IDataAccess conn, DateTime planDate)
  16. {
  17. return conn.ExecuteDatatable(@"
  18. SELECT T.GOODSID,
  19. CASE WHEN QUALIFIEDPERCENT <= 0 OR QUALIFIEDPERCENT > 1 THEN 1 ELSE QUALIFIEDPERCENT END AS QUALIFIEDPERCENT
  20. FROM (SELECT QDGROUP.GOODSID,
  21. DECODE(QDGROUP.OUTKILNCOUNT, 0, 1, ROUND((QDGROUP.GOODCOUNT + QDGROUP.BADCOUNT) / QDGROUP.OUTKILNCOUNT, 4)) QUALIFIEDPERCENT
  22. FROM (SELECT MSTGOODS.GOODSID,
  23. NVL(SUM(DECODE(PPCC.GOODSLEVELTYPEID, 0, 1, 0)), 0) OUTKILNCOUNT,
  24. NVL(SUM(DECODE(PPCC.GOODSLEVELTYPEID, 5, 1, 0)), 0) BADCOUNT,
  25. NVL(SUM(DECODE(PPCC.GOODSLEVELTYPEID, 0, 1, 5, -1, 6, -1, 7, -1, 0)), 0) GOODCOUNT
  26. FROM (SELECT 0 GOODSLEVELTYPEID,
  27. PD.BARCODE,
  28. PD.PRODUCTIONLINEID,
  29. PD.GOODSID,
  30. PD.KILNID,
  31. PD.KILNCARBATCHNO,
  32. 1 CC
  33. FROM TP_PM_PRODUCTIONDATA PD
  34. WHERE PD.ACCOUNTID = 1
  35. AND ((11 = 11 AND
  36. ((PD.PROCEDUREID = 11 AND PD.VALUEFLAG = '1') OR
  37. (PD.PROCEDUREID = 104 AND PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))) OR
  38. (11 = 58 AND
  39. ((PD.PROCEDUREID = 58 AND PD.VALUEFLAG = '1') OR
  40. (PD.PROCEDUREID = 104 AND PD.ISREFIRE = '6' AND PD.CHECKFLAG = '1'))) OR
  41. (11 NOT IN (11, 58) AND PD.VALUEFLAG = '1' AND PD.PROCEDUREID = 11))
  42. AND PD.CREATETIME >= @BEGINDATE@
  43. AND PD.CREATETIME < @ENDDATE@
  44. UNION ALL
  45. SELECT DISTINCT PD.GOODSLEVELTYPEID,
  46. PD.BARCODE,
  47. PD.PRODUCTIONLINEID,
  48. PD.GOODSID,
  49. PD.KILNID,
  50. PD.KILNCARBATCHNO,
  51. 1 CC
  52. FROM TP_PM_PRODUCTIONDATA PD
  53. WHERE PD.VALUEFLAG = '1'
  54. AND PD.MODELTYPE = -1
  55. AND PD.ACCOUNTID = 1
  56. AND LENGTH(PD.KILNCARBATCHNO) > 0
  57. AND PD.CREATETIME >= @BEGINDATE@
  58. AND PD.CREATETIME < @ENDDATE@
  59. AND ((11 <> 58 AND PD.ISREFIRE = '0') OR (11 = 58 AND PD.ISREFIRE = '6'))) PPCC
  60. INNER JOIN TP_PC_PRODUCTIONLINE PCPL
  61. ON PCPL.PRODUCTIONLINEID = PPCC.PRODUCTIONLINEID
  62. INNER JOIN TP_MST_KILN MSTKILN
  63. ON MSTKILN.KILNID = PPCC.KILNID
  64. INNER JOIN TP_MST_GOODS MSTGOODS
  65. ON MSTGOODS.GOODSID = PPCC.GOODSID
  66. INNER JOIN TP_MST_GOODSTYPE MSTGOODSTYPE
  67. ON MSTGOODSTYPE.GOODSTYPEID = MSTGOODS.GOODSTYPEID
  68. AND MSTGOODSTYPE.ACCOUNTID = MSTGOODS.ACCOUNTID
  69. INNER JOIN TP_MST_GOODSTYPE MSTGOODSTYPE2
  70. ON MSTGOODSTYPE2.GOODSTYPECODE = SUBSTR(MSTGOODSTYPE.GOODSTYPECODE, 0, 6)
  71. AND MSTGOODSTYPE.ACCOUNTID = MSTGOODSTYPE2.ACCOUNTID
  72. GROUP BY MSTGOODS.GOODSID) QDGROUP) T ",
  73. new CDAParameter("BEGINDATE", planDate.AddDays(-7), DataType.DateTime),
  74. new CDAParameter("ENDDATE", planDate, DataType.DateTime)
  75. );
  76. }
  77. }