浏览代码

金马自动注浆绑码接口

qinqi 2 周之前
父节点
当前提交
a0f5f7c27b
共有 2 个文件被更改,包括 626 次插入3 次删除
  1. 595 3
      WCF.Service/WCF.Ex_HGS3_QRS/Ex_HGS3_QR.cs
  2. 31 0
      WCF.Service/WCF.Ex_HGS3_QRS/IEx_HGS3_QR.cs

+ 595 - 3
WCF.Service/WCF.Ex_HGS3_QRS/Ex_HGS3_QR.cs

@@ -397,7 +397,7 @@ namespace Dongke.IBOSS.PRD.WCF.ExHGS3QRS
                                 DataTable MessageTable = new DataTable();
                                 MessageTable.Columns.Add("out_errMsg", Type.GetType("System.String"));
                                 DataRow drm = MessageTable.NewRow();
-                                drm[0] = "-1";
+                                drm[0] = "-1"+ msg;
                                 MessageTable.Rows.InsertAt(drm, 0);
                                 return MessageTable;
                             }
@@ -447,7 +447,7 @@ namespace Dongke.IBOSS.PRD.WCF.ExHGS3QRS
                         string out_msg = addWorkPiece?.Rows[0]["out_errMsg"].ToString();
                         if (!string.IsNullOrWhiteSpace(out_msg))
                         {
-                            dr[0] = "-1";
+                            dr[0] = "-1"+ out_msg;
                             MessageTable.Rows.InsertAt(dr, 0);
                             return MessageTable;
                         }
@@ -479,7 +479,7 @@ namespace Dongke.IBOSS.PRD.WCF.ExHGS3QRS
                                                procedureInfo.BarCodePrintCopies, null, sUserInfo, 0);
                                     if (sre.Status != Constant.ServiceResultStatus.Success)
                                     {
-                                        dr[0] = "-1";
+                                        dr[0] = "-1"+ sre.Message;
                                         MessageTable.Rows.InsertAt(dr, 0);
                                         return MessageTable;
                                     }
@@ -518,6 +518,598 @@ namespace Dongke.IBOSS.PRD.WCF.ExHGS3QRS
 
         #endregion
 
