ソースを参照

报表增加差异数量和达成率

qinqi 2 ヶ月 前
コミット
08458ff2d0

+ 104 - 80
wwwroot/mes/pc/productionPlanReport/productionPlanReport.ashx

@@ -32,90 +32,114 @@ public class mouldproduceplan : IHttpHandler, IReadOnlySessionState
                 try
                 try
                 {
                 {
                     string sqlStr = @"WITH date_range AS (
                     string sqlStr = @"WITH date_range AS (
-                                        SELECT 
-                                            MIN(begintime) AS min_date,
-                                            MAX(endtime) AS max_date
-                                        FROM tp_pm_production_plan 
-                                        WHERE valueflag = 1
-                                    )
-                                    SELECT 
-                                        pp.planid,
-                                        pp.goodsid,
-                                        pp.logoid,
-                                        l.logoname AS 商标名称,
-                                        pp.goodscode AS 产品型号,
-                                        SUBSTR(pb.name, INSTR(pb.name, 'H', 1)) AS 产品变更型号,
-                                        g.goodsname AS 产品名称,
-                                        g.goodsspecification AS 出水距,
-                                        pp.materialcode AS 物料编码,
-                                        pp.quantity AS 计划数量,
-                                        pp.begintime AS 开始时间,
-                                        pp.endtime AS 截止时间,
-                                        CASE pp.controlrange 
-                                            WHEN 1 THEN '装配'
-                                            WHEN 2 THEN '包装'
-                                        END AS 控制范围,
-                                        -- 包装数量(优化后的相关子查询)
-                                        (SELECT COUNT(DISTINCT fp.barcode)
-                                         FROM tp_pm_finishedproduct fp
-                                         WHERE fp.goodsid = pp.goodsid 
-                                           AND fp.logoid = pp.logoid
-                                           AND fp.createtime >= pp.begintime
-                                           AND fp.createtime < pp.endtime
-                                           AND fp.valueflag = 1) AS 包装数量,
-                                        -- 商标切换统计(优化后的相关子查询)
-                                        (SELECT COUNT(DISTINCT lc.barcode)
-                                         FROM date_range dr,
-                                              tp_pm_logochangedrecord lc
-                                         INNER JOIN tp_pm_groutingdailydetail gdd ON gdd.barcode = lc.barcode
-                                         INNER JOIN tp_pc_procedure p ON lc.procedureid = p.procedureid
-                                         WHERE lc.createtime >= dr.min_date
-                                           AND lc.createtime < dr.max_date
-                                           AND gdd.goodsid = pp.goodsid
-                                           AND gdd.logoid = pp.logoid
-                                           AND lc.newlogoid = pp.logoid
-                                           AND lc.createtime >= pp.begintime
-                                           AND lc.createtime < pp.endtime
-                                           AND lc.oldlogoid <> lc.newlogoid
-                                           AND (p.modeltype = '-5' OR p.procedureid IN (106, 107, 78))
-                                           AND NOT EXISTS (
-                                               SELECT 1 
-                                               FROM tp_pm_scrapproduct s
-                                               WHERE s.barcode = lc.barcode
-                                                 AND s.valueflag = 1
-                                                 AND s.createtime >= lc.createtime
-                                           )) AS 实际切换商标数量,
-                                        (SELECT COUNT(DISTINCT lc.barcode)
-                                         FROM date_range dr,
-                                              tp_pm_logochangedrecord lc
-                                         INNER JOIN tp_pm_groutingdailydetail gdd ON gdd.barcode = lc.barcode
-                                         INNER JOIN tp_pc_procedure p ON lc.procedureid = p.procedureid
-                                         WHERE lc.createtime >= dr.min_date
-                                           AND lc.createtime < dr.max_date
-                                           AND gdd.goodsid = pp.goodsid
-                                           AND gdd.logoid = pp.logoid
-                                           AND lc.newlogoid = pp.logoid
-                                           AND lc.createtime >= pp.begintime
-                                           AND lc.createtime < pp.endtime
-                                           AND lc.oldlogoid <> lc.newlogoid
-                                           AND ((pp.controlrange = 1 AND p.modeltype = '-5' AND p.procedureid NOT IN (126, 152))
-                                                OR (pp.controlrange = 2 AND p.procedureid IN (106, 107, 78, 126, 152)))
-                                           AND NOT EXISTS (
-                                               SELECT 1 
-                                               FROM tp_pm_scrapproduct s
-                                               WHERE s.barcode = lc.barcode
-                                                 AND s.valueflag = 1
-                                                 AND s.createtime >= lc.createtime
-                                           )) AS 范围内切换商标数量
-                                    FROM tp_pm_production_plan pp
-                                    LEFT JOIN TP_MST_LOGO L ON PP.LOGOID = L.LOGOID
-                                    LEFT JOIN TP_MST_GOODS G ON G.GOODSID = PP.GOODSID
-                                    LEFT JOIN TP_MST_PACKINGBOM PB ON PB.MATNR = PP.MATERIALCODE
-                                    WHERE PP.VALUEFLAG = 1  ";
+                                SELECT 
+                MIN(begintime) AS min_date,
+                MAX(endtime) AS max_date
+            FROM tp_pm_production_plan 
+            WHERE valueflag = 1
+        )
+        SELECT t.planid,
+            t.goodsid,
+            t.logoid,
+            t.商标名称,
+            t.产品型号,
+            t.产品变更型号,
+            t.产品名称,
+            t.出水距,
+            t.物料编码,
+            t.计划数量,
+            t.开始时间,
+            t.截止时间,
+            t.控制范围, 
+            t.顺序,
+            t.包装数量, 
+            t.实际切换商标数量,
+            t.范围内切换商标数量,
+            t.计划数量-t.范围内切换商标数量 as 范围差异数量,     
+            DECODE( NVL( t.范围内切换商标数量, 0 ), 0, '0%', TO_CHAR( ( NVL( t.范围内切换商标数量, 0 ) / DECODE( NVL( t.计划数量, 1 ), 0, 1, NVL( t.计划数量, 1 ) ) ) * 100, 'fm9990.0' ) || '%' )  AS 范围达成率,
+            t.计划数量-t.实际切换商标数量 as 实际差异数量,     
+            DECODE( NVL( t.实际切换商标数量, 0 ), 0, '0%', TO_CHAR( ( NVL( t.实际切换商标数量, 0 ) / DECODE( NVL( t.计划数量, 1 ), 0, 1, NVL( t.计划数量, 1 ) ) ) * 100, 'fm9990.0' ) || '%' )  AS 实际达成率
+FROM (
+        SELECT 
+            pp.planid,
+            pp.goodsid,
+            pp.logoid,
+            l.logoname AS 商标名称,
+            pp.goodscode AS 产品型号,
+            SUBSTR(pb.name, INSTR(pb.name, 'H', 1)) AS 产品变更型号,
+            g.goodsname AS 产品名称,
+            g.goodsspecification AS 出水距,
+            pp.materialcode AS 物料编码,
+            pp.quantity AS 计划数量,
+            pp.begintime AS 开始时间,
+            pp.endtime AS 截止时间,
+            CASE pp.controlrange 
+                WHEN 1 THEN '装配'
+                WHEN 2 THEN '包装'
+            END AS 控制范围,
+            pp.xuhao as 顺序,
+            -- 包装数量(优化后的相关子查询)
+            (SELECT COUNT(DISTINCT fp.barcode)
+             FROM tp_pm_finishedproduct fp
+             WHERE fp.goodsid = pp.goodsid 
+               AND fp.logoid = pp.logoid
+               AND fp.createtime >= pp.begintime
+               AND fp.createtime < pp.endtime
+               AND fp.valueflag = 1) AS 包装数量,
+            -- 商标切换统计(优化后的相关子查询)
+            (SELECT COUNT(DISTINCT lc.barcode)
+             FROM date_range dr,
+                  tp_pm_logochangedrecord lc
+             INNER JOIN tp_pm_groutingdailydetail gdd ON gdd.barcode = lc.barcode
+             INNER JOIN tp_pc_procedure p ON lc.procedureid = p.procedureid
+             WHERE lc.createtime >= dr.min_date
+               AND lc.createtime < dr.max_date
+               AND gdd.goodsid = pp.goodsid
+               AND gdd.logoid = pp.logoid
+               AND lc.newlogoid = pp.logoid
+               AND lc.createtime >= pp.begintime
+               AND lc.createtime < pp.endtime
+               AND lc.oldlogoid <> lc.newlogoid
+               AND (p.modeltype = '-5' OR p.procedureid IN (106, 107, 78))
+               AND NOT EXISTS (
+                   SELECT 1 
+                   FROM tp_pm_scrapproduct s
+                   WHERE s.barcode = lc.barcode
+                     AND s.valueflag = 1
+                     AND s.createtime >= lc.createtime
+               )) AS 实际切换商标数量,
+            (SELECT COUNT(DISTINCT lc.barcode)
+             FROM date_range dr,
+                  tp_pm_logochangedrecord lc
+             INNER JOIN tp_pm_groutingdailydetail gdd ON gdd.barcode = lc.barcode
+             INNER JOIN tp_pc_procedure p ON lc.procedureid = p.procedureid
+             WHERE lc.createtime >= dr.min_date
+               AND lc.createtime < dr.max_date
+               AND gdd.goodsid = pp.goodsid
+               AND gdd.logoid = pp.logoid
+               AND lc.newlogoid = pp.logoid
+               AND lc.createtime >= pp.begintime
+               AND lc.createtime < pp.endtime
+               AND lc.oldlogoid <> lc.newlogoid
+               AND ((pp.controlrange = 1 AND p.modeltype = '-5' AND p.procedureid NOT IN (126, 152))
+                    OR (pp.controlrange = 2 AND p.procedureid IN (106, 107, 78, 126, 152)))
+               AND NOT EXISTS (
+                   SELECT 1 
+                   FROM tp_pm_scrapproduct s
+                   WHERE s.barcode = lc.barcode
+                     AND s.valueflag = 1
+                     AND s.createtime >= lc.createtime
+               )) AS 范围内切换商标数量
+        FROM tp_pm_production_plan pp
+        LEFT JOIN TP_MST_LOGO L ON PP.LOGOID = L.LOGOID
+        LEFT JOIN TP_MST_GOODS G ON G.GOODSID = PP.GOODSID
+        LEFT JOIN TP_MST_PACKINGBOM PB ON PB.MATNR = PP.MATERIALCODE
+        WHERE PP.VALUEFLAG = 1  ";
                     if (!string.IsNullOrEmpty(GOODSID))
                     if (!string.IsNullOrEmpty(GOODSID))
                     {
                     {
                         sqlStr += " AND PP.GOODSID in (" + GOODSID + ")";
                         sqlStr += " AND PP.GOODSID in (" + GOODSID + ")";
                     }
                     }
+                    sqlStr += " ) t order by t.产品名称,t.顺序";
                     List<CDAParameter> sqlPara = new List<CDAParameter>();
                     List<CDAParameter> sqlPara = new List<CDAParameter>();
                     //sqlPara.Add(new CDAParameter("BEGINTIME", BEGINTIME));
                     //sqlPara.Add(new CDAParameter("BEGINTIME", BEGINTIME));
                     //sqlPara.Add(new CDAParameter("ENDTIME",ENDTIME));
                     //sqlPara.Add(new CDAParameter("ENDTIME",ENDTIME));

+ 5 - 0
wwwroot/mes/pc/productionPlanReport/productionPlanReport_index.html

@@ -52,10 +52,15 @@
                             <th data-options="field:'控制范围',title:'控制范围',align:'center',sortable:false"></th>
                             <th data-options="field:'控制范围',title:'控制范围',align:'center',sortable:false"></th>
                             <th data-options="field:'开始时间',title:'开始时间',align:'center',sortable:false"></th>
                             <th data-options="field:'开始时间',title:'开始时间',align:'center',sortable:false"></th>
                             <th data-options="field:'截止时间',title:'截止时间',align:'center',sortable:false"></th>
                             <th data-options="field:'截止时间',title:'截止时间',align:'center',sortable:false"></th>
+                            <th data-options="field:'顺序',title:'顺序',align:'center',sortable:false"></th>
                             <th data-options="field:'计划数量',title:'计划数量',align:'center',sortable:false"></th>
                             <th data-options="field:'计划数量',title:'计划数量',align:'center',sortable:false"></th>
                             <th data-options="field:'包装数量',title:'包装数量',align:'center',sortable:false"></th>
                             <th data-options="field:'包装数量',title:'包装数量',align:'center',sortable:false"></th>
                             <th data-options="field:'实际切换商标数量',title:'实际切换商标数量',align:'center',sortable:false"></th>
                             <th data-options="field:'实际切换商标数量',title:'实际切换商标数量',align:'center',sortable:false"></th>
                             <th data-options="field:'范围内切换商标数量',title:'范围内切换商标数量',align:'center',sortable:false"></th>
                             <th data-options="field:'范围内切换商标数量',title:'范围内切换商标数量',align:'center',sortable:false"></th>
+                            <th data-options="field:'范围差异数量',title:'范围差异数量',align:'center',sortable:false"></th>
+                            <th data-options="field:'范围达成率',title:'范围达成率',align:'center',sortable:false"></th>
+                            <th data-options="field:'实际差异数量',title:'实际差异数量',align:'center',sortable:false"></th>
+                            <th data-options="field:'实际达成率',title:'实际达成率',align:'center',sortable:false"></th>
                         </tr>
                         </tr>
                     </thead>
                     </thead>
                 </table>
                 </table>