Kaynağa Gözat

pda 工号产量质量统计表

chenxy 6 yıl önce
ebeveyn
işleme
cb641650e9

+ 287 - 0
DK.Service/PDAModuleLogic/PDAModuleLogic.cs

@@ -3693,6 +3693,293 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
         }
 
         /// <summary>
+        /// 取得FP00002_1画面(工号产量质量分析表-中陶)的查询数据
+        /// </summary>
+        /// <param name="user">登录用户信息</param>
+        /// <param name="se">查询条件</param>
+        /// <returns>查询结果</returns>
+        public static ServiceResultEntity GetFP00002_1Data(SUserInfo user, int rptSProcedureID, string usercode, DateTime date, string goodscode)
+        {
+            //if(string.IsNullOrWhiteSpace(usercode))
+            //{
+            //    ServiceResultEntity sre = new ServiceResultEntity();
+            //    sre.Status = Constant.ServiceResultStatus.NoSearchResults;
+            //    return sre;
+            //}
+            IDBConnection conn = null;
+            try
+            {
+                conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
+                List<OracleParameter> parameters = new List<OracleParameter>();
+                date = date.Date;
+                parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
+                parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, date, ParameterDirection.Input));
+                parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, date.AddDays(1), ParameterDirection.Input));
+                parameters.Add(new OracleParameter(":Usercode", OracleDbType.NVarchar2, usercode, ParameterDirection.Input));
+                parameters.Add(new OracleParameter(":goodscode", OracleDbType.Varchar2, goodscode, ParameterDirection.Input));
+                
+                #region
+                // 产量
+                string sqlString = "\n" +
+                "select qdgroup.gid,\n" +
+                //"       decode(qdgroup.gid, 7, '总计', 0, qdgroup.productionlinename, '--') productionlinename,\n" +
+                "       decode(qdgroup.gid, 3, '总计', 1, '合计', 0, qdgroup.procedurename, '') procedurename,\n" +
+                //"       decode(qdgroup.gid, 1, '小计', 0, qdgroup.goodstypename2, '--') goodstypename2,\n" +
+                //"       --decode(qdgroup.gid, 0, qdgroup.usercode, '--') usercode,\n" +
+                //"       decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename,\n" +
+                "       decode(qdgroup.gid, 0, qdgroup.goodscode, '') goodscode,\n" +
+                "       to_char(qdgroup.production) production\n" +
+                "  from (select grouping_id(--pcpl.productionlinename,\n" +
+                "                           pcp.procedurename,\n" +
+                //"                           mstgoodstype2.goodstypename,\n" +
+                //"                           --qd.usercode,\n" +
+                "                           mstgoods.goodscode) gid,\n" +
+                //"               pcpl.productionlinename,\n" +
+                "               pcp.procedurename,\n" +
+                //"               mstgoodstype2.goodstypename goodstypename2,\n" +
+                "               --qd.usercode,\n" +
+                //"               mstgoodstype.goodstypename,\n" +
+                "               mstgoods.goodscode,\n" +
+                "               sum(qd.production) production\n" +
+                "          from (select --pd.barcode,\n" +
+                //"                 pd.productionlineid,\n" +
+                "                 pd.procedureid,\n" +
+                "                 pd.goodsid,\n" +
+                "                 --pd.userid,\n" +
+                "                 --pd.usercode,\n" +
+                "                 1 production\n" +
+                "                  from tp_pm_productiondata pd\n" +
+                "                 where pd.valueflag = '1'\n" +
+                "                   and ((pd.modeltype <> 5) or\n" +
+                "                       (pd.modeltype = 5 and pd.SpecialRepairFlag = '0'))\n" +
+                "                   and pd.Usercode = :Usercode\n" +
+                "                   and (:goodscode is null or instr(pd.goodscode, :goodscode) > 0)\n" +
+                "                   and pd.AccountID = :AccountID\n" +
+                "                   AND pd.createtime >= :CreateTimeStart\n" +
+                "                   AND pd.createtime < :CreateTimeEnd) qd\n" +
+                //"          left join tp_pc_productionline pcpl\n" +
+                //"            on pcpl.productionlineid = qd.productionlineid\n" +
+                "          left join tp_pc_procedure pcp\n" +
+                "            on pcp.procedureid = qd.procedureid\n" +
+                "          left join tp_mst_goods mstgoods\n" +
+                "            on mstgoods.goodsid = qd.goodsid\n" +
+                //"          left join tp_mst_goodstype mstgoodstype\n" +
+                //"            on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
+                //"          left join tp_mst_goodstype mstgoodstype2\n" +
+                //"            on mstgoodstype2.goodstypecode =\n" +
+                //"               substr(mstgoodstype.goodstypecode, 0, 6)\n" +
+                "         group by grouping sets((--pcpl.productionlinename,\n" +
+                "                                 pcp.procedurename,\n" +
+                //"                                 mstgoodstype2.goodstypename,\n" +
+                //"                                 --qd.usercode,\n" +
+                //"                                 mstgoodstype.goodstypename,\n" +
+                "                                 mstgoods.goodscode),\n" +
+                "                                 pcp.procedurename,())\n" +
+                "         order by --pcpl.productionlinename,\n" +
+                "                  pcp.procedurename,\n" +
+                //"                  mstgoodstype2.goodstypename,\n" +
+                //"                  --qd.usercode,\n" +
+                //"                  mstgoodstype.goodstypename,\n" +
+                "                  mstgoods.goodscode) qdgroup";
+
+                DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
+                ServiceResultEntity sre = new ServiceResultEntity();
+                if (data == null)
+                {
+                    sre.Status = Constant.ServiceResultStatus.NoSearchResults;
+                    return sre;
+                }
+                sre.Data = new DataSet();
+                sre.Data.Tables.Add(data);
+                #endregion
+                parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, rptSProcedureID, ParameterDirection.Input));
+                #region
+                string sqlString1 = "\n" +
+                "select qdgroup.gid,\n" +
+                //"       decode(qdgroup.gid, 0, qdgroup.productionlinename, '--') productionlinename,\n" +
+                "       decode(qdgroup.gid, 7, '总计', 3, '合计', 0, qdgroup.procedurename, '') procedurename,\n" +
+                "       decode(qdgroup.gid, 1, '小计', 0, qdgroup.kilncode, '') kilncode,\n" +
+                //"       decode(qdgroup.gid, 1, '小计', 0, qdgroup.goodstypename2, '--') goodstypename2,\n" +
+                //"       decode(qdgroup.gid, 0, qdgroup.goodstypename2, '') goodstypename2,\n" +
+                //"       --decode(qdgroup.gid, 0, qdgroup.usercode, '--') usercode,\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" +
+                "                           pcp.procedurename,\n" +
+                "                           mstkiln.kilncode,\n" +
+                //"                           mstgoodstype2.goodstypename) gid,\n" +
+                //"                           --qd.usercode,\n" +
+                "                           mstgoods.goodscode) gid,\n" +
+                //"               pcpl.productionlinename,\n" +
+                "               pcp.procedurename,\n" +
+                "               mstkiln.kilncode,\n" +
+                //"               mstgoodstype2.goodstypename goodstypename2,\n" +
+                //"               --qd.usercode,\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" +
+                "                 pdata.procedureid,\n" +
+                //"                 --pdata.usercode,\n" +
+                "                 pdbc.goodsid,\n" +
+                "                 pdbc.kilnid,\n" +
+                "                 1 OutKilnCount,\n" +
+                "                 case\n" +
+                "                   when defect.defectprocedureid is not null and glt.goodsleveltypeid in (5, 6, 7) then\n" +
+                "                    0\n" +
+                "                   else\n" +
+                "                    1\n" +
+                "                 end GoodCount,\n" +
+                //"                 case\n" +
+                //"                   when defect.defectprocedureid is not null and glt.goodsleveltypeid = 7 then\n" +
+                //"                    1\n" +
+                //"                   else\n" +
+                //"                    0\n" +
+                //"                 end SubstandardCount,\n" +
+                //"                 case\n" +
+                //"                   when defect.defectprocedureid is not null and glt.goodsleveltypeid = 6 then\n" +
+                //"                    1\n" +
+                //"                   else\n" +
+                //"                    0\n" +
+                //"                 end ReFireCount,\n" +
+                "                 case\n" +
+                "                   when defect.defectprocedureid is not null and 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.kilncarbatchno\n" +
+                "                          from tp_pm_productiondata pd\n" +
+                "                         where pd.valueflag = '1'\n" +
+                "                           and pd.procedureid = :in_rptSprocedureId \n" +
+                "                           and pd.AccountID = :AccountID\n" +
+                "                   and (:goodscode is null or instr(pd.goodscode, :goodscode) > 0)\n" +
+                "                           and pd.checktime >= :CreateTimeStart\n" +
+                "                           and pd.checktime < :CreateTimeEnd\n" +
+                "                        ) pdbc\n" +
+                "                 inner join (select pd.barcode,\n" +
+                //"                                    --pd.userid,\n" +
+                //"                                    --pd.usercode,\n" +
+                "                                    pd.procedureid\n" +
+                "                               from tp_pm_productiondata pd\n" +
+                "                              where pd.valueflag = '1'\n" +
+                "                                and pd.AccountID = :AccountID\n" +
+                "                                and pd.usercode = :Usercode\n" +
+                "                   and (:goodscode is null or instr(pd.goodscode, :goodscode) > 0)\n" +
+                // 公坯、干补不算交坯工序的质量。
+                //"                                and ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.IsPublicBody = '0' and pd.SpecialRepairFlag = '0')) \n" +
+                // 干补不算交坯工序的质量。
+                "                                and ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.SpecialRepairFlag = '0')) \n" +
+                "                        ) pdata\n" +
+                "                    on pdata.barcode = pdbc.barcode\n" +
+                "                  left join (select kcbc.barcode, kcbc.kilncarbatchno, kcbc.goodsleveltypeid, kcbc.productiondataid\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 (:goodscode is null or instr(pd.goodscode, :goodscode) > 0)\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\n" +
+                "                  left join (select distinct productiondataid, defectprocedureid" +
+                "                               from tp_pm_defect def " +
+                "                              where def.valueflag='1'" +
+                "                                and def.AccountID = :AccountID\n" +
+                "                   and (:goodscode is null or instr(def.goodscode, :goodscode) > 0)\n" +
+                "                                AND def.createtime >= :CreateTimeStart) defect\n" +
+                "                    on defect.productiondataid = glt.productiondataid\n" +
+                "                   and pdata.procedureid = defect.defectprocedureid) qd\n" +
+                //"         inner join tp_pc_productionline pcpl\n" +
+                //"            on pcpl.productionlineid = qd.productionlineid\n" +
+                "         inner join tp_pc_procedure pcp\n" +
+                "            on pcp.procedureid = qd.procedureid\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" +
+                //"         inner join tp_mst_goodstype mstgoodstype2\n" +
+                //"            on mstgoodstype2.goodstypecode =\n" +
+                //"               substr(mstgoodstype.goodstypecode, 0, 6)\n" +
+                //"           and mstgoodstype.AccountID = mstgoodstype2.AccountID\n" +
+                "         group by grouping sets((--pcpl.productionlinename,\n" +
+                "                                 pcp.procedurename,\n" +
+                "                                 mstkiln.kilncode,\n" +
+                //"                                 mstgoodstype2.goodstypename),\n" +
+                //"                                 --qd.usercode,\n" +
+                //"                                 mstgoodstype.goodstypename,\n" +
+                "                                 mstgoods.goodscode),\n" +
+                "                                (--pcpl.productionlinename,\n" +
+                "                                 pcp.procedurename,\n" +
+                "                                 mstkiln.kilncode),\n" +
+                //"                                 mstgoodstype2.goodstypename),\n" +
+                "                                (--pcpl.productionlinename,\n" +
+                "                                 pcp.procedurename),\n" +
+                //"                                 mstkiln.kilncode),\n" +
+                "                                 ())\n" +
+                "         order by --pcpl.productionlinename,\n" +
+                "                  pcp.procedurename,\n" +
+                "                  mstkiln.kilncode,\n" +
+                //"                  mstgoodstype2.goodstypename\n" +
+                //"                  --qd.usercode,\n" +
+                //"                  mstgoodstype.goodstypename,\n" +
+                "                  mstgoods.goodscode\n" +
+                "       ) qdgroup\n";
+                DataTable data1 = conn.GetSqlResultToDt(sqlString1, parameters.ToArray());
+                if (data1 == null)
+                {
+                    sre.Status = Constant.ServiceResultStatus.NoSearchResults;
+                    return sre;
+                }
+                sre.Data.Tables.Add(data1);
+                return sre;
+                #endregion
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
+            finally
+            {
+                if (conn != null &&
+                    conn.ConnState == ConnectionState.Open)
+                {
+                    conn.Close();
+                }
+            }
+        }
+
+        /// <summary>
         /// 取得RPT000001画面(半检数据统计表)的查询数据
         /// </summary>
         /// <param name="user">登录用户信息</param>

