Просмотр исходного кода

成品库(自) 扫描载具后获取信息sql修改逻辑

忠帅 张 2 лет назад
Родитель
Сommit
309eee0e40
1 измененных файлов с 86 добавлено и 58 удалено
  1. 86 58
      DK.Service/PMModuleLogic/PMModuleLogic.cs

+ 86 - 58
DK.Service/PMModuleLogic/PMModuleLogic.cs

@@ -3730,52 +3730,77 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
 			try
 			{
 				con.Open();
-				string sqlString = @"SELECT	*
-                                         FROM(
-                              SELECT			 DISTINCT
-                                                M.ENTRUCKINGCODE,
-                                                I.GOODSCODE,
-                                                I.GOODSNAME,
-												C.CUSTOMERCODE,
-												C.CUSTOMERNAME,
-												GT.GOODSTYPECODE
-                     FROM
-                     TP_PM_ENTRUCKINGDETAIL M  --载具表
-                     LEFT JOIN TP_PM_GROUTINGDAILYDETAIL I ON M.BARCODE = I.BARCODE  --注浆明细表
-										INNER JOIN TP_PC_CUSTOMERINFORMATION C on C.GOODSCODE=I.GOODSCODE --客户表
-										INNER JOIN TP_MST_GOODS gs on gs.goodsID=I.GOODSID
-										LEFT JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID=GS.GOODSTYPEID
-                   WHERE		M.ENTRUCKINGCODE =:ENTRUCKINGCODE
-                                AND 	GT.GOODSTYPECODE<>'001002001'
-                                AND M.VALUEFLAG = '1' 
-								ORDER BY SUBSTR(	GT.GOODSTYPECODE, 6) ASC
-																	)
-													ORDER BY SUBSTR(	GOODSTYPECODE, 6) ASC";
+				string sqlString = @"SELECT DISTINCT
+	                                            :ENTRUCKINGCODE AS ENTRUCKINGCODE,
+	                                            gds. GOODSCODE as GOODSCODE,
+	                                            gds. GOODSNAME  as GOODSNAME,
+	                                            TO_CHAR(C.CUSTOMERCODE) as CUSTOMERCODE,
+	                                            TO_CHAR(C.CUSTOMERNAME) as CUSTOMERNAME
+                                            FROM
+	                                            TP_PC_CUSTOMERINFORMATION C
+	                                            INNER JOIN (
+	                                            SELECT
+		                                            GOODSCODE 
+	                                            FROM
+		                                            TP_MST_GOODS 
+	                                            WHERE
+		                                            GOODSNAME IN ( SELECT GOODSNAME FROM TP_PM_GROUTINGDAILYDETAIL G INNER JOIN ( SELECT BARCODE FROM TP_PM_ENTRUCKINGDETAIL WHERE ENTRUCKINGCODE = :ENTRUCKINGCODE ) E ON G.BARCODE = E.BARCODE ) 
+	                                            ) G ON C.GOODSCODE = G.GOODSCODE
+	                                            INNER JOIN TP_MST_GOODS GD ON G.GOODSCODE = GD.GOODSCODE
+	                                            INNER JOIN TP_MST_GOODSTYPE GT ON GD.GOODSTYPEID = GT.GOODSTYPEID 
+	                                            AND GT.GOODSTYPECODE <> '001002001'
+                                            LEFT JOIN (
+                                            select '',TO_CHAR(GOODSCODE)as GOODSCODE,TO_CHAR(GOODSNAME) as GOODSNAME,'','' from 
+                                            TP_PM_GROUTINGDAILYDETAIL where BARCODE in (SELECT BARCODE FROM TP_PM_ENTRUCKINGDETAIL WHERE ENTRUCKINGCODE = :ENTRUCKINGCODE))gds on  1=1";
 				OracleParameter[] paras = new OracleParameter[] {
 					   new OracleParameter(":ENTRUCKINGCODE",OracleDbType.Varchar2,entruckingCode,ParameterDirection.Input),
 					  };
 				DataSet ds = con.GetSqlResultToDs(sqlString, paras);
-				//查询本次载具上存放的产品条码
-				string sqlbarcode = @"SELECT 
-        								DISTINCT
-        									gl.ISPUBLICBODY out_ISPUBLICBODY,
-                                                  et.BARCODE out_BARCODE,
-        									gl.GOODSCODE out_GOODSCODE,
-        									gl.GOODSNAME out_GOODSNAME,
-        									US.USERID out_USERID,
-        									US.USERCODE out_USERCODE,
-        									US.USERNAME out_USERNAME,
-        									gl.GroutingMouldCode out_GroutingMouldCode,
-        									gl.GroutingCount  out_GroutingNum,
-        									gl.Groutingdate out_Groutingdate,
-        									lg.LOGONAME out_LOGONAME
-                                             FROM TP_PM_ENTRUCKINGDETAIL et
-        									LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gl on gl.BARCODE=et.BARCODE
-        									LEFT JOIN TP_MST_USER us on us.USERID=GL.USERID
-        									LEFT JOIN TP_MST_LOGO lg on lg.LOGOID=gl.LOGOID
-                                                  WHERE et.VALUEFLAG=1 
-                                                  AND  et.ENTRUCKINGCODE=:ENTRUCKINGCODE";
-				OracleParameter[] parabarcode = new OracleParameter[] {
+                //查询本次载具上存放的产品条码
+                string sqlbarcode = @"SELECT
+	                                                    * 
+                                                    FROM
+	                                                    (
+	                                                    SELECT DISTINCT
+		                                                    GL.ISPUBLICBODY OUT_ISPUBLICBODY,
+		                                                    ET.BARCODE OUT_BARCODE,
+		                                                    GL.GOODSCODE OUT_GOODSCODE,
+		                                                    GL.GOODSNAME OUT_GOODSNAME,
+		                                                    US.USERID OUT_USERID,
+		                                                    US.USERCODE OUT_USERCODE,
+		                                                    US.USERNAME OUT_USERNAME,
+		                                                    GL.GROUTINGMOULDCODE OUT_GROUTINGMOULDCODE,
+		                                                    GL.GROUTINGCOUNT OUT_GROUTINGNUM,
+		                                                    GL.GROUTINGDATE OUT_GROUTINGDATE,
+		                                                    LG.LOGONAME OUT_LOGONAME,
+		                                                    E.BATCH AS BATCHA,
+		                                                    MAX( ET.BATCH ) AS BATCHB 
+	                                                    FROM
+		                                                    TP_PM_ENTRUCKINGDETAIL ET
+		                                                    INNER JOIN TP_PM_ENTRUCKING E ON ET.ENTRUCKINGCODE = E.ENTRUCKINGCODE
+		                                                    LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GL ON GL.BARCODE = ET.BARCODE
+		                                                    LEFT JOIN TP_MST_USER US ON US.USERID = GL.USERID
+		                                                    LEFT JOIN TP_MST_LOGO LG ON LG.LOGOID = GL.LOGOID 
+	                                                    WHERE
+		                                                    ET.VALUEFLAG = 1 
+		                                                    AND ET.ENTRUCKINGCODE =:ENTRUCKINGCODE
+	                                                    GROUP BY
+		                                                    GL.ISPUBLICBODY,
+		                                                    ET.BARCODE,
+		                                                    GL.GOODSCODE,
+		                                                    GL.GOODSNAME,
+		                                                    US.USERID,
+		                                                    US.USERCODE,
+		                                                    US.USERNAME,
+		                                                    GL.GROUTINGMOULDCODE,
+		                                                    GL.GROUTINGCOUNT,
+		                                                    GL.GROUTINGDATE,
+		                                                    LG.LOGONAME,
+		                                                    E.BATCH 
+	                                                    ) T 
+                                                    WHERE
+	                                                    T.BATCHA <= T.BATCHB";
+                OracleParameter[] parabarcode = new OracleParameter[] {
 							  new OracleParameter(":ENTRUCKINGCODE",OracleDbType.Varchar2,entruckingCode,ParameterDirection.Input)
 							 };
 				DataTable dt = con.GetSqlResultToDt(sqlbarcode, parabarcode);
@@ -3978,22 +4003,25 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
 			try
 			{
 				con.Open();
-				string sqlString = @"							
-                          SELECT * FROM(
-        				SELECT DISTINCT
-                                 C.CUSTOMERNAME,
-        				         C.GOODSCODE,
-                                 L.LAYOUTCODE,
-                                 L.LAYOUTNAME
-                                FROM TP_PC_CUSTOMERINFORMATION C
-                               LEFT JOIN TP_PC_LAYOUTINFORMATION L ON C.CUSTOMERCODE = L.CUSTOMERCODE AND L.GOODSCODE=c.GOODSCODE
-                                    WHERE C.VALUEFLAG = '1'
-									AND c.CUSTOMERCODE=:customercode
-                                      AND L.GOODSCODE IN ( SELECT GOODSCODE FROM TP_MST_GOODS WHERE GOODSNAME = (SELECT GOODSNAME FROM TP_MST_GOODS WHERE GOODSCODE=:goodscode))
-									AND C.VALUEFLAG=1
-									AND L.VALUEFLAG=1
-        							)					 
-        			    WHERE  LAYOUTCODE is not null ";
+				    string sqlString = @"							SELECT
+							*
+							FROM(
+                              SELECT a.*, rank() over(partition by a.LAYOUTNAME order by a.LAYOUTCODE) rn FROM(
+        				    SELECT DISTINCT
+                                     C.CUSTOMERNAME,
+																			C.GOODSCODE,
+                                     L.LAYOUTCODE,
+                                     L.LAYOUTNAME as LAYOUTNAME
+                                    FROM TP_PC_CUSTOMERINFORMATION C
+                                   LEFT JOIN TP_PC_LAYOUTINFORMATION L ON C.CUSTOMERCODE = L.CUSTOMERCODE AND L.GOODSCODE=c.GOODSCODE
+                                        WHERE C.VALUEFLAG = '1'
+									    AND c.CUSTOMERCODE=:customercode 
+                                          AND L.GOODSCODE IN ( SELECT GOODSCODE FROM TP_MST_GOODS WHERE GOODSNAME IN (SELECT GOODSNAME FROM TP_MST_GOODS WHERE GOODSCODE=:goodscode  ))
+									    AND C.VALUEFLAG=1
+									    AND L.VALUEFLAG=1
+        							    )	a 
+													)
+													WHERE rn=1";
 				OracleParameter[] paras = new OracleParameter[] {
 					   new OracleParameter(":customercode",OracleDbType.Varchar2,customercode,ParameterDirection.Input),
 					   new OracleParameter(":goodscode",OracleDbType.Varchar2,goodscode,ParameterDirection.Input),