Przeglądaj źródła

产成品质量分析表 查询逻辑修改 PDA扫码输入工号后 验证通过 带出当天工号 班次打卡 员工编码和名称

张忠帅 1 rok temu
rodzic
commit
beef1c3002

+ 102 - 165
DK.Service/PDAModuleLogic/PDAModuleLogic.cs

@@ -3382,173 +3382,110 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
         {
             parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
             parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
-
+            parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
+            parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
             // 2015-06-16 modify by chenxy
-            string sqlString = "\n" +
-            "select qdgroup.gid,\n" +
-            //"       decode(qdgroup.gid, 7, '总计', 0, qdgroup.productionlinename, '--') productionlinename,\n" +
-            "       decode(qdgroup.gid, 3, '总计', 1, '合计', qdgroup.kilncode) kilncode,\n" +
-            //"       decode(qdgroup.gid, 1, '小计', 0, qdgroup.goodstypename2, '--') goodstypename2,\n" +
-            "       decode(qdgroup.gid, 0, qdgroup.goodstypename2, '') subgoodstypecode,\n" +
-            //"       decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename,\n" +
-            //"       decode(qdgroup.gid, 0, qdgroup.goodscode, '--') goodscode,\n" +
-            "       to_char(qdgroup.OutKilnCount) OutKilnCount,\n" +
-            //"       qdgroup.GoodCount,\n" +
-            // 质量是合格率(正品+副品)
-            //"       to_char((qdgroup.GoodCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' GoodPercent\n" +
-            "       to_char(((qdgroup.GoodCount + qdgroup.BadCount) / qdgroup.OutKilnCount) * 100, '990.00') || '%' GoodPercent\n" +
-            //"       qdgroup.SubstandardCount,\n" +
-            //"       to_char((qdgroup.SubstandardCount / qdgroup.OutKilnCount) * 100,\n" +
-            //"               '990.00') || '%' SubstandardPercent,\n" +
-            //"       qdgroup.BadCount\n" +
-            //"       to_char((qdgroup.BadCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' BadPercent,\n" +
-            //"       qdgroup.ReFireCount,\n" +
-            //"       to_char((qdgroup.ReFireCount / qdgroup.OutKilnCount) * 100,\n" +
-            //"               '990.00') || '%' ReFirePercent\n" +
-            "  from (select grouping_id(--pcpl.productionlinename,\n" +
-            "                           mstkiln.kilncode,\n" +
-            "                           mstgoodstype2.goodstypename) gid,\n" +
-            //"                           mstgoodstype.goodstypename,\n" +
-            //"                           mstgoods.goodscode) gid,\n" +
-            //"               pcpl.productionlinename,\n" +
-            "               --qd.kilnid,\n" +
-            "               mstkiln.kilncode,\n" +
-            "               mstgoodstype2.goodstypename goodstypename2,\n" +
-            //"               mstgoodstype.goodstypename,\n" +
-            //"               mstgoods.goodscode,\n" +
-            "               sum(qd.OutKilnCount) OutKilnCount,\n" +
-            "               sum(qd.GoodCount) GoodCount,\n" +
-            //"               sum(qd.SubstandardCount) SubstandardCount,\n" +
-            "               sum(qd.BadCount) BadCount\n" +
-            //"               sum(qd.ReFireCount) ReFireCount\n" +
-            "          from (select --pdbc.barcode,\n" +
-            //"                 pdbc.productionlineid,\n" +
-            "                 pdbc.goodsid,\n" +
-            "                 pdbc.kilnid,\n" +
-            "                 --pdbc.kilncarid,\n" +
-            "                 --pdbc.kilncarbatchno,\n" +
-            "                 1 OutKilnCount,\n" +
-            "                 case\n" +
-            "                   when glt.goodsleveltypeid in (5, 6, 7) then\n" +
-            "                    0\n" +
-            "                   else\n" +
-            "                    1\n" +
-            "                 end GoodCount,\n" +
-            //"                 case\n" +
-            //"                   when glt.goodsleveltypeid = 7 then\n" +
-            //"                    1\n" +
-            //"                   else\n" +
-            //"                    0\n" +
-            //"                 end SubstandardCount,\n" +
-            //"                 case\n" +
-            //"                   when glt.goodsleveltypeid = 6 then\n" +
-            //"                    1\n" +
-            //"                   else\n" +
-            //"                    0\n" +
-            //"                 end ReFireCount,\n" +
-            "                 case\n" +
-            "                   when glt.goodsleveltypeid = 5 then\n" +
-            "                    1\n" +
-            "                   else\n" +
-            "                    0\n" +
-            "                 end BadCount\n" +
-            "                  from (select distinct pd.barcode,\n" +
-            "                                        pd.productionlineid,\n" +
-            "                                        pd.goodsid,\n" +
-            "                                        pd.kilnid,\n" +
-            "                                        --pd.kilncarid,\n" +
-            "                                        pd.kilncarbatchno\n" +
-            "                          from tp_pm_productiondata pd\n" +
-            "                         where pd.valueflag = '1'\n" +
-            "                           and pd.procedureid = :in_rptSprocedureId \n" +
-            "                           and pd.AccountID = :AccountID\n";
-            StringBuilder selSql = new StringBuilder(sqlString);
-            if (se.CreateTimeStart.HasValue)
-            {
-                selSql.Append("    AND pd.createtime >= :CreateTimeStart\n");
-                parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
-            }
-            if (se.CreateTimeEnd.HasValue)
-            {
-                selSql.Append("    AND pd.createtime < :CreateTimeEnd\n");
-                parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
-            }
-            //if (!string.IsNullOrEmpty(se.GoodsIDS))
-            //{
-            //    selSql.Append("    AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
-            //    parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
-            //}
-            //if (se.ProductionLineID.HasValue)
-            //{
-            //    selSql.Append("    AND pd.ProductionLineId = :ProductionLineID\n");
-            //    parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
-            //}
-            //if (!string.IsNullOrEmpty(se.GroutingUserIDS))
-            //{
-            //    selSql.Append("    AND instr(','||:GroutingUserIDS||',', ','||pd.groutinguserid||',') > 0\n");
-            //    parameters.Add(new OracleParameter(":GroutingUserIDS", OracleDbType.NVarchar2, se.GroutingUserIDS, ParameterDirection.Input));
-            //}
-            //if (!string.IsNullOrEmpty(se.GroutingLineIDS))
-            //{
-            //    selSql.Append("    AND instr(','||:GroutingLineIDS||',', ','||pd.groutinglineid||',') > 0\n");
-            //    parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
-            //}
-            //selSql.Append("    AND exists (Select 1  from TP_MST_UserPurview up where up.PurviewType= 7 and up.UserID = :UserID and (up.PurviewID=-1 or up.PurviewID= pd.ProductionLineId))");
-            //parameters.Add(new OracleParameter(":UserID", OracleDbType.NVarchar2, user.UserID, ParameterDirection.Input));
-            //if (se.KilnID.HasValue)
-            //{
-            //    selSql.Append("    AND pd.KilnID = :KilnID\n");
-            //    parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
-            //}
-            sqlString =
-            "                        ) pdbc\n" +
-            "                  left join (select kcbc.barcode, kcbc.kilncarbatchno, kcbc.goodsleveltypeid\n" +
-            "                              from (select pd.barcode,\n" +
-            "                                           pd.kilncarbatchno,\n" +
-            "                                           pd.goodsleveltypeid,\n" +
-            "                                           pd.productiondataid,\n" +
-            "                                           ROW_NUMBER() OVER(PARTITION BY pd.barcode, pd.kilncarbatchno ORDER BY pd.productiondataid desc) AS dataid\n" +
-            "                                      from tp_pm_productiondata pd\n" +
-            "                                     where pd.valueflag = '1'\n" +
-            "                                       and pd.AccountID = :AccountID\n" +
-            "                                       and length(pd.kilncarbatchno) > 0\n" +
-            "                                       AND pd.createtime >= :CreateTimeStart\n" +
-            "                                       and pd.modeltype = -1) kcbc\n" +
-            "                             where kcbc.dataid = 1) glt\n" +
-            "                    on pdbc.kilncarbatchno = glt.kilncarbatchno\n" +
-            "                   and pdbc.barcode = glt.barcode) qd\n" +
-            //"         inner join tp_pc_productionline pcpl\n" +
-            //"            on pcpl.productionlineid = qd.productionlineid\n" +
-            "         inner join tp_mst_kiln mstkiln\n" +
-            "            on mstkiln.kilnid = qd.kilnid\n" +
-            "         inner join tp_mst_goods mstgoods\n" +
-            "            on mstgoods.goodsid = qd.goodsid\n" +
-            "         inner join tp_mst_goodstype mstgoodstype\n" +
-            "            on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
-            "           and mstgoodstype.accountid = mstgoods.accountid\n" +
-            "         inner join tp_mst_goodstype mstgoodstype2\n" +
-            "            on mstgoodstype2.goodstypecode =\n" +
-            "               substr(mstgoodstype.goodstypecode, 0, 6)\n" +
-            "           and mstgoodstype.accountid = mstgoodstype2.accountid\n" +
-            //"         where 1=1\n";
-            //selSql.Append(sqlString);
-            //if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
-            //{
-            //    selSql.Append("    AND instr(','||:GoodsTypeIDS||',', ','||mstgoods.GOODSTYPEId||',') > 0\n");
-            //    parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
-            //}
+            string sqlString = "";
+            if (se.RptSProcedureID == 16) {
+                sqlString = @"   SELECT  						CASE WHEN KILNCODE  IS NULL THEN '总计' 
+                                                     WHEN GOODSTYPECODE IS NULL AND KILNCODE IS NOT NULL THEN '合计' else  TO_CHAR(KILNCODE)  END KILNCODE ,GOODSTYPECODE,
+												COUNT(DISTINCT BARCODE ) as OutKilnCount,
+												COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID IN (4,5) THEN BARCODE ELSE NULL END) AS 出窑量_产量,
+                                                COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4,5) AND GOODSLEVELTYPEID IS NOT NULL   THEN BARCODE ELSE NULL END) AS 出窑量_残品,
+												DECODE( NVL( COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID IN (4,5) THEN BARCODE ELSE NULL END), 0 ), 0, '0%', TO_CHAR( ( NVL( COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID IN (4,5) THEN BARCODE ELSE NULL END), 0 ) / DECODE( NVL( COUNT(DISTINCT BARCODE ), 1 ), 0, 1, NVL( COUNT(DISTINCT BARCODE ), 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) GoodPercent
+												
+												FROM(
+                                                         SELECT
+                                                         BARCODE,PROCEDUREIDS,REWORKPROCEDUREID,GROUTINGLINECODE,GOODSCODE,GOODSNAME,LOGONAME,GOODSLEVELTYPEID,GOODSSPECIFICATION,DICTIONARYVALUE,
+                                                       HIGHPRESSUREFLAG,PROCEDUREID,GOODSTYPECODE,GOODSTYPENAME,KILNCODE,
+                                                         row_number() over (partition by BARCODE order by GOODSLEVELTYPEID DESC ) as rownums
+                                                     FROM(
+                                             SELECT
+                                                DISTINCT pd.BARCODE,PDS.PROCEDUREID AS PROCEDUREIDS,
+												PD.REWORKPROCEDUREID,
+                                                pd.GROUTINGLINECODE,
+                                                pd.GOODSCODE,
+                                                pd.GOODSNAME,
+                                                LOGO.LOGONAME,
+                                                good.GOODSSPECIFICATION,
+                                                TP_MST_DataDictionary.DICTIONARYVALUE,
+                                                GL.HIGHPRESSUREFLAG,
+                                                pd.PROCEDUREID AS PROCEDUREID,
+												pd.KILNCODE,
+												CASE WHEN instr(gtp.GOODSTYPECODE,'001001')>0 THEN '大件'
+												ELSE '小件' END  GOODSTYPECODE,
+												gtp.GOODSTYPENAME,
+												CASE WHEN PDL.GOODSLEVELTYPEID < PD.GOODSLEVELTYPEID  THEN PD.GOODSLEVELTYPEID 
+												WHEN PD.GOODSLEVELTYPEID  < PDL.GOODSLEVELTYPEID THEN PDL.GOODSLEVELTYPEID
+												WHEN PDL.GOODSLEVELTYPEID IS NULL  THEN PD.GOODSLEVELTYPEID
+												WHEN PD.GOODSLEVELTYPEID  = PDL.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
+												ELSE NULL END GOODSLEVELTYPEID
+										    FROM TP_PM_PRODUCTIONDATA pd
+												INNER JOIN TP_PM_PRODUCTIONDATA PDS ON PDS.BARCODE=PD.BARCODE
+												LEFT  JOIN TP_PM_PRODUCTIONDATA PDL ON PDL.BARCODE=PD.BARCODE AND PDL.PROCEDUREID=60 AND PDL.VALUEFLAG=1
+												LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
+												LEFT JOIN TP_MST_GOODSTYPE gtp ON good.GOODSTYPEID=gtp.GOODSTYPEID
+                        LEFT JOIN TP_MST_LOGO logo ON logo.LOGOID=pd.LOGOID
+                        LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gd ON gd.barcode=pd.barcode
+                        LEFT JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID=gd.GROUTINGLINEID
+                        LEFT JOIN TP_MST_DataDictionary ON TP_MST_DataDictionary.DICTIONARYID=gd.GLAZETYPEID AND TP_MST_DataDictionary.DictionaryType = 'TPC002'
+                         WHERE PD.PROCEDUREID IN(16) AND PD.VALUEFLAG=1  
+												 AND PD.CREATETIME >= :CreateTimeStart AND PD.CREATETIME <  :CreateTimeEnd
+												) )WHERE rownums=1
+                                               GROUP BY 	Grouping sets ((KILNCODE,GOODSTYPECODE),(KILNCODE),())";
+            }
+            else {
+                sqlString = @"   SELECT  		CASE WHEN KILNCODE  IS NULL THEN '总计' 
+                                                     WHEN GOODSTYPECODE IS NULL AND KILNCODE IS NOT NULL THEN '合计' else  TO_CHAR(KILNCODE)  END KILNCODE ,
+                                                GOODSTYPECODE,
+												COUNT(DISTINCT BARCODE ) as OutKilnCount,
+												COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID IN (4,5) THEN BARCODE ELSE NULL END) AS 出窑量_产量,
+                        COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4,5) AND GOODSLEVELTYPEID IS NOT NULL   THEN BARCODE ELSE NULL END) AS 出窑量_残品,
+												DECODE( NVL( COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID IN (4,5) THEN BARCODE ELSE NULL END), 0 ), 0, '0%', TO_CHAR( ( NVL( COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID IN (4,5) THEN BARCODE ELSE NULL END), 0 ) / DECODE( NVL( COUNT(DISTINCT BARCODE ), 1 ), 0, 1, NVL( COUNT(DISTINCT BARCODE ), 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) GoodPercent
+												
+												FROM(
+                                                         SELECT
+                                                         BARCODE,PROCEDUREIDS,REWORKPROCEDUREID,GROUTINGLINECODE,GOODSCODE,GOODSNAME,LOGONAME,GOODSLEVELTYPEID,GOODSSPECIFICATION,DICTIONARYVALUE,
+                                                       HIGHPRESSUREFLAG,PROCEDUREID,GOODSTYPECODE,GOODSTYPENAME,KILNCODE,
+                                                         row_number() over (partition by BARCODE order by GOODSLEVELTYPEID DESC ) as rownums
+                                                     FROM(
+                                             SELECT
+                                                DISTINCT pd.BARCODE,PDS.PROCEDUREID AS PROCEDUREIDS,
+												PD.REWORKPROCEDUREID,
+                                                pd.GROUTINGLINECODE,
+                                                pd.GOODSCODE,
+                                                pd.GOODSNAME,
+                                                LOGO.LOGONAME,
+                                                good.GOODSSPECIFICATION,
+                                                TP_MST_DataDictionary.DICTIONARYVALUE,
+                                                GL.HIGHPRESSUREFLAG,
+                                                pd.PROCEDUREID AS PROCEDUREID,
+												pd.KILNCODE,
+												CASE WHEN instr(gtp.GOODSTYPECODE,'001001')>0 THEN '大件'
+												ELSE '小件' END  GOODSTYPECODE,
+												gtp.GOODSTYPENAME,
+												CASE WHEN PDL.GOODSLEVELTYPEID < PD.GOODSLEVELTYPEID  THEN PD.GOODSLEVELTYPEID 
+												WHEN PD.GOODSLEVELTYPEID  < PDL.GOODSLEVELTYPEID THEN PDL.GOODSLEVELTYPEID
+												WHEN PDL.GOODSLEVELTYPEID IS NULL  THEN PD.GOODSLEVELTYPEID
+												WHEN PD.GOODSLEVELTYPEID  = PDL.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
+												ELSE NULL END GOODSLEVELTYPEID
+										    FROM TP_PM_PRODUCTIONDATA pd
+												INNER JOIN TP_PM_PRODUCTIONDATA PDS ON PDS.BARCODE=PD.BARCODE
+												LEFT  JOIN TP_PM_PRODUCTIONDATA PDL ON PDL.BARCODE=PD.BARCODE AND PDL.PROCEDUREID=61 AND PDL.VALUEFLAG=1
+												LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
+												LEFT JOIN TP_MST_GOODSTYPE gtp ON good.GOODSTYPEID=gtp.GOODSTYPEID
+                        LEFT JOIN TP_MST_LOGO logo ON logo.LOGOID=pd.LOGOID
+                        LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gd ON gd.barcode=pd.barcode
+                        LEFT JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID=gd.GROUTINGLINEID
+                        LEFT JOIN TP_MST_DataDictionary ON TP_MST_DataDictionary.DICTIONARYID=gd.GLAZETYPEID AND TP_MST_DataDictionary.DictionaryType = 'TPC002'
+                         WHERE PD.PROCEDUREID IN(28) AND PD.VALUEFLAG=1   AND PDL.CREATETIME >= PD.CREATETIME
+												 AND PD.CREATETIME >= :CreateTimeStart AND PD.CREATETIME <  :CreateTimeEnd
+												) )WHERE rownums=1
+                                               GROUP BY 	Grouping sets ((KILNCODE,GOODSTYPECODE),(KILNCODE),())";
 
-            //sqlString =
-            "         group by grouping sets((mstkiln.kilncode,\n" +
-            "                                 mstgoodstype2.goodstypename),\n" +
-            "                                 mstkiln.kilncode,())\n" +
-            "         order by --pcpl.productionlinename,\n" +
-            "                  mstkiln.kilncode,\n" +
-            "                  mstgoodstype2.goodstypename\n" +
-            "       ) qdgroup\n";
-
-            selSql.Append(sqlString);
-            return selSql.ToString();
+            }
+                
+            return sqlString;
         }
 
         /// <summary>