+ 16 - 0
WCF.Service/WCF.Contracts/IPDAModule.cs

@@ -1380,6 +1380,22 @@ namespace Dongke.IBOSS.PRD.WCF.Contracts
             int rptSProcedureID, string workcode, string date);
 
         /// <summary>
+        /// 工号产量质量分析表(中陶)
+        /// </summary>
+        /// <param name="accountCode"></param>
+        /// <param name="userCode"></param>
+        /// <param name="userPassword"></param>
+        /// <param name="sessionKey"></param>
+        /// <param name="se"></param>
+        /// <returns></returns>
+        [WebInvoke(BodyStyle = WebMessageBodyStyle.WrappedRequest
+         , ResponseFormat = WebMessageFormat.Json
+         , RequestFormat = WebMessageFormat.Json)]
+        [OperationContract]
+        ActionResult GetFP00002_1Data(string accountCode, string userCode, string userPassword, string sessionKey,
+            int rptSProcedureID, string workcode, string date, string goodscode);
+
+        /// <summary>
         /// 半检数据统计表
         /// </summary>
         /// <param name="accountCode"></param>

+ 65 - 13
WCF.Service/WCF.Services/PDAModuleService.cs

@@ -4926,10 +4926,10 @@ namespace Dongke.IBOSS.PRD.WCF.Services
 				{
 					return actionResult;
 				}