+        #region 官塘自动注浆绑码对接金马 
+        /// <summary>
+		/// 官塘自动注浆绑码对接金马
+		/// </summary>
+		/// <param name="groutingLineCode"></param>
+		/// <param name="mouldCode"></param>
+		/// <param name="userCode"></param>
+		/// <param name="groutingDateStr"></param>
+		/// <param name="createTimeStr"></param>
+		/// <param name="barcode"></param>
+		/// <param name="highNum"></param>
+		/// <param name="tbInfo"></param>
+		/// <returns></returns>
+        public string AddGroutingData_JM(
+            string groutingLineCode,
+            string mouldCode,
+            string userCode,
+            string groutingDateStr,
+            string createTimeStr,
+            string barcode,
+            string highNum,
+            string tbInfo)
+        {
+            //修正参数,去掉多余的特殊字符
+            barcode = barCodeFix(barcode); 
+
+            //返回JSON数据格式
+            JObject returnMessage = new JObject(
+                new JProperty("success", true),
+                new JProperty("message", "自动注浆绑码成功!"),
+                new JProperty("groutingLineCode", groutingLineCode)
+                );
+
+            string inputCode = $" groutingLineCode:{groutingLineCode} mouldCode:{mouldCode} userCode:{userCode} groutingDateStr:{groutingDateStr} createTimeStr:{createTimeStr} barcode:{barcode} highNum:{highNum} tbInfo:{tbInfo}";
+             
+            try
+            {
+                //验证用户
+                #region 验证用户 并配置参数 sUserInfo
+                DataTable userInfo = CheckUserCode(userCode);
+                if (userInfo == null)
+                {
+                    OutputLog.TraceLog(LogPriority.Warning,
+                            this.ToString(),
+                            System.Reflection.MethodBase.GetCurrentMethod().Name,
+                            " userInfo is null " + inputCode,
+                            LocalPath.LogExePath + "SmartDevice\\");
+                    returnMessage["success"] = false;
+                    returnMessage["message"] = "用户信息不存在";
+                    return returnMessage.ToString();
+                }
+                SUserInfo sUserInfo = new SUserInfo();
+                sUserInfo.AccountID = Convert.ToInt32(userInfo.Rows[0]["AccountID"]);
+                sUserInfo.AccountCode = userInfo.Rows[0]["AccountCode"] + "";
+                sUserInfo.UserID = Convert.ToInt32(userInfo.Rows[0]["userid"]);
+                sUserInfo.UserCode = userCode;
+                #endregion
+
+                //验证成型线等信息-注浆
+                ServiceResultEntity sre = AddGroutingLineDetail(groutingLineCode, mouldCode,groutingDateStr, createTimeStr, barcode, highNum, tbInfo, sUserInfo);
+
+				if (sre.Status == Constant.ServiceResultStatus.NoSearchResults)
+				{
+                    OutputLog.TraceLog(LogPriority.Warning,
+                            this.ToString(),
+                            System.Reflection.MethodBase.GetCurrentMethod().Name,
+                            " groutdata is error " + inputCode,
+                            LocalPath.LogExePath + "SmartDevice\\");
+                    returnMessage["success"] = false;
+                    returnMessage["message"] = sre.Message;
+                    return returnMessage.ToString();
+                } 
+
+                //返回正常结果
+                return returnMessage.ToString();
+            }
+            catch (Exception ex)
+            {
+                OutputLog.TraceLog(LogPriority.Error,
+                        this.ToString(),
+                        System.Reflection.MethodBase.GetCurrentMethod().Name,
+                        inputCode + ex.ToString(),
+                        LocalPath.LogExePath);
+                returnMessage["success"] = false;
+                returnMessage["message"] = "MES系统异常";
+                return returnMessage.ToString();
+            }
+        }
+
+        /// <summary>
+        /// 验证连接信息
+        /// </summary>
+        /// <param name="barcode"></param>
+        /// <param name="sUserInfo"></param>
+        /// <returns></returns>
+        public static DataTable CheckUserCode(string usercode)
+        {
+            IDBConnection con = ClsDbFactory.CreateDBConnection(Dongke.IBOSS.PRD.Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
+            try
+            {
+                con.Open();
+
+                string sqlString = "SELECT a.accountid, a.accountcode, u.userid, u.usercode, u.username\n" +
+                "  FROM tp_mst_user u\n" +
+                " INNER JOIN tp_mst_account a\n" +
+                "    ON a.accountid = u.accountid\n" +
+                " WHERE u.valueflag = '1'\n" +
+                "   AND u.usercode = :usercode";
 
+                OracleParameter[] paras = new OracleParameter[]
+                {
+                    new OracleParameter(":usercode",OracleDbType.Varchar2, usercode,ParameterDirection.Input),
+                };
+                DataTable userInfo = con.GetSqlResultToDt(sqlString, paras);
+
+                if (userInfo == null || userInfo.Rows.Count == 0)
+                {
+                    return null;
+                }
+
+                return userInfo;
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
+            finally
+            {
+                if (con.ConnState == ConnectionState.Open)
+                {
+                    con.Close();
+                }
+            }
+        }
+        
+        /// <summary>
+		/// 注浆
+		/// </summary>
+		/// <param name="lineCode"></param>
+		/// <param name="mouldCode"></param>
+		/// <param name=""></param>
+		/// <param name="groutingData"></param>
+		/// <param name="createTimeStr"></param>
+		/// <param name="barcode"></param>
+		/// <param name="highNum"></param>
+		/// <param name="tbInfo"></param>
+		/// <param name="sUserInfo"></param>
+		/// <returns></returns>
+        public static ServiceResultEntity AddGroutingLineDetail(string lineCode, string mouldCode, string groutingData, string createTimeStr, string barcode, string highNum, string tbInfo, SUserInfo sUserInfo)
+        {
+            ServiceResultEntity sre = new ServiceResultEntity();
+            sre.Data = new DataSet();
+            sre.Status = Constant.ServiceResultStatus.Success;
+            IDBTransaction conn = ClsDbFactory.CreateDBTransaction(Dongke.IBOSS.PRD.Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
+            string sqlStr = "";
+            int result = -1;
+            int classesSettingId = -1;
+            string groutingBatchNoBegin = "";
+            int seqGroutingDailyDetailID = 0;
+            try
+            { 
+                conn.Connect();
+                 
+                //注浆批次处理 当注浆日期 等于 当前日期 时 注浆批次 为最后注浆批次 加1 处理  
+                sqlStr = $@" SELECT
+	                        LASTGROUTINGBATCHNO
+                        FROM
+	                        TP_PC_GROUTINGLINE l
+                        WHERE
+	                        l.VALUEFLAG = '1' 
+                            AND l.ACCOUNTID = {sUserInfo.AccountID}
+                            AND l.LASTGROUTINGDATE = TO_DATE('{groutingData}', 'YYYY-MM-DD HH24:MI:SS')
+	                        AND l.GROUTINGLINECODE = '{lineCode}' 
+                        ";
+                object obj = conn.GetSqlResultToObj(sqlStr); 
+                if (obj == null || obj == DBNull.Value || Convert.ToInt32(obj) == 0)
+                {
+                    groutingBatchNoBegin = "0";
+                }
+                else
+                {
+                    groutingBatchNoBegin = "l.LASTGROUTINGBATCHNO";
+                }
+                //校验成型线是否存在
+                string sqlString = "select t.userid, u.usercode, u.username, t.groutinglineid\n" +
+                    "  from tp_pc_groutingline t\n" +
+                    " inner join tp_mst_user u\n" +
+                    "    on u.userid = t.userid\n" +
+                    " where t.groutinglinecode = :lineCode\n" +
+                    " and t.valueflag='1'\n" +
+                    " and t.gmouldstatus = 1";
+                OracleParameter[] paras = new OracleParameter[]
+                {
+                    new OracleParameter(":lineCode", lineCode),
+                };
+                DataTable dt = conn.GetSqlResultToDt(sqlString, paras);
+                if (dt == null || dt.Rows.Count == 0)
+                {
+                    sre.Status = Constant.ServiceResultStatus.NoSearchResults;
+                    sre.Message = $"成型线{lineCode}不存在或当前状态不能注浆"; 
+                }
+
+                //校验工号 成型线工号配置的工号 必须包含当前用户 
+                sqlStr = $@" SELECT
+	                    COUNT(c.USERID)
+                    FROM
+	                    TP_PC_GROUTINGLINE l
+	                    INNER JOIN TP_PC_GROUTINGUSER u ON l.GROUTINGLINEID = u.GROUTINGLINEID
+	                    LEFT JOIN TP_MST_USER c ON u.USERID = c.USERID 
+                    WHERE
+	                    l.VALUEFLAG = '1' 
+                        AND l.ACCOUNTID = {sUserInfo.AccountID}
+	                    AND l.GROUTINGLINECODE = '{lineCode}'
+	                    AND c.USERCODE = '{sUserInfo.UserCode}'
+                    ";
+
+                obj = conn.GetSqlResultToObj(sqlStr); 
+                if (obj == null || obj == DBNull.Value || Convert.ToInt32(obj) == 0)
+                {
+                    sre.Status = Constant.ServiceResultStatus.NoSearchResults;
+                    sre.Message = "当前成型线没有配置当前员工!";
+                }
+                  
+                //获取是否有班次 设置 classesSettingId
+                if (sre.Status == Constant.ServiceResultStatus.Success)
+                {
+                    sqlStr = $@" SELECT 
+	                        NVL(MAX(CLASSESSETTINGID),0) AS CLASSESSETTINGID
+                        FROM
+                            TP_PC_CLASSESSETTING
+                        WHERE 
+                            ACCOUNTID = {sUserInfo.AccountID}
+	                        AND VALUEFLAG = '1'
+	                        AND ACCOUNTDATE = TO_DATE('{groutingData}', 'YYYY-MM-DD HH24:MI:SS')
+	                        AND USERCODE = '{sUserInfo.UserCode}'
+                        ";
+                    obj = conn.GetSqlResultToObj(sqlStr);
+                    if (obj == null || obj == DBNull.Value || Convert.ToInt32(obj) == 0)
+                    {
+                        classesSettingId = 0;
+                    }
+                    else
+                    {
+                        classesSettingId = Convert.ToInt32(obj);
+                    }
+                    if (classesSettingId == 0)
+                    { 
+                        sre.Status = Constant.ServiceResultStatus.NoSearchResults;
+                        sre.Message = "没有班次配置!";
+                    }
+                }
+                //没有班次的 自动配置班次
+                if (classesSettingId == 0)
+                {
+                    try
+                    {
+                        //从序列中生成新的班次ID
+                        classesSettingId = Convert.ToInt32(
+                            conn.GetSqlResultToStr("SELECT SEQ_PC_ClASSESSETTING_ID.NEXTVAL FROM DUAL"));
+
+                        sqlStr = "BEGIN";
+                        //插入班次SQL
+                        sqlStr += $@"
+                            INSERT INTO TP_PC_CLASSESSETTING 
+                                ( 
+                                    CLASSESSETTINGID, ACCOUNTDATE, USERID, USERCODE, 
+                                    ACCOUNTID, CREATEUSERID, UPDATEUSERID 
+                                )
+                            VALUES 
+	                            (
+		                            {classesSettingId},-- CLASSESSETTINGID select SEQ_PC_ClASSESSETTING_ID.Nextval FROM DUAL;
+		                            to_date('{groutingData}', 'YYYY-MM-DD HH24:MI:SS'),-- ACCOUNTDATE
+                                    {sUserInfo.UserID},--USERID
+		                            '{sUserInfo.UserCode}',-- USERCODE
+		                            {sUserInfo.AccountID},--ACCOUNTID
+		                            {sUserInfo.UserID},--CREATEUSERID
+		                            {sUserInfo.UserID} --UPDATEUSERID
+	                            );
+                         ";
+
+                        //插入班次详细SQL
+                        sqlStr += $@"
+                            INSERT INTO TP_PC_CLASSESDETAIL (
+	                            CLASSESSETTINGID,ACCOUNTDATE,
+	                            USERID,USERCODE,STAFFID,STAFFSTATUS,ACCOUNTID,
+	                            VALUEFLAG,CREATEUSERID,UPDATEUSERID,
+	                            UJOBSID,SJOBSID,UJOBSNUM 
+                            )
+                            SELECT
+	                            {classesSettingId},--CLASSESSETTINGID 班次ID
+		                        to_date('{groutingData}', 'YYYY-MM-DD HH24:MI:SS'),-- ACCOUNTDATE
+	                            {sUserInfo.UserID},--USERID
+	                            '{sUserInfo.UserCode}',--USERCODE
+	                            s.STAFFID,--STAFFID
+	                            h.STAFFSTATUS,--STAFFSTATUS 员工状态
+	                            {sUserInfo.AccountID},--ACCOUNTID
+	                            '1',--VALUEFLAG
+	                            {sUserInfo.UserID},--CREATEUSERID
+	                            {sUserInfo.UserID},--UPDATEUSERID
+	                            s.UJOBSID,--UJOBSID 工号工种ID
+	                            h.JOBS,--SJOBSID 员工工种ID
+	                            ( SELECT COUNT( DISTINCT UJOBSID ) FROM TP_MST_USERSTAFF WHERE USERID = '{sUserInfo.UserID}' ) -- UJOBSNUM 工号工种个数
+                            FROM
+	                            TP_MST_USERSTAFF s
+	                            LEFT JOIN TP_HR_STAFF h ON h.STAFFID = s.STAFFID 
+                            WHERE
+	                            s.USERID = {sUserInfo.UserID}
+                            ;
+                        ";
+                        sqlStr += "END;";
+
+                        conn.ExecuteNonQuery(sqlStr);
+                        //多条语句执行,只返回-1,不报异常就是执行成功
+                        sre.Status = Constant.ServiceResultStatus.Success;
+                        sre.Message = "操作成功!";
+                    }
+                    catch (Exception ex)
+                    {
+                        sre.Status = Constant.ServiceResultStatus.NoSearchResults;
+                        sre.Message = "自动配置班次失败!";
+                    }
+                }
+                //插入 注浆记录
+                if (sre.Status == Constant.ServiceResultStatus.Success)
+                {
+                    try
+                    {
+                        sqlStr = "BEGIN";
+                         
+                        //获取注浆ID
+                        int groutingDailyId = Convert.ToInt32( conn.GetSqlResultToStr(@"SELECT SEQ_PM_GROUTINGDAILY_ID.NEXTVAL FROM DUAL"));
+
+                        //插入注浆记录 TP_PM_GROUTINGDAILY
+                        sqlStr += $@"
+                        INSERT INTO TP_PM_GROUTINGDAILY (
+                            GROUTINGDAILYID,
+	                        GROUTINGLINEID,GROUTINGLINECODE,GROUTINGLINENAME,GROUTINGDATE,
+                            USERID,MOULDQUANTITY,GMOULDTYPEID,CANMANYTIMES,ACCOUNTID,VALUEFLAG,
+	                        CREATEUSERID,UPDATEUSERID,USERCODE,GMOULDSTATUS,
+                            CLASSESSETTINGID,GROUTINGBATCHNO,MONITORID,MONITORCODE,HIGHPRESSUREFLAG  
+                        ) 
+                        SELECT
+                            {groutingDailyId},
+                            l.GROUTINGLINEID,
+                            l.GROUTINGLINECODE,
+                            l.GROUTINGLINENAME,
+                            to_date( '{groutingData}', 'YYYY-MM-DD HH24:MI:SS' ),-- GROUTINGDATE 注浆日期
+                            {sUserInfo.UserID},-- USERID 用户ID
+                            l.MOULDQUANTITY,
+                            l.GMOULDTYPEID,
+                            t.CANMANYTIMES, -- CANMANYTIMES 关联 TP_MST_GMOULDTYPE 查询
+                            {sUserInfo.AccountID},-- ACCOUNTID
+                            '1',--VALUEFLAG
+                            {sUserInfo.UserID},--CREATEUSERID
+                            {sUserInfo.UserID},--UPDATEUSERID
+                            '{sUserInfo.UserCode}',-- USERCODE
+                            l.GMOULDSTATUS,
+                            {classesSettingId}, -- 从 CLASSESSETTINGID 查询
+                            {groutingBatchNoBegin} + 1, --LASTGROUTINGBATCHNO 批次号 每注一次加1
+                            l.MONITORID,
+                            m.USERCODE AS MONITORCODE, --MONITORCODE 关联 TP_MST_USER 查询
+                            l.HIGHPRESSUREFLAG
+                        FROM
+	                        TP_PC_GROUTINGLINE l
+	                        LEFT JOIN TP_MST_GMOULDTYPE t ON l.GMOULDTYPEID = t.GMOULDTYPEID
+	                        LEFT JOIN TP_MST_USER m ON l.MONITORID = m.USERID
+                        WHERE
+	                        GROUTINGLINECODE = '{lineCode}' --成型线号
+                            AND l.VALUEFLAG = '1'
+                            AND l.GMOULDSTATUS = 1
+                        ;";
+
+                        //按成型线模具循环插入注浆记录明细 TP_PM_GROUTINGDAILYDETAIL  
+                          
+                        //注浆明细ID
+                        seqGroutingDailyDetailID = Convert.ToInt32(conn.GetSqlResultToStr(@"SELECT SEQ_PM_GroutingDailyD_ID.Nextval FROM DUAL"));
+
+                        //插入注浆记录明细
+                        sqlStr += $@"
+                        INSERT INTO TP_PM_GROUTINGDAILYDETAIL (
+	                        GROUTINGDAILYID,GROUTINGDAILYDETAILID,GROUTINGLINEID,GROUTINGLINECODE,GROUTINGLINENAME,GROUTINGLINEDETAILID,
+	                        GROUTINGDATE,GROUTINGMOULDCODE,MOULDCODE,GOODSID,GOODSCODE,GOODSNAME,GMOULDSTATUS,
+	                        GROUTINGCOUNT,GROUTINGFLAG,NOGROUTINGRREASON,ACCOUNTID,VALUEFLAG,CREATEUSERID,
+	                        UPDATEUSERID,USERID,USERCODE,SCRAPFLAG,SPECIALREPAIRFLAG,BARCODE,CLASSESSETTINGID,
+	                        ISPUBLICBODY,DELIVERFLAG,GMOULDTYPEID,CANMANYTIMES,GROUTINGBATCHNO,LOGOID,glazetypeid,
+	                        SCRAPTIME,SCRAPUSER,SCRAPREASONID,SCRAPREASON,MOULDID,SREASONID,SCRAPTYPE,BEGINNINGFLAG,HIGHSTATIONNUM,HIGHTBINFO
+                        ) SELECT
+                            {groutingDailyId},--GROUTINGDAILYID
+                            {seqGroutingDailyDetailID},--GROUTINGDAILYDETAILID
+                            d.GROUTINGLINEID,--GROUTINGLINEID
+                            l.GROUTINGLINECODE,--GROUTINGLINECODE
+                            l.GROUTINGLINENAME,--GROUTINGLINENAME
+                            d.GROUTINGLINEDETAILID,--GROUTINGLINEDETAILID
+                            to_date( '{groutingData}', 'YYYY-MM-DD HH24:MI:SS' ),--GROUTINGDATE
+                            d.GROUTINGMOULDCODE,--GROUTINGMOULDCODE
+                            d.MOULDCODE,--MOULDCODE
+                            d.GOODSID,--GOODSID
+                            g.GOODSCODE,--GOODSCODE
+                            g.GOODSNAME,--GOODSNAME
+                            d.GMOULDSTATUS,--GMOULDSTATUS
+                            d.GROUTINGCOUNT + 1,--GROUTINGCOUNT
+                            '1',--GROUTINGFLAG
+                            '', --NOGROUTINGRREASON  未注浆原因
+                            {sUserInfo.AccountID},--ACCOUNTID
+                            '1',--VALUEFLAG
+                            {sUserInfo.UserID},--CREATEUSERID
+                            {sUserInfo.UserID},--UPDATEUSERID
+                            {sUserInfo.UserID},--USERID
+                            '{sUserInfo.UserCode}',--USERCODE
+                            '0',--SCRAPFLAG
+                            '0',--SPECIALREPAIRFLAG
+                            null,--BARCODE
+                            {classesSettingId},--CLASSESSETTINGID
+                            '0',--ISPUBLICBODY
+                            '0',--DELIVERFLAG
+                            l.GMOULDTYPEID,--GMOULDTYPEID
+                            t.CANMANYTIMES,--CANMANYTIMES
+                            {groutingBatchNoBegin} + 1, --LASTGROUTINGBATCHNO 批次号 每注一次加1
+                            o.LOGOID,--LOGOID
+                            g.glazetypeid,
+                            NULL,--SCRAPTIME
+                            NULL,--SCRAPUSER
+                            NULL,--SCRAPREASONID
+                            NULL,--SCRAPREASON
+                            d.MOULDID,--MOULDID
+                            NULL,--SREASONID
+                            NULL,--SCRAPTYPE
+                            '0', --BEGINNINGFLAG
+                            '{highNum}',
+                            '{tbInfo}'
+                        FROM
+	                        TP_PC_GROUTINGLINEDETAIL d
+	                        LEFT JOIN TP_PC_GROUTINGLINE l ON l.GROUTINGLINEID = d.GROUTINGLINEID
+                            LEFT JOIN TP_PC_MOULD M  ON d.MOULDID = M.MOULDID
+	                        LEFT JOIN TP_MST_GOODS g ON g.GOODSID = d.GOODSID
+	                        LEFT JOIN TP_MST_LOGO o ON o.LOGOID = g.LOGOID
+	                        LEFT JOIN TP_MST_GMOULDTYPE t ON t.GMOULDTYPEID = l.GMOULDTYPEID 
+                        WHERE
+                            d.ACCOUNTID = {sUserInfo.AccountID}
+	                        AND d.VALUEFLAG = '1' 
+	                        AND d.GMOULDSTATUS = 1 
+	                        AND l.GROUTINGLINECODE = '{lineCode}' --成型线号
+                            AND d.GROUTINGMOULDCODE = '{mouldCode}'
+                        ;"; 
+                        sre.Result = groutingDailyId;
+                         
+                        sqlStr += "END;";
+                        result = conn.ExecuteNonQuery(sqlStr);
+                        sre.Status = Constant.ServiceResultStatus.Success;
+                        sre.Message = "操作成功!";
+
+                        //2022年8月24日09:32:29 注浆次数
+                        sqlStr = "BEGIN";
+                          
+                        //更新注浆次数
+                        sqlStr += $@"
+                        UPDATE 
+                            TP_PC_GROUTINGLINEDETAIL
+                        SET 
+                            GROUTINGCOUNT = GROUTINGCOUNT + 1
+                        WHERE
+                            ACCOUNTID = {sUserInfo.AccountID}
+                            AND VALUEFLAG = '1' 
+                            AND GMOULDSTATUS = 1  
+                            AND GROUTINGMOULDCODE = '{mouldCode}'
+                        ;"; 
+                        sqlStr += "END;";
+
+                        result = conn.ExecuteNonQuery(sqlStr);
+                        sre.Status = Constant.ServiceResultStatus.Success;
+                        sre.Message = "操作成功!"; 
+                    }
+                    catch (Exception ex)
+                    {
+                        sre.Status = Constant.ServiceResultStatus.NoSearchResults;
+                        sre.Message = "注浆记录写入失败!";
+                    }
+                }
+                //更新 成型线 最后注浆日期 注浆批次
+                if (sre.Status == Constant.ServiceResultStatus.Success)
+                {
+                    sqlStr = $@"
+                        UPDATE 
+                            TP_PC_GROUTINGLINE l
+                        SET 
+                            l.LASTGROUTINGDATE = to_date( '{groutingData}','YYYY-MM-DD HH24:MI:SS' ),
+                            l.LASTGROUTINGBATCHNO = {groutingBatchNoBegin} + 1
+                        WHERE
+                            l.GROUTINGLINECODE = '{lineCode}'
+                        ";
+                    result = conn.ExecuteNonQuery(sqlStr);
+                    if (result > 0)
+                    {
+                        sre.Status = Constant.ServiceResultStatus.Success;
+                        sre.Message = "操作成功!";
+                    }
+                    else
+                    {
+                        sre.Status = Constant.ServiceResultStatus.NoSearchResults;
+                        sre.Message = "成型线最后注浆日期和注浆批次更新失败!";
+                    }
+                }
+
+                //绑定条码 
+                if (sre.Status == Constant.ServiceResultStatus.Success)
+                {
+                    #region 校验条码 
+                    if (barcode.Length > 0)
+                    {
+                        // 条码状态表
+                        DataTable barCodeDataTable = conn.GetSqlResultToDt($"SELECT UBC.BarCode FROM TP_PM_UsedBarCode UBC WHERE BarCode ='{barcode}'");
+                        if (barCodeDataTable != null && barCodeDataTable.Rows.Count > 0)
+                        {
+                            sre.Status = Constant.ServiceResultStatus.NoSearchResults;
+                            sre.Message = "以下条码已被使用"  + barcode.ToString();
+                        }
+                    }
+                    #endregion 校验条码
+                }
+
+                if (sre.Status == Constant.ServiceResultStatus.Success)
+                {
+                    #region 更新注浆日报明细表
+                    if (seqGroutingDailyDetailID > 0)
+				    {
+                        #region SQL 
+                        string updateGroutingDailyDetailSql =
+                            "UPDATE TP_PM_GroutingDailyDetail" +
+                            "   SET BarCode = :BarCode  " +
+                            " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
+                        #endregion SQL
+
+                        // 验证条码 
+                        string insertBarcodeSql =
+                            "INSERT INTO TP_PM_UsedBarCode " +
+                            "  (BarCode, AccountID, CreateTime, CreateUserID,GroutingDailyDetailID,BarCodeStatus)" +
+                            "VALUES " +
+                            "  (:BarCode, :AccountID, sysdate, :CreateUserID,:GroutingDailyDetailID,:BarCodeStatus)";
+                        OracleParameter[] insertBarcodeParas = new OracleParameter[]
+                        {
+                        new OracleParameter(":BarCode", OracleDbType.NVarchar2, barcode, ParameterDirection.Input),
+                        new OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
+                        new OracleParameter(":CreateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
+                        new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32,seqGroutingDailyDetailID, ParameterDirection.Input),
+                        new OracleParameter(":BarCodeStatus", OracleDbType.Char, "1", ParameterDirection.Input),
+
+                        };
+                        int res = conn.ExecuteNonQuery(insertBarcodeSql, insertBarcodeParas);
+                        if (res <= 0)
+                        {
+                            sre.Status = Constant.ServiceResultStatus.NoSearchResults;
+                            sre.Message = "新增条码异常" +   barcode.ToString();
+                        }
+
+                        // 绑定条码
+                        OracleParameter[] updateGroutingDailyDetailParas = new OracleParameter[]
+                        {
+                        new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, seqGroutingDailyDetailID, ParameterDirection.Input),
+                        new OracleParameter(":BarCode", OracleDbType.NVarchar2, barcode, ParameterDirection.Input),
+                        };
+                        res = conn.ExecuteNonQuery(updateGroutingDailyDetailSql, updateGroutingDailyDetailParas);
+                        if (res <= 0)
+                        {
+                            sre.Status = Constant.ServiceResultStatus.NoSearchResults;
+                            sre.Message = "绑定条码异常" + barcode.ToString();     
+                        }
+                    }
+                }
+                #endregion 更新注浆日报明细表
+
+                //提交
+                if (sre.Status == Constant.ServiceResultStatus.Success) 
+                {
+                    sre.Message = "操作成功!";
+                    conn.Commit();
+                }
+				else 
+                {
+                    conn.Rollback();
+                } 
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
+            finally
+            {
+                conn.Disconnect();
+            }
+            //返回数据
+            return sre;
+        }
+    #endregion
     }
 }

+ 31 - 0
WCF.Service/WCF.Ex_HGS3_QRS/IEx_HGS3_QR.cs

@@ -46,5 +46,36 @@ namespace Dongke.IBOSS.PRD.WCF.ExHGS3QRS
 
 
         #endregion
+
+        #region 官塘自动注浆绑码对接金马
+        /// <summary>
+        /// 官塘自动注浆绑码对接金马
+        /// </summary>
+        /// <param name="groutingLineCode"></param>
+        /// <param name="mouldCode"></param>
+        /// <param name="userCode"></param>
+        /// <param name="groutingDateStr"></param>
+        /// <param name="createTimeStr"></param>
+        /// <param name="barcode"></param>
+        /// <param name="highNum"></param>
+        /// <param name="tbInfo"></param>
+        /// <returns></returns>
+        [OperationContract]
+        //[WebInvoke(BodyStyle = WebMessageBodyStyle.WrappedRequest
+        //    , ResponseFormat = WebMessageFormat.Json
+        //    , RequestFormat = WebMessageFormat.Json)]
+        [WebGet(
+            RequestFormat = WebMessageFormat.Json,
+            ResponseFormat = WebMessageFormat.Json)]
+        string AddGroutingData_JM(
+            string groutingLineCode,
+            string mouldCode,
+            string userCode,
+            string groutingDateStr,
+            string createTimeStr,
+            string barcode,
+            string highNum,
+            string tbInfo);
+        #endregion
     }
 }