+ 48 - 3
DK.Service/PMModuleLogic/PMModuleLogicPartial.cs

@@ -1309,6 +1309,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
 				{
 
 					sqlString = @"select 
+									gdd.barcode,
                                     gdd.GoodsName,
                                     gdd.USERID,
                                     gdd.USERCODE,
@@ -2022,11 +2023,11 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
 							}
 							if (procedureID == 4 || procedureID == 36 || procedureID == 52)
 							{
-								sqlString = @"select 
+								sqlString = @"select tp_pm_groutingdailydetail.BarCode,
                                     TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
                                     tp_pm_groutingdailydetail.groutingcount as GroutingNum,
                                     tp_pm_groutingdailydetail.GroutingMouldCode as MouldCode,
-                                    0 as ispublicbody,
+                                    tp_pm_groutingdailydetail.ispublicbody,
                                     tp_pm_groutingdailydetail.Groutingdate,
                                     tp_pm_groutingdailydetail.SpecialRepairFlag,
                                     tp_mst_logo.logoid,
@@ -2060,10 +2061,11 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
 								if (NodeType == (int)Constant.ProcedureNodeType.Begin) //开始节点
 								{
 									sqlString = @"select 
+									tp_pm_groutingdailydetail.BarCode,
                                     TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
                                     tp_pm_groutingdailydetail.groutingcount as GroutingNum,
                                     tp_pm_groutingdailydetail.GroutingMouldCode as MouldCode,
-                                    0 as ispublicbody,
+                                    tp_pm_groutingdailydetail.ispublicbody,
                                     tp_pm_groutingdailydetail.Groutingdate,
                                     tp_pm_groutingdailydetail.SpecialRepairFlag,
                                     tp_mst_logo.logoid,
@@ -3052,7 +3054,26 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
 					new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
 				};
 				DataSet resultDs = oracleConn.GetSqlResultToDs(sqlString, paras);
+
+				string sqlStrings = @"SELECT
+												USERCODE,STAFFNAME,STAFFCODE,STAFFID,CREATETIME,ROWNUM as rn
+												FROM(
+												SELECT cls.USERCODE,listagg(stf.STAFFNAME,',') within GROUP (order by cls.USERCODE) as STAFFNAME,
+													listagg(stf.STAFFID,',') within GROUP (order by cls.USERCODE) STAFFID, 
+													listagg(stf.STAFFCODE,',') within GROUP (order by cls.USERCODE) AS STAFFCODE, 
+													cls.CREATETIME
+												 FROM TP_PC_CLASSESDETAIL cls
+												LEFT JOIN TP_HR_STAFF stf ON stf.STAFFID=cls.STAFFID
+												WHERE cls.USERCODE=:UserCode
+												GROUP BY cls.USERCODE,cls.CREATETIME
+												ORDER BY cls.CREATETIME DESC
+												)
+												WHERE ROWNUM=1											";
+				 paras = new OracleParameter[]{
+					new OracleParameter(":UserCode",OracleDbType.Varchar2,UserCode,ParameterDirection.Input),
+				};
 				CheckProcedureUserResult checkProcedureUserResult = new CheckProcedureUserResult();
+				DataTable dt = oracleConn.GetSqlResultToDt(sqlStrings, paras);
 				if (resultDs != null && resultDs.Tables.Count > Constant.INT_IS_ZERO && resultDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
 				{
 					if (Convert.ToInt32(resultDs.Tables[0].Rows[0]["ProcedureUserid"]) == Constant.INT_IS_ZERO)
@@ -3067,6 +3088,30 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
 						checkProcedureUserResult.UserCode = resultDs.Tables[0].Rows[0]["UserCode"].ToString();
 						checkProcedureUserResult.UserName = resultDs.Tables[0].Rows[0]["UserName"].ToString();
 						checkProcedureUserResult.Ispublicbody = resultDs.Tables[0].Rows[0]["Ispublicbody"].ToString() == "1" ? 1 : 0;
+						if (dt.Rows.Count > Constant.INT_IS_ZERO)
+						{
+
+							if (procedureID == 37 || procedureID == 41 || procedureID== 10)
+							{
+								checkProcedureUserResult.StaffID = dt.Rows[0]["STAFFID"].ToString();
+								checkProcedureUserResult.StaffCode = dt.Rows[0]["STAFFCODE"].ToString()+"_" + dt.Rows[0]["STAFFNAME"].ToString();
+								checkProcedureUserResult.StaffName = dt.Rows[0]["STAFFCODE"].ToString() + "_" + dt.Rows[0]["STAFFNAME"].ToString();
+							}
+							else {
+								checkProcedureUserResult.StaffID = dt.Rows[0]["STAFFID"].ToString();
+								checkProcedureUserResult.StaffCode = dt.Rows[0]["STAFFCODE"].ToString();
+								checkProcedureUserResult.StaffName = dt.Rows[0]["STAFFNAME"].ToString();
+							}
+							
+						}
+						else {
+
+							checkProcedureUserResult.StaffID = resultDs.Tables[0].Rows[0]["UserID"].ToString(); ;
+							checkProcedureUserResult.StaffCode = resultDs.Tables[0].Rows[0]["UserCode"].ToString();
+							checkProcedureUserResult.StaffName = resultDs.Tables[0].Rows[0]["UserName"].ToString();
+						}
+						
+					
 					}
 				}
 				else

+ 6 - 6
DK.Service/ReportModuleLogic/ReportModuleLogic.cs

@@ -766,9 +766,8 @@ namespace Dongke.IBOSS.PRD.Service.ReportModuleLogic
 	                                                    mu.username,
 	                                                    pd.ISPUBLICBODY,
 	                                                    gdd.GROUTINGCOUNT,
-	                                                     TP_MST_Logo.Logocode,TP_MST_Logo.Logoname,uc.usercode
-	                                                                ),(pd.GroutingUserCode,tp_mst_user.USERNAME,pd.goodscode,
-	                                                    pd.goodsname,g.GoodsSpecification,TP_MST_Logo.Logoname,pd.GroutingLineCode
+	                                                     TP_MST_Logo.Logocode,TP_MST_Logo.Logoname,uc.usercode),(pd.GroutingUserCode,tp_mst_user.USERNAME,pd.goodscode,
+	                                                    pd.goodsname,g.GoodsSpecification,pd.GroutingLineCode
 																											),(pd.GroutingUserCode),())
 	                                                     ORDER BY DECODE(GROUPING_ID(pd.GroutingUserCode,pd.goodscode), 3, 1), pd.GroutingUserCode,GROUPING_ID(pd.GroutingUserCode,pd.goodscode,pd.GOODSNAME), pd.barcode");
                 DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
