using System.Text; using Gs.Entity.BaseInfo; using Gs.Entity.Sys; using GS.QC.Models; using Gs.Toolbox; using Gs.Toolbox.ApiCore.Abstract.Mvc; using Gs.Toolbox.ApiCore.Common.Mvc; using Gs.Toolbox.ApiCore.Group; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using SqlSugar; using System.Data; using System.Data.SqlClient; using System.Dynamic; namespace GS.QC.Service; [ApiGroup(ApiGroupNames.QC)] public class MesQmCheckitemManager : Repository, IRomteService { private readonly IHttpContextAccessor _http; private readonly MesQmCheckitemDtManager _mesQmCheckitemDtManager; private readonly string _userCode, _userGuid, _orgFids; public MesQmCheckitemManager(IHttpContextAccessor httpContextAccessor) { _http = httpContextAccessor; _mesQmCheckitemDtManager = new MesQmCheckitemDtManager(); (_userCode, _userGuid, _orgFids) = UtilityHelper.GetUserGuidAndOrgGuid(_http); } /// /// 查询列表,支持分页 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto> GetListPage(PageQuery query) { var _sbWhere = new StringBuilder(" 1=1 " + query.keyWhere); var _sbBy = new StringBuilder(query.sortName + " " + query.sortOrder); var totalCount = 0; var itemsList = Db.Queryable( (a, b, org) => new object[] { JoinType.Left, a.ItemId == b.Id, JoinType.Left, b.FSubsidiary == org.Fid }).Select((a, b, org) => new MesQmCheckitem { FSubsidiary = "(" + org.FNumber + ")" + org.Name, mc = b.ItemName, gg = b.ItemModel, ItemNo = b.ItemNo, }, true) .Where(_sbWhere.ToString()) .OrderBy(_sbBy.ToString()) .ToPageList(query.currentPage, query.everyPageSize, ref totalCount); var pageList = new PageList(itemsList, totalCount, query.everyPageSize); return ReturnDto>.QuickReturn(pageList, ReturnCode.Success, "读取成功"); } /// /// 根据主表id读取主表和子表 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto GetModel( [FromBody] MesQmCheckitem model) { var m = base.GetById(model.Guid); System.Text.StringBuilder sbSql = new StringBuilder(); sbSql.Append("select top 1 FSubsidiary,org.NAME as fName,org.FNumber, [item_name],[item_model],item_no from MES_ITEMS i left join SYS_ORGANIZATION org on i.FSubsidiary=org.FID where i.id=" + m.ItemId); try { DataSet dset = new DataSet(); dset = Gs.Toolbox.DbHelperSQL.Query(sbSql.ToString()); System.Data.DataRow r = dset.Tables[0].Rows[0]; m.FSubsidiary ="("+ r["FNumber"].ToString() + ")"+ r["fName"].ToString(); m.ItemNo = r["item_no"].ToString(); m.gg = r["item_model"].ToString(); m.mc = r["item_name"].ToString(); } catch (Exception ex) { LogHelper.Debug(ToString(), "GetModel error:" + ex.Message); } m.list = Db.Queryable((a, b) => new object[] { JoinType.Left, a.SampleSizeNo == b.SampleSizeNo }) .OrderBy((a, b) => a.Forder) .Select((a, b) => new MesQmCheckitemDt { sampleSizeName = b.SampleSizeName }, true) .Where(a => a.Pid == model.Guid) .ToList(); if (m != null) return ReturnDto.QuickReturn(m, ReturnCode.Success, "读取成功!"); return ReturnDto.QuickReturn(m, ReturnCode.Default, "读取失败!"); } /// /// 增加或编辑实体 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto EditModel([FromBody] MesQmCheckitem model) { if (UtilityHelper.CheckGuid(model.Guid)) { var cont = IsChkOrUnChk(model.Guid.ToString()); if (cont > 0) return ReturnDto.QuickReturn("", ReturnCode.Exception, "修改失败,该信息已被审核!"); } try { Db.Ado.BeginTran(); if (!UtilityHelper.CheckGuid(model.Guid)) { model.Guid = Guid.NewGuid(); model.CreateBy = _userCode; model.CreateDate = DateTime.Now; model.Isenabled = false; model.FoneChecked = false; model.FtwoChecked = false; base.Insert(model); } else { model.LastupdateBy = _userCode; model.LastupdateDate = DateTime.Now; // base.Update(model); Db.Updateable(model).IgnoreColumns(true) .ExecuteCommand(); } var _upLst = new List(); var _addLst = new List(); foreach (var m in model.list) if (UtilityHelper.CheckGuid(m.Guid)) { m.LastupdateBy = _userCode; m.LastupdateDate = DateTime.Now; _upLst.Add(m); } else { m.Guid = Guid.NewGuid(); m.Pid = model.Guid; m.CreateDate = DateTime.Now; m.CreateBy = _userCode; _addLst.Add(m); } Db.Updateable(_upLst).IgnoreColumns(true) .ExecuteCommand(); _mesQmCheckitemDtManager.InsertRange(_addLst); Db.Ado.CommitTran(); } catch (Exception ex) { LogHelper.Debug(ToString(), "EditModel error:" + ex.Message); Db.Ado.RollbackTran(); return ReturnDto.QuickReturn("", ReturnCode.Exception, ex.Message); } return ReturnDto.QuickReturn(model.Guid.ToString(), ReturnCode.Success, "操作成功!"); } /// /// 删除明细实体,支持批量删除 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto DeleteModelMx([FromBody] JArray guidList) { var intArray = guidList.ToObject(); var cont = IsChkOrUnChkByMx(intArray[0]); if (cont > 0) return ReturnDto.QuickReturn(default(int?), ReturnCode.Exception, "删除失败,该信息已被审核!"); int? rtnInt = _mesQmCheckitemDtManager.DeleteByIds(intArray) ? intArray.Length : 0; return rtnInt > 0 ? ReturnDto.QuickReturn(rtnInt, ReturnCode.Success, "操作成功,共删除" + rtnInt + "条数据!") : ReturnDto.QuickReturn(rtnInt, ReturnCode.Exception, "删除失败,请重试!"); } private int IsChkOrUnChkByMx(string _mxGuid) { var m = _mesQmCheckitemDtManager.GetById(_mxGuid); return IsChkOrUnChk(m.Pid.ToString()); } private int IsChkOrUnChk(string? _guid) { var cont = base.GetList(it => it.Guid == Guid.Parse(_guid) && it.FoneChecked == true).Count; return cont; } /// /// 复制物料项目 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto ItemsComyMx([FromBody] dynamic model) { int? rtnInt = (int)ReturnCode.Default; string inSourceGuid = model.sourceGuid; string inMxGuids = model.itemGuids; string strType=model.iqcType; var _outMsg = ""; var _outSum = -1; using (var conn = new SqlConnection(DbHelperSQL.strConn)) { using (var cmd = new SqlCommand("[chk_mes_copyItem]", conn)) { try { conn.Open(); cmd.CommandType = CommandType.StoredProcedure; SqlParameter[] parameters = { new("@outMsg", SqlDbType.NVarChar, 300), new("@outSum", SqlDbType.Int), new("@inSourceGuid",inSourceGuid), new("@inMxGuids", inMxGuids), new("@iqcType", strType), new("@inEdtUserGuid", _userGuid), }; parameters[0].Direction = ParameterDirection.Output; parameters[1].Direction = ParameterDirection.Output; foreach (var parameter in parameters) cmd.Parameters.Add(parameter); cmd.ExecuteNonQuery(); _outMsg = parameters[0].Value.ToString(); _outSum = int.Parse(parameters[1].Value.ToString()); } catch (Exception ex) { LogHelper.Debug(ToString(), "chk_mes_copyItem error:" + ex.Message); _outMsg = ex.Message; _outSum = -1; } finally { conn.Close(); } } } if (_outSum <= 0) return ReturnDto.QuickReturn(rtnInt, ReturnCode.Exception, _outMsg); return ReturnDto.QuickReturn(rtnInt, ReturnCode.Success, _outMsg); } /// /// /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto EditModelSubmit([FromBody] dynamic mode) { string _guid = mode.guid; string _inFieldValue = mode.inFieldValue; dynamic m = new ExpandoObject(); m.outSum = -1; m.outMsg = ""; using (var conn = new SqlConnection(DbHelperSQL.strConn)) { using (var cmd = new SqlCommand("[chk_mes_checkItem]", conn)) { try { conn.Open(); cmd.CommandType = CommandType.StoredProcedure; SqlParameter[] parameters = { new("@outMsg", SqlDbType.NVarChar, 300), new("@outSum", SqlDbType.Int), new("@inEdtUserGuid", _userGuid), new("@inOrderGuid", _guid), new("@inFieldValue", _inFieldValue), new("@in1", ""), new("@in2", "") }; parameters[0].Direction = ParameterDirection.Output; parameters[1].Direction = ParameterDirection.Output; foreach (var parameter in parameters) cmd.Parameters.Add(parameter); cmd.ExecuteNonQuery(); m.outMsg = parameters[0].Value.ToString(); m.outSum = int.Parse(parameters[1].Value.ToString()); } catch (Exception ex) { LogHelper.Debug(ToString(), "chk_mes_checkItem error:" + ex.Message); return ReturnDto.QuickReturn(m, ReturnCode.Default, ex.Message); } finally { conn.Close(); } } } return ReturnDto.QuickReturn(m, ReturnCode.Success, "操作成功!"); } }