-				ServiceResultEntity sre = ServiceInvoker.Invoke<ServiceResultEntity>(this,
-				   () => PDAModuleLogic.GetFP00002Data(sUserInfo, rptSProcedureID, workcode, Convert.ToDateTime(date)));
+                ServiceResultEntity sre = ServiceInvoker.Invoke<ServiceResultEntity>(this,
+                   () => PDAModuleLogic.GetFP00002Data(sUserInfo, rptSProcedureID, workcode, Convert.ToDateTime(date)));
 
-				if (sre.Status == Constant.ServiceResultStatus.NoSearchResults)
+                if (sre.Status == Constant.ServiceResultStatus.NoSearchResults)
 				{
 					actionResult.Status = (int)Constant.PDAResult.Fail;
 					actionResult.Message = Messages.MSG_CMN_I002;
@@ -4954,16 +4954,68 @@ namespace Dongke.IBOSS.PRD.WCF.Services
 			return actionResult;
 		}
 
-		/// <summary>
-		/// 半检数据统计表
-		/// </summary>
-		/// <param name="accountCode"></param>
-		/// <param name="userCode"></param>
-		/// <param name="userPassword"></param>
-		/// <param name="sessionKey"></param>
-		/// <param name="se"></param>
-		/// <returns></returns>
-		public ActionResult GetPDARPT000001Data(string accountCode, string userCode, string userPassword, string sessionKey,
+        /// <summary>
+        /// 工号产量质量分析表(中陶)
+        /// </summary>
+        /// <param name="accountCode"></param>
+        /// <param name="userCode"></param>
+        /// <param name="userPassword"></param>
+        /// <param name="sessionKey"></param>
+        /// <param name="se"></param>
+        /// <returns></returns>
+        public ActionResult GetFP00002_1Data(string accountCode, string userCode, string userPassword, string sessionKey,
+            int rptSProcedureID, string workcode, string date, string goodscode)
+        {
+            ActionResult actionResult = new ActionResult();
+            try
+            {
+                // 验证请求头信息
+                actionResult = this.DoPDACheck(accountCode, userCode, userPassword, sessionKey);
+
+                // 验证失败
+                if (actionResult.Status != (int)Constant.PDAResult.Success)
+                {
+                    return actionResult;
+                }
+                ServiceResultEntity sre = ServiceInvoker.Invoke<ServiceResultEntity>(this,
+                   () => PDAModuleLogic.GetFP00002_1Data(sUserInfo, rptSProcedureID, workcode,
+                                                         Convert.ToDateTime(date), goodscode));
+
+                if (sre.Status == Constant.ServiceResultStatus.NoSearchResults)
+                {
+                    actionResult.Status = (int)Constant.PDAResult.Fail;
+                    actionResult.Message = Messages.MSG_CMN_I002;
+                }
+                else
+                {
+                    actionResult.Result = JsonHelper.ToJson(sre.Data);
+                    actionResult.Status = (int)Constant.PDAResult.Success;
+                }
+            }
+            catch (Exception ex)
+            {
+                //LogFileOperation.Error(DataManager.LogFileName, ex.Message);
+                OutputLog.TraceLog(LogPriority.Error,
+                                this.ToString(),
+                                System.Reflection.MethodBase.GetCurrentMethod().Name,
+                                ex.ToString(),
+                                LocalPath.LogExePath);
+                actionResult.Status = (int)Constant.PDAResult.Exception;
+                actionResult.Message = Constant.PDA_RESULT_EXCEPTION;
+            }
+            return actionResult;
+        }
+
+        /// <summary>
+        /// 半检数据统计表
+        /// </summary>
+        /// <param name="accountCode"></param>
+        /// <param name="userCode"></param>
+        /// <param name="userPassword"></param>
+        /// <param name="sessionKey"></param>
+        /// <param name="se"></param>
+        /// <returns></returns>
+        public ActionResult GetPDARPT000001Data(string accountCode, string userCode, string userPassword, string sessionKey,
 			string workcode, string datebegin, string dateend)
 		{
 			ActionResult actionResult = new ActionResult();