@@ -6601,8 +6600,9 @@ namespace Dongke.IBOSS.PRD.Service.ReportModuleLogic
             "      ,lg.logoname\n" +
             "      ,sp.CreateTime\n" +
             "      ,sp.Remarks\n" +
-            "      ,CASE WHEN sp.DISCOVERERSTAFF='NULL' THEN NULL ELSE sp.DISCOVERERSTAFF END AS  DISCOVERERSTAFF," +
-            "       COUNT(1) AS counts,JOB.JOBSNAME\n" +
+            "      , COUNT(DISTINCT sp.BARCODE ) AS counts\n" +
+            "      ,CASE WHEN sp.DISCOVERERSTAFF IS NULL OR  sp.DISCOVERERSTAFF='null' THEN ' ' ELSE TO_CHAR(sp.DISCOVERERSTAFF) END AS  DISCOVERERSTAFF," +
+            "       JOB.JOBSNAME\n" +
             "  FROM tp_pm_scrapproduct sp\n" +
             "  LEFT JOIN TP_PM_ResponProcedure rp\n" +
             "    ON rp.scrapproductid = sp.scrapproductid\n" +
@@ -6727,7 +6727,7 @@ namespace Dongke.IBOSS.PRD.Service.ReportModuleLogic
                                                   ,lg.logoname
                                                   ,sp.CreateTime
                                                   ,sp.Remarks
-			                                      ,sp.DISCOVERERSTAFF,JOB.JOBSNAME ), (sr.usercode),())";
+			                                      ,sp.DISCOVERERSTAFF,JOB.JOBSNAME ), (sr.usercode),()) ORDER BY sr.usercode,p.procedurename  ";
             parameters.Add(new OracleParameter(":productionlineid", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
             if (string.IsNullOrEmpty(se.ProcedureIDS))
             {

+ 15 - 0
WCF.Service/WCF.DataModels/PMModule/CheckProcedureUserResult.cs

@@ -43,5 +43,20 @@ namespace Dongke.IBOSS.PRD.WCF.DataModels
         /// </summary>
         [DataMember]
         public int Ispublicbody { get; set; }
+        /// <summary>
+        /// 员工ID
+        /// </summary>
+        [DataMember]
+        public string StaffID { get; set; }
+        /// <summary>
+        /// 员工编码
+        /// </summary>
+        [DataMember]
+        public string StaffCode { get; set; }
+        /// <summary>
+        /// 员工名称
+        /// </summary>
+        [DataMember]
+        public string StaffName { get; set; }
     }
 }