From a5b7843bbda42aea3e24f0a519679b6cc8f3ee72 Mon Sep 17 00:00:00 2001 From: 杨乐 <yang.le.192@qq.com> Date: 星期五, 11 二月 2022 17:55:26 +0800 Subject: [PATCH] 权限编辑 2727 不良品处理 --- WebAPI/Controllers/QC_ManagementController.cs | 999 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 962 insertions(+), 37 deletions(-) diff --git a/WebAPI/Controllers/QC_ManagementController.cs b/WebAPI/Controllers/QC_ManagementController.cs index a3e6fd1..91fcfda 100644 --- a/WebAPI/Controllers/QC_ManagementController.cs +++ b/WebAPI/Controllers/QC_ManagementController.cs @@ -104,20 +104,30 @@ /// <returns></returns> [Route("QC_Management/MES_QC_CheckProjectList_Json")] [HttpGet] - public object MES_QC_CheckProjectList_Json(string sqlWhere) + public object MES_QC_CheckProjectList_Json(string sWhere,string user) { DataSet ds; try { - SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); - if (sqlWhere == null || sqlWhere.Equals("")) + //鍒ゆ柇鏉冮檺 + if (!DBUtility.ClsPub.Security_Log("Gy_QCCheckProject_Query", 1, false, user)) { - ds = oCN.RunProcReturn("select top 500 * from h_v_Gy_QCCheckProjectList where HBillStatus>-1 ", "h_v_Gy_QCCheckProjectList"); + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鏃犳煡璇㈡潈闄�"; + objJsonResult.data = null; + return objJsonResult; + } + + SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); + if (sWhere == null || sWhere.Equals("")) + { + ds = oCN.RunProcReturn("select * from h_v_Gy_QCCheckProjectList order by hmainid desc ", "h_v_Gy_QCCheckProjectList"); } else { - string sql1 = "select * from h_v_Gy_QCCheckProjectList where HBillStatus>-1 "; - string sql = sql1 + sqlWhere; + string sql1 = "select * from h_v_Gy_QCCheckProjectList where 1=1"; + string sql = sql1 + sWhere+ " order by hmainid desc "; ds = oCN.RunProcReturn(sql, "h_v_Gy_QCCheckProjectList"); } } @@ -147,11 +157,11 @@ SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); if (sqlWhere == null || sqlWhere.Equals("")) { - ds = oCN.RunProcReturn("select top 500 * from h_v_QC_POStockInCheckBillList ", "h_v_QC_POStockInCheckBillList"); + ds = oCN.RunProcReturn("select top 500 * from h_v_QC_POStockInCheckBillList where 鍏抽棴浜�='' ", "h_v_QC_POStockInCheckBillList"); } else { - string sql1 = "select * from h_v_QC_POStockInCheckBillList where 1 = 1 "; + string sql1 = "select * from h_v_QC_POStockInCheckBillList where 鍏抽棴浜�='' "; string sql = sql1 + sqlWhere; ds = oCN.RunProcReturn(sql, "h_v_QC_POStockInCheckBillList"); } @@ -174,20 +184,30 @@ /// <returns></returns> [Route("QC_Management/MES_QC_FirstPieceCheckBillList_Json")] [HttpGet] - public object MES_QC_FirstPieceCheckBillList_Json(string sqlWhere) + public object MES_QC_FirstPieceCheckBillList_Json(string sqlWhere,string user) { DataSet ds; try { + //鏌ョ湅鏉冮檺 + if (!DBUtility.ClsPub.Security_Log("QC_FirstPieceCheckBill_Query", 1, false, user)) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鏃犳煡鐪嬫潈闄愶紒"; + objJsonResult.data = null; + return objJsonResult; + } + SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); if (sqlWhere == null || sqlWhere.Equals("")) { - ds = oCN.RunProcReturn("select top 500 * from h_v_QC_FirstPieceCheckBillList ", "h_v_QC_FirstPieceCheckBillList"); + ds = oCN.RunProcReturn("select top 500 * from h_v_QC_FirstPieceCheckBillList where 鍏抽棴浜�='' order by hmainid desc ", "h_v_QC_FirstPieceCheckBillList"); } else { - string sql1 = "select * from h_v_QC_FirstPieceCheckBillList where 1 = 1 "; - string sql = sql1 + sqlWhere; + string sql1 = "select * from h_v_QC_FirstPieceCheckBillList where 鍏抽棴浜�='' "; + string sql = sql1 + sqlWhere+ " order by hmainid desc "; ds = oCN.RunProcReturn(sql, "h_v_QC_FirstPieceCheckBillList"); } } @@ -209,20 +229,30 @@ /// <returns></returns> [Route("QC_Management/MES_QC_PatrolProcCheckBillList_Json")] [HttpGet] - public object MES_QC_PatrolProcCheckBillList_Json(string sqlWhere) + public object MES_QC_PatrolProcCheckBillList_Json(string sqlWhere,string user) { DataSet ds; try { + //鏌ョ湅鏉冮檺 + if (!DBUtility.ClsPub.Security_Log("QC_PatrolProcCheckBill_Query", 1, false, user)) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鏃犳煡鐪嬫潈闄愶紒"; + objJsonResult.data = null; + return objJsonResult; + } + SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); if (sqlWhere == null || sqlWhere.Equals("")) { - ds = oCN.RunProcReturn("select top 500 * from h_v_QC_PatrolProcCheckBillList ", "h_v_QC_PatrolProcCheckBillList"); + ds = oCN.RunProcReturn("select top 500 * from h_v_QC_PatrolProcCheckBillList where 鍏抽棴浜�='' order by hmainid desc ", "h_v_QC_PatrolProcCheckBillList"); } else { - string sql1 = "select * from h_v_QC_PatrolProcCheckBillList where 1 = 1 "; - string sql = sql1 + sqlWhere; + string sql1 = "select * from h_v_QC_PatrolProcCheckBillList where 鍏抽棴浜�='' "; + string sql = sql1 + sqlWhere+ " order by hmainid desc "; ds = oCN.RunProcReturn(sql, "h_v_QC_PatrolProcCheckBillList"); } } @@ -236,6 +266,57 @@ } return GetObjectJson(ds); } + + + /// <summary> + /// 妫�楠屾柟妗堣幏鍙栦俊鎭� + /// </summary> + /// <returns></returns> + [Route("GetQCCheckProjectDetail")] + [HttpGet] + public ApiResult<DataSet> GetQCCheckProjectDetail(string HID) + { + var model = LuBaoSevice.GetCheckProjectDetail(HID); + return model; + } + + /// <summary> + /// 鏉ユ枡妫�楠屽崟鑾峰彇淇℃伅 + /// </summary> + /// <returns></returns> + [Route("GetPOStockInCheckDetail")] + [HttpGet] + public ApiResult<DataSet> GetPOStockInCheckDetail(string HID) + { + var model = LuBaoSevice.GetPOStockInCheckBillDetail(HID); + return model; + } + + /// <summary> + /// 棣栦欢妫�楠屽崟鑾峰彇淇℃伅 + /// </summary> + /// <returns></returns> + [Route("GetQC_FirstPieceCheckDetail")] + [HttpGet] + public ApiResult<DataSet> GetQC_FirstPieceCheckDetail(string HID) + { + var model = LuBaoSevice.GetQC_FirstPieceCheckBillDetail(HID); + return model; + } + + + /// <summary> + /// 宸℃鍗曡幏鍙栦俊鎭� + /// </summary> + /// <returns></returns> + [Route("GetQC_PatrolProcCheckDetail")] + [HttpGet] + public ApiResult<DataSet> GetQC_PatrolProcCheckDetail(string HID) + { + var model = LuBaoSevice.GetQC_PatrolProcCheckBillDetail(HID); + return model; + } + /// <summary> /// 杩斿洖妫�楠屾柟妗堝崟瀛愯〃璇︽儏 @@ -272,16 +353,171 @@ return GetObjectJson(ds); } + + /// <summary> + /// 杩斿洖鏉ユ枡妫�楠屽崟瀛愯〃璇︽儏 + /// </summary> + /// <param name="sWhere"></param> + /// <returns></returns> + [Route("MES_QC_POStockInCheckDetail_Json")] + [HttpGet] + public object MES_QC_POStockInCheckDetail_Json(string sqlWhere) + { + DataSet ds; + try + { + SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); + if (sqlWhere == null || sqlWhere.Equals("")) + { + ds = oCN.RunProcReturn("select * from h_v_QC_Edit_POStockInCheckBillList", "h_v_QC_Edit_POStockInCheckBillList"); + } + else + { + string sql1 = "select * from h_v_QC_Edit_POStockInCheckBillList where 1 = 1 "; + string sql = sql1 + sqlWhere; + ds = oCN.RunProcReturn(sql, "h_v_QC_Edit_POStockInCheckBillList"); + } + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "娌℃湁杩斿洖浠讳綍璁板綍锛�" + e.ToString(); + objJsonResult.data = null; + return objJsonResult; + } + return GetObjectJson(ds); + } + + /// <summary> + /// 杩斿洖棣栦欢妫�楠屽崟瀛愯〃璇︽儏 + /// </summary> + /// <param name="sWhere"></param> + /// <returns></returns> + [Route("MES_QC_FirstPieceCheckDetail_Json")] + [HttpGet] + public object MES_QC_FirstPieceCheckDetail_Json(string sqlWhere) + { + DataSet ds; + try + { + SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); + if (sqlWhere == null || sqlWhere.Equals("")) + { + ds = oCN.RunProcReturn("select * from h_v_QC_Edit_FirstPieceCheckBillList", "h_v_QC_Edit_FirstPieceCheckBillList"); + } + else + { + string sql1 = "select * from h_v_QC_Edit_FirstPieceCheckBillList where 1 = 1 "; + string sql = sql1 + sqlWhere; + ds = oCN.RunProcReturn(sql, "h_v_QC_Edit_FirstPieceCheckBillList"); + } + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "娌℃湁杩斿洖浠讳綍璁板綍锛�" + e.ToString(); + objJsonResult.data = null; + return objJsonResult; + } + return GetObjectJson(ds); + } + + + /// <summary> + /// 杩斿洖宸℃鍗曞瓙琛ㄨ鎯� + /// </summary> + /// <param name="sWhere"></param> + /// <returns></returns> + [Route("MES_QC_PatrolProcCheckDetail_Json")] + [HttpGet] + public object MES_QC_PatrolProcCheckDetail_Json(string sqlWhere) + { + DataSet ds; + try + { + SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); + if (sqlWhere == null || sqlWhere.Equals("")) + { + ds = oCN.RunProcReturn("select * from h_v_QC_Edit_PatrolProcCheckBillList", "h_v_QC_Edit_PatrolProcCheckBillList"); + } + else + { + string sql1 = "select * from h_v_QC_Edit_PatrolProcCheckBillList where 1 = 1 "; + string sql = sql1 + sqlWhere; + ds = oCN.RunProcReturn(sql, "h_v_QC_Edit_PatrolProcCheckBillList"); + } + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "娌℃湁杩斿洖浠讳綍璁板綍锛�" + e.ToString(); + objJsonResult.data = null; + return objJsonResult; + } + return GetObjectJson(ds); + } + + #endregion #region 淇濆瓨/缂栬緫/鍒犻櫎鏂规硶 + #region 妫�楠屾柟妗堢紪杈戞椂鑾峰彇琛ㄥご鏁版嵁 + [Route("QC_Management/MES_QC_CheckProjectListCheckDetai")] + [HttpGet] + public ApiResult<DataSet> MES_QC_CheckProjectListCheckDetai(string HID) + { + if (string.IsNullOrEmpty(HID)) + return new ApiResult<DataSet> { code = -1, msg = "ID涓嶈兘涓虹┖" }; + SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); + + var dataSet = oCN.RunProcReturn("select top 1 * from h_v_Gy_QCCheckProjectList_NEW where hmainid= " + HID + " ", "h_v_Gy_QCCheckProjectList_NEW"); + if (dataSet == null || dataSet.Tables[0].Rows.Count == 0) + return new ApiResult<DataSet> { code = -1, msg = "涓嶅瓨鍦ㄧ敓浜ф眹鎶ュ崟鍙�" }; + + return new ApiResult<DataSet> { code = 1, msg = "鏌ヨ鎴愬姛", data = dataSet }; + } + #endregion + + #region 妫�楠屾柟妗堢紪杈戞椂鑾峰彇琛ㄤ綋鏁版嵁 + [Route("QC_Management/MES_QC_CheckProjectListProjectDetai")] + [HttpGet] + public object MES_QC_CheckProjectListProjectDetai(string HInterID) + { + DataSet ds; + try + { + SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); + ds = oCN.RunProcReturn(string.Format(@"select 娆″簭鍙� HPrjNo,妫�楠岄」鐩甀D HQCCheckItemID,妫�楠岄」鐩唬鐮� HQCCheckItemNumber,妫�楠岄」鐩� HQCCheckItemName, + 妫�楠屾爣鍑� HQCStd,鏈�澶ф楠屾爣鍑� HQCStdMax,妫�楠屽崟浣� HQCUnit,琛ㄤ綋澶囨敞 HRemark from h_v_Gy_QCCheckProjectList_NEW + where hinterid='"+HInterID+"'"), "h_v_Gy_QCCheckProjectList_NEW"); + + objJsonResult.code = "0"; + objJsonResult.count = 1; + objJsonResult.Message = "鑾峰彇淇℃伅鎴愬姛锛�"; + objJsonResult.data = ds.Tables[0]; + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "娌℃湁杩斿洖浠讳綍璁板綍锛�" + e.ToString(); + objJsonResult.data = null; + } + return objJsonResult; + } + #endregion + + #region 妫�楠屾柟妗堜繚瀛� /// <summary> /// 淇濆瓨妫�楠屾柟妗� /// </summary> /// <param name="msg"></param> /// <returns></returns> - [Route("SaveQCCheckProjectList")] + [Route("QC_Management/SaveQCCheckProjectList")] [HttpPost] public object SaveQCCheckProjectList([FromBody] JObject msg) { @@ -290,7 +526,17 @@ string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); string msg2 = sArray[0].ToString(); string msg3 = sArray[1].ToString(); + string user = sArray[2].ToString();//鐢ㄦ埛鍚� + //鍒ゆ柇鏉冮檺 + if (!DBUtility.ClsPub.Security_Log("Gy_QCCheckProject_Edit", 1, false, user)) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鏃犵紪杈戞潈闄�"; + objJsonResult.data = null; + return objJsonResult; + } string UserName = ""; ListModels oListModels = new ListModels(); @@ -305,17 +551,17 @@ { //oItem.HMaker = ""; UserName = oItem.HMaker; + DBUtility.ClsPub.CurUserName = UserName; oItem.HMakeDate = DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd")); oItem.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year); oItem.HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd")); - oItem.HBillType = "3302"; - oItem.HBillSubType = "3302"; + oItem.HBillType = "3320"; + oItem.HBillSubType = "3320"; oItem.HBillStatus = 0; oItem.HPeriod = 0; oItem.HMaker = ""; oItem.HStandard = false; oItem.HMainSourceInterID = oItem.HInterID; - oItem.HMaterTypeID = 0; //oItem.HInterID = DBUtility.ClsPub.CreateBillID_SRMProd("1103", ref DBUtility.ClsPub.sExeReturnInfo); if (DBUtility.ClsPub.isStrNull(oItem.HDate) == "") { @@ -358,7 +604,6 @@ oItemSub.HRelationQty = 0; oItemSub.HRelationMoney = 0; oItemSub.HCloseMan = ""; - oItemSub.HRemark = ""; oBill.DetailColl.Add(oItemSub); } @@ -367,7 +612,6 @@ bool bResult; if (oBill.omodel.HInterID == 0) { - // bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo); bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo); } else @@ -402,34 +646,96 @@ } } + #endregion - /// <summary> - /// 妫�楠屾柟妗堣幏鍙栦俊鎭� - /// </summary> - /// <returns></returns> - [Route("GetQCCheckProjectDetail")] - [HttpGet] - public ApiResult<DataSet> GetQCCheckProjectDetail(string HID) - { - var model = LuBaoSevice.GetCheckProjectDetail(HID); - return model; - } - - + #region 妫�楠屾柟妗堥�昏緫鍒犻櫎鍔熻兘 /// <summary> /// 妫�楠屾柟妗堥�昏緫鍒犻櫎鍔熻兘 /// </summary> /// <returns></returns> [Route("DeltetQCCheckProject")] [HttpGet] - public object DeltetQCCheckProject(string HInterID) + public object DeltetQCCheckProject(string HInterID,string UserName) { + + DBUtility.ClsPub.CurUserName = UserName; + //缂栬緫鏉冮檺 + if (!DBUtility.ClsPub.Security_Log("Gy_QCCheckProject_Delete", 1, false, DBUtility.ClsPub.CurUserName)) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鏃犲垹闄ゆ潈闄愶紒"; + objJsonResult.data = null; + return objJsonResult; + } + + + Int64 lngBillKey = 0; + lngBillKey = DBUtility.ClsPub.isLong(HInterID); + if (lngBillKey == 0) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鍗曟嵁ID涓虹┖锛�"; + objJsonResult.data = null; + return objJsonResult; + } + DAL.ClsGy_QCCheckProjectMain oBill = new DAL.ClsGy_QCCheckProjectMain(); + if (oBill.ShowBill(lngBillKey, ref DBUtility.ClsPub.sExeReturnInfo)) + { + if (oBill.omodel.HBillStatus > 1) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鍗曟嵁褰撳墠澶勪簬涓嶈兘鍒犻櫎鐘舵��,涓嶈兘鍒犻櫎锛�"; + objJsonResult.data = null; + return objJsonResult; + } + if (oBill.omodel.HChecker != "") + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鍗曟嵁宸茬粡瀹℃牳,涓嶈兘鍒犻櫎锛�"; + objJsonResult.data = null; + return objJsonResult; + } + + bool IsDete = oBill.DeleteBill(oBill.omodel.HInterID, ref DBUtility.ClsPub.sExeReturnInfo); + if (IsDete) + { + objJsonResult.code = "0"; + objJsonResult.count = 1; + objJsonResult.Message = DBUtility.ClsPub.sExeReturnInfo; + objJsonResult.data = null; + return objJsonResult; + } + else + { + + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = DBUtility.ClsPub.sExeReturnInfo; + objJsonResult.data = null; + return objJsonResult; + } + } + else + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鍗曟嵁鏈壘鍒�"; + objJsonResult.data = null; + return objJsonResult; + } + + + DataSet ds; //string ModRightNameCheck = "Sc_ProcessReport_check"; try { //鍒犻櫎鏉冮檺 - //if (!DBUtility.ClsPub.Security_Log(ModRightNameCheck, 1, true, CurUserName)) + //if (!DBUtility.ClsPub.Security_Log(ModRightNameCheck, 1, false, CurUserName)) //{ // objJsonResult.code = "0"; // objJsonResult.count = 0; @@ -489,7 +795,626 @@ return objJsonResult; } } + #endregion + #region 鏉ユ枡妫�楠� + /// <summary> + /// 淇濆瓨鏉ユ枡妫�楠屽崟 + /// </summary> + /// <param name="msg"></param> + /// <returns></returns> + [Route("SaveQC_POStockInCheckList")] + [HttpPost] + public object SaveQC_POStockInCheckList([FromBody] JObject msg) + { + var _value = msg["msg"].ToString(); + string msg1 = _value.ToString(); + string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); + string msg2 = sArray[0].ToString(); + string msg3 = sArray[1].ToString(); + + + string UserName = ""; + ListModels oListModels = new ListModels(); + try + { + DAL.ClsQC_POStockInCheckBill oBill = new DAL.ClsQC_POStockInCheckBill(); + List<Model.ClsQC_POStockInCheckBillMain> lsmain = new List<Model.ClsQC_POStockInCheckBillMain>(); + msg2 = msg2.Replace("\\", ""); + msg2 = msg2.Replace("\n", ""); //\n + lsmain = oListModels.getObjectByJson_QC_POStockInCheckBillMain(msg2); + foreach (Model.ClsQC_POStockInCheckBillMain oItem in lsmain) + { + //oItem.HMaker = ""; + UserName = oItem.HMaker; + oItem.HMakeDate = DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd")); + oItem.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year); + oItem.HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd")); + oItem.HBillType = "7503"; + oItem.HBillSubType = "7503"; + oItem.HBillStatus = 0; + oItem.HPeriod = 0; + oItem.HMaker = ""; + oItem.HMainSourceInterID = oItem.HInterID; + + //oItem.HInterID = DBUtility.ClsPub.CreateBillID_SRMProd("1103", ref DBUtility.ClsPub.sExeReturnInfo); + if (DBUtility.ClsPub.isStrNull(oItem.HDate) == "") + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "淇濆瓨澶辫触锛佹病鏈夊崟鎹棩鏈燂紝鏃犳硶淇濆瓨锛�"; + objJsonResult.data = 1; + return objJsonResult; + } + oBill.omodel = oItem; + } + //琛ㄤ綋鏁版嵁 + //鎸� },{鏉ユ媶鍒嗘暟缁� //鍘绘帀銆愬拰銆� + msg3 = msg3.Substring(1, msg3.Length - 2); + msg3 = msg3.Replace("\\", ""); + msg3 = msg3.Replace("\n", ""); //\n + //msg2 = msg2.Replace("'", "鈥�"); + List<Model.ClsQC_POStockInCheckBillSub> ls = new List<Model.ClsQC_POStockInCheckBillSub>(); + ls = oListModels.getObjectByJson_QC_POStockInCheckBillSub(msg3); + int i = 0; + foreach (Model.ClsQC_POStockInCheckBillSub oItemSub in ls) + { + oItemSub.HBillNo_bak = oBill.omodel.HBillNo;//鍗曟嵁鍙凤紙澶囦唤锛屼互鍏嶅唴鐮佷涪澶憋紝鎵句笉鍒板搴斾富琛級 + i++; + if (string.IsNullOrWhiteSpace(oItemSub.HBillNo_bak)) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "淇濆瓨澶辫触锛佹病澶囦唤鍗曟嵁鍙凤紝鏃犳硶淇濆瓨锛�"; + objJsonResult.data = 1; + return objJsonResult; + } + oItemSub.HSourceEntryID = 0; + oItemSub.HSourceInterID = 0; + oItemSub.HEntryID = i; + // DBUtility.ClsPub.isDate(DateTime.Now); + oItemSub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now); + oItemSub.HCloseType = false; + oItemSub.HSourceBillNo = ""; + oItemSub.HSourceBillType = ""; + oItemSub.HRelationQty = 0; + oItemSub.HRelationMoney = 0; + oItemSub.HCloseMan = ""; + oItemSub.HRemark = ""; + oItemSub.HProcCheckEmp = oBill.omodel.HFirstCheckEmp;//妫�娴嬪憳 + oBill.DetailColl.Add(oItemSub); + + } + //淇濆瓨 + //淇濆瓨瀹屾瘯鍚庡鐞� + bool bResult; + if (oBill.omodel.HInterID == 0) + { + // bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo); + bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo); + } + else + { + bResult = oBill.ModifyBill(oBill.omodel.HInterID, ref DBUtility.ClsPub.sExeReturnInfo); + } + if (bResult) + { + objJsonResult.code = "0"; + objJsonResult.count = 1; + objJsonResult.Message = "淇濆瓨鎴愬姛锛�"; + //WebAPIController.Add_Log("閫佽揣鍗曚笅鎺�", UserName, "鐢熸垚閫佽揣鍗�"); + objJsonResult.data = 1; + return objJsonResult; + } + else + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "淇濆瓨澶辫触锛�" + DBUtility.ClsPub.sExeReturnInfo; + objJsonResult.data = 1; + return objJsonResult; + } + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "淇濆瓨澶辫触锛�" + e.ToString(); + objJsonResult.data = 1; + return objJsonResult; + } + } + + /// <summary> + /// 鏉ユ枡妫�楠岄�昏緫鍒犻櫎鍔熻兘 + /// </summary> + /// <returns></returns> + [Route("DeltetQC_POStockInCheck")] + [HttpGet] + public object DeltetQC_POStockInCheck(string HInterID) + { + DataSet ds; + //string ModRightNameCheck = "Sc_ProcessReport_check"; + try + { + //鍒犻櫎鏉冮檺 + //if (!DBUtility.ClsPub.Security_Log(ModRightNameCheck, 1, false, CurUserName)) + //{ + // objJsonResult.code = "0"; + // objJsonResult.count = 0; + // objJsonResult.Message = "瀹℃牳澶辫触锛佹棤鏉冮檺锛�"; + // objJsonResult.data = null; + // return objJsonResult; + //} + + SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); + if (string.IsNullOrWhiteSpace(HInterID)) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "HInterID涓虹┖锛�"; + objJsonResult.data = null; + return objJsonResult; + } + oCN.BeginTran();//寮�濮嬩簨鍔� + ds = oCN.RunProcReturn("select * from QC_POStockInCheckBillMain where HInterID=" + HInterID, "QC_POStockInCheckBillMain"); + DataSet ds2 = oCN.RunProcReturn("select * from QC_POStockInCheckBillSub where HInterID=" + HInterID, "QC_POStockInCheckBillSub"); + if (ds == null || ds.Tables[0].Rows.Count == 0 || ds2 == null || ds2.Tables[0].Rows.Count == 0) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "娌℃湁杩欎釜鍗曟嵁锛屾棤娉曞垹闄わ紒"; + objJsonResult.data = null; + return objJsonResult; ; + } + var HCloseMan = Convert.ToString(ds.Tables[0].Rows[0]["HCloseMan"]); + var HCloseMan2 = Convert.ToString(ds2.Tables[0].Rows[0]["HCloseMan"]); + if (!string.IsNullOrWhiteSpace(HCloseMan) || !string.IsNullOrWhiteSpace(HCloseMan2) ) + { + oCN.RollBack();//鍥炴粴浜嬪姟 + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鍗曟嵁宸插垹闄ゆ棤娉曞啀娆″垹闄わ紒"; + objJsonResult.data = null; + return objJsonResult; + } + + oCN.RunProc("update QC_POStockInCheckBillMain set HCloseMan='-1',HCloseDate=GETDATE() where HInterID=" + HInterID); + oCN.RunProc("update QC_POStockInCheckBillSub set HCloseMan='-1',HEntryCloseDate=GETDATE() where HInterID=" + HInterID); + oCN.Commit();//鎻愪氦浜嬪姟 + objJsonResult.code = "0"; + objJsonResult.count = 1; + objJsonResult.Message = "* 鍗曟嵁鍒犻櫎鎴愬姛锛�"; + objJsonResult.data = null; + return objJsonResult; ; + + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鍒犻櫎澶辫触锛�" + e.ToString(); + objJsonResult.data = null; + return objJsonResult; + } + } + #endregion + + #region 棣栦欢妫�楠� + /// <summary> + /// 淇濆瓨棣栦欢妫�楠屽崟 + /// </summary> + /// <param name="msg"></param> + /// <returns></returns> + [Route("SaveQC_FirstPieceCheckList")] + [HttpPost] + public object SaveQC_FirstPieceCheckList([FromBody] JObject msg) + { + var _value = msg["msg"].ToString(); + string msg1 = _value.ToString(); + string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); + string msg2 = sArray[0].ToString(); + string msg3 = sArray[1].ToString(); + + + string UserName = ""; + ListModels oListModels = new ListModels(); + try + { + + DAL.ClsQC_FirstPieceCheckBill oBill = new DAL.ClsQC_FirstPieceCheckBill(); + List<Model.ClsQC_FirstPieceCheckBillMain> lsmain = new List<Model.ClsQC_FirstPieceCheckBillMain>(); + msg2 = msg2.Replace("\\", ""); + msg2 = msg2.Replace("\n", ""); //\n + lsmain = oListModels.getObjectByJson_QC_FirstPieceCheckBillMain(msg2); + foreach (Model.ClsQC_FirstPieceCheckBillMain oItem in lsmain) + { + //oItem.HMaker = ""; + UserName = oItem.HMaker; + oItem.HMakeDate = DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd")); + oItem.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year); + oItem.HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd")); + oItem.HBillType = "7505"; + oItem.HBillSubType = "7505"; + oItem.HBillStatus = 0; + oItem.HPeriod = 0; + oItem.HMaker = ""; + oItem.HMainSourceInterID = oItem.HInterID; + + //oItem.HInterID = DBUtility.ClsPub.CreateBillID_SRMProd("1103", ref DBUtility.ClsPub.sExeReturnInfo); + if (DBUtility.ClsPub.isStrNull(oItem.HDate) == "") + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "淇濆瓨澶辫触锛佹病鏈夊崟鎹棩鏈燂紝鏃犳硶淇濆瓨锛�"; + objJsonResult.data = 1; + return objJsonResult; + } + oBill.omodel = oItem; + } + //琛ㄤ綋鏁版嵁 + //鎸� },{鏉ユ媶鍒嗘暟缁� //鍘绘帀銆愬拰銆� + msg3 = msg3.Substring(1, msg3.Length - 2); + msg3 = msg3.Replace("\\", ""); + msg3 = msg3.Replace("\n", ""); //\n + //msg2 = msg2.Replace("'", "鈥�"); + List<Model.ClsQC_FirstPieceCheckBillSub> ls = new List<Model.ClsQC_FirstPieceCheckBillSub>(); + ls = oListModels.getObjectByJson_QC_FirstPieceCheckBillSub(msg3); + int i = 0; + foreach (Model.ClsQC_FirstPieceCheckBillSub oItemSub in ls) + { + oItemSub.HBillNo_bak = oBill.omodel.HBillNo;//鍗曟嵁鍙凤紙澶囦唤锛屼互鍏嶅唴鐮佷涪澶憋紝鎵句笉鍒板搴斾富琛級 + i++; + if (string.IsNullOrWhiteSpace(oItemSub.HBillNo_bak)) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "淇濆瓨澶辫触锛佹病澶囦唤鍗曟嵁鍙凤紝鏃犳硶淇濆瓨锛�"; + objJsonResult.data = 1; + return objJsonResult; + } + oItemSub.HSourceEntryID = 0; + oItemSub.HSourceInterID = 0; + oItemSub.HEntryID = i; + // DBUtility.ClsPub.isDate(DateTime.Now); + oItemSub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now); + oItemSub.HCloseType = false; + oItemSub.HSourceBillNo = ""; + oItemSub.HSourceBillType = ""; + oItemSub.HRelationQty = 0; + oItemSub.HRelationMoney = 0; + oItemSub.HCloseMan = ""; + oItemSub.HRemark = ""; + oBill.DetailColl.Add(oItemSub); + + } + //淇濆瓨 + //淇濆瓨瀹屾瘯鍚庡鐞� + bool bResult; + if (oBill.omodel.HInterID == 0) + { + // bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo); + bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo); + } + else + { + bResult = oBill.ModifyBill(oBill.omodel.HInterID, ref DBUtility.ClsPub.sExeReturnInfo); + } + if (bResult) + { + objJsonResult.code = "0"; + objJsonResult.count = 1; + objJsonResult.Message = "淇濆瓨鎴愬姛锛�"; + //WebAPIController.Add_Log("閫佽揣鍗曚笅鎺�", UserName, "鐢熸垚閫佽揣鍗�"); + objJsonResult.data = 1; + return objJsonResult; + } + else + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "淇濆瓨澶辫触锛�" + DBUtility.ClsPub.sExeReturnInfo; + objJsonResult.data = 1; + return objJsonResult; + } + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "淇濆瓨澶辫触锛�" + e.ToString(); + objJsonResult.data = 1; + return objJsonResult; + } + } + + /// <summary> + /// 棣栦欢妫�楠岄�昏緫鍒犻櫎鍔熻兘 + /// </summary> + /// <returns></returns> + [Route("DeltetQC_FirstPieceCheck")] + [HttpGet] + public object DeltetQC_FirstPieceCheck(string HInterID,string user) + { + DataSet ds; + string ModRightNameCheck = "QC_FirstPieceCheckBill_Delete"; + try + { + //鍒犻櫎鏉冮檺 + if (!DBUtility.ClsPub.Security_Log(ModRightNameCheck, 1, false, user)) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "瀹℃牳澶辫触锛佹棤鏉冮檺锛�"; + objJsonResult.data = null; + return objJsonResult; + } + + SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); + if (string.IsNullOrWhiteSpace(HInterID)) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "HInterID涓虹┖锛�"; + objJsonResult.data = null; + return objJsonResult; + } + oCN.BeginTran();//寮�濮嬩簨鍔� + ds = oCN.RunProcReturn("select * from QC_FirstPieceCheckBillMain where HInterID=" + HInterID, "QC_FirstPieceCheckBillMain"); + DataSet ds2 = oCN.RunProcReturn("select * from QC_FirstPieceCheckBillSub where HInterID=" + HInterID, "QC_FirstPieceCheckBillSub"); + if (ds == null || ds.Tables[0].Rows.Count == 0 || ds2 == null || ds2.Tables[0].Rows.Count == 0) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "娌℃湁杩欎釜鍗曟嵁锛屾棤娉曞垹闄わ紒"; + objJsonResult.data = null; + return objJsonResult; ; + } + var HCloseMan = Convert.ToString(ds.Tables[0].Rows[0]["HCloseMan"]); + var HCloseMan2 = Convert.ToString(ds2.Tables[0].Rows[0]["HCloseMan"]); + if (!string.IsNullOrWhiteSpace(HCloseMan) || !string.IsNullOrWhiteSpace(HCloseMan2)) + { + oCN.RollBack();//鍥炴粴浜嬪姟 + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鍗曟嵁宸插垹闄ゆ棤娉曞啀娆″垹闄わ紒"; + objJsonResult.data = null; + return objJsonResult; + } + + oCN.RunProc("update QC_FirstPieceCheckBillMain set HCloseMan='-1',HCloseDate=GETDATE() where HInterID=" + HInterID); + oCN.RunProc("update QC_FirstPieceCheckBillSub set HCloseMan='-1',HEntryCloseDate=GETDATE() where HInterID=" + HInterID); + oCN.Commit();//鎻愪氦浜嬪姟 + objJsonResult.code = "0"; + objJsonResult.count = 1; + objJsonResult.Message = "* 鍗曟嵁鍒犻櫎鎴愬姛锛�"; + objJsonResult.data = null; + return objJsonResult; ; + + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鍒犻櫎澶辫触锛�" + e.ToString(); + objJsonResult.data = null; + return objJsonResult; + } + } + #endregion + + #region 宸℃ + /// <summary> + /// 淇濆瓨宸℃鍗� + /// </summary> + /// <param name="msg"></param> + /// <returns></returns> + [Route("SaveQC_PatrolProcCheckList")] + [HttpPost] + public object SaveQC_PatrolProcCheckList([FromBody] JObject msg) + { + var _value = msg["msg"].ToString(); + string msg1 = _value.ToString(); + string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); + string msg2 = sArray[0].ToString(); + string msg3 = sArray[1].ToString(); + string user = sArray[2].ToString(); + + + string UserName = ""; + ListModels oListModels = new ListModels(); + try + { + //鍒ゆ柇鏉冮檺 + if (!DBUtility.ClsPub.Security_Log("QC_PatrolProcCheckBill_Edit", 1, false, user)) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鏃犱繚瀛樻潈闄�"; + objJsonResult.data = null; + return objJsonResult; + } + + WebAPI.DLL.ClsQC_PatrolProcCheckBill oBill = new WebAPI.DLL.ClsQC_PatrolProcCheckBill(); + List<Model.ClsQC_PatrolProcCheckBillMain> lsmain = new List<Model.ClsQC_PatrolProcCheckBillMain>(); + msg2 = msg2.Replace("\\", ""); + msg2 = msg2.Replace("\n", ""); //\n + lsmain = oListModels.getObjectByJson_QC_PatrolProcCheckBillMain(msg2); + foreach (Model.ClsQC_PatrolProcCheckBillMain oItem in lsmain) + { + //oItem.HMaker = ""; + UserName = oItem.HMaker; + oItem.HMakeDate = DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd")); + oItem.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year); + oItem.HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd")); + oItem.HBillType = "7506"; + oItem.HBillSubType = "7506"; + oItem.HBillStatus = 0; + oItem.HPeriod = 0; + oItem.HMaker = ""; + oItem.HMainSourceInterID = oItem.HInterID; + + //oItem.HInterID = DBUtility.ClsPub.CreateBillID_SRMProd("1103", ref DBUtility.ClsPub.sExeReturnInfo); + if (DBUtility.ClsPub.isStrNull(oItem.HDate) == "") + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "淇濆瓨澶辫触锛佹病鏈夊崟鎹棩鏈燂紝鏃犳硶淇濆瓨锛�"; + objJsonResult.data = 1; + return objJsonResult; + } + oBill.omodel = oItem; + } + //琛ㄤ綋鏁版嵁 + //鎸� },{鏉ユ媶鍒嗘暟缁� //鍘绘帀銆愬拰銆� + msg3 = msg3.Substring(1, msg3.Length - 2); + msg3 = msg3.Replace("\\", ""); + msg3 = msg3.Replace("\n", ""); //\n + //msg2 = msg2.Replace("'", "鈥�"); + List<Model.ClsQC_PatrolProcCheckBillSub> ls = new List<Model.ClsQC_PatrolProcCheckBillSub>(); + ls = oListModels.getObjectByJson_QC_PatrolProcCheckBillSub(msg3); + int i = 0; + foreach (Model.ClsQC_PatrolProcCheckBillSub oItemSub in ls) + { + oItemSub.HBillNo_bak = oBill.omodel.HBillNo;//鍗曟嵁鍙凤紙澶囦唤锛屼互鍏嶅唴鐮佷涪澶憋紝鎵句笉鍒板搴斾富琛級 + i++; + if (string.IsNullOrWhiteSpace(oItemSub.HBillNo_bak)) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "淇濆瓨澶辫触锛佹病澶囦唤鍗曟嵁鍙凤紝鏃犳硶淇濆瓨锛�"; + objJsonResult.data = 1; + return objJsonResult; + } + oItemSub.HSourceEntryID = 0; + oItemSub.HSourceInterID = 0; + oItemSub.HEntryID = i; + // DBUtility.ClsPub.isDate(DateTime.Now); + oItemSub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now); + oItemSub.HCloseType = false; + oItemSub.HSourceBillNo = ""; + oItemSub.HSourceBillType = ""; + oItemSub.HRelationQty = 0; + oItemSub.HRelationMoney = 0; + oItemSub.HCloseMan = ""; + oItemSub.HRemark = ""; + oBill.DetailColl.Add(oItemSub); + + } + //淇濆瓨 + //淇濆瓨瀹屾瘯鍚庡鐞� + bool bResult; + if (oBill.omodel.HInterID == 0) + { + // bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo); + bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo); + } + else + { + bResult = oBill.ModifyBill(oBill.omodel.HInterID, ref DBUtility.ClsPub.sExeReturnInfo); + } + if (bResult) + { + objJsonResult.code = "0"; + objJsonResult.count = 1; + objJsonResult.Message = "淇濆瓨鎴愬姛锛�"; + //WebAPIController.Add_Log("閫佽揣鍗曚笅鎺�", UserName, "鐢熸垚閫佽揣鍗�"); + objJsonResult.data = 1; + return objJsonResult; + } + else + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "淇濆瓨澶辫触锛�" + DBUtility.ClsPub.sExeReturnInfo; + objJsonResult.data = 1; + return objJsonResult; + } + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "淇濆瓨澶辫触锛�" + e.ToString(); + objJsonResult.data = 1; + return objJsonResult; + } + } + + /// <summary> + /// 宸℃閫昏緫鍒犻櫎鍔熻兘 + /// </summary> + /// <returns></returns> + [Route("DeltetQC_PatrolProcCheck")] + [HttpGet] + public object DeltetQC_PatrolProcCheck(string HInterID,string user) + { + DataSet ds; + string ModRightNameCheck = "QC_PatrolProcCheckBill_Delete"; + try + { + //鍒犻櫎鏉冮檺 + if (!DBUtility.ClsPub.Security_Log(ModRightNameCheck, 1, false, user)) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鍒犻櫎澶辫触锛佹棤鏉冮檺锛�"; + objJsonResult.data = null; + return objJsonResult; + } + + SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); + if (string.IsNullOrWhiteSpace(HInterID)) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "HInterID涓虹┖锛�"; + objJsonResult.data = null; + return objJsonResult; + } + oCN.BeginTran();//寮�濮嬩簨鍔� + ds = oCN.RunProcReturn("select * from QC_PatrolProcCheckBillMain where HInterID=" + HInterID, "QC_PatrolProcCheckBillMain"); + DataSet ds2 = oCN.RunProcReturn("select * from QC_PatrolProcCheckBillSub where HInterID=" + HInterID, "QC_PatrolProcCheckBillSub"); + if (ds == null || ds.Tables[0].Rows.Count == 0 || ds2 == null || ds2.Tables[0].Rows.Count == 0) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "娌℃湁杩欎釜鍗曟嵁锛屾棤娉曞垹闄わ紒"; + objJsonResult.data = null; + return objJsonResult; ; + } + var HCloseMan = Convert.ToString(ds.Tables[0].Rows[0]["HCloseMan"]); + var HCloseMan2 = Convert.ToString(ds2.Tables[0].Rows[0]["HCloseMan"]); + if (!string.IsNullOrWhiteSpace(HCloseMan) || !string.IsNullOrWhiteSpace(HCloseMan2)) + { + oCN.RollBack();//鍥炴粴浜嬪姟 + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鍗曟嵁宸插垹闄ゆ棤娉曞啀娆″垹闄わ紒"; + objJsonResult.data = null; + return objJsonResult; + } + + oCN.RunProc("update QC_PatrolProcCheckBillMain set HCloseMan='-1',HCloseDate=GETDATE() where HInterID=" + HInterID); + oCN.RunProc("update QC_PatrolProcCheckBillSub set HCloseMan='-1',HEntryCloseDate=GETDATE() where HInterID=" + HInterID); + oCN.Commit();//鎻愪氦浜嬪姟 + objJsonResult.code = "0"; + objJsonResult.count = 1; + objJsonResult.Message = "* 鍗曟嵁鍒犻櫎鎴愬姛锛�"; + objJsonResult.data = null; + return objJsonResult; ; + + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鍒犻櫎澶辫触锛�" + e.ToString(); + objJsonResult.data = null; + return objJsonResult; + } + } + #endregion #endregion -- Gitblit v1.9.1