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

注浆次数 注浆批次 最后注浆批次 的修改 初测通过

xuwei 6 лет назад
Родитель
Сommit
73e177c025
1 измененных файлов с 99 добавлено и 56 удалено
  1. 99 56
      DK.Service/PDAModuleLogic/PDAModuleLogicWorkShop3.cs

+ 99 - 56
DK.Service/PDAModuleLogic/PDAModuleLogicWorkShop3.cs

@@ -332,7 +332,7 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
         }
 
         /// <summary>
-        /// 成型线模具查询方法 E37 2#0101 2019-08-12 应用于 注登记
+        /// 成型线模具查询方法 E37 2#0101 2019-08-12 应用于 注登记
         /// </summary>
         /// <param name="groutingLineCode"></param>
         /// <param name="groutingDay"></param>
@@ -353,6 +353,38 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
                 {
                     AddServiceResultEntity(sre, GetGroutingLineInfo(groutingLineCode, groutingDay, sUser));
                 }
+                //校验注浆日期 允许多次注浆:>= 最后注浆日期 不允许多次 > 最后注浆日期 同时小于等于今天
+                if (sre.Status == Constant.ServiceResultStatus.Success)
+                {
+                    sqlStr = $@"
+                        SELECT
+	                        l.LASTGROUTINGDATE,
+	                        t.CANMANYTIMES 
+                        FROM
+	                        TP_PC_GROUTINGLINE l
+	                        LEFT JOIN TP_MST_GMOULDTYPE t ON l.GMOULDTYPEID = t.GMOULDTYPEID 
+                        WHERE
+	                        l.VALUEFLAG = '1'
+	                        AND l.ACCOUNTID = {sUser.AccountID} 
+                            AND l.GROUTINGLINECODE = '{groutingLineCode}'
+                    ";
+                    DataTable groutingLine = conn.GetSqlResultToDt(sqlStr);
+                    if (groutingLine.Rows.Count>0)
+                    {
+                        DateTime groutingDate = Convert.ToDateTime(groutingDay);
+                        DateTime lastGroutingDate = Convert.ToDateTime(groutingLine.Rows[0]["LASTGROUTINGDATE"].ToString());
+                        string canManyTimes = groutingLine.Rows[0]["CANMANYTIMES"].ToString();
+                        if (!(
+                            groutingDate >= lastGroutingDate && canManyTimes == "1" && groutingDate <= DateTime.Now.Date
+                            || groutingDate > lastGroutingDate && canManyTimes == "0" && groutingDate <= DateTime.Now.Date
+                            ))
+                        {
+                            sre.Status = Constant.ServiceResultStatus.Other;
+                            sre.OtherStatus = -1;
+                            sre.Message = "当前日期不允许注浆!";
+                        }
+                    }
+                }
                 //检查注浆限制天数 'S_PM_021'
                 if (sre.Status == Constant.ServiceResultStatus.Success)
                 {
@@ -635,7 +667,7 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
             string sqlStr = "";
             int result = -1;
             int classesSettingId = -1;
-            string groutingBatchNo = "";
+            string groutingBatchNoBegin = "";
             try
             {
                 conn.Connect();
@@ -648,9 +680,9 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
                 //注浆批次处理 当注浆日期 等于 当前日期 时 注浆批次 为最后注浆批次 加1 处理
                 //当注浆日期 不等于 当前日期 时 注浆批数 从0开始 加1 处理
                 if (DateTime.Now.ToString("yyyy-MM-dd") == jsonL["GROUTINGDATE"].ToString())
-                    groutingBatchNo = "l.LASTGROUTINGBATCHNO";
+                    groutingBatchNoBegin = "l.LASTGROUTINGBATCHNO";
                 else
-                    groutingBatchNo = "0";
+                    groutingBatchNoBegin = "0";
 
                 //校验工号 成型线工号配置的工号 必须包含当前用户
                 if (sre.Status == Constant.ServiceResultStatus.Success)
@@ -824,7 +856,7 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
                                 '{sUser.UserCode}',-- USERCODE
                                 l.GMOULDSTATUS,
                                 {classesSettingId}, -- 从 CLASSESSETTINGID 查询
-                                {groutingBatchNo} + {i} + 1, --LASTGROUTINGBATCHNO 批次号 每注一次加1
+                                {groutingBatchNoBegin} + {i} + 1, --LASTGROUTINGBATCHNO 批次号 每注一次加1
                                 l.MONITORID,
                                 m.USERCODE AS MONITORCODE, --MONITORCODE 关联 TP_MST_USER 查询
                                 l.HIGHPRESSUREFLAG
@@ -834,8 +866,8 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
 	                            LEFT JOIN TP_MST_USER m ON l.MONITORID = m.USERID
                             WHERE
 	                            GROUTINGLINECODE = '{jsonL["GROUTINGLINECODE"].ToString()}' --成型线号
-                             AND l.VALUEFLAG = '1'
-                             AND l.GMOULDSTATUS = 1
+                                AND l.VALUEFLAG = '1'
+                                AND l.GMOULDSTATUS = 1
                             ;";
 
                             //按成型线模具循环插入注浆记录明细 TP_PM_GROUTINGDAILYDETAIL
@@ -889,7 +921,7 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
                                     '0',--DELIVERFLAG
                                     l.GMOULDTYPEID,--GMOULDTYPEID
                                     t.CANMANYTIMES,--CANMANYTIMES
-                                    {groutingBatchNo} + {i} + 1, --LASTGROUTINGBATCHNO 批次号 每注一次加1
+                                    {groutingBatchNoBegin} + {i} + 1, --LASTGROUTINGBATCHNO 批次号 每注一次加1
                                     o.LOGOID,--LOGOID
                                     NULL,--SCRAPTIME
                                     NULL,--SCRAPUSER
@@ -920,11 +952,11 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
                                 SET 
                                     GROUTINGCOUNT = GROUTINGCOUNT + {jsonM[j]["GROUTINGFLAG"].ToString()}
                                 WHERE
-                                    d.ACCOUNTID = {sUser.AccountID}
-	                                AND d.VALUEFLAG = '1' 
-	                                AND d.GMOULDSTATUS = 1 
-	                                AND l.GROUTINGLINECODE = '{jsonL["GROUTINGLINECODE"].ToString()}' --成型线号
-                                    AND d.GROUTINGMOULDCODE = '{jsonM[j]["GROUTINGMOULDCODE"].ToString()}'
+                                    ACCOUNTID = {sUser.AccountID}
+	                                AND VALUEFLAG = '1' 
+	                                AND GMOULDSTATUS = 1 
+	                                --AND GROUTINGLINECODE = '{jsonL["GROUTINGLINECODE"].ToString()}' --成型线号
+                                    AND GROUTINGMOULDCODE = '{jsonM[j]["GROUTINGMOULDCODE"].ToString()}'
                                 ;";
 
                             }
@@ -954,7 +986,7 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
                             TP_PC_GROUTINGLINE l
                         SET 
                             l.LASTGROUTINGDATE = DATE '{jsonL["GROUTINGDATE"].ToString()}',
-                            l.LASTGROUTINGBATCHNO = {groutingBatchNo} + {jsonL["GROUTINGTIMES"].ToString()}
+                            l.LASTGROUTINGBATCHNO = {groutingBatchNoBegin} + {jsonL["GROUTINGTIMES"].ToString()}
                         WHERE
                             l.GROUTINGLINECODE = '{jsonL["GROUTINGLINECODE"].ToString()}'
                         ";
@@ -1020,7 +1052,8 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
             try
             {
                 conn.Connect();
-                //更新注浆记录数据
+                //一定要先更新注浆次数 如果先更新的注浆记录 将无法分辨 注浆标识
+                //更新 成型线明细 注浆日报明细 注浆次数
                 if (sre.Status == Constant.ServiceResultStatus.Success && groutingData != "")
                 {
                     try
@@ -1028,26 +1061,46 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
                         JArray json = JArray.Parse(groutingData);
                         string updateOne = $@"
                             UPDATE 
+                                TP_PC_GROUTINGLINEDETAIL
+                            SET 
+                                GROUTINGCOUNT = GROUTINGCOUNT + :GROUTINGCOUNT
+                            WHERE 
+                                GROUTINGLINEDETAILID = :GROUTINGLINEDETAILID
+                            ;
+                            UPDATE 
                                 TP_PM_GROUTINGDAILYDETAIL
-                            SET
-                                GROUTINGFLAG = ':GROUTINGFLAG',
-                                NOGROUTINGRREASON = :NOGROUTINGRREASON
-                            WHERE
+                            SET 
+                                GROUTINGCOUNT = GROUTINGCOUNT + :GROUTINGCOUNT
+                            WHERE 
                                 GROUTINGDAILYDETAILID = :GROUTINGDAILYDETAILID
                             ;
                             ";
                         sqlStr = "BEGIN";
-                        for (int i=0;i<json.Count;i++)
+                        DataTable dt = new DataTable();
+                        for (int i = 0; i < json.Count; i++)
                         {
-                            //验证注浆原因,如果没给数据,置为空
-                            if (!(json[i]["NOGROUTINGRREASON"] is object))
-                                json[i]["NOGROUTINGRREASON"] = "null";
+                            //读取原注浆记录进行比对,原来 注浆标识 为1 现在 注浆标识 为0 要-1  反之加1
+                            dt = conn.GetSqlResultToDt($@"
+                                SELECT  
+                                    GROUTINGDAILYDETAILID,
+                                    GROUTINGLINEDETAILID,
+                                    GROUTINGFLAG
+                                FROM
+                                    TP_PM_GROUTINGDAILYDETAIL
+                                WHERE
+                                    GROUTINGDAILYDETAILID = {json[i]["GROUTINGDAILYDETAILID"].ToString()}
+                            ");
+                            string groutingCount = "";
 
-                            sqlStr += updateOne
-                                .Replace(":GROUTINGFLAG", json[i]["GROUTINGFLAG"].ToString())
-                                .Replace(":NOGROUTINGRREASON", json[i]["NOGROUTINGRREASON"].ToString())
-                                .Replace(":GROUTINGDAILYDETAILID", json[i]["GROUTINGDAILYDETAILID"].ToString());
-                            //sqlStr += ";";
+                            //注浆标识改变 才更新 注浆次数
+                            if (json[i]["GROUTINGFLAG"].ToString() != dt.Rows[0]["GROUTINGFLAG"].ToString())
+                            {
+                                groutingCount = json[i]["GROUTINGFLAG"].ToString() == "1" ? "1" : "-1";
+                                sqlStr += updateOne
+                                    .Replace(":GROUTINGCOUNT", groutingCount)
+                                    .Replace(":GROUTINGLINEDETAILID", dt.Rows[0]["GROUTINGLINEDETAILID"].ToString())
+                                    .Replace(":GROUTINGDAILYDETAILID", dt.Rows[0]["GROUTINGDAILYDETAILID"].ToString());
+                            }
                         }
                         sqlStr += "END;";
                         result = conn.ExecuteNonQuery(sqlStr);
@@ -1057,10 +1110,10 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
                     catch
                     {
                         sre.Status = Constant.ServiceResultStatus.NoSearchResults;
-                        sre.Message = "注浆记录保存失败!";
+                        sre.Message = "注浆次数更新失败!";
                     }
                 }
-                //更新成型线明细注浆次数
+                //更新注浆记录数据 不可以在更新 注浆次数 之前 执行
                 if (sre.Status == Constant.ServiceResultStatus.Success && groutingData != "")
                 {
                     try
@@ -1068,37 +1121,26 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
                         JArray json = JArray.Parse(groutingData);
                         string updateOne = $@"
                             UPDATE 
-                                TP_PC_GROUTINGLINEDETAIL
-                            SET 
-                                GROUTINGCOUNT = GROUTINGCOUNT + :GROUTINGCOUNT
-                            WHERE 
-                                GROUTINGLINEDETAILID = :GROUTINGLINEDETAILID
+                                TP_PM_GROUTINGDAILYDETAIL
+                            SET
+                                GROUTINGFLAG = ':GROUTINGFLAG',
+                                NOGROUTINGRREASON = :NOGROUTINGRREASON
+                            WHERE
+                                GROUTINGDAILYDETAILID = :GROUTINGDAILYDETAILID
                             ;
                             ";
                         sqlStr = "BEGIN";
-                        DataTable dt = new DataTable();
                         for (int i=0;i<json.Count;i++)
                         {
-                            //读取原注浆记录进行比对,原来 注浆标识 为1 现在 注浆标识 为0 要-1 
-                            dt = conn.GetSqlResultToDt($@"
-                                SELECT  
-                                    GROUTINGLINEDETAILID,
-                                    GROUTINGFLAG
-                                FROM
-                                    TP_PM_GROUTINGDAILYDETAIL
-                                WHERE
-                                    GROUTINGDAILYDETAILID = {json[i]["GROUTINGDAILYDETAILID"].ToString()}
-                            ");
-                            string groutingCount = "";
+                            //验证注浆原因,如果没给数据,置为空
+                            if (!(json[i]["NOGROUTINGRREASON"] is object))
+                                json[i]["NOGROUTINGRREASON"] = "null";
 
-                            //注浆标识改变 才更新 注浆次数
-                            if(json[i]["GROUTINGFLAG"].ToString() != dt.Rows[0]["GROUTINGFLAG"].ToString())
-                            {
-                                groutingCount = json[i]["GROUTINGFLAG"].ToString() == "1" ? "1" : "-1";
-                                sqlStr += updateOne
-                                    .Replace(":GROUTINGCOUNT", groutingCount)
-                                    .Replace(":GROUTINGLINEDETAILID", dt.Rows[0]["GROUTINGLINEDETAILID"].ToString());
-                            }
+                            sqlStr += updateOne
+                                .Replace(":GROUTINGFLAG", json[i]["GROUTINGFLAG"].ToString())
+                                .Replace(":NOGROUTINGRREASON", json[i]["NOGROUTINGRREASON"].ToString())
+                                .Replace(":GROUTINGDAILYDETAILID", json[i]["GROUTINGDAILYDETAILID"].ToString());
+                            //sqlStr += ";";
                         }
                         sqlStr += "END;";
                         result = conn.ExecuteNonQuery(sqlStr);
@@ -1108,9 +1150,10 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
                     catch
                     {
                         sre.Status = Constant.ServiceResultStatus.NoSearchResults;
-                        sre.Message = "注浆次数更新失败!";
+                        sre.Message = "注浆记录保存失败!";
                     }
                 }
+
                 //提交
                 if (sre.Status == Constant.ServiceResultStatus.Success)
                     conn.Commit();