diff --git a/QcMgr/Tnb.QcMgr.Entities/Dto/CheckTask.cs b/QcMgr/Tnb.QcMgr.Entities/Dto/CheckTask.cs index dff6b0da..a451bb01 100644 --- a/QcMgr/Tnb.QcMgr.Entities/Dto/CheckTask.cs +++ b/QcMgr/Tnb.QcMgr.Entities/Dto/CheckTask.cs @@ -29,16 +29,15 @@ namespace Tnb.QcMgr.Entities.Dto public string? itemdid { get; set; } public ExecItemShow? setShow { get; set; } public ExecItemData? setData { get; set; } - public PostItemForm? postItemForm { get; set; } } public class PostItemForm { public string? attachment { get; set; } - public string[]? checkbox { get; set; } + public object[]? checkbox { get; set; } public string? errorcause { get; set; } public string? errorlevel { get; set; } - public int measuredValue { get; set; } + public object? measuredValue { get; set; } public string? radio { get; set; } public string? remark { get; set; } public string? text { get; set; } @@ -103,29 +102,53 @@ namespace Tnb.QcMgr.Entities.Dto public string? status { get; set; } public string? result { get; set; } - public List? checktypes { get; set; } + public List>? checktypes { get; set; } } - public class CheckExexTypeInput + public class Exextype { - public string? id { get; set; } + public string? checktypeid { get; set; } + public string? checktypename { get; set; } public List? items { get; set; } } public class ExecItemInput { - public string? itemdid { get; set; } - + public string? itemdid { get; set; } public string? itemid { get; set; } - public string? extype { get; set; } - public string? excontent { get; set; } - public string? check { get; set; } - public string? errorcause { get; set; } - public string? errorlevel { get; set; } - public string? remark { get; set; } - public string? attachment { get; set; } - public string? isexec { get; set; } - public string? customer { get; set; } - public string? result { get; set; } + public string? code { get; set; } + public string? name { get; set; } + public ExecItemData? setData { get; set; } + public ExecItemShow? setShow { get; set; } public string? postItemForm { get; set; } - + public string? result { get; set; } } + + + + public class Result + { + public string? mainid { get; set; } + public string? checknum { get; set; } + public string? status { get; set; } + public string? result { get; set; } + + public List>? checktypes { get; set; } + } + public class Checktype + { + public string? checktypeid { get; set; } + public string? checktypename { get; set; } + public List? items { get; set; } + } + public class ExecItem + { + public string? itemdid { get; set; } + public string? itemid { get; set; } + public string? code { get; set; } + public string? name { get; set; } + public ExecItemData? setData { get; set; } + public ExecItemShow? setShow { get; set; } + public PostItemForm? postItemForm { get; set; } + public string? result { get; set; } + } + } diff --git a/QcMgr/Tnb.QcMgr.Entities/Entity/QcCheckExecD.cs b/QcMgr/Tnb.QcMgr.Entities/Entity/QcCheckExecD.cs index 2e02c084..c793007a 100644 --- a/QcMgr/Tnb.QcMgr.Entities/Entity/QcCheckExecD.cs +++ b/QcMgr/Tnb.QcMgr.Entities/Entity/QcCheckExecD.cs @@ -106,8 +106,12 @@ namespace Tnb.QcMgr.Entities /// 数据 /// public string? postdata { get; set; } + /// + /// 抽样数索引 + /// + public string? checkindex { get; set; } + - } diff --git a/QcMgr/Tnb.QcMgr.Interfaces/IQcCheckTaskService.cs b/QcMgr/Tnb.QcMgr.Interfaces/IQcCheckTaskService.cs index f2ba5df5..808b10f6 100644 --- a/QcMgr/Tnb.QcMgr.Interfaces/IQcCheckTaskService.cs +++ b/QcMgr/Tnb.QcMgr.Interfaces/IQcCheckTaskService.cs @@ -22,5 +22,12 @@ namespace Tnb.QcMgr.Interfaces /// /// public Task SaveData(CheckTaskInput CheckTaskInput); + + /// + /// 获取任务结果明细 + /// + /// + /// + public Task GetTaskResult(string id); } } diff --git a/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs b/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs index e50ee4a0..a90d7d75 100644 --- a/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs +++ b/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using Aspose.Cells.Drawing; using JNPF.Common.Core.Manager; using JNPF.Common.Enums; +using JNPF.Common.Security; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; @@ -137,8 +138,6 @@ namespace Tnb.QcMgr Item.setShow.attachment = !string.IsNullOrEmpty(Item.setData.attachment); Item.setShow.customer = !string.IsNullOrEmpty(Item.setData.customer); Item.setShow.isexec = Item.setData.isexec == null ? false : true; - if(!string.IsNullOrEmpty(QcCheckExecD.postdata)) - Item.postItemForm= JSON.Deserialize(QcCheckExecD.postdata!); CheckTaskOut.checktypes.Where(p => p.checktypeid == QcCheckExecD.typeid).First()?.items?.Add(Item); } return CheckTaskOut; @@ -157,46 +156,155 @@ namespace Tnb.QcMgr { var QcCheckExecH = await db.Queryable().Where(p => p.id == CheckTaskInput.mainid).FirstAsync(); QcCheckExecH.checknum = CheckTaskInput.checknum; - QcCheckExecH.status = CheckTaskInput.status; + QcCheckExecH.status = "26745885292053"; QcCheckExecH.result = CheckTaskInput.result; QcCheckExecH.execuser = _userManager.UserId; QcCheckExecH.exectime = DateTime.Now.ToString(); var QcCheckExecDs = await db.Queryable().Where(p => p.mainid == CheckTaskInput.mainid).ToListAsync(); - if (CheckTaskInput.checktypes != null) + var QcCheckExecDdel = new List(); + var QcCheckExecDinsert = new List(); + if (CheckTaskInput.checktypes?.Count > 0) { - foreach (var checktype in CheckTaskInput.checktypes) + for (int i=0;i< CheckTaskInput.checktypes.Count;i++) { - if (checktype.items != null) + if (CheckTaskInput.checktypes[i].Count > 0) { - foreach (var item in checktype.items) + foreach (var exextype in CheckTaskInput.checktypes[i]) { - var QcCheckExecD = QcCheckExecDs.Where(p => p.id == item.itemdid).FirstOrDefault(); - if (QcCheckExecD == null) - continue; - QcCheckExecD.excontent = item.excontent; - QcCheckExecD.check = item.check; - QcCheckExecD.errorcause = item.errorcause; - QcCheckExecD.errorlevel = item.errorlevel; - QcCheckExecD.remark = item.remark; - QcCheckExecD.attachment = item.attachment; - QcCheckExecD.isexec = item.isexec; - QcCheckExecD.custom = item.customer; - QcCheckExecD.result = item.result; - QcCheckExecD.postdata = item.postItemForm; + if (exextype.items != null) + { + foreach (var item in exextype.items) + { + var QcCheckExecD = QcCheckExecDs.Where(p => p.id == item.itemdid).FirstOrDefault(); + if (QcCheckExecD == null) + continue; + if (QcCheckExecDdel.Where(p => p.id == QcCheckExecD.id).FirstOrDefault() == null) + QcCheckExecDdel.Add(QcCheckExecD); + var insert = new QcCheckExecD(); + insert.mainid = QcCheckExecD.mainid; + insert.extype = QcCheckExecD.extype; + insert.excontent = QcCheckExecD.excontent; + insert.check = QcCheckExecD.check; + insert.errorcause = QcCheckExecD.errorcause; + insert.errorlevel = QcCheckExecD.errorlevel; + insert.remark = QcCheckExecD.remark; + insert.attachment = QcCheckExecD.attachment; + insert.isexec = QcCheckExecD.isexec; + insert.custom = QcCheckExecD.custom; + insert.typeid = QcCheckExecD.typeid; + insert.itemid = QcCheckExecD.itemid; + insert.create_id = QcCheckExecD.create_id; + insert.create_time = QcCheckExecD.create_time; + insert.postdata = item.postItemForm; + insert.result = item.result; + insert.checkindex = (i + 1).ToString(); + QcCheckExecDinsert.Add(insert); + } + } } } } } await db.Ado.BeginTranAsync(); await db.Updateable(QcCheckExecH).ExecuteCommandAsync(); - await db.Updateable(QcCheckExecDs).ExecuteCommandAsync(); + await db.Deleteable(QcCheckExecDdel).ExecuteCommandAsync(); + await db.Insertable(QcCheckExecDinsert).ExecuteCommandAsync(); await db.Ado.CommitTranAsync(); } catch (Exception) { - + throw Oops.Oh(ErrorCode.COM1000); } } + + /// + /// 获取任务结果明细 + /// + /// + /// + [HttpGet] + public async Task GetTaskResult(string id) + { + var db = _repository.AsSugarClient(); + var QcCheckExecH = await db.Queryable().Where(p => p.id == id).FirstAsync(); + var QcCheckExecDs = await db.Queryable().Where(p => p.mainid == id).ToListAsync(); + var QcCheckItems = await db.Queryable().ToListAsync(); + var QcCheckTypes = await db.Queryable().ToListAsync(); + var QcErrorCauses = await db.Queryable().ToListAsync(); + var QcErrorLevels = await db.Queryable().ToListAsync(); + + Result Result = new Result(); + Result.mainid = id; + Result.checknum = QcCheckExecH.checknum!; + Result.status = QcCheckExecH.status!; + Result.checktypes = new List>(); + var groupkeys = QcCheckExecDs.Select(p=>p.checkindex).Distinct().ToList(); + foreach (var key in groupkeys) + { + var QcCheckExecDsbykey= QcCheckExecDs.Where(p=>p.checkindex==key).ToList(); + var checktype = new List(); + foreach (var QcCheckExecD in QcCheckExecDsbykey) + { + if (checktype.Where(p => p.checktypeid == QcCheckExecD.typeid).ToList().Count == 0) + { + Checktype checkType = new Checktype(); + checkType.checktypeid = QcCheckExecD.typeid!; + checkType.checktypename = QcCheckTypes.Where(p => p.id == QcCheckExecD.typeid).First().name!; + checkType.items = new List(); + checktype.Add(checkType); + } + ExecItem Item = new ExecItem(); + Item.itemid = QcCheckExecD.itemid!; + Item.itemdid = QcCheckExecD.id!; + Item.code = QcCheckItems.Where(p => p.id == QcCheckExecD.itemid).First().code!; + Item.name = QcCheckItems.Where(p => p.id == QcCheckExecD.itemid).First().name!; + Item.setData = new ExecItemData(); + Item.setData.extype = QcCheckExecD.extype!; + Item.setData.excontent = JSON.Deserialize(QcCheckExecD.excontent!); + Item.setData.check = QcCheckExecD.check!; + if (!string.IsNullOrEmpty(QcCheckExecD.errorcause)) + { + var strs = QcCheckExecD.errorcause!.Replace("[", "").Replace("]", "").Split(',', StringSplitOptions.RemoveEmptyEntries); + Item.setData.errorcause = new List(); + foreach (var str in strs) + { + Item.setData.errorcause.Add(new Error { id = str, name = QcErrorCauses.Where(p => p.id == str).First().name! }); + } + } + if (!string.IsNullOrEmpty(QcCheckExecD.errorlevel)) + { + var strs = QcCheckExecD.errorlevel!.Replace("[", "").Replace("]", "").Split(',', StringSplitOptions.RemoveEmptyEntries); + Item.setData.errorlevel = new List(); + foreach (var str in strs) + { + Item.setData.errorlevel.Add(new Error { id = str, name = QcErrorLevels.Where(p => p.id == str).First().name! }); + } + } + Item.setData.remark = QcCheckExecD.remark!; + Item.setData.attachment = QcCheckExecD.attachment!; + Item.setData.customer = QcCheckExecD.custom!; + if (!string.IsNullOrEmpty(QcCheckExecD.isexec)) + Item.setData.isexec = JSON.Deserialize(QcCheckExecD.isexec!); + Item.setShow = new ExecItemShow(); + Item.setShow.extype = !string.IsNullOrEmpty(Item.setData.extype); + Item.setShow.excontent = !string.IsNullOrEmpty(QcCheckExecD.excontent); + Item.setShow.check = !string.IsNullOrEmpty(Item.setData.check); + Item.setShow.errorcause = Item.setData.errorcause?.Count == 0 ? false : true; + Item.setShow.errorlevel = Item.setData.errorlevel?.Count == 0 ? false : true; + Item.setShow.remark = !string.IsNullOrEmpty(Item.setData.remark); + Item.setShow.attachment = !string.IsNullOrEmpty(Item.setData.attachment); + Item.setShow.customer = !string.IsNullOrEmpty(Item.setData.customer); + Item.setShow.isexec = Item.setData.isexec == null ? false : true; + if (!string.IsNullOrEmpty(QcCheckExecD.postdata)) + Item.postItemForm = JSON.Deserialize(QcCheckExecD.postdata!); + checktype.Where(p => p.checktypeid == QcCheckExecD.typeid).First()?.items?.Add(Item); + } + Result.checktypes.Add(checktype); + } + + return Result; + } } + }