using System.Text; 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; namespace GS.QC.Service; [ApiGroup(ApiGroupNames.QC)] public class MesQmAql1Manager : Repository, IRomteService { private readonly IHttpContextAccessor _http; private readonly MesQmAql2Manager _mesQmAql2Manager; private readonly MesQmAql3Manager _mesQmAql3Manager; private readonly string _userCode, _userGuid, _orgFids; public MesQmAql1Manager(IHttpContextAccessor httpContextAccessor) { _http = httpContextAccessor; _mesQmAql2Manager = new MesQmAql2Manager(); _mesQmAql3Manager = new MesQmAql3Manager(); (_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() .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] MesQmAql1 model) { var m = base.GetById(model.Guid); m.MesQmAql2s = Db.Queryable() .Where(s => s.Aql1Id == m.Guid) .OrderBy(s => s.LotFrom) .ToList(); m.MesQmAql3s = Db.Queryable() .Where(a => a.Aql1Id == m.Guid) .OrderBy(a => a.SampleSizeWord) .ToList(); if (m != null) return ReturnDto.QuickReturn(m, ReturnCode.Success, "读取成功!"); return ReturnDto.QuickReturn(m, ReturnCode.Default, "读取失败!"); } /// /// 增加或编辑实体 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto EditModel([FromBody] MesQmAql1 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.LastupdateBy = _userCode; model.LastupdateDate = DateTime.Now; base.Insert(model); } else { model.CreateBy = _userCode; model.CreateDate = DateTime.Now; model.LastupdateBy = _userCode; model.LastupdateDate = DateTime.Now; if (base.DeleteById(model.Guid)) base.Insert(model); } if (model.MesQmAql2s is { Count: > 0 }) { var _upLst = new List(); var _addLst = new List(); foreach (var m in model.MesQmAql2s) if (UtilityHelper.CheckGuid(m.Guid)) { m.LastupdateBy = _userCode; m.LastupdateDate = DateTime.Now; m.Aql1Id = model.Guid; _upLst.Add(m); } else { m.Guid = Guid.NewGuid(); m.Aql1Id = model.Guid; m.CreateDate = DateTime.Now; m.CreateBy = _userCode; _addLst.Add(m); } if (_upLst is { Count: > 0 }) { var guids = _upLst.Select(t => t.Guid).ToArray(); Db.Deleteable().In(guids).ExecuteCommand(); _addLst.AddRange(_upLst); } // _mesQmAql2Manager.InsertRange(_addLst); Db.Insertable(_addLst).PageSize(1).IgnoreColumnsNull() .ExecuteCommand(); } if (model.MesQmAql3s is { Count: > 0 }) { var _upLst = new List(); var _addLst = new List(); foreach (var m in model.MesQmAql3s) if (UtilityHelper.CheckGuid(m.Guid)) { m.LastupdateBy = _userCode; m.LastupdateDate = DateTime.Now; m.Aql1Id = model.Guid; _upLst.Add(m); } else { m.Guid = Guid.NewGuid(); m.Aql1Id = model.Guid; m.CreateDate = DateTime.Now; m.CreateBy = _userCode; _addLst.Add(m); } if (_upLst is { Count: > 0 }) { var guids = _upLst.Select(t => t.Guid).ToArray(); Db.Deleteable().In(guids).ExecuteCommand(); _addLst.AddRange(_upLst); } Db.Insertable(_addLst).PageSize(1).IgnoreColumnsNull() .ExecuteCommand(); } 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 DeleteModel([FromBody] JArray guidList) { var intArray = guidList.ToObject(); var cont = IsChkOrUnChk(intArray[0]); if (cont > 0) return ReturnDto.QuickReturn(default(int?), ReturnCode.Exception, "删除失败,该信息已被审核!"); int? rtnInt = base.DeleteByIds(intArray) ? intArray.Length : 0; var guidArray = Guid.Empty; foreach (var t in intArray) { if (Guid.TryParse(t, out var guid)) guidArray = guid; Db.Deleteable().Where(s => s.Aql1Id == guidArray) .ExecuteCommand(); Db.Deleteable().Where(s => s.Aql1Id == guidArray) .ExecuteCommand(); } return rtnInt > 0 ? ReturnDto.QuickReturn(rtnInt, ReturnCode.Success, "操作成功,共删除" + rtnInt + "条数据!") : ReturnDto.QuickReturn(rtnInt, ReturnCode.Exception, "删除失败,请重试!"); } /// /// 删除明细实体,支持批量删除 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto DeleteModelMx([FromBody] JArray guidList) { var intArray = guidList.ToObject(); var cont = 0; cont = IsChkOrUnChkByMx(intArray[0]); if (cont > 0) return ReturnDto.QuickReturn(default(int?), ReturnCode.Exception, "删除失败,该信息已被审核!"); int? rtnInt = (int)ReturnCode.Default; var _manager = new MesQmAql2Manager(); rtnInt = _manager.DeleteById(intArray) ? intArray.Length : 0; if (rtnInt > 0) return ReturnDto.QuickReturn(rtnInt, ReturnCode.Success, "操作成功,共删除" + rtnInt + "条数据!"); return ReturnDto.QuickReturn(rtnInt, ReturnCode.Exception, "删除失败,请重试!"); } /// /// 删除明细实体,支持批量删除 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto DeleteModelMx2([FromBody] JArray guidList) { var intArray = guidList.ToObject(); var cont = 0; cont = IsChkOrUnChkByMx2(intArray[0]); if (cont > 0) return ReturnDto.QuickReturn(default(int?), ReturnCode.Exception, "删除失败,该信息已被审核!"); int? rtnInt = (int)ReturnCode.Default; var _manager = new MesQmAql3Manager(); rtnInt = _manager.DeleteById(intArray) ? intArray.Length : 0; if (rtnInt > 0) return ReturnDto.QuickReturn(rtnInt, ReturnCode.Success, "操作成功,共删除" + rtnInt + "条数据!"); return ReturnDto.QuickReturn(rtnInt, ReturnCode.Exception, "删除失败,请重试!"); } private int IsChkOrUnChkByMx(string _mxGuid) { var _manger = new MesQmAql2Manager(); var md = _manger.GetById(_mxGuid); return IsChkOrUnChk(md.Aql1Id.ToString()); } private int IsChkOrUnChkByMx2(string _mxGuid) { var _manger = new MesQmAql3Manager(); var md = _manger.GetById(_mxGuid); return IsChkOrUnChk(md.Aql1Id.ToString()); } //查询主表是否审核 private int IsChkOrUnChk(string? _guid) { var cont = Db.Queryable() .Where(it => it.Guid == Guid.Parse(_guid) && it.FoneChecked == true) .Count(); return cont; } }