feiyue %!s(int64=3) %!d(string=hai) anos
pai
achega
ecb84db146
Modificáronse 1 ficheiros con 90 adicións e 30 borrados
  1. 90 30
      DK.Service/PDAModuleLogic/PDAModuleLogicEntrucking.cs

+ 90 - 30
DK.Service/PDAModuleLogic/PDAModuleLogicEntrucking.cs

@@ -171,17 +171,18 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
 					{
 						//产品与装具的绑定状态
 						sqlStr = $@"
-                            SELECT
-	                            TPE.EntruckingCode
-                            FROM TP_PM_ENTRUCKING TPE
-                            INNER JOIN TP_PM_EntruckingDetail TPED 
-                            ON TPE.EntruckingCode = TPED.EntruckingCode 
-                            AND TPE.Batch = TPED.Batch
-                            WHERE TPE.Status = 1
-							AND (TPED.DOFUNCTION = '1' OR TPED.DOFUNCTION = '3')
-                            AND TPED.BARCODE = '{barCode}'";
+							SELECT
+								TPE.EntruckingCode,TPED.DOFUNCTION
+							FROM
+								TP_PM_ENTRUCKING TPE
+								INNER JOIN TP_PM_EntruckingDetail TPED ON TPE.EntruckingCode = TPED.EntruckingCode 
+								AND TPE.Batch = TPED.Batch 
+								WHERE
+								TPE.Status = 1 AND
+								TPED.BARCODE = '{barCode}'
+								ORDER BY TPED.CREATETIME DESC";
 						dt = conn.GetSqlResultToDt(sqlStr);
-						if (dt.Rows.Count > 0)
+						if (dt.Rows.Count > 0 && (dt.Rows[0]["dt.Rows"].Equals("1") || dt.Rows[0]["dt.Rows"].Equals("3")))
 						{
 							sre.Status = Constant.ServiceResultStatus.Other;
 							sre.Message = "产品" + barCode + "已在装具" + dt.Rows[0]["EntruckingCode"] + "上"; ;
@@ -379,22 +380,37 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
 					{
 						sqlStr = $@"
                         SELECT
-	                        TD.ENTRUCKINGCODE,
-							TD.BARCODE,
-							G.GOODSCODE,
-							U.USERCODE,
-							P.PROCEDURENAME
-                        FROM
-	                        TP_PM_ENTRUCKINGDETAIL TD
-	                        INNER JOIN TP_PM_ENTRUCKING T ON T.ENTRUCKINGCODE = TD.ENTRUCKINGCODE AND T.BATCH = TD.BATCH
-	                        INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.BARCODE = TD.BARCODE
-	                        INNER JOIN TP_PM_INPRODUCTION IP ON IP.BARCODE = TD.BARCODE
-	                        INNER JOIN TP_PC_PROCEDURE P ON P.PROCEDUREID = IP.PROCEDUREID
-	                        INNER JOIN TP_MST_USER U ON U.USERID = IP.USERID
-	                        INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
-                        WHERE
-	                        TD.ENTRUCKINGCODE = '{entruckingCode}' 
-	                        AND T.STATUS = '1'
+							TT.ENTRUCKINGCODE,
+							TT.BARCODE,
+							TT.GOODSCODE,
+							TT.USERCODE,
+							TT.PROCEDURENAME 
+						FROM
+							(
+							SELECT
+								ROW_NUMBER ( ) OVER ( PARTITION BY TD.BARCODE ORDER BY TD.CREATETIME DESC ) RN,
+								TD.ENTRUCKINGCODE,
+								TD.BARCODE,
+								G.GOODSCODE,
+								U.USERCODE,
+								P.PROCEDURENAME,
+								TD.DOFUNCTION 
+							FROM
+								TP_PM_ENTRUCKINGDETAIL TD
+								INNER JOIN TP_PM_ENTRUCKING T ON T.ENTRUCKINGCODE = TD.ENTRUCKINGCODE 
+								AND T.BATCH = TD.BATCH
+								INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.BARCODE = TD.BARCODE
+								INNER JOIN TP_PM_INPRODUCTION IP ON IP.BARCODE = TD.BARCODE
+								INNER JOIN TP_PC_PROCEDURE P ON P.PROCEDUREID = IP.PROCEDUREID
+								INNER JOIN TP_MST_USER U ON U.USERID = IP.USERID
+								INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID 
+							WHERE
+								TD.ENTRUCKINGCODE = '{entruckingCode}' 
+								AND T.STATUS = '1' 
+							) TT 
+						WHERE
+							TT.RN = 1 
+							AND ( TT.DOFUNCTION = '1' OR TT.DOFUNCTION = '3' )
                     ";
 						dt = conn.GetSqlResultToDt(sqlStr);
 						sre.Data.Tables.Add(dt);
@@ -719,6 +735,50 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
 	                                    AND T.STATUS = '1'
                             ";
 						int execute = conn.ExecuteNonQuery(sqlStr);
+
+						//查看装具是否有产品,若已无产品,装具自动解绑
+						sqlStr = $@"
+							SELECT
+								TT.ENTRUCKINGCODE,
+								TT.BARCODE,
+								TT.GOODSCODE,
+								TT.USERCODE,
+								TT.PROCEDURENAME 
+							FROM
+								(
+								SELECT
+									ROW_NUMBER ( ) OVER ( PARTITION BY TD.BARCODE ORDER BY TD.CREATETIME DESC ) RN,
+									TD.ENTRUCKINGCODE,
+									TD.BARCODE,
+									G.GOODSCODE,
+									U.USERCODE,
+									P.PROCEDURENAME,
+									TD.DOFUNCTION 
+								FROM
+									TP_PM_ENTRUCKINGDETAIL TD
+									INNER JOIN TP_PM_ENTRUCKING T ON T.ENTRUCKINGCODE = TD.ENTRUCKINGCODE 
+									AND T.BATCH = TD.BATCH
+									INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.BARCODE = TD.BARCODE
+									INNER JOIN TP_PM_INPRODUCTION IP ON IP.BARCODE = TD.BARCODE
+									INNER JOIN TP_PC_PROCEDURE P ON P.PROCEDUREID = IP.PROCEDUREID
+									INNER JOIN TP_MST_USER U ON U.USERID = IP.USERID
+									INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID 
+								WHERE
+									TD.ENTRUCKINGCODE = '{entruckingCode}' 
+									AND T.STATUS = '1' 
+								) TT 
+							WHERE
+								TT.RN = 1 
+								AND ( TT.DOFUNCTION = '1' OR TT.DOFUNCTION = '3' )
+						";
+						dt = conn.GetSqlResultToDt(sqlStr);
+						if (dt.Rows.Count == 0)
+						{
+							//装具自动解绑
+							sqlStr = $@"UPDATE TP_PM_ENTRUCKING SET STATUS = '0' WHERE ENTRUCKINGCODE = '{entruckingCode}' ";
+							execute = conn.ExecuteNonQuery(sqlStr);
+						}
+
 						if (execute > 0)
 						{
 							conn.Commit();
@@ -780,17 +840,17 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
 						//产品与装具的绑定状态
 						sqlStr = $@"
                             SELECT
-	                            TPE.EntruckingCode
+	                            TPE.EntruckingCode,TPED.DOFUNCTION
                             FROM TP_PM_ENTRUCKING TPE
                             INNER JOIN TP_PM_EntruckingDetail TPED 
                             ON TPE.EntruckingCode = TPED.EntruckingCode 
                             AND TPE.Batch = TPED.Batch
                             WHERE TPE.Status = 1
-							AND (TPED.DOFUNCTION = '1' OR TPED.DOFUNCTION = '3')
                             AND TPED.BARCODE = '{barCode}'
-                            AND TPED.ENTRUCKINGCODE = '{entruckingCode}'";
+                            AND TPED.ENTRUCKINGCODE = '{entruckingCode}'
+							ORDER BY TPED.CREATETIME DESC";
 						dt = conn.GetSqlResultToDt(sqlStr);
-						if (dt.Rows.Count > 0)
+						if (dt.Rows.Count > 0 && (dt.Rows[0]["DOFUNCTION"].Equals("1") || dt.Rows[0]["DOFUNCTION"].Equals("3")))
 						{
 							sqlStr = $@"
                                 SELECT