diff --git a/EquipMgr/Tnb.EquipMgr/App/AppEqpRepairApplyService.cs b/EquipMgr/Tnb.EquipMgr/App/AppEqpRepairApplyService.cs index 531d2e4d..1a7de295 100644 --- a/EquipMgr/Tnb.EquipMgr/App/AppEqpRepairApplyService.cs +++ b/EquipMgr/Tnb.EquipMgr/App/AppEqpRepairApplyService.cs @@ -14,7 +14,7 @@ using Tnb.BasicData; using Tnb.EquipMgr.Entities; using Tnb.EquipMgr.Entities.Dto; -namespace Tnb.EquipMgr +namespace Tnb.EquipMgr.App { /// /// app设备维修登记 @@ -45,12 +45,12 @@ namespace Tnb.EquipMgr private async Task GetList(VisualDevModelListQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); - string code = queryJson != null && queryJson.ContainsKey("code") ? queryJson["code"].ToString() : ""; - string name = queryJson != null && queryJson.ContainsKey("name") ? queryJson["name"].ToString() : ""; + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); + string? code = queryJson != null && queryJson.ContainsKey("code") ? queryJson["code"].ToString() : ""; + string? name = queryJson != null && queryJson.ContainsKey("name") ? queryJson["name"].ToString() : ""; string userId = _userManager.UserId; - var result = await db.Queryable() + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.equip_id == b.id) .LeftJoin((a, b, c) => a.apply_user_id == c.Id) .LeftJoin((a, b, c, d) => d.EnCode == DictConst.RepairStatus) @@ -86,27 +86,31 @@ namespace Tnb.EquipMgr /// /// [HttpPost] - public async Task GetRepairInfoById(Dictionary dic) + public async Task GetRepairInfoById(Dictionary dic) { string id = dic.ContainsKey("id") ? dic["id"] : ""; - if (string.IsNullOrEmpty(id)) return null; - var db = _repository.AsSugarClient(); + if (string.IsNullOrEmpty(id)) + { + return null; + } + + ISqlSugarClient db = _repository.AsSugarClient(); return await db.Queryable() .LeftJoin((a, b) => a.equip_id == b.id) .Where((a, b) => a.id == id) .Select((a, b) => new { - id = a.id, + a.id, a.code, a.name, - equip_id = a.equip_id, + a.equip_id, equip_code = b.code, equip_name = b.name, expect_complete_time = a.expect_complete_time == null ? "" : a.expect_complete_time.Value.ToString("yyyy-MM-dd"), - is_ugent = a.is_ugent, - description = a.description, - status = a.status, - repairer_id = a.repairer_id, + a.is_ugent, + a.description, + a.status, + a.repairer_id, }).FirstAsync(); } diff --git a/EquipMgr/Tnb.EquipMgr/BaseMoldMaintainService.cs b/EquipMgr/Tnb.EquipMgr/BaseMoldMaintainService.cs index 4d51e102..35ba5762 100644 --- a/EquipMgr/Tnb.EquipMgr/BaseMoldMaintainService.cs +++ b/EquipMgr/Tnb.EquipMgr/BaseMoldMaintainService.cs @@ -30,28 +30,38 @@ namespace Tnb.EquipMgr protected async Task Relevance(TSrc input, string mColumnName, string name, Expression> deleleExp) where TDest : BaseEntity, new() where TSrc : BaseMoldMaintainInput { - if (input == null) throw new ArgumentNullException(nameof(input)); - await _db.Deleteable().Where(deleleExp).ExecuteCommandAsync(); - var entities = new List(); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + _ = await _db.Deleteable().Where(deleleExp).ExecuteCommandAsync(); + List entities = new(); if (input.ids?.Count > 0) { - foreach (var id in input.ids) + foreach (string id in input.ids) { - var pk = id; + string pk = id; TDest entity = new(); entity.PropertySetValue(mColumnName, input.id); entity.PropertySetValue(name, pk); entities.Add(entity); } } - var row = await _db.Insertable(entities).ExecuteCommandAsync(); - if (row < 1) throw Oops.Oh(ErrorCode.COM1000); + int row = await _db.Insertable(entities).ExecuteCommandAsync(); + if (row < 1) + { + throw Oops.Oh(ErrorCode.COM1000); + } } protected async Task Delete(Expression> delFilter) where T : BaseEntity, new() { - var row = await _db.Deleteable().Where(delFilter).ExecuteCommandAsync(); - if (row < 1) throw Oops.Oh(ErrorCode.COM1002); + int row = await _db.Deleteable().Where(delFilter).ExecuteCommandAsync(); + if (row < 1) + { + throw Oops.Oh(ErrorCode.COM1002); + } } @@ -62,13 +72,13 @@ namespace Tnb.EquipMgr Expression> destMap ) where TDest : BaseEntity, new() { - var config = new TypeAdapterConfig(); - config.ForType().Map(destMap, srcMap); - var list = new List(); - var itemIds = await _db.Queryable().Where(masterFilterExp).Select(masterSelector).ToListAsync(); + TypeAdapterConfig config = new(); + _ = config.ForType().Map(destMap, srcMap); + List list = new(); + List itemIds = await _db.Queryable().Where(masterFilterExp).Select(masterSelector).ToListAsync(); if (itemIds?.Count > 0) { - var items = await _db.Queryable().Where(it => itemIds.Contains(it.id)).ToListAsync(); + List items = await _db.Queryable().Where(it => itemIds.Contains(it.id)).ToListAsync(); list = items.Adapt>(); } return list; diff --git a/EquipMgr/Tnb.EquipMgr/EqpDaqService.cs b/EquipMgr/Tnb.EquipMgr/EqpDaqService.cs index dc8be317..a2eb3303 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpDaqService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpDaqService.cs @@ -32,13 +32,13 @@ namespace Tnb.EquipMgr [HttpPost] public async Task GetEquipDaqList(EquipQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary? queryJson = new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary? queryJson = new(); if (input != null && !string.IsNullOrEmpty(input.queryJson)) { queryJson = JsonConvert.DeserializeObject>(input.queryJson); } - var result = await db.Queryable() + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.create_id == b.Id) .WhereIF(input != null, a => a.equip_id == input!.equip_id) .WhereIF(queryJson != null && queryJson.ContainsKey("data_source"), a => a.data_source == queryJson!["data_source"]) @@ -56,7 +56,7 @@ namespace Tnb.EquipMgr label_name = a.label_name, label_point = a.label_point, remark = a.remark - }).ToPagedListAsync((input?.currentPage ?? 1), (input?.pageSize ?? 50)); + }).ToPagedListAsync(input?.currentPage ?? 1, input?.pageSize ?? 50); return PageResult.SqlSugarPageResult(result); } diff --git a/EquipMgr/Tnb.EquipMgr/EqpEquipFileService.cs b/EquipMgr/Tnb.EquipMgr/EqpEquipFileService.cs index 33e7a176..61d56003 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpEquipFileService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpEquipFileService.cs @@ -40,12 +40,12 @@ namespace Tnb.EquipMgr [HttpPost] public async Task Upload([FromForm] string equip_id, [FromForm] ChunkModel input) { - string msg = ""; + string msg; try { - var attachment = await _fileService.Uploader("annexpic", input); + dynamic attachment = await _fileService.Uploader("annexpic", input); - EqpEquipFile eqpEquipFile = new EqpEquipFile() + EqpEquipFile eqpEquipFile = new() { file_name = input.file.FileName, equip_id = equip_id, @@ -55,12 +55,11 @@ namespace Tnb.EquipMgr org_id = _userManager.GetUserInfo().Result.organizeId, }; - await _repository.InsertAsync(eqpEquipFile); + _ = await _repository.InsertAsync(eqpEquipFile); msg = "上传成功"; } catch (Exception e) { - msg = "上传失败"; Log.Error(e.Message); throw Oops.Oh(ErrorCode.D8001); } @@ -71,13 +70,13 @@ namespace Tnb.EquipMgr [HttpPost] public async Task GetEquipFileList(EquipQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary? queryJson = new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary? queryJson = new(); if (!string.IsNullOrEmpty(input.queryJson)) { queryJson = JsonConvert.DeserializeObject>(input.queryJson); } - var result = await db.Queryable() + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.create_id == b.Id) .LeftJoin((a, b, c) => a.modify_id == c.Id) .LeftJoin((a, b, c, d) => a.equip_id == d.id) diff --git a/EquipMgr/Tnb.EquipMgr/EqpEquipScrapService.cs b/EquipMgr/Tnb.EquipMgr/EqpEquipScrapService.cs index b06ff48e..ff3f0e01 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpEquipScrapService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpEquipScrapService.cs @@ -33,22 +33,19 @@ namespace Tnb.EquipMgr [HttpPost] public async Task Scrap(EqpEquipScrap eqpEquipScrap) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); DbResult result = await db.Ado.UseTranAsync(async () => { eqpEquipScrap.id = SnowflakeIdHelper.NextId(); eqpEquipScrap.create_id = _userManager.UserId; eqpEquipScrap.create_time = DateTime.Now; - await _repository.InsertAsync(eqpEquipScrap); + _ = await _repository.InsertAsync(eqpEquipScrap); - await db.Updateable().SetColumns(x => x.life == EquipmentLife.SCRAP) + _ = await db.Updateable().SetColumns(x => x.life == EquipmentLife.SCRAP) .Where(x => x.id == eqpEquipScrap.equip_id).ExecuteCommandAsync(); }); - if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); - - return result.IsSuccess ? "报废成功" : result.ErrorMessage; - + return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : result.IsSuccess ? "报废成功" : result.ErrorMessage; } } } \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EqpEquipSparePartsService.cs b/EquipMgr/Tnb.EquipMgr/EqpEquipSparePartsService.cs index 6c751f92..bcd10817 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpEquipSparePartsService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpEquipSparePartsService.cs @@ -33,14 +33,17 @@ namespace Tnb.EquipMgr public async Task AddEquipSpareParts(EquipSparePartsInput input) { List oldList = await _repository.GetListAsync(x => x.equip_id == input.equip_id); - List list = new List(); + List list = new(); string orgId = _userManager?.GetUserInfo().Result.organizeId ?? ""; if (input != null && input.spare_parts_ids != null) { - foreach (var spare_parts_id in input.spare_parts_ids) + foreach (string spare_parts_id in input.spare_parts_ids) { if (oldList.Any(x => x.spare_parts_id == spare_parts_id)) + { continue; + } + list.Add(new EqpEquipSpareParts() { id = SnowflakeIdHelper.NextId(), @@ -53,19 +56,19 @@ namespace Tnb.EquipMgr } } - await _repository.InsertRangeAsync(list); + _ = await _repository.InsertRangeAsync(list); } [HttpPost] public async Task GetEquipSparePartsList(EquipQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary? queryJson = new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary? queryJson = new(); if (!string.IsNullOrEmpty(input.queryJson)) { queryJson = JsonConvert.DeserializeObject>(input.queryJson); } - var result = await db.Queryable() + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.spare_parts_id == b.id) .LeftJoin((a, b, c) => c.EnCode == Tnb.BasicData.DictConst.SparePartsType && c.DeleteMark == null) .LeftJoin((a, b, c, d) => d.DictionaryTypeId == c.Id && b.type_id == d.EnCode) diff --git a/EquipMgr/Tnb.EquipMgr/EqpMaintainTemEquipService.cs b/EquipMgr/Tnb.EquipMgr/EqpMaintainTemEquipService.cs index d0b07c26..b908de1c 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpMaintainTemEquipService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpMaintainTemEquipService.cs @@ -30,22 +30,25 @@ namespace Tnb.EquipMgr string id = parameters["id"]; DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { - await _repository.UpdateAsync(x => new EqpMaintainTemEquipH() + _ = await _repository.UpdateAsync(x => new EqpMaintainTemEquipH() { is_start = "0" }, x => x.id == id); List ids = await _repository.AsSugarClient().Queryable() .Where(x => x.maintain_tem_equip_id == id && x.status == SpotInsRecordExecutionStatus.TOBEEXECUTED) .Select(x => x.id).ToListAsync(); - await _repository.AsSugarClient().Deleteable() + _ = await _repository.AsSugarClient().Deleteable() .Where(x => x.maintain_tem_equip_id == id && x.status == SpotInsRecordExecutionStatus.TOBEEXECUTED).ExecuteCommandAsync(); - await _repository.AsSugarClient().Deleteable() + _ = await _repository.AsSugarClient().Deleteable() .Where(x => ids.Contains(x.maintain_record_id)).ExecuteCommandAsync(); }); - if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); + if (!result.IsSuccess) + { + throw Oops.Oh(ErrorCode.COM1008); + } } } } \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EqpMaintainTemService.cs b/EquipMgr/Tnb.EquipMgr/EqpMaintainTemService.cs index aecb9304..cb689602 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpMaintainTemService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpMaintainTemService.cs @@ -36,7 +36,7 @@ namespace Tnb.EquipMgr [HttpPost] public async Task Publish(SpotInsTemPublishInput input) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); DbResult result = await db.Ado.UseTranAsync(async () => { EqpMaintainTemH eqpMaintainTemH = await _repository.GetSingleAsync(x => x.id == input.id); @@ -44,13 +44,13 @@ namespace Tnb.EquipMgr if (input.equipIds != null && input.equipIds.Length > 0) { - List insertEqpMaintainTemEquipHs = new List(); - List insertEqpMaintainTemEquipDs = new List(); - foreach (var equipId in input.equipIds) + List insertEqpMaintainTemEquipHs = new(); + List insertEqpMaintainTemEquipDs = new(); + foreach (string equipId in input.equipIds) { string id = SnowflakeIdHelper.NextId(); string code = $"{DateTime.Now.ToString("yyyyMMdd") + equipId}"; - EqpMaintainTemEquipH eqpMaintainTemEquipH = new EqpMaintainTemEquipH() + EqpMaintainTemEquipH eqpMaintainTemEquipH = new() { id = id, code = code, @@ -79,9 +79,9 @@ namespace Tnb.EquipMgr if (eqpMaintainTemDs != null && eqpMaintainTemDs.Count > 0) { - foreach (var eqpMaintainTem in eqpMaintainTemDs) + foreach (EqpMaintainTemD eqpMaintainTem in eqpMaintainTemDs) { - EqpMaintainTemEquipD eqpMaintainTemEquipD = new EqpMaintainTemEquipD() + EqpMaintainTemEquipD eqpMaintainTemEquipD = new() { id = SnowflakeIdHelper.NextId(), maintain_item_id = eqpMaintainTem.maintain_item_id, @@ -92,27 +92,28 @@ namespace Tnb.EquipMgr } EqpMaintainTemEquipH oldMaintainTemEquipH = await db.Queryable().Where(x => x.maintain_tem_id == input.id && x.equip_id == equipId).FirstAsync(); - await db.Deleteable().Where(x => x.maintain_tem_id == input.id && x.equip_id == equipId).ExecuteCommandAsync(); + _ = await db.Deleteable().Where(x => x.maintain_tem_id == input.id && x.equip_id == equipId).ExecuteCommandAsync(); if (oldMaintainTemEquipH != null) - await db.Deleteable().Where(x => x.maintain_tem_equip_id == oldMaintainTemEquipH.id).ExecuteCommandAsync(); + { + _ = await db.Deleteable().Where(x => x.maintain_tem_equip_id == oldMaintainTemEquipH.id).ExecuteCommandAsync(); + } } if (insertEqpMaintainTemEquipHs != null && insertEqpMaintainTemEquipHs.Count > 0) { - await db.Insertable(insertEqpMaintainTemEquipHs).ExecuteCommandAsync(); + _ = await db.Insertable(insertEqpMaintainTemEquipHs).ExecuteCommandAsync(); } if (insertEqpMaintainTemEquipDs != null && insertEqpMaintainTemEquipDs.Count > 0) { - await db.Insertable(insertEqpMaintainTemEquipDs).ExecuteCommandAsync(); + _ = await db.Insertable(insertEqpMaintainTemEquipDs).ExecuteCommandAsync(); } } }); - if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); - return result.IsSuccess ? "发布成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : result.IsSuccess ? "发布成功" : result.ErrorMessage; } } } \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EqpRepairApplyService.cs b/EquipMgr/Tnb.EquipMgr/EqpRepairApplyService.cs index f1093657..de39f2f4 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpRepairApplyService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpRepairApplyService.cs @@ -97,21 +97,23 @@ namespace Tnb.EquipMgr input.data["code"] = await _billRuleService.GetBillNumber(CodeTemplateConst.EQPREPAIR_CODE); } - EqpRepairApply eqpRepairApply = new EqpRepairApply(); - eqpRepairApply.code = (string)input.data["code"]; - eqpRepairApply.name = (string)input.data["name"]; - eqpRepairApply.equip_id = (string)input.data["equip_id"]; - eqpRepairApply.expect_complete_time = input.data["expect_complete_time"] != null && input.data["expect_complete_time"].ToString() != "" ? Convert.ToDateTime(input.data["expect_complete_time"]) : null; - eqpRepairApply.is_ugent = (int?)(long)input.data["is_ugent"]; - eqpRepairApply.attachment = input.data.ContainsKey("attachment") ? (string)input.data["attachment"] : null; - eqpRepairApply.apply_user_id = (string)input.data["apply_user_id"]; - eqpRepairApply.create_id = (string)input.data["create_id"]; - eqpRepairApply.create_time = DateTime.Now; - eqpRepairApply.org_id = (string)input.data["org_id"]; - eqpRepairApply.remark = (string)input.data["remark"]; - eqpRepairApply.description = (string)input.data["description"]; - eqpRepairApply.status = RepairApplyStatus.TOBEEXECUTED; - await _repository.InsertAsync(eqpRepairApply); + EqpRepairApply eqpRepairApply = new() + { + code = (string)input.data["code"], + name = (string)input.data["name"], + equip_id = (string)input.data["equip_id"], + expect_complete_time = input.data["expect_complete_time"] != null && input.data["expect_complete_time"].ToString() != "" ? Convert.ToDateTime(input.data["expect_complete_time"]) : null, + is_ugent = (int?)(long)input.data["is_ugent"], + attachment = input.data.ContainsKey("attachment") ? (string)input.data["attachment"] : null, + apply_user_id = (string)input.data["apply_user_id"], + create_id = (string)input.data["create_id"], + create_time = DateTime.Now, + org_id = (string)input.data["org_id"], + remark = (string)input.data["remark"], + description = (string)input.data["description"], + status = RepairApplyStatus.TOBEEXECUTED + }; + _ = await _repository.InsertAsync(eqpRepairApply); // VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); // await _runService.Create(templateEntity, input); @@ -122,7 +124,7 @@ namespace Tnb.EquipMgr public async Task Repeal(Dictionary dic) { string id = dic["id"]; - await _repository.UpdateAsync(x => new EqpRepairApply() + _ = await _repository.UpdateAsync(x => new EqpRepairApply() { status = RepairApplyStatus.REPEAL }, x => x.id == id); @@ -133,7 +135,7 @@ namespace Tnb.EquipMgr public async Task Close(Dictionary dic) { string id = dic["id"]; - await _repository.UpdateAsync(x => new EqpRepairApply() + _ = await _repository.UpdateAsync(x => new EqpRepairApply() { status = RepairApplyStatus.CLOSE, }, x => x.id == id); @@ -146,10 +148,10 @@ namespace Tnb.EquipMgr string id = dic["id"]; string repairerId = dic["repairerId"]; EqpRepairApply eqpRepairApply = await _repository.GetSingleAsync(x => x.id == id); - if (eqpRepairApply.status == RepairApplyStatus.TOBEEXECUTED || - eqpRepairApply.status == RepairApplyStatus.REFUSE) + if (eqpRepairApply.status is RepairApplyStatus.TOBEEXECUTED or + RepairApplyStatus.REFUSE) { - await _repository.UpdateAsync(x => new EqpRepairApply() + _ = await _repository.UpdateAsync(x => new EqpRepairApply() { repairer_id = repairerId, status = RepairApplyStatus.TOBERECEIVED, @@ -172,7 +174,7 @@ namespace Tnb.EquipMgr { if (_userManager.UserId == eqpRepairApply.repairer_id) { - await _repository.UpdateAsync(x => new EqpRepairApply() + _ = await _repository.UpdateAsync(x => new EqpRepairApply() { status = RepairApplyStatus.RECEIVED, }, x => x.id == id); @@ -194,7 +196,7 @@ namespace Tnb.EquipMgr { string id = dic["id"]; string reason = dic["reason"]; - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); DbResult result = await db.Ado.UseTranAsync(async () => { EqpRepairApply eqpRepairApply = await _repository.GetSingleAsync(x => x.id == id); @@ -202,11 +204,11 @@ namespace Tnb.EquipMgr { if (_userManager.UserId == eqpRepairApply.repairer_id) { - await _repository.UpdateAsync(x => new EqpRepairApply() + _ = await _repository.UpdateAsync(x => new EqpRepairApply() { status = RepairApplyStatus.REFUSE, }, x => x.id == id); - EqpRepairRefuse eqpRepairRefuse = new EqpRepairRefuse() + EqpRepairRefuse eqpRepairRefuse = new() { repair_apply_id = id, reason = reason, @@ -214,7 +216,7 @@ namespace Tnb.EquipMgr create_time = DateTime.Now, org_id = _userManager.GetUserInfo().Result.organizeId }; - await db.Insertable(eqpRepairRefuse).ExecuteCommandAsync(); + _ = await db.Insertable(eqpRepairRefuse).ExecuteCommandAsync(); } else { @@ -227,8 +229,7 @@ namespace Tnb.EquipMgr } }); - if (!result.IsSuccess) throw Oops.Oh(result.ErrorMessage); - return "拒绝成功"; + return !result.IsSuccess ? throw Oops.Oh(result.ErrorMessage) : "拒绝成功"; } [HttpPost] @@ -248,7 +249,7 @@ namespace Tnb.EquipMgr if (_userManager.UserId == eqpRepairApply.repairer_id) { string status = input.is_out_apply == 1 ? RepairApplyStatus.TOBEOUTAPPLY : RepairApplyStatus.COMPLETED; - await _repository.UpdateAsync(x => new EqpRepairApply() + _ = await _repository.UpdateAsync(x => new EqpRepairApply() { fault_id = input.fault_id, is_complete = input.is_complete, @@ -294,13 +295,13 @@ namespace Tnb.EquipMgr [HttpPost] public async Task GetRepairRecordList(EquipQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary? queryJson = new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary? queryJson = new(); if (!string.IsNullOrEmpty(input.queryJson)) { queryJson = JsonConvert.DeserializeObject>(input.queryJson); } - var result = await db.Queryable() + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.apply_user_id == b.Id) .LeftJoin((a, b, c) => a.repairer_id == c.Id) .Where(a => a.equip_id == input.equip_id) @@ -328,7 +329,7 @@ namespace Tnb.EquipMgr DateTime? start_time = input.start_time; DateTime? end_time = input.end_time; - List statusList = new List(); + List statusList = new(); if (!string.IsNullOrEmpty(input.status)) { switch (input.status) @@ -363,8 +364,8 @@ namespace Tnb.EquipMgr input.sidx = "a." + input.sidx; } - var db = _repository.AsSugarClient(); - var result = await db.Queryable() + ISqlSugarClient db = _repository.AsSugarClient(); + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.apply_user_id == b.Id) .LeftJoin((a, b, c) => a.repairer_id == c.Id) .LeftJoin((a, b, c, d) => a.equip_id == d.id) @@ -393,7 +394,7 @@ namespace Tnb.EquipMgr repairer_id_id = c.Id, remark = a.remark, status = f.FullName - }).ToPagedListAsync((input?.currentPage ?? 1), (input?.pageSize ?? 50)); + }).ToPagedListAsync(input?.currentPage ?? 1, input?.pageSize ?? 50); return PageResult.SqlSugarPageResult(result); } diff --git a/EquipMgr/Tnb.EquipMgr/EqpRepairDelayService.cs b/EquipMgr/Tnb.EquipMgr/EqpRepairDelayService.cs index 58a7e909..0d955dce 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpRepairDelayService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpRepairDelayService.cs @@ -39,7 +39,7 @@ namespace Tnb.EquipMgr DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { EqpRepairApply eqpRepairApply = await _repository.AsSugarClient().Queryable().SingleAsync(x => x.id == input.repair_apply_id); - EqpRepairDelay repairDelay = new EqpRepairDelay() + EqpRepairDelay repairDelay = new() { id = SnowflakeIdHelper.NextId(), equip_id = eqpRepairApply?.equip_id ?? "", @@ -52,15 +52,14 @@ namespace Tnb.EquipMgr create_time = DateTime.Now, }; - await _repository.InsertAsync(repairDelay); + _ = await _repository.InsertAsync(repairDelay); - await _repository.AsSugarClient().Updateable() + _ = await _repository.AsSugarClient().Updateable() .SetColumns(x => x.expect_complete_time == input.expected_time) .Where(x => x.id == input.repair_apply_id).ExecuteCommandAsync(); }); - if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); - return result.IsSuccess ? "延期成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : result.IsSuccess ? "延期成功" : result.ErrorMessage; } } diff --git a/EquipMgr/Tnb.EquipMgr/EqpRepairOutApplyService.cs b/EquipMgr/Tnb.EquipMgr/EqpRepairOutApplyService.cs index ced5c394..a4e3b8fe 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpRepairOutApplyService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpRepairOutApplyService.cs @@ -51,10 +51,10 @@ namespace Tnb.EquipMgr public async Task OutApply(RepairOutApplyInput input) { EqpRepairApply eqpRepairApply = await _repository.AsSugarClient().Queryable().SingleAsync(x => x.id == input.repair_apply_id); - if (eqpRepairApply.status == RepairApplyStatus.TOBEOUTAPPLY || - eqpRepairApply.status == RepairApplyStatus.APPROVENOTPASS) + if (eqpRepairApply.status is RepairApplyStatus.TOBEOUTAPPLY or + RepairApplyStatus.APPROVENOTPASS) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); string id = string.IsNullOrEmpty(input.id) ? SnowflakeIdHelper.NextId() : input.id; DbResult result = await db.Ado.UseTranAsync(async () => { @@ -92,7 +92,7 @@ namespace Tnb.EquipMgr // },x=>x.id==input.id); } - await db.Updateable() + _ = await db.Updateable() .SetColumns(x => x.status == RepairApplyStatus.OUTAPPLYAPPROVE) .Where(x => x.id == input.repair_apply_id).ExecuteCommandAsync(); @@ -100,7 +100,10 @@ namespace Tnb.EquipMgr }); - if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); + if (!result.IsSuccess) + { + throw Oops.Oh(ErrorCode.COM1008); + } if (result.IsSuccess) { @@ -129,7 +132,7 @@ namespace Tnb.EquipMgr } else { - var entity = await _repository.GetSingleAsync(x => x.id == input.id); + EqpRepairOutApply entity = await _repository.GetSingleAsync(x => x.id == input.id); if (entity != null) { @@ -170,10 +173,10 @@ namespace Tnb.EquipMgr public async Task Register(RepairApplyOutRegisterInput input) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); DbResult result = await db.Ado.UseTranAsync(async () => { - await _repository.UpdateAsync(x => new EqpRepairOutApply() + _ = await _repository.UpdateAsync(x => new EqpRepairOutApply() { real_supplier_id = input.real_supplier_id, cost = input.cost, @@ -183,12 +186,10 @@ namespace Tnb.EquipMgr attachment = input.attachment, }, x => x.id == input.id); - await db.Updateable().SetColumns(x => x.status == RepairApplyStatus.COMPLETED) + _ = await db.Updateable().SetColumns(x => x.status == RepairApplyStatus.COMPLETED) .Where(x => x.id == input.repair_apply_id).ExecuteCommandAsync(); }); - if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); - - return result.IsSuccess ? "登记成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : result.IsSuccess ? "登记成功" : result.ErrorMessage; } } diff --git a/EquipMgr/Tnb.EquipMgr/EqpSpEquipCheckRecordService.cs b/EquipMgr/Tnb.EquipMgr/EqpSpEquipCheckRecordService.cs index 8cd6c648..87ca5155 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpSpEquipCheckRecordService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpSpEquipCheckRecordService.cs @@ -50,7 +50,7 @@ namespace Tnb.EquipMgr entity.create_time = DateTime.Now; entity.create_id = _userManager.UserId; entity.org_id = _userManager.GetUserInfo().Result.organizeId; - await _repository.InsertAsync(entity); + _ = await _repository.InsertAsync(entity); } } diff --git a/EquipMgr/Tnb.EquipMgr/EqpSparePartsRequisitionHService.cs b/EquipMgr/Tnb.EquipMgr/EqpSparePartsRequisitionHService.cs index bcda549b..225f3154 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpSparePartsRequisitionHService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpSparePartsRequisitionHService.cs @@ -47,13 +47,13 @@ namespace Tnb.EquipMgr private async Task Create(VisualDevModelDataCrInput input) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); DbResult result = await db.Ado.UseTranAsync(async () => { // VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); // await _runService.Create(templateEntity, input); - var code = await _billRuleService.GetBillNumber(Tnb.BasicData.CodeTemplateConst.SPAREPARTSREQUISITION_CODE); - EqpSparePartsRequisitionH eqpSparePartsRequisitionH = new EqpSparePartsRequisitionH() + string code = await _billRuleService.GetBillNumber(Tnb.BasicData.CodeTemplateConst.SPAREPARTSREQUISITION_CODE); + EqpSparePartsRequisitionH eqpSparePartsRequisitionH = new() { code = code, equip_id = input.data.ContainsKey("equip_id") ? input.data["equip_id"].ToString() : "", @@ -65,14 +65,14 @@ namespace Tnb.EquipMgr org_id = _userManager.GetUserInfo().Result.organizeId, }; - await db.Insertable(eqpSparePartsRequisitionH).ExecuteCommandAsync(); + _ = await db.Insertable(eqpSparePartsRequisitionH).ExecuteCommandAsync(); - if (input.data.TryGetValue("tablefield120", out var value)) + if (input.data.TryGetValue("tablefield120", out object? value)) { - var details = value.ToObject>>(); - List eqpSparePartsList = new List(); - List eqpSparePartsRequisitionDs = new List() { }; - foreach (var detail in details) + List> details = value.ToObject>>(); + List eqpSparePartsList = new(); + List eqpSparePartsRequisitionDs = new() { }; + foreach (Dictionary detail in details) { string instockDetailId = detail.ContainsKey("instock_detail_id") ? detail["instock_detail_id"] : ""; string sparePartsId = detail.ContainsKey("spare_parts_id") ? detail["spare_parts_id"] : ""; @@ -99,7 +99,7 @@ namespace Tnb.EquipMgr org_id = _userManager.GetUserInfo().Result.organizeId }); - await db.Updateable() + _ = await db.Updateable() .SetColumns(x => x.use_quantity == x.use_quantity + quantity) .Where(x => x.id == instockDetailId).ExecuteCommandAsync(); } @@ -112,19 +112,18 @@ namespace Tnb.EquipMgr if (eqpSparePartsRequisitionDs.Count > 0) { - await db.Insertable(eqpSparePartsRequisitionDs).ExecuteCommandAsync(); + _ = await db.Insertable(eqpSparePartsRequisitionDs).ExecuteCommandAsync(); } if (eqpSparePartsList.Count > 0) { - await db.Insertable(eqpSparePartsList).ExecuteCommandAsync(); + _ = await db.Insertable(eqpSparePartsList).ExecuteCommandAsync(); } } }); - if (!result.IsSuccess) throw Oops.Bah(result.ErrorMessage); - return result.IsSuccess ? "保存成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Bah(result.ErrorMessage) : (dynamic)(result.IsSuccess ? "保存成功" : result.ErrorMessage); } } } \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EqpSpotInsTemService.cs b/EquipMgr/Tnb.EquipMgr/EqpSpotInsTemService.cs index 50fa264a..64dc3a39 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpSpotInsTemService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpSpotInsTemService.cs @@ -36,7 +36,7 @@ namespace Tnb.EquipMgr [HttpPost] public async Task Publish(SpotInsTemPublishInput input) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); DbResult result = await db.Ado.UseTranAsync(async () => { EqpSpotInsTemH eqpSpotInsTemH = await _repository.GetSingleAsync(x => x.id == input.id); @@ -44,13 +44,13 @@ namespace Tnb.EquipMgr if (input.equipIds != null && input.equipIds.Length > 0) { - List insertEqpSpotInsTemEquipHs = new List(); - List insertEqpSpotInsTemEquipDs = new List(); - foreach (var equipId in input.equipIds) + List insertEqpSpotInsTemEquipHs = new(); + List insertEqpSpotInsTemEquipDs = new(); + foreach (string equipId in input.equipIds) { string id = SnowflakeIdHelper.NextId(); string code = $"{DateTime.Now.ToString("yyyyMMdd") + equipId}"; - EqpSpotInsTemEquipH eqpSpotInsTemEquipH = new EqpSpotInsTemEquipH() + EqpSpotInsTemEquipH eqpSpotInsTemEquipH = new() { id = id, code = code, @@ -79,9 +79,9 @@ namespace Tnb.EquipMgr if (eqpSpotInsTemDs != null && eqpSpotInsTemDs.Count > 0) { - foreach (var eqpSpotInsTem in eqpSpotInsTemDs) + foreach (EqpSpotInsTemD eqpSpotInsTem in eqpSpotInsTemDs) { - EqpSpotInsTemEquipD eqpSpotInsTemEquipD = new EqpSpotInsTemEquipD() + EqpSpotInsTemEquipD eqpSpotInsTemEquipD = new() { id = SnowflakeIdHelper.NextId(), spot_ins_item_id = eqpSpotInsTem?.spot_ins_item_id ?? "", @@ -92,27 +92,28 @@ namespace Tnb.EquipMgr } EqpSpotInsTemEquipH oldSpotInsTemEquipH = await db.Queryable().Where(x => x.spot_ins_tem_id == input.id && x.equip_id == equipId).FirstAsync(); - await db.Deleteable().Where(x => x.spot_ins_tem_id == input.id && x.equip_id == equipId).ExecuteCommandAsync(); + _ = await db.Deleteable().Where(x => x.spot_ins_tem_id == input.id && x.equip_id == equipId).ExecuteCommandAsync(); if (oldSpotInsTemEquipH != null) - await db.Deleteable().Where(x => x.spot_ins_tem_equip_id == oldSpotInsTemEquipH.id).ExecuteCommandAsync(); + { + _ = await db.Deleteable().Where(x => x.spot_ins_tem_equip_id == oldSpotInsTemEquipH.id).ExecuteCommandAsync(); + } } if (insertEqpSpotInsTemEquipHs != null && insertEqpSpotInsTemEquipHs.Count > 0) { - await db.Insertable(insertEqpSpotInsTemEquipHs).ExecuteCommandAsync(); + _ = await db.Insertable(insertEqpSpotInsTemEquipHs).ExecuteCommandAsync(); } if (insertEqpSpotInsTemEquipDs != null && insertEqpSpotInsTemEquipDs.Count > 0) { - await db.Insertable(insertEqpSpotInsTemEquipDs).ExecuteCommandAsync(); + _ = await db.Insertable(insertEqpSpotInsTemEquipDs).ExecuteCommandAsync(); } } }); - if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); - return result.IsSuccess ? "发布成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : result.IsSuccess ? "发布成功" : result.ErrorMessage; } } } \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EqpSubEquipService.cs b/EquipMgr/Tnb.EquipMgr/EqpSubEquipService.cs index 7c278cd1..267ccaaf 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpSubEquipService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpSubEquipService.cs @@ -32,13 +32,13 @@ namespace Tnb.EquipMgr [HttpPost] public async Task GetSubEquipList(EquipQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary? queryJson = new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary? queryJson = new(); if (!string.IsNullOrEmpty(input.queryJson)) { queryJson = JsonConvert.DeserializeObject>(input.queryJson); } - var result = await db.Queryable() + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.create_id == b.Id) .LeftJoin((a, b, c) => a.modify_id == c.Id) .LeftJoin((a, b, c, d) => a.equip_id == d.id) diff --git a/EquipMgr/Tnb.EquipMgr/EqpTechnologyParameterService.cs b/EquipMgr/Tnb.EquipMgr/EqpTechnologyParameterService.cs index 115999e8..c0eb9c9c 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpTechnologyParameterService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpTechnologyParameterService.cs @@ -30,13 +30,13 @@ namespace Tnb.EquipMgr [HttpPost] public async Task GetEquipTechnologyParameterList(EquipQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary? queryJson = new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary? queryJson = new(); if (input != null && !string.IsNullOrEmpty(input.queryJson)) { queryJson = JsonConvert.DeserializeObject>(input?.queryJson ?? ""); } - var result = await db.Queryable() + SqlSugarPagedList result = await db.Queryable() .WhereIF(input != null, a => a.equip_id == input!.equip_id) .WhereIF(queryJson != null && queryJson.ContainsKey("name"), a => a.name.Contains(queryJson!["name"])) .Select(a => new EquipTechnologyParameterQueryOutput @@ -45,7 +45,7 @@ namespace Tnb.EquipMgr name = a.name, definition = a.definition, remark = a.remark - }).ToPagedListAsync((input?.currentPage ?? 1), (input?.pageSize ?? 50)); + }).ToPagedListAsync(input?.currentPage ?? 1, input?.pageSize ?? 50); return PageResult.SqlSugarPageResult(result); } diff --git a/EquipMgr/Tnb.EquipMgr/EqpWorkshopChangeLogService.cs b/EquipMgr/Tnb.EquipMgr/EqpWorkshopChangeLogService.cs index 750197da..2e9ece5d 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpWorkshopChangeLogService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpWorkshopChangeLogService.cs @@ -32,13 +32,13 @@ namespace Tnb.EquipMgr [HttpPost] public async Task GetEquipWorkshopChangeList(EquipQueryInput input) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); // Dictionary? queryJson = new Dictionary(); // if (input!=null && !string.IsNullOrEmpty(input.queryJson)) // { // queryJson = JsonConvert.DeserializeObject>(input?.queryJson ?? ""); // } - var result = await db.Queryable() + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.old_workshop_id == b.Id) .LeftJoin((a, b, c) => a.new_workshop_id == c.Id) .WhereIF(input != null, a => a.equip_id == input!.equip_id) @@ -52,7 +52,7 @@ namespace Tnb.EquipMgr new_installation_location = a.new_installation_location, remark = a.remark, create_time = a.create_time == null ? null : a.create_time.Value.ToString("yyyy-MM-dd"), - }).ToPagedListAsync((input?.currentPage ?? 1), (input?.pageSize ?? 50)); + }).ToPagedListAsync(input?.currentPage ?? 1, input?.pageSize ?? 50); return PageResult.SqlSugarPageResult(result); } @@ -60,12 +60,12 @@ namespace Tnb.EquipMgr [HttpPost] public async Task WorkshopChange(EquipWorkshopChangeInput input) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); DbResult result = await db.Ado.UseTranAsync(async () => { EqpEquipment eqpEquipment = await db.Queryable().SingleAsync(x => x.id == input.equip_id); - EqpWorkshopChangeLog eqpWorkshopChangeLog = new EqpWorkshopChangeLog() + EqpWorkshopChangeLog eqpWorkshopChangeLog = new() { equip_id = input.equip_id, old_workshop_id = eqpEquipment.use_department_id, @@ -78,17 +78,16 @@ namespace Tnb.EquipMgr org_id = _userManager.GetUserInfo().Result.organizeId }; - await _repository.InsertAsync(eqpWorkshopChangeLog); + _ = await _repository.InsertAsync(eqpWorkshopChangeLog); - await db.Updateable() + _ = await db.Updateable() .SetColumns(x => x.use_department_id == input.new_workshop_id) .SetColumns(x => x.installation_location == input.new_installation_location) .Where(x => x.id == input.equip_id).ExecuteCommandAsync(); }); - if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); - return result.IsSuccess ? "迁移成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result.IsSuccess ? "迁移成功" : result.ErrorMessage); } } } \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EquMaintainRecordService.cs b/EquipMgr/Tnb.EquipMgr/EquMaintainRecordService.cs index dd80af65..c7c003da 100644 --- a/EquipMgr/Tnb.EquipMgr/EquMaintainRecordService.cs +++ b/EquipMgr/Tnb.EquipMgr/EquMaintainRecordService.cs @@ -50,7 +50,7 @@ namespace Tnb.EquipMgr private async Task GetList(VisualDevModelListQueryInput input) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); Dictionary? queryJson = (input == null || string.IsNullOrEmpty(input.queryJson)) ? new Dictionary() : input.queryJson.ToObject>(); string equioInfo = queryJson.ContainsKey("query_info") ? (queryJson["query_info"].ToString() ?? "") : ""; string status = queryJson.ContainsKey("status") ? (queryJson["status"].ToString() ?? "") : ""; @@ -67,7 +67,7 @@ namespace Tnb.EquipMgr input.sidx = "a." + input.sidx; } - var list = await db.Queryable((a, b, c, d) => new object[] + SqlSugarPagedList list = await db.Queryable((a, b, c, d) => new object[] { JoinType.Left, a.equip_id == b.id, JoinType.Left, a.execute_user_id == c.Id, @@ -105,7 +105,7 @@ namespace Tnb.EquipMgr a.repeat_time = a.date_repeat_time == null ? "" : a.date_repeat_time.Value.ToString("yyyy-MM-dd HH:mm:ss"); a.last_execute_time = a.date_last_execute_time == null ? "" : a.date_last_execute_time.Value.ToString("yyyy-MM-dd HH:mm:ss"); }) - .ToPagedListAsync((input?.currentPage ?? 1), (input?.pageSize ?? 50)); + .ToPagedListAsync(input?.currentPage ?? 1, input?.pageSize ?? 50); return PageResult.SqlSugarPageResult(list); } @@ -120,16 +120,8 @@ namespace Tnb.EquipMgr DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { EqpMaintainRecordH eqpSpotInsRecordH = _repository.GetSingle(x => x.id == input.id); - string status = ""; - if (eqpSpotInsRecordH.is_repeat == "1") - { - status = SpotInsRecordExecutionStatus.TOBECHECK; - } - else - { - status = SpotInsRecordExecutionStatus.COMPLETED; - } - await _repository.UpdateAsync(x => new EqpMaintainRecordH() + string status = eqpSpotInsRecordH.is_repeat == "1" ? SpotInsRecordExecutionStatus.TOBECHECK : SpotInsRecordExecutionStatus.COMPLETED; + _ = await _repository.UpdateAsync(x => new EqpMaintainRecordH() { result = input.result, attachment = input.attachment, @@ -141,9 +133,9 @@ namespace Tnb.EquipMgr if (input != null && input.details != null) { - foreach (var item in input.details) + foreach (Dictionary item in input.details) { - await _repository.AsSugarClient().Updateable() + _ = await _repository.AsSugarClient().Updateable() .SetColumns(x => x.result == item["result"]) .SetColumnsIF(item.ContainsKey("maintain_descrip"), x => x.maintain_descrip == item["maintain_descrip"]) .Where(x => x.id == item["id"]) @@ -154,8 +146,7 @@ namespace Tnb.EquipMgr }); - if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); - return result.IsSuccess ? "执行成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result.IsSuccess ? "执行成功" : result.ErrorMessage); } /// @@ -184,7 +175,7 @@ namespace Tnb.EquipMgr { x.maintain_type = typeDic.ContainsKey(x.maintain_type) ? typeDic[x.maintain_type] + "" : x.maintain_type; }); - MaintainRecordRepeatOutput output = new MaintainRecordRepeatOutput() + MaintainRecordRepeatOutput output = new() { model = eqpSpotInsRecordH, details = eqpSpotInsRecordDs, @@ -199,7 +190,7 @@ namespace Tnb.EquipMgr [HttpPost] public async Task RepeatMaintain(MaintainRecordRepeatInput input) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); EqpMaintainRecordH eqpMaintainRecordH = await _repository.GetSingleAsync(x => x.id == input.id); if (eqpMaintainRecordH.status == "1") { @@ -210,9 +201,9 @@ namespace Tnb.EquipMgr if (input != null && input.details != null) { - foreach (var item in input.details) + foreach (Dictionary item in input.details) { - await db.Updateable() + _ = await db.Updateable() .SetColumnsIF(item.ContainsKey("repeat_descrip"), x => x.repeat_descrip == item["repeat_descrip"]) .SetColumns(x => x.repeat_result == item["repeat_result"]) .Where(x => x.id == item["id"]).ExecuteCommandAsync(); @@ -221,7 +212,7 @@ namespace Tnb.EquipMgr if (input != null) { - await _repository.UpdateAsync(x => new EqpMaintainRecordH() + _ = await _repository.UpdateAsync(x => new EqpMaintainRecordH() { repeat_result = input.repeat_result, repeat_remark = input.repeat_remark, @@ -232,20 +223,19 @@ namespace Tnb.EquipMgr } }); - if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); - return result.IsSuccess ? "复核成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : result.IsSuccess ? "复核成功" : result.ErrorMessage; } [HttpPost] public async Task GetMaintainRecordList(EquipQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary? queryJson = new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary? queryJson = new(); if (!string.IsNullOrEmpty(input.queryJson)) { queryJson = JsonConvert.DeserializeObject>(input.queryJson); } - var result = await db.Queryable() + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.equip_id == b.id) .LeftJoin((a, b, c) => a.execute_user_id == c.Id) .LeftJoin((a, b, c, d) => a.repeat_user_id == d.Id) @@ -277,24 +267,28 @@ namespace Tnb.EquipMgr /// /// [HttpPost] - public async Task GetEqpMaintainRecordInfoById(Dictionary dic) + public async Task GetEqpMaintainRecordInfoById(Dictionary dic) { string id = dic.ContainsKey("id") ? dic["id"] : ""; - if (string.IsNullOrEmpty(id)) return null; - var db = _repository.AsSugarClient(); + if (string.IsNullOrEmpty(id)) + { + return null; + } + + ISqlSugarClient db = _repository.AsSugarClient(); return await db.Queryable() .LeftJoin((a, b) => a.equip_id == b.id) .Where((a, b) => a.id == id) .Select((a, b) => new { - id = a.id, - equip_id = a.equip_id, + a.id, + a.equip_id, equip_code = b.code, equip_name = b.name, create_time = a.create_time == null ? "" : a.create_time.Value.ToString(DbTimeFormat.SS), - result_remark = a.result_remark, - result = a.result, - status = a.status, + a.result_remark, + a.result, + a.status, }).FirstAsync(); } diff --git a/EquipMgr/Tnb.EquipMgr/EquSpotInsRecordService.cs b/EquipMgr/Tnb.EquipMgr/EquSpotInsRecordService.cs index 3b0ffce9..111e86a7 100644 --- a/EquipMgr/Tnb.EquipMgr/EquSpotInsRecordService.cs +++ b/EquipMgr/Tnb.EquipMgr/EquSpotInsRecordService.cs @@ -49,7 +49,7 @@ namespace Tnb.EquipMgr private async Task GetList(VisualDevModelListQueryInput input) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); Dictionary? queryJson = (input == null || string.IsNullOrEmpty(input.queryJson)) ? new Dictionary() : input.queryJson.ToObject>(); string equioInfo = queryJson.ContainsKey("query_info") ? (queryJson["query_info"].ToString() ?? "") : ""; string status = queryJson.ContainsKey("status") ? (queryJson["status"].ToString() ?? "") : ""; @@ -66,7 +66,7 @@ namespace Tnb.EquipMgr input.sidx = "a." + input.sidx; } - var list = await db.Queryable((a, b, c, d) => new object[] + SqlSugarPagedList list = await db.Queryable((a, b, c, d) => new object[] { JoinType.Left, a.equip_id == b.id, JoinType.Left, a.spot_record_user_id == c.Id, @@ -101,7 +101,7 @@ namespace Tnb.EquipMgr a.spot_record_date_time = a.date_spot_record_date_time == null ? "" : a.date_spot_record_date_time.Value.ToString("yyyy-MM-dd HH:mm:ss"); a.repeat_time = a.date_repeat_time == null ? "" : a.date_repeat_time.Value.ToString("yyyy-MM-dd HH:mm:ss"); }) - .ToPagedListAsync((input?.currentPage ?? 1), (input?.pageSize ?? 50)); + .ToPagedListAsync(input?.currentPage ?? 1, input?.pageSize ?? 50); return PageResult.SqlSugarPageResult(list); } @@ -117,16 +117,8 @@ namespace Tnb.EquipMgr { EqpSpotInsRecordH eqpSpotInsRecordH = _repository.GetSingle(x => x.id == input.id); - string status = ""; - if (eqpSpotInsRecordH.is_repeat == "1") - { - status = SpotInsRecordExecutionStatus.TOBECHECK; - } - else - { - status = SpotInsRecordExecutionStatus.COMPLETED; - } - await _repository.UpdateAsync(x => new EqpSpotInsRecordH() + string status = eqpSpotInsRecordH.is_repeat == "1" ? SpotInsRecordExecutionStatus.TOBECHECK : SpotInsRecordExecutionStatus.COMPLETED; + _ = await _repository.UpdateAsync(x => new EqpSpotInsRecordH() { result = input.result, attachment = input.attachment, @@ -138,9 +130,9 @@ namespace Tnb.EquipMgr if (input != null && input.details != null) { - foreach (var item in input.details) + foreach (Dictionary item in input.details) { - await _repository.AsSugarClient().Updateable(). + _ = await _repository.AsSugarClient().Updateable(). SetColumns(x => x.result == item["result"]) .SetColumnsIF(item["judge_type"] == "1", x => x.real_value == Convert.ToDouble(item["real_value"])) .Where(x => x.id == item["id"]) @@ -151,8 +143,7 @@ namespace Tnb.EquipMgr }); - if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); - return result.IsSuccess ? "执行成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result.IsSuccess ? "执行成功" : result.ErrorMessage); } /// @@ -167,7 +158,7 @@ namespace Tnb.EquipMgr EqpSpotInsRecordH eqpSpotInsRecordH = await _repository.GetSingleAsync(x => x.id == id); List eqpSpotInsRecordDs = await _repository.AsSugarClient().Queryable() .Where(x => x.spot_ins_record_id == id).ToListAsync(); - SpotInsRecordRepeatOutput output = new SpotInsRecordRepeatOutput() + SpotInsRecordRepeatOutput output = new() { model = eqpSpotInsRecordH, details = eqpSpotInsRecordDs, @@ -187,7 +178,7 @@ namespace Tnb.EquipMgr { throw Oops.Bah("状态错误"); } - await _repository.UpdateAsync(x => new EqpSpotInsRecordH() + _ = await _repository.UpdateAsync(x => new EqpSpotInsRecordH() { repeat_result = input.repeat_result, repeat_remark = input.repeat_remark, @@ -200,13 +191,13 @@ namespace Tnb.EquipMgr [HttpPost] public async Task GetSpotInsRecordList(EquipQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary? queryJson = new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary? queryJson = new(); if (!string.IsNullOrEmpty(input.queryJson)) { queryJson = JsonConvert.DeserializeObject>(input.queryJson); } - var result = await db.Queryable() + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.repeat_user_id == b.Id) .Where(a => a.equip_id == input.equip_id) .Select((a, b) => new EquipSpotInsRecordQueryOutput @@ -235,24 +226,28 @@ namespace Tnb.EquipMgr /// /// [HttpPost] - public async Task GetEqpSpotInsRecordInfoById(Dictionary dic) + public async Task GetEqpSpotInsRecordInfoById(Dictionary dic) { string id = dic.ContainsKey("id") ? dic["id"] : ""; - if (string.IsNullOrEmpty(id)) return null; - var db = _repository.AsSugarClient(); + if (string.IsNullOrEmpty(id)) + { + return null; + } + + ISqlSugarClient db = _repository.AsSugarClient(); return await db.Queryable() .LeftJoin((a, b) => a.equip_id == b.id) .Where((a, b) => a.id == id) .Select((a, b) => new { - id = a.id, - equip_id = a.equip_id, + a.id, + a.equip_id, equip_code = b.code, equip_name = b.name, create_time = a.create_time == null ? "" : a.create_time.Value.ToString(DbTimeFormat.SS), - result_remark = a.result_remark, - result = a.result, - status = a.status, + a.result_remark, + a.result, + a.status, }).FirstAsync(); } diff --git a/EquipMgr/Tnb.EquipMgr/EquSpotInsTemEquipService.cs b/EquipMgr/Tnb.EquipMgr/EquSpotInsTemEquipService.cs index edc3b02b..b9de2b04 100644 --- a/EquipMgr/Tnb.EquipMgr/EquSpotInsTemEquipService.cs +++ b/EquipMgr/Tnb.EquipMgr/EquSpotInsTemEquipService.cs @@ -29,22 +29,25 @@ namespace Tnb.EquipMgr string id = parameters["id"]; DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { - await _repository.UpdateAsync(x => new EqpSpotInsTemEquipH() + _ = await _repository.UpdateAsync(x => new EqpSpotInsTemEquipH() { is_start = "0" }, x => x.id == id); List ids = await _repository.AsSugarClient().Queryable() .Where(x => x.spot_ins_tem_equip_id == id && x.status == SpotInsRecordExecutionStatus.TOBEEXECUTED) .Select(x => x.id).ToListAsync(); - await _repository.AsSugarClient().Deleteable() + _ = await _repository.AsSugarClient().Deleteable() .Where(x => x.spot_ins_tem_equip_id == id && x.status == SpotInsRecordExecutionStatus.TOBEEXECUTED).ExecuteCommandAsync(); - await _repository.AsSugarClient().Deleteable() + _ = await _repository.AsSugarClient().Deleteable() .Where(x => ids.Contains(x.spot_ins_record_id)).ExecuteCommandAsync(); }); - if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); + if (!result.IsSuccess) + { + throw Oops.Oh(ErrorCode.COM1008); + } } } } \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EquipmentService.cs b/EquipMgr/Tnb.EquipMgr/EquipmentService.cs index c8392d9c..09ed9bf3 100644 --- a/EquipMgr/Tnb.EquipMgr/EquipmentService.cs +++ b/EquipMgr/Tnb.EquipMgr/EquipmentService.cs @@ -55,13 +55,13 @@ namespace Tnb.EquipMgr /// private async Task GetList(VisualDevModelListQueryInput input) { - var dic = new Dictionary + Dictionary dic = new() { { "Qualified","合格"}, { "Unqualified","不合格"}, }; - var pagedList = await _repository.AsQueryable() + SqlSugarPagedList pagedList = await _repository.AsQueryable() //.Where(it => it.station_code == input.station_code || string.IsNullOrEmpty(input.station_code)) .Select(it => new EquipmentListOutput { @@ -82,7 +82,7 @@ namespace Tnb.EquipMgr private async Task Create(VisualDevModelDataCrInput visualDevModelDataCrInput) { - string qrcode = visualDevModelDataCrInput.data.ContainsKey("qrcode") ? visualDevModelDataCrInput.data["qrcode"]?.ToString() : ""; + string? qrcode = visualDevModelDataCrInput.data.ContainsKey("qrcode") ? visualDevModelDataCrInput.data["qrcode"]?.ToString() : ""; if (!string.IsNullOrEmpty(qrcode) && await _repository.AsSugarClient().Queryable().AnyAsync(x => x.code == qrcode)) { throw Oops.Bah("二维码总表中已存在该二维码"); @@ -96,7 +96,7 @@ namespace Tnb.EquipMgr if (!string.IsNullOrEmpty(qrcode)) { - BasQrcode basQrcode = new BasQrcode() + BasQrcode basQrcode = new() { code = visualDevModelDataCrInput.data["qrcode"].ToString(), source_id = equipId, @@ -105,7 +105,7 @@ namespace Tnb.EquipMgr create_time = DateTime.Now, org_id = _userManager.GetUserInfo().Result.organizeId, }; - await _repository.AsSugarClient().Insertable(basQrcode).ExecuteCommandAsync(); + _ = await _repository.AsSugarClient().Insertable(basQrcode).ExecuteCommandAsync(); } } return await Task.FromResult(true); @@ -113,7 +113,7 @@ namespace Tnb.EquipMgr private async Task Update(string id, VisualDevModelDataUpInput visualDevModelDataUpInput) { - string qrcode = visualDevModelDataUpInput.data.ContainsKey("qrcode") ? visualDevModelDataUpInput.data["qrcode"]?.ToString() : ""; + string? qrcode = visualDevModelDataUpInput.data.ContainsKey("qrcode") ? visualDevModelDataUpInput.data["qrcode"]?.ToString() : ""; if (!string.IsNullOrEmpty(qrcode) && await _repository.AsSugarClient().Queryable().AnyAsync(x => x.code == visualDevModelDataUpInput.data["qrcode"] && x.source_id != id)) { throw Oops.Bah("二维码总表中已存在该二维码"); @@ -127,13 +127,13 @@ namespace Tnb.EquipMgr { if (await _repository.AsSugarClient().Queryable().AnyAsync(x => x.source_id == id)) { - await _repository.AsSugarClient().Updateable() + _ = await _repository.AsSugarClient().Updateable() .SetColumns(x => x.code == visualDevModelDataUpInput.data["qrcode"].ToString()).Where(x => x.source_id == id) .ExecuteCommandAsync(); } else { - BasQrcode basQrcode = new BasQrcode() + BasQrcode basQrcode = new() { code = visualDevModelDataUpInput.data["qrcode"].ToString(), source_id = id, @@ -142,7 +142,7 @@ namespace Tnb.EquipMgr create_time = DateTime.Now, org_id = _userManager.GetUserInfo().Result.organizeId, }; - await _repository.AsSugarClient().Insertable(basQrcode).ExecuteCommandAsync(); + _ = await _repository.AsSugarClient().Insertable(basQrcode).ExecuteCommandAsync(); } } } @@ -169,8 +169,8 @@ namespace Tnb.EquipMgr public async Task GetWorklineAndEquipTree(Dictionary dic) { string equipTypes = dic.ContainsKey("equipTypes") ? dic["equipTypes"] : ""; - var db = _repository.AsSugarClient(); - var queryable1 = db.Queryable() + ISqlSugarClient db = _repository.AsSugarClient(); + ISugarQueryable queryable1 = db.Queryable() .Where((a) => a.DeleteMark == null && a.Category == DictConst.RegionCategoryWorkshopCode) .Select((a) => new WorklineAndEquipTreeOutput() { @@ -191,7 +191,7 @@ namespace Tnb.EquipMgr }) }); - List list2 = new List(); + List list2 = new(); if (!string.IsNullOrEmpty(equipTypes)) { string[] equipTypeArr = equipTypes.Split(","); @@ -219,7 +219,7 @@ namespace Tnb.EquipMgr } // var list = await db.UnionAll(queryable1, queryable2).ToListAsync(); - var list1 = await queryable1.ToListAsync(); + List list1 = await queryable1.ToListAsync(); list1.AddRange(list2); return new AuthResponse(200, "", new Dictionary() { diff --git a/EquipMgr/Tnb.EquipMgr/ToolMoldLocationService.cs b/EquipMgr/Tnb.EquipMgr/ToolMoldLocationService.cs index 8c68f022..144bd1df 100644 --- a/EquipMgr/Tnb.EquipMgr/ToolMoldLocationService.cs +++ b/EquipMgr/Tnb.EquipMgr/ToolMoldLocationService.cs @@ -47,7 +47,7 @@ namespace Tnb.EquipMgr private async Task Create(VisualDevModelDataCrInput visualDevModelDataCrInput) { - string qrcode = visualDevModelDataCrInput.data.ContainsKey("qrcode") ? visualDevModelDataCrInput.data["qrcode"].ToString() : ""; + string? qrcode = visualDevModelDataCrInput.data.ContainsKey("qrcode") ? visualDevModelDataCrInput.data["qrcode"].ToString() : ""; if (!string.IsNullOrEmpty(qrcode) && await _db.Queryable().AnyAsync(x => x.code == qrcode)) { throw Oops.Bah("二维码总表中已存在该二维码"); @@ -61,7 +61,7 @@ namespace Tnb.EquipMgr if (!string.IsNullOrEmpty(qrcode)) { - BasQrcode basQrcode = new BasQrcode() + BasQrcode basQrcode = new() { code = visualDevModelDataCrInput.data["qrcode"].ToString(), source_id = id, @@ -70,7 +70,7 @@ namespace Tnb.EquipMgr create_time = DateTime.Now, org_id = _userManager.GetUserInfo().Result.organizeId, }; - await _db.Insertable(basQrcode).ExecuteCommandAsync(); + _ = await _db.Insertable(basQrcode).ExecuteCommandAsync(); } } return await Task.FromResult(true); @@ -78,7 +78,7 @@ namespace Tnb.EquipMgr private async Task Update(string id, VisualDevModelDataUpInput visualDevModelDataUpInput) { - string qrcode = visualDevModelDataUpInput.data.ContainsKey("qrcode") ? visualDevModelDataUpInput.data["qrcode"].ToString() : ""; + string? qrcode = visualDevModelDataUpInput.data.ContainsKey("qrcode") ? visualDevModelDataUpInput.data["qrcode"].ToString() : ""; if (!string.IsNullOrEmpty(qrcode) && await _db.Queryable().AnyAsync(x => x.code == visualDevModelDataUpInput.data["qrcode"] && x.source_id != id)) { throw Oops.Bah("二维码总表中已存在该二维码"); @@ -92,13 +92,13 @@ namespace Tnb.EquipMgr { if (await _db.Queryable().AnyAsync(x => x.source_id == id)) { - await _db.Updateable() + _ = await _db.Updateable() .SetColumns(x => x.code == visualDevModelDataUpInput.data["qrcode"].ToString()).Where(x => x.source_id == id) .ExecuteCommandAsync(); } else { - BasQrcode basQrcode = new BasQrcode() + BasQrcode basQrcode = new() { code = visualDevModelDataUpInput.data["qrcode"].ToString(), source_id = id, @@ -107,7 +107,7 @@ namespace Tnb.EquipMgr create_time = DateTime.Now, org_id = _userManager.GetUserInfo().Result.organizeId, }; - await _db.Insertable(basQrcode).ExecuteCommandAsync(); + _ = await _db.Insertable(basQrcode).ExecuteCommandAsync(); } } } diff --git a/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainGroupService.cs b/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainGroupService.cs index dfe67409..3769e54e 100644 --- a/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainGroupService.cs +++ b/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainGroupService.cs @@ -32,11 +32,11 @@ namespace Tnb.EquipMgr [HttpGet("{itemGroupId}")] public async Task GetMaintianItemListByGroupId(string itemGroupId) { - var list = new List(); - var itemIds = await _db.Queryable().Where(it => it.item_group_id == itemGroupId).Select(it => it.item_id).ToListAsync(); + List list = new(); + List itemIds = await _db.Queryable().Where(it => it.item_group_id == itemGroupId).Select(it => it.item_id).ToListAsync(); if (itemIds?.Count > 0) { - var items = await _db.Queryable().Where(it => itemIds.Contains(it.id)).ToListAsync(); + List items = await _db.Queryable().Where(it => itemIds.Contains(it.id)).ToListAsync(); list = items.Adapt>(); } return list; @@ -49,11 +49,11 @@ namespace Tnb.EquipMgr [HttpGet("{itemGroupId}")] public async Task GetMoldListByGroupId(string itemGroupId) { - var list = new List(); - var moldIds = await _db.Queryable().Where(it => it.item_group_id == itemGroupId).Select(it => it.mold_id).ToListAsync(); + List list = new(); + List moldIds = await _db.Queryable().Where(it => it.item_group_id == itemGroupId).Select(it => it.mold_id).ToListAsync(); if (moldIds?.Count > 0) { - var items = await _db.Queryable().Where(it => moldIds.Contains(it.id)).ToListAsync(); + List items = await _db.Queryable().Where(it => moldIds.Contains(it.id)).ToListAsync(); list = items.Adapt>(); } return list; @@ -107,9 +107,9 @@ namespace Tnb.EquipMgr #endregion - private async Task Delete(Expression> deleteExp) where T : BaseEntity, new() + private new async Task Delete(Expression> deleteExp) where T : BaseEntity, new() { - await _db.Deleteable().Where(deleteExp).ExecuteCommandAsync(); + _ = await _db.Deleteable().Where(deleteExp).ExecuteCommandAsync(); } } diff --git a/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainPlanService.cs b/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainPlanService.cs index 5f137ba9..486efce8 100644 --- a/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainPlanService.cs +++ b/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainPlanService.cs @@ -30,8 +30,8 @@ namespace Tnb.EquipMgr private readonly IToolMoldsService _moldService; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); - private static Dictionary _dicHouse = new Dictionary(); - private static Dictionary _dicLocation = new Dictionary(); + private static Dictionary _dicHouse = new(); + private static Dictionary _dicLocation = new(); public ToolMoldMaintainPlanService( ISqlSugarRepository repository, @@ -75,7 +75,7 @@ namespace Tnb.EquipMgr [HttpGet] public async Task GetMoldListByPlanId([FromRoute] string planId) { - var result = new List(); + List result = new(); if (_dicHouse.Count < 1) { _dicHouse = await _moldHouseService.GetHouseDictionary(); @@ -84,13 +84,13 @@ namespace Tnb.EquipMgr { _dicLocation = await _moldLocationService.GetLocationDictionary(); } - var list = await _db.Queryable().Where(it => it.maintain_plan_id == planId).ToListAsync(); + List list = await _db.Queryable().Where(it => it.maintain_plan_id == planId).ToListAsync(); if (list?.Count > 0) { - var ids = list.Select(it => it.mold_id).Distinct().ToList(); + List ids = list.Select(it => it.mold_id).Distinct().ToList(); if (ids?.Count > 0) { - var items = await _moldService.GetListByIds(ids); + List items = await _moldService.GetListByIds(ids); _db.ThenMapper(items, it => { if (!it.warehosue_id!.IsNullOrEmpty()) @@ -114,16 +114,21 @@ namespace Tnb.EquipMgr /// /// [HttpPost] - public async Task RelevanceMoldFromPlan(RelevanceMoldFromPlanInput input) => + public async Task RelevanceMoldFromPlan(RelevanceMoldFromPlanInput input) + { await Relevance(input, nameof(ToolMoldMaintainPlanRelation.maintain_plan_id), nameof(ToolMoldMaintainPlanRelation.mold_id), it => it.maintain_plan_id == input.id); + } + /// /// 删除计划与模具关联关系 /// /// 输入参数 /// [HttpPost] - public async Task DeleteMold(RelevanceMoldFromPlanInput input) => + public async Task DeleteMold(RelevanceMoldFromPlanInput input) + { await Delete(it => it.maintain_plan_id == input.id && input.ids.Contains(it.mold_id)); + } } } diff --git a/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRuleService.cs b/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRuleService.cs index a1be51ba..33d3de12 100644 --- a/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRuleService.cs +++ b/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRuleService.cs @@ -38,6 +38,8 @@ namespace Tnb.EquipMgr private readonly IVisualDevService _visualDevService; private readonly IRunService _runService; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); + + [Obsolete] public ToolMoldMaintainRuleService(ISqlSugarRepository repository, IUserManager userManager, IDictionaryDataService dictionaryDataService, TimeTaskService timeTaskService, IVisualDevService visualDevService, IRunService runService) { _db = repository.AsSugarClient(); @@ -49,35 +51,41 @@ namespace Tnb.EquipMgr OverideFuncs.DeleteAsync = Delete; OverideFuncs.CreateAsync = Create; } + + [Obsolete] private async Task Create(VisualDevModelDataCrInput input) { int cycle = int.Parse(input.data["cycle"].ToString()!); - var startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)).AddMilliseconds(long.Parse(input.data["startandend_date"].ToString()!)); - ToolMoldMaintainRule toolMoldMaintainRule = new ToolMoldMaintainRule(); - toolMoldMaintainRule.id = SnowflakeIdHelper.NextId(); - toolMoldMaintainRule.mode = input.data["mode"].ToString(); - toolMoldMaintainRule.cycle = cycle; - toolMoldMaintainRule.startandend_date = startTime.ToString("yyyy-MM-dd HH:mm:ss"); - toolMoldMaintainRule.create_id = _userManager.UserId; - toolMoldMaintainRule.create_time = DateTime.Now; - await _db.Insertable(toolMoldMaintainRule).ExecuteCommandAsync(); + DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)).AddMilliseconds(long.Parse(input.data["startandend_date"].ToString()!)); + ToolMoldMaintainRule toolMoldMaintainRule = new() + { + id = SnowflakeIdHelper.NextId(), + mode = input.data["mode"].ToString(), + cycle = cycle, + startandend_date = startTime.ToString("yyyy-MM-dd HH:mm:ss"), + create_id = _userManager.UserId, + create_time = DateTime.Now + }; + _ = await _db.Insertable(toolMoldMaintainRule).ExecuteCommandAsync(); if (toolMoldMaintainRule.mode == "27118635748885") { string id = toolMoldMaintainRule.id; - var comtentModel = new ContentModel(); - comtentModel.cron = "0 0 9 " + startTime.Day + "/" + toolMoldMaintainRule.cycle + " * ?"; - comtentModel.interfaceId = ""; - comtentModel.interfaceName = ""; - comtentModel.parameter = new List(); + ContentModel comtentModel = new() + { + cron = "0 0 9 " + startTime.Day + "/" + toolMoldMaintainRule.cycle + " * ?", + interfaceId = "", + interfaceName = "", + parameter = new List() + }; comtentModel.parameter!.Add(new InterfaceParameter() { field = "id", value = id, defaultValue = "" }); comtentModel.localHostTaskId = "MoldMaintainTask/CreateTask"; - DateTimeOffset dateTimeOffset = new DateTimeOffset(startTime); + DateTimeOffset dateTimeOffset = new(startTime); comtentModel.startTime = dateTimeOffset.ToUnixTimeMilliseconds(); comtentModel.TenantId = _userManager?.TenantId!; comtentModel.TenantDbName = _userManager?.TenantDbName!; comtentModel.ConnectionConfig = _userManager?.ConnectionConfig!; comtentModel.Token = _userManager?.ToKen!; - TimeTaskCrInput timeTaskCrInput = new TimeTaskCrInput() + TimeTaskCrInput timeTaskCrInput = new() { enCode = DateTime.Now.ToString("yyyyMMddHHmmss"), fullName = "生成模具保养任务" + id, @@ -94,12 +102,12 @@ namespace Tnb.EquipMgr } private async Task Delete(string id) { - var ToolMoldMaintainRule = await _db.Queryable().Where(p => p.id == id).FirstAsync(); - var ToolMoldMaintainRuleRelations = await _db.Queryable().Where(p => p.rule_id == id).ToListAsync(); + ToolMoldMaintainRule ToolMoldMaintainRule = await _db.Queryable().Where(p => p.id == id).FirstAsync(); + List ToolMoldMaintainRuleRelations = await _db.Queryable().Where(p => p.rule_id == id).ToListAsync(); await _timeTaskService.DeleteByName("生成模具保养任务" + id); await _db.Ado.BeginTranAsync(); - await _db.Deleteable(ToolMoldMaintainRule).ExecuteCommandAsync(); - await _db.Deleteable(ToolMoldMaintainRuleRelations).ExecuteCommandAsync(); + _ = await _db.Deleteable(ToolMoldMaintainRule).ExecuteCommandAsync(); + _ = await _db.Deleteable(ToolMoldMaintainRuleRelations).ExecuteCommandAsync(); await _db.Ado.CommitTranAsync(); } /// @@ -110,11 +118,11 @@ namespace Tnb.EquipMgr [HttpGet] public async Task GetListById([FromRoute] string ruleId) { - var result = new List(); - var list = await _db.Queryable().Where(it => it.rule_id == ruleId).ToListAsync(); + List result = new(); + List list = await _db.Queryable().Where(it => it.rule_id == ruleId).ToListAsync(); if (list?.Count > 0) { - var ids = list.Select(it => it.mold_id).ToList(); + List ids = list.Select(it => it.mold_id).ToList(); result = await _db.Queryable().Where(it => ids.Contains(it.id)) .Select(it => new MaintainRuleMoldListOutput { mold_id = it.id, item_group_id = list.First().item_group_id }, true) .Mapper @@ -138,7 +146,7 @@ namespace Tnb.EquipMgr }, true) .Mapper(it => { - var itemGroupIds = _db.Queryable().Where(x => x.mold_id == it.mold_id).Select(x => x.item_group_id).Distinct().ToList(); + List itemGroupIds = _db.Queryable().Where(x => x.mold_id == it.mold_id).Select(x => x.item_group_id).Distinct().ToList(); it.groupItems = _db.Queryable().Where(x => itemGroupIds.Contains(x.id)).Select(x => new MaintainItemGroupItem { item_group_id = x.id, name = x.name }).ToList(); }) .ToListAsync(); @@ -154,23 +162,32 @@ namespace Tnb.EquipMgr [HttpPost] public async Task RelevanceMold(RelevanceMoldInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); - await _db.Deleteable().Where(it => it.rule_id == input.rule_id).ExecuteCommandAsync(); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + _ = await _db.Deleteable().Where(it => it.rule_id == input.rule_id).ExecuteCommandAsync(); if (input.rowIds?.Count > 0) { List entities = new(); - foreach (var item in input.rowIds) + foreach (RowIdItem item in input.rowIds) { - ToolMoldMaintainRuleRelation entity = new(); - entity.id = SnowflakeIdHelper.NextId(); - entity.rule_id = input.rule_id; - entity.mold_id = item.mold_id; - entity.item_group_id = item.group_id; + ToolMoldMaintainRuleRelation entity = new() + { + id = SnowflakeIdHelper.NextId(), + rule_id = input.rule_id, + mold_id = item.mold_id, + item_group_id = item.group_id + }; entities.Add(entity); } - var row = await _db.Insertable(entities).ExecuteCommandAsync(); - if (row < 1) throw Oops.Oh(ErrorCode.COM1000); + int row = await _db.Insertable(entities).ExecuteCommandAsync(); + if (row < 1) + { + throw Oops.Oh(ErrorCode.COM1000); + } } } /// @@ -183,8 +200,11 @@ namespace Tnb.EquipMgr { if (input.ids?.Count > 0) { - var row = await _db.Deleteable().Where(it => it.rule_id == input.rule_id && input.ids.Contains(it.mold_id)).ExecuteCommandAsync(); - if (row < 1) throw Oops.Oh(ErrorCode.COM1002); + int row = await _db.Deleteable().Where(it => it.rule_id == input.rule_id && input.ids.Contains(it.mold_id)).ExecuteCommandAsync(); + if (row < 1) + { + throw Oops.Oh(ErrorCode.COM1002); + } } } /// @@ -194,41 +214,48 @@ namespace Tnb.EquipMgr [HttpPost] public async Task GenMaintainPlan(MaintainPlanCrInput input) { - if (input == null) throw new ArgumentNullException("input"); + if (input == null) + { + throw new ArgumentNullException("input"); + } try { await _db.Ado.BeginTranAsync(); - var maintainRules = await _db.Queryable().Where(it => input.ruleIds.Contains(it.id)).ToListAsync(); - var ruleMoldRelations = await _db.Queryable().Where(it => input.ruleIds.Contains(it.rule_id)).ToListAsync(); + List maintainRules = await _db.Queryable().Where(it => input.ruleIds.Contains(it.id)).ToListAsync(); + List ruleMoldRelations = await _db.Queryable().Where(it => input.ruleIds.Contains(it.rule_id)).ToListAsync(); if (ruleMoldRelations?.Count > 0) { List maintainPlans = new(); List maintainPlanRelations = new(); - foreach (var mrr in ruleMoldRelations) + foreach (ToolMoldMaintainRuleRelation mrr in ruleMoldRelations) { - var rule = await _db.Queryable().FirstAsync(it => it.id == mrr.rule_id); + ToolMoldMaintainRule rule = await _db.Queryable().FirstAsync(it => it.id == mrr.rule_id); if (rule != null && rule.cycle.HasValue && rule.cycle.Value > 0) { - ToolMoldMaintainPlan maintainPlan = new(); - maintainPlan.plan_code = $"JHDM{DateTime.Now:yyyyMMddmmss}"; - maintainPlan.mode = rule.mode; - maintainPlan.status = DictConst.UnMaintainStatusCode; - maintainPlan.plan_start_date = DateTime.Now; - maintainPlan.plan_end_date = DateTime.Now.AddDays(rule.cycle.Value); - maintainPlan.create_id = _userManager.UserId; - maintainPlan.create_time = DateTime.Now; + ToolMoldMaintainPlan maintainPlan = new() + { + plan_code = $"JHDM{DateTime.Now:yyyyMMddmmss}", + mode = rule.mode, + status = DictConst.UnMaintainStatusCode, + plan_start_date = DateTime.Now, + plan_end_date = DateTime.Now.AddDays(rule.cycle.Value), + create_id = _userManager.UserId, + create_time = DateTime.Now + }; maintainPlans.Add(maintainPlan); - ToolMoldMaintainPlanRelation maintainPlanReation = new(); - maintainPlanReation.maintain_plan_id = maintainPlan.id; - maintainPlanReation.mold_id = mrr.mold_id; + ToolMoldMaintainPlanRelation maintainPlanReation = new() + { + maintain_plan_id = maintainPlan.id, + mold_id = mrr.mold_id + }; maintainPlanRelations.Add(maintainPlanReation); } } - await _db.Insertable(maintainPlans).ExecuteCommandAsync(); - await _db.Insertable(maintainPlanRelations).ExecuteCommandAsync(); + _ = await _db.Insertable(maintainPlans).ExecuteCommandAsync(); + _ = await _db.Insertable(maintainPlanRelations).ExecuteCommandAsync(); await _db.Ado.CommitTranAsync(); } } diff --git a/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRunService.cs b/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRunService.cs index f7de66d7..2ada52bb 100644 --- a/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRunService.cs +++ b/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRunService.cs @@ -55,17 +55,17 @@ namespace Tnb.EquipMgr .Where(a => a.maintain_plan_id == planId) .Select((a, b, c, d) => new { - mold_id = a.mold_id, - plan_start_time = d.plan_start_time, - designer = d.designer + a.mold_id, + d.plan_start_time, + d.designer }) .ToListAsync(); - var moldids = planMoldRelations.Select(x => x.mold_id).ToList(); - var molds = await _db.Queryable().Where(it => moldids.Contains(it.id)).ToListAsync(); + List moldids = planMoldRelations.Select(x => x.mold_id).ToList(); + List molds = await _db.Queryable().Where(it => moldids.Contains(it.id)).ToListAsync(); foreach (var planMoldRelation in planMoldRelations) { - var mold = molds.Where(p => p.id == planMoldRelation.mold_id).FirstOrDefault(); + ToolMolds? mold = molds.Where(p => p.id == planMoldRelation.mold_id).FirstOrDefault(); if (mold != null) { dynamic info = new ExpandoObject(); @@ -74,12 +74,12 @@ namespace Tnb.EquipMgr info.mold_name = mold.mold_name; info.mold_status = (await _dictionaryDataService.GetInfo(mold.mold_status!))?.FullName; info.maintain_qty = mold.maintain_qty; - info.designer = planMoldRelation.designer == null ? "" : planMoldRelation.designer; + info.designer = planMoldRelation.designer ?? ""; info.plan_start_time = planMoldRelation.plan_start_time == null ? "" : ((DateTime)planMoldRelation.plan_start_time).ToString("yyyy-MM-dd"); - var moldEqpRelation = await _db.Queryable().FirstAsync(it => it.mold_id == mold.id); + ToolMoldsEquipment moldEqpRelation = await _db.Queryable().FirstAsync(it => it.mold_id == mold.id); if (moldEqpRelation != null) { - var eqp = await _db.Queryable().FirstAsync(it => it.id == moldEqpRelation.equipment_id); + EqpEquipment eqp = await _db.Queryable().FirstAsync(it => it.id == moldEqpRelation.equipment_id); info.eqp_code = eqp.code; info.eqp_name = eqp.name; } @@ -92,19 +92,21 @@ namespace Tnb.EquipMgr [HttpGet] public async Task GetMaintainInfo([FromQuery] MaintainInfoQueryinput input) { - Dictionary dicstatus = new Dictionary(); - dicstatus.Add("UnMaintain", "待保养"); - dicstatus.Add("Completed", "已完成"); + Dictionary dicstatus = new() + { + { "UnMaintain", "待保养" }, + { "Completed", "已完成" } + }; List result = new(); - var plans = await _db.Queryable().ToListAsync(); - var ToolMolds = await _db.Queryable().ToListAsync(); - var ToolMoldsEquipments = await _db.Queryable().ToListAsync(); - var EqpEquipments = await _db.Queryable().ToListAsync(); - var dic = await _db.Queryable().Where(p => p.DictionaryTypeId == "26149299883285").ToListAsync(); - var users = await _db.Queryable().ToListAsync(); - var records = _db.Queryable().ToList(); - var runrecords = _db.Queryable().ToList(); - foreach (var plan in plans) + List plans = await _db.Queryable().ToListAsync(); + List ToolMolds = await _db.Queryable().ToListAsync(); + List ToolMoldsEquipments = await _db.Queryable().ToListAsync(); + List EqpEquipments = await _db.Queryable().ToListAsync(); + List dic = await _db.Queryable().Where(p => p.DictionaryTypeId == "26149299883285").ToListAsync(); + List users = await _db.Queryable().ToListAsync(); + List records = _db.Queryable().ToList(); + List runrecords = _db.Queryable().ToList(); + foreach (ToolMoldMaintainPlan plan in plans) { var planMoldRelations = await _db.Queryable() .LeftJoin((a, b) => a.maintain_plan_id == b.id) @@ -112,25 +114,27 @@ namespace Tnb.EquipMgr .Where(a => a.maintain_plan_id == plan.id) .Select((a, b, c) => new { - mold_id = a.mold_id, - plan_start_time = c.plan_start_time, + a.mold_id, + c.plan_start_time, }).ToListAsync(); if (planMoldRelations?.Count > 0) { - var mids = planMoldRelations.Select(x => x.mold_id).ToList(); - var molds = ToolMolds.Where(it => mids.Contains(it.id)) + List mids = planMoldRelations.Select(x => x.mold_id).ToList(); + List molds = ToolMolds.Where(it => mids.Contains(it.id)) .WhereIF(!string.IsNullOrEmpty(input.keyword), p => p.mold_code!.Contains(input.keyword!) || p.mold_name!.Contains(input.keyword!)) .ToList(); if (molds?.Count > 0) { for (int i = 0, cnt = molds.Count; i < cnt; i++) { - var mold = molds[i]; + ToolMolds mold = molds[i]; if (!string.IsNullOrEmpty(input.status)) { - var moldstatus = records.Where(p => p.mold_id == mold.id && p.plan_id == plan.id).Any() ? "已完成" : "待保养"; + string moldstatus = records.Where(p => p.mold_id == mold.id && p.plan_id == plan.id).Any() ? "已完成" : "待保养"; if (input.status != moldstatus) + { continue; + } } dynamic info = new ExpandoObject(); info.mold_id = mold.id; @@ -146,13 +150,13 @@ namespace Tnb.EquipMgr info.starttime = ""; if (runrecords.Where(p => p.mold_code == mold.mold_code && p.plan_code == plan.plan_code).Any()) { - var run = runrecords.Where(p => p.mold_code == mold.mold_code && p.plan_code == plan.plan_code).First(); + ToolMoldMaintainRunRecord run = runrecords.Where(p => p.mold_code == mold.mold_code && p.plan_code == plan.plan_code).First(); info.starttime = run.plan_start_time != null ? ((DateTime)run.plan_start_time).ToString("yyyy-MM-dd") : ""; } - var moldEqpRelation = ToolMoldsEquipments.Where(it => it.mold_id == mold.id).FirstOrDefault(); + ToolMoldsEquipment? moldEqpRelation = ToolMoldsEquipments.Where(it => it.mold_id == mold.id).FirstOrDefault(); if (moldEqpRelation != null) { - var eqp = EqpEquipments.Where(it => it.id == moldEqpRelation.equipment_id).FirstOrDefault(); + EqpEquipment? eqp = EqpEquipments.Where(it => it.id == moldEqpRelation.equipment_id).FirstOrDefault(); if (eqp != null) { info.eqp_code = eqp.code; @@ -167,9 +171,14 @@ namespace Tnb.EquipMgr if (!string.IsNullOrEmpty(input.sort)) { if (input.sort == "createtime") + { result = result.OrderByDescending(p => p.createtime).ToList(); + } + if (input.sort == "plan_start_time") - result = result.OrderByDescending(p => p.plan_start_time).ToList(); ; + { + result = result.OrderByDescending(p => p.plan_start_time).ToList(); + }; } return result; } @@ -188,8 +197,8 @@ namespace Tnb.EquipMgr { input.sidx = "b." + input.sidx; } - var records = await _db.Queryable().Select(p => p.plan_id + p.mold_id).ToListAsync(); - var result = await _db.Queryable() + List records = await _db.Queryable().Select(p => p.plan_id + p.mold_id).ToListAsync(); + SqlSugarPagedList result = await _db.Queryable() .LeftJoin((a, b) => a.maintain_plan_id == b.id) .LeftJoin((a, b, c) => a.mold_id == c.id) .LeftJoin((a, b, c, d) => b.plan_code == d.plan_code && c.mold_code == d.mold_code) @@ -214,7 +223,7 @@ namespace Tnb.EquipMgr createtime = b.create_time == null ? "" : b.create_time.Value.ToString(DbTimeFormat.SS), plan_start_time = b.plan_start_date == null ? "" : b.plan_start_date.Value.ToString(DbTimeFormat.SS), starttime = d.plan_start_time == null ? "" : d.plan_start_time.Value.ToString(DbTimeFormat.SS), - }).OrderBy($"{input.sidx} {input.sort}").ToPagedListAsync((input?.currentPage ?? 1), (input?.pageSize ?? 50)); + }).OrderBy($"{input.sidx} {input.sort}").ToPagedListAsync(input?.currentPage ?? 1, input?.pageSize ?? 50); return PageResult.SqlSugarPageResult(result); } @@ -244,8 +253,12 @@ namespace Tnb.EquipMgr [HttpGet] public async Task GetCheckItemAndGrpByMoldId([FromQuery] CheckItemQueryinput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); - var items = await _db.Queryable() + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + List? items = await _db.Queryable() .InnerJoin((a, b) => a.mold_id == b.mold_id) .InnerJoin((a, b, c) => b.item_group_id == c.item_group_id) .InnerJoin((a, b, c, d) => c.item_group_id == d.id) @@ -262,22 +275,25 @@ namespace Tnb.EquipMgr }) .ToListAsync(); //新增功能 - var ToolMoldMaintainPlanRelation = _db.Queryable().Where((a) => a.maintain_plan_id == input.plan_id && a.mold_id == input.mold_id && !string.IsNullOrEmpty(a.group_id)).First(); + ToolMoldMaintainPlanRelation ToolMoldMaintainPlanRelation = _db.Queryable().Where((a) => a.maintain_plan_id == input.plan_id && a.mold_id == input.mold_id && !string.IsNullOrEmpty(a.group_id)).First(); if (ToolMoldMaintainPlanRelation != null) + { items = items.Where(a => a.item_group_id == ToolMoldMaintainPlanRelation.group_id).ToList(); + } + var checkItems = await _db.Queryable().Where(it => it.plan_id == input.plan_id && it.mold_id == input.mold_id).Select(it => new { - plan_id = it.plan_id, - item_id = it.item_id, - item_group_id = it.item_group_id, - mold_id = it.mold_id, + it.plan_id, + it.item_id, + it.item_group_id, + it.mold_id, }).ToListAsync(); var dicCheckItems = checkItems.GroupBy(g => $"{g.plan_id}{g.mold_id}{g.item_group_id}{g.item_id}").ToDictionary(x => x.Key, x => x.FirstOrDefault()); if (items?.Count > 0 && checkItems?.Count > 0) { - foreach (var item in items) + foreach (CheckItemOutput? item in items) { - var key = $"{item.plan_id}{item.mold_id}{item.item_group_id}{item.item_id}"; + string key = $"{item.plan_id}{item.mold_id}{item.item_group_id}{item.item_id}"; if (dicCheckItems.ContainsKey(key) && dicCheckItems[key] != null) { item.status = 1; @@ -300,8 +316,12 @@ namespace Tnb.EquipMgr [HttpPost] public async Task MaintainStart(MoldMaintainRunUpInput input) { - if (input == null) throw new ArgumentNullException("input"); - var flag = _db.Queryable() + if (input == null) + { + throw new ArgumentNullException("input"); + } + + bool flag = _db.Queryable() .LeftJoin((a, b) => a.plan_code == b.plan_code) .LeftJoin((a, b, c) => a.mold_code == c.mold_code) .Where((a, b, c) => b.id == input.plan_id && c.id == input.mold_id).Any(); @@ -313,33 +333,41 @@ namespace Tnb.EquipMgr { await _db.Ado.BeginTranAsync(); - var dic = await _dictionaryDataService.GetDicByTypeId(DictConst.MaintainStatusTypeId); - var mold = await _db.Queryable().FirstAsync(it => it.id == input.mold_id); + Dictionary dic = await _dictionaryDataService.GetDicByTypeId(DictConst.MaintainStatusTypeId); + ToolMolds mold = await _db.Queryable().FirstAsync(it => it.id == input.mold_id); if (mold != null) { mold.mold_status = MoldUseStatus.MOLD_USE_STATUS_MAINTAIN_ID; - var isOk = await _db.Updateable(mold).Where(it => it.id == input.mold_id).ExecuteCommandHasChangeAsync(); - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); - var plan = await _db.Queryable().LeftJoin((a, b) => a.maintain_plan_id == b.id) + bool isOk = await _db.Updateable(mold).Where(it => it.id == input.mold_id).ExecuteCommandHasChangeAsync(); + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } + + ToolMoldMaintainPlan? plan = await _db.Queryable().LeftJoin((a, b) => a.maintain_plan_id == b.id) .Where(a => a.mold_id == input.mold_id && a.maintain_plan_id == input.plan_id).Select((a, b) => b).FirstAsync(); if (plan is not null) { //插入保养计划记录 - ToolMoldMaintainRunRecord record = new(); - record.plan_code = plan.plan_code; - record.mode = plan.mode; - record.plan_status = dic.ContainsKey(plan.plan_code) ? dic[plan.plan_code].ToString() : ""; - record.designer = _userManager.RealName; - record.designer_time = DateTime.Now; - record.mold_code = mold.mold_code; - record.mold_name = mold.mold_name; - record.plan_start_time = string.IsNullOrEmpty(input.starttime) ? DateTime.Now : DateTime.Parse(input.starttime); - var row = await _db.Insertable(record).ExecuteCommandAsync(); - if (row < 1) throw Oops.Oh(ErrorCode.COM1001); + ToolMoldMaintainRunRecord record = new() + { + plan_code = plan.plan_code, + mode = plan.mode, + plan_status = dic.ContainsKey(plan.plan_code) ? dic[plan.plan_code].ToString() : "", + designer = _userManager.RealName, + designer_time = DateTime.Now, + mold_code = mold.mold_code, + mold_name = mold.mold_name, + plan_start_time = string.IsNullOrEmpty(input.starttime) ? DateTime.Now : DateTime.Parse(input.starttime) + }; + int row = await _db.Insertable(record).ExecuteCommandAsync(); + if (row < 1) + { + throw Oops.Oh(ErrorCode.COM1001); + } - - var groupids = _db.Queryable().Where(a => !string.IsNullOrEmpty(a.group_id) && a.mold_id == input.mold_id && a.maintain_plan_id == input.plan_id).ToList().Select(p => p.group_id); + IEnumerable groupids = _db.Queryable().Where(a => !string.IsNullOrEmpty(a.group_id) && a.mold_id == input.mold_id && a.maintain_plan_id == input.plan_id).ToList().Select(p => p.group_id); /* var maintainInfos = await _db.Queryable() @@ -374,16 +402,21 @@ namespace Tnb.EquipMgr List recordDs = new(); foreach (var info in maintainInfos) { - ToolMoldMaintainRunRecordD record_d = new(); - record_d.mainid = record.id; - record_d.group_id = info.group_id; - record_d.group_name = info.group_name; - record_d.check_item_id = info.check_item_id; - record_d.check_item_name = info.check_item_name; + ToolMoldMaintainRunRecordD record_d = new() + { + mainid = record.id, + group_id = info.group_id, + group_name = info.group_name, + check_item_id = info.check_item_id, + check_item_name = info.check_item_name + }; recordDs.Add(record_d); } row = await _db.Insertable(recordDs).ExecuteCommandAsync(); - if (row < 1) throw Oops.Oh(ErrorCode.COM1001); + if (row < 1) + { + throw Oops.Oh(ErrorCode.COM1001); + } } } } @@ -405,47 +438,71 @@ namespace Tnb.EquipMgr [HttpPost] public async Task FinishMaintain(MoldMaintainRunUpInput input) { - if (input == null) throw new ArgumentNullException("input"); - if (input.items == null || input.items.Count == 0) throw new ArgumentException($"parameter {nameof(input.items)} not be null or empty"); - List records = new(); - foreach (var item in input.items) + if (input == null) { - ToolMoldMaintainItemRecord record = new(); - record.plan_id = input.plan_id; - record.mold_id = input.mold_id; - record.item_group_id = item.item_group_id; - record.item_id = item.item_id; - record.status = 1; - record.result = item.result; + throw new ArgumentNullException("input"); + } + + if (input.items == null || input.items.Count == 0) + { + throw new ArgumentException($"parameter {nameof(input.items)} not be null or empty"); + } + + List records = new(); + foreach (MaintainItemInfo item in input.items) + { + ToolMoldMaintainItemRecord record = new() + { + plan_id = input.plan_id, + mold_id = input.mold_id, + item_group_id = item.item_group_id, + item_id = item.item_id, + status = 1, + result = item.result + }; records.Add(record); } - await _db.Insertable(records).ExecuteCommandAsync(); - await _db.Updateable().SetColumns(it => new ToolMolds { mold_status = MoldUseStatus.MOLD_USE_STATUS_ZK_ID }).Where(it => it.id == input.mold_id).ExecuteCommandAsync(); - var count = await _db.Queryable().Where(p => p.maintain_plan_id == input.plan_id).Select(p => p.mold_id).Distinct().CountAsync(); - var finish = await _db.Queryable().Where(p => p.plan_id == input.plan_id).Select(p => p.mold_id).Distinct().CountAsync(); + _ = await _db.Insertable(records).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new ToolMolds { mold_status = MoldUseStatus.MOLD_USE_STATUS_ZK_ID }).Where(it => it.id == input.mold_id).ExecuteCommandAsync(); + int count = await _db.Queryable().Where(p => p.maintain_plan_id == input.plan_id).Select(p => p.mold_id).Distinct().CountAsync(); + int finish = await _db.Queryable().Where(p => p.plan_id == input.plan_id).Select(p => p.mold_id).Distinct().CountAsync(); if (count == finish) - await _db.Updateable().SetColumns(it => new ToolMoldMaintainPlan { status = MoldPlanMaintainStatus.MOLDPLAN_MAINTAIN_STATUS_COMPLETED_CODE }).Where(it => it.id == input.plan_id).ExecuteCommandAsync(); - + { + _ = await _db.Updateable().SetColumns(it => new ToolMoldMaintainPlan { status = MoldPlanMaintainStatus.MOLDPLAN_MAINTAIN_STATUS_COMPLETED_CODE }).Where(it => it.id == input.plan_id).ExecuteCommandAsync(); + } } [HttpPost] public async Task MaintainItemFinish(MoldMaintainRunUpInput input) { - if (input == null) throw new ArgumentNullException("input"); - if (input.items == null || input.items.Count == 0) throw new ArgumentException($"parameter {nameof(input.items)} not be null or empty"); - List records = new(); - foreach (var item in input.items) + if (input == null) { - ToolMoldMaintainItemRecord record = new(); - record.plan_id = input.plan_id; - record.mold_id = input.mold_id; - record.item_group_id = item.item_group_id; - record.item_id = item.item_id; - record.status = 1; + throw new ArgumentNullException("input"); + } + + if (input.items == null || input.items.Count == 0) + { + throw new ArgumentException($"parameter {nameof(input.items)} not be null or empty"); + } + + List records = new(); + foreach (MaintainItemInfo item in input.items) + { + ToolMoldMaintainItemRecord record = new() + { + plan_id = input.plan_id, + mold_id = input.mold_id, + item_group_id = item.item_group_id, + item_id = item.item_id, + status = 1 + }; records.Add(record); } - var row = await _db.Insertable(records).ExecuteCommandAsync(); - if (row < 1) throw Oops.Oh(ErrorCode.COM1001); + int row = await _db.Insertable(records).ExecuteCommandAsync(); + if (row < 1) + { + throw Oops.Oh(ErrorCode.COM1001); + } } /// @@ -456,7 +513,7 @@ namespace Tnb.EquipMgr [HttpPost] public async Task MaintainFinish(MoldMaintainRunUpInput input) { - var items = await _db.Queryable() + List? items = await _db.Queryable() .InnerJoin((a, b) => a.mold_id == b.mold_id) .InnerJoin((a, b, c) => b.item_group_id == c.item_group_id) .InnerJoin((a, b, c, d) => c.item_group_id == d.id) @@ -473,28 +530,30 @@ namespace Tnb.EquipMgr }) .ToListAsync(); //新增功能 - var ToolMoldMaintainPlanRelation = _db.Queryable().Where((a) => a.maintain_plan_id == input.plan_id && a.mold_id == input.mold_id && !string.IsNullOrEmpty(a.group_id)).First(); + ToolMoldMaintainPlanRelation ToolMoldMaintainPlanRelation = _db.Queryable().Where((a) => a.maintain_plan_id == input.plan_id && a.mold_id == input.mold_id && !string.IsNullOrEmpty(a.group_id)).First(); if (ToolMoldMaintainPlanRelation != null) + { items = items.Where(a => a.item_group_id == ToolMoldMaintainPlanRelation.group_id).ToList(); + } var checkItems = await _db.Queryable().Where(it => it.plan_id == input.plan_id && it.mold_id == input.mold_id).Select(it => new { - plan_id = it.plan_id, - item_id = it.item_id, - item_group_id = it.item_group_id, - mold_id = it.mold_id, + it.plan_id, + it.item_id, + it.item_group_id, + it.mold_id, }).ToListAsync(); var dicCheckItems = checkItems.GroupBy(g => $"{g.plan_id}{g.mold_id}{g.item_group_id}{g.item_id}").ToDictionary(x => x.Key, x => x.FirstOrDefault()); - var maintainedItems = items.Where(it => dicCheckItems.ContainsKey($"{it.plan_id}{it.mold_id}{it.item_group_id}{it.item_id}") && dicCheckItems[$"{it.plan_id}{it.mold_id}{it.item_group_id}{it.item_id}"] != null).ToList(); - if ((items?.Count > 0 && maintainedItems?.Count > 0) || (maintainedItems == null || maintainedItems.Count < 1)) + List? maintainedItems = items.Where(it => dicCheckItems.ContainsKey($"{it.plan_id}{it.mold_id}{it.item_group_id}{it.item_id}") && dicCheckItems[$"{it.plan_id}{it.mold_id}{it.item_group_id}{it.item_id}"] != null).ToList(); + if ((items?.Count > 0 && maintainedItems?.Count > 0) || maintainedItems == null || maintainedItems.Count < 1) { - if (maintainedItems.Count < items.Count || (maintainedItems == null || maintainedItems.Count < 1)) + if (maintainedItems.Count < items.Count || maintainedItems == null || maintainedItems.Count < 1) { throw new AppFriendlyException("当前模具有未完成的保养项目", 500); } } - var row = await _db.Updateable().SetColumns(it => new ToolMolds { mold_status = MoldUseStatus.MOLD_USE_STATUS_ZK_ID }).Where(it => it.id == input.mold_id).ExecuteCommandAsync(); - var allMoldStatus = await _db.Queryable().InnerJoin((a, b) => a.mold_id == b.id) + int row = await _db.Updateable().SetColumns(it => new ToolMolds { mold_status = MoldUseStatus.MOLD_USE_STATUS_ZK_ID }).Where(it => it.id == input.mold_id).ExecuteCommandAsync(); + List allMoldStatus = await _db.Queryable().InnerJoin((a, b) => a.mold_id == b.id) .Where((a, b) => a.maintain_plan_id == input.plan_id) .Select((a, b) => b.mold_status) .ToListAsync(); @@ -502,8 +561,10 @@ namespace Tnb.EquipMgr { row = await _db.Updateable().SetColumns(it => new ToolMoldMaintainPlan { status = MoldPlanMaintainStatus.MOLDPLAN_MAINTAIN_STATUS_COMPLETED_CODE }).Where(it => it.id == input.plan_id).ExecuteCommandAsync(); } - if (row < 1) throw Oops.Oh(ErrorCode.COM1001); - + if (row < 1) + { + throw Oops.Oh(ErrorCode.COM1001); + } } } diff --git a/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainTaskService.cs b/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainTaskService.cs index a1a20167..4979f99f 100644 --- a/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainTaskService.cs +++ b/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainTaskService.cs @@ -28,7 +28,7 @@ namespace Tnb.EquipMgr private readonly ISqlSugarClient _db; private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; - private static Dictionary _dicMold = new Dictionary(); + private static Dictionary _dicMold = new(); public ToolMoldMaintainTaskService( ISqlSugarRepository repository, IRunService runService, @@ -48,19 +48,19 @@ namespace Tnb.EquipMgr { if (_dicMold.Count < 1) { - var items = await _db.Queryable().ToListAsync(); + List items = await _db.Queryable().ToListAsync(); _dicMold = items?.ToDictionary(x => x.id, x => (x.mold_code, x.mold_name))!; } VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); - var data = await _runService.GetListResult(templateEntity, input); + JNPF.Common.Filter.PageResult> data = await _runService.GetListResult(templateEntity, input); if (data?.list.Count > 0) { - foreach (var row in data.list) + foreach (Dictionary row in data.list) { - var pair = row[nameof(ToolMoldMaintainTask.mold_id)]; + object pair = row[nameof(ToolMoldMaintainTask.mold_id)]; if (pair.IsNotEmptyOrNull()) { - if (_dicMold.TryGetValue(pair.ToString(), out var multi)) + if (_dicMold.TryGetValue(pair.ToString(), out (string code, string name) multi)) { row[nameof(ToolMoldMaintainTask.mold_id)] = $"{multi.code}/{multi.name}"; } @@ -73,8 +73,11 @@ namespace Tnb.EquipMgr public async Task Create(ToolMoldMaintainTask entity) { - var row = await _db.Insertable(entity).ExecuteCommandAsync(); - if (row < 1) throw Oops.Oh(ErrorCode.COM1000); + int row = await _db.Insertable(entity).ExecuteCommandAsync(); + if (row < 1) + { + throw Oops.Oh(ErrorCode.COM1000); + } } /// /// 修改任务单状态 @@ -90,9 +93,12 @@ namespace Tnb.EquipMgr { endTime = DateTime.Now; } - var row = await _db.Updateable().SetColumns(it => new ToolMoldMaintainTask { status = input.status, modify_strat_time = beginTiem, modify_end_time = endTime }) + int row = await _db.Updateable().SetColumns(it => new ToolMoldMaintainTask { status = input.status, modify_strat_time = beginTiem, modify_end_time = endTime }) .Where(it => input.ids.Contains(it.id)).ExecuteCommandAsync(); - if (row < 1) throw Oops.Oh(ErrorCode.COM1001); + if (row < 1) + { + throw Oops.Oh(ErrorCode.COM1001); + } } } } diff --git a/EquipMgr/Tnb.EquipMgr/ToolMoldRequisitionService.cs b/EquipMgr/Tnb.EquipMgr/ToolMoldRequisitionService.cs index a129d430..f71ae603 100644 --- a/EquipMgr/Tnb.EquipMgr/ToolMoldRequisitionService.cs +++ b/EquipMgr/Tnb.EquipMgr/ToolMoldRequisitionService.cs @@ -51,29 +51,29 @@ namespace Tnb.EquipMgr private async Task GetList(VisualDevModelListQueryInput input) { - Dictionary? queryJson = new Dictionary(); + Dictionary? queryJson = new(); string? requisitionCode = ""; - DateTime[] requisitionTimeArr = null; - DateTime[] estimatedReturnArr = null; + DateTime[]? requisitionTimeArr = null; + DateTime[]? estimatedReturnArr = null; if (input != null && !string.IsNullOrEmpty(input.queryJson)) { queryJson = JsonConvert.DeserializeObject>(input?.queryJson ?? ""); } - if (queryJson!.TryGetValue("requisition_code", out var value)) + if (queryJson!.TryGetValue("requisition_code", out object? value)) { requisitionCode = value.ToString(); } - if (queryJson!.TryGetValue("requisition_time", out var value1)) + if (queryJson!.TryGetValue("requisition_time", out object? value1)) { requisitionTimeArr = value1.ToObject().Select(x => DateTimeOffset.FromUnixTimeSeconds(x / 1000).ToLocalTime().DateTime).ToArray(); } - if (queryJson!.TryGetValue("estimated_return_time", out var value2)) + if (queryJson!.TryGetValue("estimated_return_time", out object? value2)) { estimatedReturnArr = value2.ToObject().Select(x => DateTimeOffset.FromUnixTimeSeconds(x / 1000).ToLocalTime().DateTime).ToArray(); } - var result = await _db.Queryable() + SqlSugarPagedList result = await _db.Queryable() .LeftJoin((a, b) => a.mo_task_id == b.id) .LeftJoin((a, b, c) => a.equip_id == c.id) .LeftJoin((a, b, c, d) => a.recipient_id == d.Id) @@ -105,35 +105,38 @@ namespace Tnb.EquipMgr await _runService.Create(templateEntity, input); - await _db.Updateable().SetColumns(x => x.mold_status == Tnb.BasicData.DictConst.SCTypeId) + _ = await _db.Updateable().SetColumns(x => x.mold_status == Tnb.BasicData.DictConst.SCTypeId) .Where(X => X.id == input.data["mold_id"]).ExecuteCommandAsync(); }); - if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); - return result.IsSuccess ? "保存成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result.IsSuccess ? "保存成功" : result.ErrorMessage); } [HttpPost] public async Task GetTools(ToolInput toolinput) { - Dictionary dic = new Dictionary(); - dic.Add("26149307089941", "在库"); - dic.Add("26149309121045", "生产"); - dic.Add("26149311082005", "保养"); - dic.Add("26149314425877", "报废"); - dic.Add("26149312750101", "外协"); - dic.Add("26149320818965", "维修"); + Dictionary dic = new() + { + { "26149307089941", "在库" }, + { "26149309121045", "生产" }, + { "26149311082005", "保养" }, + { "26149314425877", "报废" }, + { "26149312750101", "外协" }, + { "26149320818965", "维修" } + }; List result = new(); - var BasLocations = await _db.Queryable().ToListAsync(); - var ToolMolds = await _db.Queryable() + List BasLocations = await _db.Queryable().ToListAsync(); + List ToolMolds = await _db.Queryable() .WhereIF(!string.IsNullOrEmpty(toolinput.keyword), p => p.mold_code!.Contains(toolinput.keyword!) || p.mold_name!.Contains(toolinput.keyword!)) .WhereIF(!string.IsNullOrEmpty(toolinput.status), p => p.mold_status == dic.Where(p => p.Value == toolinput.status).First().Key) .ToListAsync(); if (string.IsNullOrEmpty(toolinput.sort)) { if (toolinput.sort == "mold_code") + { ToolMolds = ToolMolds.OrderByDescending(p => p.mold_code).ToList(); + } } - foreach (var tool in ToolMolds) + foreach (ToolMolds tool in ToolMolds) { dynamic info = new ExpandoObject(); info.id = tool.id; diff --git a/EquipMgr/Tnb.EquipMgr/ToolMoldReturnService.cs b/EquipMgr/Tnb.EquipMgr/ToolMoldReturnService.cs index cbf274e4..2c413d78 100644 --- a/EquipMgr/Tnb.EquipMgr/ToolMoldReturnService.cs +++ b/EquipMgr/Tnb.EquipMgr/ToolMoldReturnService.cs @@ -48,23 +48,22 @@ namespace Tnb.EquipMgr string? locationId = ""; - if (input.data.TryGetValue("location_id", out var value)) + if (input.data.TryGetValue("location_id", out object? value)) { locationId = value.ToString(); } - string moldId = input.data.ContainsKey("mold_id") ? input.data["mold_id"].ToString() : ""; + string? moldId = input.data.ContainsKey("mold_id") ? input.data["mold_id"].ToString() : ""; if (!string.IsNullOrEmpty(moldId)) { - await _db.Updateable() + _ = await _db.Updateable() .SetColumns(x => x.mold_status == Tnb.BasicData.DictConst.ZKTypeId) .SetColumnsIF(!string.IsNullOrEmpty(locationId), x => x.location_id == locationId) .Where(X => X.id == moldId).ExecuteCommandAsync(); } }); - if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); - return result.IsSuccess ? "保存成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result.IsSuccess ? "保存成功" : result.ErrorMessage); } } } \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/ToolMoldsService.cs b/EquipMgr/Tnb.EquipMgr/ToolMoldsService.cs index 871b8345..bb2d2b4a 100644 --- a/EquipMgr/Tnb.EquipMgr/ToolMoldsService.cs +++ b/EquipMgr/Tnb.EquipMgr/ToolMoldsService.cs @@ -41,7 +41,7 @@ namespace Tnb.EquipMgr } private async Task Create(VisualDevModelDataCrInput visualDevModelDataCrInput) { - string qrcode = visualDevModelDataCrInput.data.ContainsKey("qrcode") ? visualDevModelDataCrInput.data["qrcode"].ToString() : ""; + string? qrcode = visualDevModelDataCrInput.data.ContainsKey("qrcode") ? visualDevModelDataCrInput.data["qrcode"].ToString() : ""; if (!string.IsNullOrEmpty(qrcode) && await _repository.AsSugarClient().Queryable().AnyAsync(x => x.code == qrcode)) { throw Oops.Bah("二维码总表中已存在该二维码"); @@ -55,7 +55,7 @@ namespace Tnb.EquipMgr if (!string.IsNullOrEmpty(qrcode)) { - BasQrcode basQrcode = new BasQrcode() + BasQrcode basQrcode = new() { code = visualDevModelDataCrInput.data["qrcode"].ToString(), source_id = ToolId, @@ -64,7 +64,7 @@ namespace Tnb.EquipMgr create_time = DateTime.Now, org_id = _userManager.GetUserInfo().Result.organizeId, }; - await _repository.AsSugarClient().Insertable(basQrcode).ExecuteCommandAsync(); + _ = await _repository.AsSugarClient().Insertable(basQrcode).ExecuteCommandAsync(); } } return await Task.FromResult(true); @@ -72,7 +72,7 @@ namespace Tnb.EquipMgr private async Task Update(string id, VisualDevModelDataUpInput visualDevModelDataUpInput) { - string qrcode = visualDevModelDataUpInput.data.ContainsKey("qrcode") ? visualDevModelDataUpInput.data["qrcode"].ToString() : ""; + string? qrcode = visualDevModelDataUpInput.data.ContainsKey("qrcode") ? visualDevModelDataUpInput.data["qrcode"].ToString() : ""; if (!string.IsNullOrEmpty(qrcode) && await _repository.AsSugarClient().Queryable().AnyAsync(x => x.code == visualDevModelDataUpInput.data["qrcode"] && x.source_id != id)) { throw Oops.Bah("二维码总表中已存在该二维码"); @@ -86,13 +86,13 @@ namespace Tnb.EquipMgr { if (await _repository.AsSugarClient().Queryable().AnyAsync(x => x.source_id == id)) { - await _repository.AsSugarClient().Updateable() + _ = await _repository.AsSugarClient().Updateable() .SetColumns(x => x.code == visualDevModelDataUpInput.data["qrcode"].ToString()).Where(x => x.source_id == id) .ExecuteCommandAsync(); } else { - BasQrcode basQrcode = new BasQrcode() + BasQrcode basQrcode = new() { code = visualDevModelDataUpInput.data["qrcode"].ToString(), source_id = id, @@ -101,7 +101,7 @@ namespace Tnb.EquipMgr create_time = DateTime.Now, org_id = _userManager.GetUserInfo().Result.organizeId, }; - await _repository.AsSugarClient().Insertable(basQrcode).ExecuteCommandAsync(); + _ = await _repository.AsSugarClient().Insertable(basQrcode).ExecuteCommandAsync(); } } } @@ -126,8 +126,8 @@ namespace Tnb.EquipMgr [HttpGet] public async Task> GetListByEqpId([FromRoute] string eqpId) { - var db = _repository.AsSugarClient(); - var result = await db.Queryable().InnerJoin((a, b) => a.id == b.mold_id) + ISqlSugarClient db = _repository.AsSugarClient(); + List result = await db.Queryable().InnerJoin((a, b) => a.id == b.mold_id) .Where((a, b) => b.equipment_id == eqpId) .Select((a, b) => a) .ToListAsync(); @@ -137,13 +137,12 @@ namespace Tnb.EquipMgr /// /// 根据模具id获取设备集合 /// - /// /// [HttpPost] public async Task> GetEquipmentLists(ToolMoldInput ToolMoldInput) { - var db = _repository.AsSugarClient(); - var list = await db.Queryable((a, b) => new object[] + ISqlSugarClient db = _repository.AsSugarClient(); + List list = await db.Queryable((a, b) => new object[] { JoinType.Inner, a.id == b.equipment_id, }) @@ -160,50 +159,51 @@ namespace Tnb.EquipMgr /// /// 增加模具设备绑定 /// - /// - /// + /// /// [HttpPost] public async Task SaveData(ToolMoldInput ToolMoldInput) { DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { - var his = await _repository.AsSugarClient().Queryable().ToListAsync(); - var list = new List(); - foreach (var equip in ToolMoldInput.equipid) + List his = await _repository.AsSugarClient().Queryable().ToListAsync(); + List list = new(); + foreach (string equip in ToolMoldInput.equipid) { if (his.Where(p => p.mold_id == ToolMoldInput.mold && p.equipment_id == equip).ToList().Count > 0) + { continue; - var entity = new ToolMoldsEquipment(); - entity.id = SnowflakeIdHelper.NextId(); - entity.mold_id = ToolMoldInput.mold; - entity.equipment_id = equip; - entity.create_time = DateTime.Now; - entity.create_id = _userManager.UserId; + } + + ToolMoldsEquipment entity = new() + { + id = SnowflakeIdHelper.NextId(), + mold_id = ToolMoldInput.mold, + equipment_id = equip, + create_time = DateTime.Now, + create_id = _userManager.UserId + }; list.Add(entity); } - await _repository.AsSugarClient().Insertable(list).ExecuteCommandAsync(); + _ = await _repository.AsSugarClient().Insertable(list).ExecuteCommandAsync(); }); - if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); - return result.IsSuccess ? "保存成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result.IsSuccess ? "保存成功" : result.ErrorMessage); } /// /// 批量删除模具设备绑定 /// - /// - /// + /// /// [HttpPost] public async Task DetachData(ToolMoldInput ToolMoldInput) { DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { - var arr = _repository.AsSugarClient().Queryable().Where(x => x.mold_id == ToolMoldInput.mold && ToolMoldInput.equipid.Contains(x.equipment_id)).ToList(); - await _repository.AsSugarClient().Deleteable(arr).ExecuteCommandAsync(); + List arr = _repository.AsSugarClient().Queryable().Where(x => x.mold_id == ToolMoldInput.mold && ToolMoldInput.equipid.Contains(x.equipment_id)).ToList(); + _ = await _repository.AsSugarClient().Deleteable(arr).ExecuteCommandAsync(); }); - if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); - return result.IsSuccess ? "操作成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result.IsSuccess ? "操作成功" : result.ErrorMessage); } public Task GetListById(string moldId) diff --git a/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskLogService.cs b/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskLogService.cs index 3ed4c7df..2951377d 100644 --- a/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskLogService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskLogService.cs @@ -55,12 +55,12 @@ namespace Tnb.ProductionMgr.APP private async Task GetList(VisualDevModelListQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); string mo_task_code = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : ""; string material_code = queryJson.ContainsKey("material_id") ? queryJson["material_id"].ToString() : ""; string equip_code = queryJson.ContainsKey("eqp_id") ? queryJson["eqp_id"].ToString() : ""; - var result = await db.Queryable() + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => a.mold_id == c.id) .LeftJoin((a, b, c, d) => a.eqp_id == d.id) @@ -107,7 +107,11 @@ namespace Tnb.ProductionMgr.APP public async Task GetLogById(Dictionary dic) { string mo_task_id = dic.ContainsKey("mo_task_id") ? dic["mo_task_id"] : ""; - if (string.IsNullOrEmpty(mo_task_id)) return Array.Empty(); + if (string.IsNullOrEmpty(mo_task_id)) + { + return Array.Empty(); + } + Dictionary statsDic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId); return await _db.Queryable().Where(x => x.mo_task_id == mo_task_id) .OrderBy(x => x.create_time) diff --git a/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskOneService.cs b/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskOneService.cs index e11e33e9..df0d8c5a 100644 --- a/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskOneService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskOneService.cs @@ -52,12 +52,12 @@ namespace Tnb.ProductionMgr.APP private async Task GetList(VisualDevModelListQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); string mo_task_code = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : ""; string material_code = queryJson.ContainsKey("material_id") ? queryJson["material_id"].ToString() : ""; string equip_code = queryJson.ContainsKey("eqp_id") ? queryJson["eqp_id"].ToString() : ""; - var result = await db.Queryable() + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => a.mold_id == c.id) .LeftJoin((a, b, c, d) => a.eqp_id == d.id) @@ -66,7 +66,7 @@ namespace Tnb.ProductionMgr.APP .WhereIF(!string.IsNullOrEmpty(material_code), (a, b, c, d, e) => b.code.Contains(material_code) || b.name.Contains(material_code)) .WhereIF(!string.IsNullOrEmpty(equip_code), (a, b, c, d, e) => d.code.Contains(equip_code) || d.name.Contains(equip_code)) .Where(a => a.schedule_type == 1) - .Where(a => (a.mo_task_status == DictConst.ToBeStartedEnCode || a.mo_task_status == DictConst.InProgressEnCode || a.mo_task_status == DictConst.MoStatusExceptionCode || a.mo_task_status == DictConst.MoStatusPauseCode || a.mo_task_status == DictConst.ComplatedEnCode)) + .Where(a => a.mo_task_status == DictConst.ToBeStartedEnCode || a.mo_task_status == DictConst.InProgressEnCode || a.mo_task_status == DictConst.MoStatusExceptionCode || a.mo_task_status == DictConst.MoStatusPauseCode || a.mo_task_status == DictConst.ComplatedEnCode) .OrderByDescending(a => a.create_time) .Select((a, b, c, d, e) => new AppPrdMoTaskOneListOutput { diff --git a/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskTwoService.cs b/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskTwoService.cs index 8af2de3a..cc8b349f 100644 --- a/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskTwoService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskTwoService.cs @@ -52,12 +52,12 @@ namespace Tnb.ProductionMgr.APP private async Task GetList(VisualDevModelListQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); string mo_task_code = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : ""; string material_code = queryJson.ContainsKey("material_id") ? queryJson["material_id"].ToString() : ""; string equip_code = queryJson.ContainsKey("eqp_id") ? queryJson["eqp_id"].ToString() : ""; - var result = await db.Queryable() + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => a.mold_id == c.id) .LeftJoin((a, b, c, d) => a.eqp_id == d.id) @@ -67,7 +67,7 @@ namespace Tnb.ProductionMgr.APP .WhereIF(!string.IsNullOrEmpty(material_code), (a, b, c, d, e) => b.code.Contains(material_code) || b.name.Contains(material_code)) .WhereIF(!string.IsNullOrEmpty(equip_code), (a, b, c, d, e) => d.code.Contains(equip_code) || d.name.Contains(equip_code)) .Where(a => a.schedule_type == 2) - .Where(a => (a.mo_task_status == DictConst.ToBeStartedEnCode || a.mo_task_status == DictConst.InProgressEnCode || a.mo_task_status == DictConst.MoStatusExceptionCode || a.mo_task_status == DictConst.MoStatusPauseCode || a.mo_task_status == DictConst.ComplatedEnCode)) + .Where(a => a.mo_task_status == DictConst.ToBeStartedEnCode || a.mo_task_status == DictConst.InProgressEnCode || a.mo_task_status == DictConst.MoStatusExceptionCode || a.mo_task_status == DictConst.MoStatusPauseCode || a.mo_task_status == DictConst.ComplatedEnCode) .OrderByDescending(a => a.create_time) .Select((a, b, c, d, e, f) => new AppPrdMoTaskOneListOutput { diff --git a/ProductionMgr/Tnb.ProductionMgr/AndonRecordService.cs b/ProductionMgr/Tnb.ProductionMgr/AndonRecordService.cs index 6214667e..2f873ee0 100644 --- a/ProductionMgr/Tnb.ProductionMgr/AndonRecordService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/AndonRecordService.cs @@ -34,7 +34,7 @@ namespace Tnb.ProductionMgr { private readonly ISqlSugarClient _db; private readonly IUserManager _userManager; - private SendMessageService _sendMessageService; + private readonly SendMessageService _sendMessageService; private readonly IBasPushRuleLogService _basPushRuleLogService; private readonly TimeTaskService _timeTaskService; @@ -54,7 +54,7 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task GetAndonPadList(AndonPadListInput input) { - var result = await _db.Queryable() + SqlSugarPagedList result = await _db.Queryable() .LeftJoin((a, b) => a.andon_info_id == b.id) .LeftJoin((a, b, c) => a.repair_id == c.Id) .LeftJoin((a, b, c, d) => a.create_id == d.Id) @@ -93,7 +93,7 @@ namespace Tnb.ProductionMgr andonRecords.status = DictConst.AndonStatusHJZ; - List toUsers = new List(); + List toUsers = new(); if (!string.IsNullOrEmpty(andonInfo.personnel)) { @@ -116,18 +116,18 @@ namespace Tnb.ProductionMgr { List list = await _sendMessageService.SendTest(andonInfo.send_config_id); - foreach (var item in list) + foreach (MessageSendModel item in list) { item.toUser = toUsers; } - foreach (var item in list) + foreach (MessageSendModel item in list) { - await _sendMessageService.SendMessage(item, new Dictionary()); + _ = await _sendMessageService.SendMessage(item, new Dictionary()); } } - await _db.Insertable(andonRecords).ExecuteCommandAsync(); + _ = await _db.Insertable(andonRecords).ExecuteCommandAsync(); }); @@ -146,25 +146,27 @@ namespace Tnb.ProductionMgr // string cron = $"0 {executeTime.Minute} {executeTime.Hour} {executeTime.Day} {executeTime.Month} ? {executeTime.Year}"; string cron = $"0 {executeTime.Minute} {executeTime.Hour} {executeTime.Day} {executeTime.Month} ?"; - var comtentModel = new ContentModel(); - // comtentModel.cron = (2 * 60).ToString(); - comtentModel.cron = cron; - comtentModel.interfaceId = ""; - comtentModel.interfaceName = ""; - comtentModel.parameter = new List(); - comtentModel.localHostTaskId = "PushMsgTimeWorker/PushMsg"; - comtentModel.startTime = DateTimeOffset.Now.ToUnixTimeMilliseconds(); - // comtentModel.endTime = DateTimeOffset.Now.AddSeconds(3).ToUnixTimeMilliseconds().ToString(); - comtentModel.TenantId = _userManager?.TenantId; - comtentModel.TenantDbName = _userManager?.TenantDbName; - comtentModel.ConnectionConfig = _userManager?.ConnectionConfig; - comtentModel.Token = _userManager?.ToKen; + ContentModel comtentModel = new() + { + // comtentModel.cron = (2 * 60).ToString(); + cron = cron, + interfaceId = "", + interfaceName = "", + parameter = new List(), + localHostTaskId = "PushMsgTimeWorker/PushMsg", + startTime = DateTimeOffset.Now.ToUnixTimeMilliseconds(), + // comtentModel.endTime = DateTimeOffset.Now.AddSeconds(3).ToUnixTimeMilliseconds().ToString(); + TenantId = _userManager?.TenantId, + TenantDbName = _userManager?.TenantDbName, + ConnectionConfig = _userManager?.ConnectionConfig, + Token = _userManager?.ToKen + }; // foreach (var item in sendModels) // { // } // - TimeTaskCrInput timeTaskCrInput = new TimeTaskCrInput() + TimeTaskCrInput timeTaskCrInput = new() { enCode = DateTime.Now.ToString("yyyyMMddHHmmss"), fullName = "andon推送消息" + DateTime.Now.ToString("yyyyMMddHHmmss"), @@ -179,7 +181,7 @@ namespace Tnb.ProductionMgr TimeTaskEntity timeTaskEntity = await _db.Queryable().Where(x => x.EnCode == timeTaskCrInput.enCode).FirstAsync(); - BasPushRuleLog basPushRuleLog = new BasPushRuleLog() + BasPushRuleLog basPushRuleLog = new() { push_rule_id = andonInfo.push_rule_id, timetask_id = timeTaskEntity?.Id, @@ -188,14 +190,13 @@ namespace Tnb.ProductionMgr is_push = 1, }; - await _db.Insertable(basPushRuleLog).ExecuteCommandAsync(); + _ = await _db.Insertable(basPushRuleLog).ExecuteCommandAsync(); } } } - if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); - return result.IsSuccess ? "发起成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result.IsSuccess ? "发起成功" : result.ErrorMessage); } [HttpPost] @@ -218,11 +219,11 @@ namespace Tnb.ProductionMgr } else { - await _db.Updateable() + _ = await _db.Updateable() .SetColumns(x => x.repair_id == _userManager.UserId) .SetColumns(x => x.response_time == DateTime.Now) .ExecuteCommandAsync(); - Dictionary postData = new Dictionary() + Dictionary postData = new() { ["id"] = andonRecords.id }; @@ -252,7 +253,7 @@ namespace Tnb.ProductionMgr } else { - await _db.Updateable() + _ = await _db.Updateable() .SetColumns(x => x.start_repair_time == DateTime.Now) .Where(x => x.id == id) .ExecuteCommandAsync(); @@ -279,7 +280,7 @@ namespace Tnb.ProductionMgr } else { - await _db.Updateable() + _ = await _db.Updateable() .SetColumns(x => x.end_repair_time == DateTime.Now) .Where(x => x.id == id) .ExecuteCommandAsync(); @@ -306,7 +307,7 @@ namespace Tnb.ProductionMgr } else { - await _db.Updateable() + _ = await _db.Updateable() .SetColumns(x => x.confirm_time == DateTime.Now) .Where(x => x.id == id) .ExecuteCommandAsync(); @@ -322,7 +323,7 @@ namespace Tnb.ProductionMgr private async Task> GetSendParamJson(string id) { - var list = await _db.Queryable((a, b) => new JoinQueryInfos(JoinType.Left, a.TemplateId == b.Id)) + List list = await _db.Queryable((a, b) => new JoinQueryInfos(JoinType.Left, a.TemplateId == b.Id)) .Where((a, b) => a.SendConfigId == id && a.DeleteMark == null && b.DeleteMark == null) .Select((a, b) => new MessageSendModel { @@ -333,13 +334,12 @@ namespace Tnb.ProductionMgr sendConfigId = a.SendConfigId, templateId = a.TemplateId, }).ToListAsync(); - foreach (var item in list) + foreach (MessageSendModel? item in list) { // 是否存在参数. - var flag = await _db.Queryable().AnyAsync(x => x.TemplateId == item.templateId && x.DeleteMark == null); - if (flag) - { - item.paramJson = await _db.Queryable((a, b, c) => new JoinQueryInfos(JoinType.Left, a.TemplateId == b.Id, JoinType.Left, a.TemplateId == c.TemplateId)) + bool flag = await _db.Queryable().AnyAsync(x => x.TemplateId == item.templateId && x.DeleteMark == null); + item.paramJson = flag + ? await _db.Queryable((a, b, c) => new JoinQueryInfos(JoinType.Left, a.TemplateId == b.Id, JoinType.Left, a.TemplateId == c.TemplateId)) .Where((a, b, c) => a.TemplateId == item.templateId && a.DeleteMark == null && b.DeleteMark == null && a.Field == c.Field && a.Field != "@flowLink") .Select((a, b) => new MessageSendParam { @@ -350,11 +350,8 @@ namespace Tnb.ProductionMgr templateId = a.TemplateId, templateName = b.FullName, templateType = b.TemplateType - }).ToListAsync(); - } - else - { - item.paramJson = await _db.Queryable((a, b) => new JoinQueryInfos(JoinType.Left, a.TemplateId == b.Id)) + }).ToListAsync() + : await _db.Queryable((a, b) => new JoinQueryInfos(JoinType.Left, a.TemplateId == b.Id)) .Where((a, b) => a.TemplateId == item.templateId && a.DeleteMark == null && b.DeleteMark == null && a.Field != "@flowLink") .Where((a, b) => b.Title.Contains(a.Field) || b.Content.Contains(a.Field)) .Select((a, b) => new MessageSendParam @@ -367,7 +364,6 @@ namespace Tnb.ProductionMgr templateName = b.FullName, templateType = b.TemplateType }).ToListAsync(); - } } return list; } diff --git a/ProductionMgr/Tnb.ProductionMgr/AndonService.cs b/ProductionMgr/Tnb.ProductionMgr/AndonService.cs index f583a39e..dbb62fbb 100644 --- a/ProductionMgr/Tnb.ProductionMgr/AndonService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/AndonService.cs @@ -27,21 +27,23 @@ namespace Tnb.ProductionMgr [HttpGet] public async Task GetPrdTask(string stationId) { - Dictionary dic = new Dictionary(); - dic.Add("ToBeStarted", "待开工"); - dic.Add("InProgress", "进行中"); - dic.Add("Closed", "关闭"); - dic.Add("Complated", "完工"); - dic.Add("ToBeScheduled", "待下发"); - dic.Add("Pause", "暂停"); - dic.Add("Exception", "异常"); - dic.Add("Revoke", "撤销"); + Dictionary dic = new() + { + { "ToBeStarted", "待开工" }, + { "InProgress", "进行中" }, + { "Closed", "关闭" }, + { "Complated", "完工" }, + { "ToBeScheduled", "待下发" }, + { "Pause", "暂停" }, + { "Exception", "异常" }, + { "Revoke", "撤销" } + }; List result = new(); - var List = await _db.Queryable() + List List = await _db.Queryable() .WhereIF(!string.IsNullOrEmpty(stationId), p => p.workstation_id == stationId) .ToListAsync(); - var materials = await _db.Queryable().ToListAsync(); - foreach (var data in List) + List materials = await _db.Queryable().ToListAsync(); + foreach (PrdMoTask data in List) { dynamic info = new ExpandoObject(); info.id = data.id; @@ -55,31 +57,33 @@ namespace Tnb.ProductionMgr info.plan_end_date = data.estimated_end_date == null ? "" : ((DateTime)data.estimated_end_date!).ToString("yyyy-MM-dd"); result.Add(info); } - result.OrderByDescending(p => p.plan_start_date); + _ = result.OrderByDescending(p => p.plan_start_date); return result; } [HttpPost] public async Task SaveData(AndonRecordInput AndonRecordInput) { - var list = _db.Queryable().ToList(); - AndonRecords andonRecord = new AndonRecords(); - andonRecord.mo_id = AndonRecordInput.mo_id; - andonRecord.breakdown_type = list.Where(p => p.id == AndonRecordInput.breakdown).Any() ? list.Where(p => p.id == AndonRecordInput.breakdown).First().type_id : ""; - andonRecord.breakdown = AndonRecordInput.breakdown; - andonRecord.create_time = DateTime.Now; - andonRecord.create_id = _userManager.UserId; - await _db.Insertable(andonRecord).ExecuteCommandAsync(); + List list = _db.Queryable().ToList(); + AndonRecords andonRecord = new() + { + mo_id = AndonRecordInput.mo_id, + breakdown_type = list.Where(p => p.id == AndonRecordInput.breakdown).Any() ? list.Where(p => p.id == AndonRecordInput.breakdown).First().type_id : "", + breakdown = AndonRecordInput.breakdown, + create_time = DateTime.Now, + create_id = _userManager.UserId + }; + _ = await _db.Insertable(andonRecord).ExecuteCommandAsync(); } [HttpPost] public async Task GetAndonCascaderOptions() { - Dictionary result = new Dictionary(); + Dictionary result = new(); List andonTypes = await _db.Queryable().ToListAsync(); List andonInfos = await _db.Queryable().ToListAsync(); List andonBreakDowns = await _db.Queryable().ToListAsync(); - List options = new List(); - foreach (var andonType in andonTypes) + List options = new(); + foreach (AndonType andonType in andonTypes) { options.Add(new AndonCascaderOptionsOuput() { diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdCancelCloseDownService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdCancelCloseDownService.cs index cbbe0e7b..869b1d8a 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdCancelCloseDownService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdCancelCloseDownService.cs @@ -47,11 +47,11 @@ namespace Tnb.ProductionMgr private readonly IUserManager _userManager; private readonly IBillRullService _billRullService; private readonly TimeTaskService _timeTaskService; - private SendMessageService _sendMessageService; + private readonly SendMessageService _sendMessageService; - private static Dictionary _dicWorkStationAndShopRelacion = new Dictionary(); - private static Dictionary _dicWorkShop = new Dictionary(); + private static readonly Dictionary _dicWorkStationAndShopRelacion = new(); + private static Dictionary _dicWorkShop = new(); private const string PUSHRULEID = "27121606262805";//异常停机的推送规则id @@ -86,16 +86,16 @@ namespace Tnb.ProductionMgr { if (_dicWorkShop.Count < 1) { - var orgs = await _db.Queryable().Where(it => it.Category == "workstation").ToListAsync(); + List orgs = await _db.Queryable().Where(it => it.Category == "workstation").ToListAsync(); if (orgs?.Count > 0) { - var shopIds = orgs.Select(x => + List shopIds = orgs.Select(x => { - var shopId = ""; - var orgTree = x.OrganizeIdTree.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + string shopId = ""; + string[] orgTree = x.OrganizeIdTree.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (orgTree?.Length > 1) { - shopId = orgTree[orgTree.Length - 2]; + shopId = orgTree[^2]; _dicWorkStationAndShopRelacion[x.EnCode] = shopId; } return shopId; @@ -106,25 +106,28 @@ namespace Tnb.ProductionMgr } } } - var result = new List(); - var closeDown = await _db.Queryable().FirstAsync(it => it.eqp_id == eqpId); + List result = new(); + PrdCancelClosedown closeDown = await _db.Queryable().FirstAsync(it => it.eqp_id == eqpId); if (closeDown != null) { if (!closeDown.reason.IsNullOrEmpty()) { - var eqp = await _db.Queryable().FirstAsync(it => it.id == eqpId); - EqpEquipType eqpTypeInfo = null; + EqpEquipment? eqp = await _db.Queryable().FirstAsync(it => it.id == eqpId); + EqpEquipType? eqpTypeInfo = null; if (eqp != null) + { eqpTypeInfo = await _db.Queryable().FirstAsync(it => it.id == eqp.equip_type_id); - var reasonArr = closeDown.reason.Split(","); - foreach (var reason in reasonArr) + } + + string[] reasonArr = closeDown.reason.Split(","); + foreach (string reason in reasonArr) { ClosedownEndListOutput ot = new(); if (eqp != null) { if (_dicWorkStationAndShopRelacion.ContainsKey(eqp.station_code)) { - var shopId = _dicWorkStationAndShopRelacion[eqp.station_code].ToString(); + string? shopId = _dicWorkStationAndShopRelacion[eqp.station_code].ToString(); ot.workshop_name = _dicWorkShop.ContainsKey(shopId) ? _dicWorkShop[shopId].ToString()! : ""; } } @@ -153,7 +156,7 @@ namespace Tnb.ProductionMgr [HttpGet] public async Task GetClosedownHistory([FromQuery] ClosedownHistoryQuery input) { - var pagedList = await _db.Queryable() + List pagedList = await _db.Queryable() .WhereIF(!string.IsNullOrEmpty(input.eqpName), it => it.eqp_name.Contains(input.eqpName)) .WhereIF(input.beginTime.HasValue, it => it.closedown_start_time.Value >= input.beginTime) .WhereIF(input.endTime.HasValue, it => it.closedown_start_time.Value <= input.endTime) @@ -184,10 +187,10 @@ namespace Tnb.ProductionMgr public async Task GetInfoFromEqpId([FromRoute] string eqpId) { dynamic info = new ExpandoObject(); - var moTask = await _db.Queryable().Where(it => it.mo_task_status == DictConst.InProgressEnCode).FirstAsync(it => it.eqp_id == eqpId); + PrdMoTask moTask = await _db.Queryable().Where(it => it.mo_task_status == DictConst.InProgressEnCode).FirstAsync(it => it.eqp_id == eqpId); if (moTask != null) { - var mold = await _db.Queryable().FirstAsync(it => it.id == moTask.mo_id); + ToolMolds? mold = await _db.Queryable().FirstAsync(it => it.id == moTask.mo_id); info.mo_task_code = moTask.mo_task_code; info.mold_code = mold?.mold_code; info.mold_name = mold?.mold_name; @@ -204,19 +207,31 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task CloseDownStart(CloseDownStartInput input) { - if (input == null) throw new ArgumentNullException("input"); - if (input.eqp_id.IsNullOrWhiteSpace()) throw new ArgumentException($"parameter {nameof(input.eqp_id)} not be null or empty"); - var eqp = await _db.Queryable().FirstAsync(it => it.id == input.eqp_id); - var cancelCloseDown = input.Adapt(); - EqpRepairApply eqpRepairApply = null; + if (input == null) + { + throw new ArgumentNullException("input"); + } + + if (input.eqp_id.IsNullOrWhiteSpace()) + { + throw new ArgumentException($"parameter {nameof(input.eqp_id)} not be null or empty"); + } + + EqpEquipment? eqp = await _db.Queryable().FirstAsync(it => it.id == input.eqp_id); + PrdCancelClosedown cancelCloseDown = input.Adapt(); + EqpRepairApply? eqpRepairApply = null; BasPushRuleD basPushRuleD = await _db.Queryable().FirstAsync(x => x.push_rule_id == PUSHRULEID && x.ordinal == 1); try { DbResult result = await _db.Ado.UseTranAsync(async () => { - var moTaskList = await _prdMoTaskService.GetListByEqpId(input.eqp_id); - if (moTaskList?.Count > 1) throw new AppFriendlyException($"设备{input.eqp_id},目前有两条进行中的生产任务", 500); + List? moTaskList = await _prdMoTaskService.GetListByEqpId(input.eqp_id); + if (moTaskList?.Count > 1) + { + throw new AppFriendlyException($"设备{input.eqp_id},目前有两条进行中的生产任务", 500); + } + if (moTaskList?.Count > 0) { @@ -226,23 +241,25 @@ namespace Tnb.ProductionMgr cancelCloseDown.create_time = DateTime.Now; cancelCloseDown.closedown_start_time = DateTime.Now; - await _db.Insertable(cancelCloseDown).ExecuteCommandAsync(); + _ = await _db.Insertable(cancelCloseDown).ExecuteCommandAsync(); - var record = cancelCloseDown.Adapt(); + PrdCancelClosedownRecord record = cancelCloseDown.Adapt(); record.eqp_code = eqp?.code; record.eqp_name = eqp?.name; - await _db.Insertable(record).ExecuteCommandAsync(); + _ = await _db.Insertable(record).ExecuteCommandAsync(); - var moldId = moTaskList.First().mold_id; + string? moldId = moTaskList.First().mold_id; if (!moldId.IsNullOrEmpty()) { - var mold = await _moldService.GetListById(moldId); - var maintaindTask = new ToolMoldMaintainTask(); - maintaindTask.mold_id = moldId; - maintaindTask.code = mold?.mold_code ?? ""; - maintaindTask.create_id = _userManager.UserId; - maintaindTask.status = DictConst.UnMaintainStatusCode; - maintaindTask.create_time = DateTime.Now; + ToolMolds mold = await _moldService.GetListById(moldId); + ToolMoldMaintainTask maintaindTask = new() + { + mold_id = moldId, + code = mold?.mold_code ?? "", + create_id = _userManager.UserId, + status = DictConst.UnMaintainStatusCode, + create_time = DateTime.Now + }; await _maintainTaskService.Create(maintaindTask); } @@ -252,7 +269,7 @@ namespace Tnb.ProductionMgr { List prdCancelClosedownReasons = await _db.Queryable().ToListAsync(); string[] reasonArr = input.reason.Split(","); - var reasonList = prdCancelClosedownReasons.Where(x => reasonArr.Contains(x.id)).Select(x => x.reason).ToList(); + List reasonList = prdCancelClosedownReasons.Where(x => reasonArr.Contains(x.id)).Select(x => x.reason).ToList(); reason = string.Join(',', reasonList); } @@ -269,16 +286,16 @@ namespace Tnb.ProductionMgr remark = input.remark, }; - await _db.Insertable(eqpRepairApply).ExecuteCommandAsync(); + _ = await _db.Insertable(eqpRepairApply).ExecuteCommandAsync(); if (!string.IsNullOrEmpty(eqp.responsibler_id)) { List list = await _sendMessageService.SendTest(basPushRuleD.send_config_id); List toUsers = JsonConvert.DeserializeObject>(eqp.responsibler_id); - foreach (var item in list) + foreach (MessageSendModel item in list) { - foreach (var param in item.paramJson) + foreach (MessageSendParam param in item.paramJson) { if (param.field == "equip_code") { @@ -288,15 +305,18 @@ namespace Tnb.ProductionMgr item.toUser = toUsers; } - foreach (var item in list) + foreach (MessageSendModel item in list) { - await _sendMessageService.SendMessage(item, new Dictionary()); + _ = await _sendMessageService.SendMessage(item, new Dictionary()); } } } - else throw Oops.Oh(ErrorCode.COM1001); + else + { + throw Oops.Oh(ErrorCode.COM1001); + } }); if (result.IsSuccess) { @@ -312,23 +332,25 @@ namespace Tnb.ProductionMgr // string cron = $"0 {executeTime.Minute} {executeTime.Hour} {executeTime.Day} {executeTime.Month} ? {executeTime.Year}"; string cron = $"0 {executeTime.Minute} {executeTime.Hour} {executeTime.Day} {executeTime.Month} ?"; - var comtentModel = new ContentModel(); - // comtentModel.cron = (2 * 60).ToString(); - comtentModel.cron = cron; - comtentModel.interfaceId = ""; - comtentModel.interfaceName = ""; - comtentModel.parameter = new List(); - comtentModel.localHostTaskId = "PushMsgTimeWorker/PushMsg"; - comtentModel.startTime = DateTimeOffset.Now.ToUnixTimeMilliseconds(); - // comtentModel.endTime = DateTimeOffset.Now.AddSeconds(3).ToUnixTimeMilliseconds().ToString(); - comtentModel.TenantId = _userManager?.TenantId; - comtentModel.TenantDbName = _userManager?.TenantDbName; - comtentModel.ConnectionConfig = _userManager?.ConnectionConfig; - comtentModel.Token = _userManager?.ToKen; - - foreach (var item in sendModels) + ContentModel comtentModel = new() { - foreach (var param in item.paramJson) + // comtentModel.cron = (2 * 60).ToString(); + cron = cron, + interfaceId = "", + interfaceName = "", + parameter = new List(), + localHostTaskId = "PushMsgTimeWorker/PushMsg", + startTime = DateTimeOffset.Now.ToUnixTimeMilliseconds(), + // comtentModel.endTime = DateTimeOffset.Now.AddSeconds(3).ToUnixTimeMilliseconds().ToString(); + TenantId = _userManager?.TenantId, + TenantDbName = _userManager?.TenantDbName, + ConnectionConfig = _userManager?.ConnectionConfig, + Token = _userManager?.ToKen + }; + + foreach (MessageSendModel item in sendModels) + { + foreach (MessageSendParam param in item.paramJson) { if (param.field == "equip_code") { @@ -337,7 +359,7 @@ namespace Tnb.ProductionMgr } } - TimeTaskCrInput timeTaskCrInput = new TimeTaskCrInput() + TimeTaskCrInput timeTaskCrInput = new() { enCode = DateTime.Now.ToString("yyyyMMddHHmmss"), fullName = "临时推送消息" + DateTime.Now.ToString("yyyyMMddHHmmss"), @@ -352,7 +374,7 @@ namespace Tnb.ProductionMgr TimeTaskEntity timeTaskEntity = await _db.Queryable().Where(x => x.EnCode == timeTaskCrInput.enCode).FirstAsync(); - BasPushRuleLog basPushRuleLog = new BasPushRuleLog() + BasPushRuleLog basPushRuleLog = new() { push_rule_id = PUSHRULEID, timetask_id = timeTaskEntity?.Id, @@ -361,7 +383,7 @@ namespace Tnb.ProductionMgr is_push = 1, }; - await _db.Insertable(basPushRuleLog).ExecuteCommandAsync(); + _ = await _db.Insertable(basPushRuleLog).ExecuteCommandAsync(); } } @@ -384,25 +406,33 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task CloseDownEnd(CloseDownStartInput input) { - if (input == null) throw new ArgumentNullException("input"); - if (input.eqp_id.IsNullOrWhiteSpace()) throw new ArgumentException($"parameter {nameof(input.eqp_id)} not be null or empty"); + if (input == null) + { + throw new ArgumentNullException("input"); + } + + if (input.eqp_id.IsNullOrWhiteSpace()) + { + throw new ArgumentException($"parameter {nameof(input.eqp_id)} not be null or empty"); + } + try { await _db.Ado.BeginTranAsync(); - var closeDown = await _db.Queryable().Where(it => it.eqp_id == input.eqp_id).OrderByDescending(it => it.closedown_start_time).FirstAsync(); + PrdCancelClosedown closeDown = await _db.Queryable().Where(it => it.eqp_id == input.eqp_id).OrderByDescending(it => it.closedown_start_time).FirstAsync(); if (closeDown != null) { closeDown.closedown_end_time = DateTime.Now; - await _db.Updateable(closeDown).ExecuteCommandAsync(); - var record = closeDown.Adapt(); + _ = await _db.Updateable(closeDown).ExecuteCommandAsync(); + PrdCancelClosedownRecord record = closeDown.Adapt(); //计算停机时间间隔,以小时为单位 if (record.closedown_start_time.HasValue && record.closedown_end_time.HasValue) { - var interval = record.closedown_end_time.Value.Subtract(record.closedown_start_time.Value).TotalHours; + double interval = record.closedown_end_time.Value.Subtract(record.closedown_start_time.Value).TotalHours; record.closedown_time = Convert.ToDecimal(interval); } - await _db.Updateable(record).ExecuteCommandAsync(); + _ = await _db.Updateable(record).ExecuteCommandAsync(); await _db.Ado.CommitTranAsync(); } @@ -417,7 +447,7 @@ namespace Tnb.ProductionMgr private async Task> GetSendParamJson(string id) { - var list = await _db.Queryable((a, b) => new JoinQueryInfos(JoinType.Left, a.TemplateId == b.Id)) + List list = await _db.Queryable((a, b) => new JoinQueryInfos(JoinType.Left, a.TemplateId == b.Id)) .Where((a, b) => a.SendConfigId == id && a.DeleteMark == null && b.DeleteMark == null) .Select((a, b) => new MessageSendModel { @@ -428,13 +458,12 @@ namespace Tnb.ProductionMgr sendConfigId = a.SendConfigId, templateId = a.TemplateId, }).ToListAsync(); - foreach (var item in list) + foreach (MessageSendModel? item in list) { // 是否存在参数. - var flag = await _db.Queryable().AnyAsync(x => x.TemplateId == item.templateId && x.DeleteMark == null); - if (flag) - { - item.paramJson = await _db.Queryable((a, b, c) => new JoinQueryInfos(JoinType.Left, a.TemplateId == b.Id, JoinType.Left, a.TemplateId == c.TemplateId)) + bool flag = await _db.Queryable().AnyAsync(x => x.TemplateId == item.templateId && x.DeleteMark == null); + item.paramJson = flag + ? await _db.Queryable((a, b, c) => new JoinQueryInfos(JoinType.Left, a.TemplateId == b.Id, JoinType.Left, a.TemplateId == c.TemplateId)) .Where((a, b, c) => a.TemplateId == item.templateId && a.DeleteMark == null && b.DeleteMark == null && a.Field == c.Field && a.Field != "@flowLink") .Select((a, b) => new MessageSendParam { @@ -445,11 +474,8 @@ namespace Tnb.ProductionMgr templateId = a.TemplateId, templateName = b.FullName, templateType = b.TemplateType - }).ToListAsync(); - } - else - { - item.paramJson = await _db.Queryable((a, b) => new JoinQueryInfos(JoinType.Left, a.TemplateId == b.Id)) + }).ToListAsync() + : await _db.Queryable((a, b) => new JoinQueryInfos(JoinType.Left, a.TemplateId == b.Id)) .Where((a, b) => a.TemplateId == item.templateId && a.DeleteMark == null && b.DeleteMark == null && a.Field != "@flowLink") .Where((a, b) => b.Title.Contains(a.Field) || b.Content.Contains(a.Field)) .Select((a, b) => new MessageSendParam @@ -462,7 +488,6 @@ namespace Tnb.ProductionMgr templateName = b.FullName, templateType = b.TemplateType }).ToListAsync(); - } } return list; } diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdFeedingService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdFeedingService.cs index 285e7e76..6aebde11 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdFeedingService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdFeedingService.cs @@ -50,17 +50,17 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task SaveData(MaterialReceiptInput input) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); DbResult result = await db.Ado.UseTranAsync(async () => { - var moTask = await db.Queryable().FirstAsync(x => x.id == input.mo_task_id); - var inputMaterials = await db.Queryable() + PrdMoTask moTask = await db.Queryable().FirstAsync(x => x.id == input.mo_task_id); + List inputMaterials = await db.Queryable() .Where(x => x.mbom_id == moTask.bom_id && x.mbom_process_id == input.mbom_process_id) .Select(x => x.material_id) .ToListAsync(); string code = await _billRullService.GetBillNumber(Tnb.BasicData.CodeTemplateConst.FEEDING_CODE); - PrdFeedingH prdFeedingH = new PrdFeedingH() + PrdFeedingH prdFeedingH = new() { code = code, station_id = input.station_id, @@ -78,15 +78,17 @@ namespace Tnb.ProductionMgr org_id = _userManager.GetUserInfo().Result.organizeId }; - List list = new List(); + List list = new(); if (input.details != null && input.details.Count > 0) { - foreach (var item in input.details) + foreach (Dictionary item in input.details) { if (!inputMaterials.Contains(item["material_id"])) + { throw new Exception("该物料不是生产bom投入物料,不能签收"); + } - var detail = await db.Queryable() + PrdMaterialReceiptD? detail = await db.Queryable() .Where(x => x.carry_id == input.carry_id && x.is_all_feeding == 0).FirstAsync(); decimal num = Convert.ToDecimal(item["num"]); list.Add(new PrdFeedingD @@ -108,20 +110,18 @@ namespace Tnb.ProductionMgr { throw new Exception("投料数量不能大于签收数量"); } - else if (detail.feeding_num + num == detail.num) - { - await db.Updateable() - .SetColumns(x => x.feeding_num == x.feeding_num + num) - .SetColumns(x => x.is_all_feeding == 1) - .Where(x => x.id == detail.id) - .ExecuteCommandAsync(); - } else { - await db.Updateable() - .SetColumns(x => x.feeding_num == x.feeding_num + num) - .Where(x => x.id == detail.id) - .ExecuteCommandAsync(); + _ = detail.feeding_num + num == detail.num + ? await db.Updateable() + .SetColumns(x => x.feeding_num == x.feeding_num + num) + .SetColumns(x => x.is_all_feeding == 1) + .Where(x => x.id == detail.id) + .ExecuteCommandAsync() + : await db.Updateable() + .SetColumns(x => x.feeding_num == x.feeding_num + num) + .Where(x => x.id == detail.id) + .ExecuteCommandAsync(); } } else @@ -135,29 +135,31 @@ namespace Tnb.ProductionMgr throw new Exception("没有签收物料"); } - var mo = await db.Queryable().SingleAsync(x => x.id == moTask.mo_id); - var material = await db.Queryable().SingleAsync(x => x.id == moTask.material_id); - var station = await db.Queryable().SingleAsync(x => x.Id == input.station_id); - var process = await db.Queryable().SingleAsync(x => x.id == input.process_id); - var taskLog = new PrdTaskLog(); - taskLog.id = SnowflakeIdHelper.NextId(); - taskLog.mo_code = mo?.mo_code!; - taskLog.eqp_code = (await db.Queryable().FirstAsync(it => it.id == input.equip_id))?.code!; - taskLog.mold_code = ""; - taskLog.item_code = material?.code!; - taskLog.item_standard = material?.material_standard!; - taskLog.status = "生产投料"; - taskLog.operator_name = _userManager.RealName; - taskLog.create_id = _userManager.UserId; - taskLog.create_time = DateTime.Now; - taskLog.mo_task_id = moTask.id; - taskLog.mo_task_code = moTask.mo_task_code; - taskLog.station_code = station?.EnCode; - taskLog.process_code = process.code; + PrdMo mo = await db.Queryable().SingleAsync(x => x.id == moTask.mo_id); + BasMaterial? material = await db.Queryable().SingleAsync(x => x.id == moTask.material_id); + OrganizeEntity station = await db.Queryable().SingleAsync(x => x.Id == input.station_id); + BasMaterial process = await db.Queryable().SingleAsync(x => x.id == input.process_id); + PrdTaskLog taskLog = new() + { + id = SnowflakeIdHelper.NextId(), + mo_code = mo?.mo_code!, + eqp_code = (await db.Queryable().FirstAsync(it => it.id == input.equip_id))?.code!, + mold_code = "", + item_code = material?.code!, + item_standard = material?.material_standard!, + status = "生产投料", + operator_name = _userManager.RealName, + create_id = _userManager.UserId, + create_time = DateTime.Now, + mo_task_id = moTask.id, + mo_task_code = moTask.mo_task_code, + station_code = station?.EnCode, + process_code = process.code + }; - await db.Insertable(prdFeedingH).ExecuteCommandAsync(); - await db.Insertable(list).ExecuteCommandAsync(); - await db.Insertable(taskLog).ExecuteCommandAsync(); + _ = await db.Insertable(prdFeedingH).ExecuteCommandAsync(); + _ = await db.Insertable(list).ExecuteCommandAsync(); + _ = await db.Insertable(taskLog).ExecuteCommandAsync(); }); @@ -172,30 +174,29 @@ namespace Tnb.ProductionMgr // }); } - if (!result.IsSuccess) throw Oops.Oh(result.ErrorMessage); - return result.IsSuccess ? "投料成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Oh(result.ErrorMessage) : (dynamic)(result.IsSuccess ? "投料成功" : result.ErrorMessage); } [HttpPost] public async Task SaveDataNew(MaterialReceiptNewInput input) { - var db = _repository.AsSugarClient(); - PrdFeedingH prdFeedingH = null; - List list = new List(); - DbResult result2 = new DbResult(); + ISqlSugarClient db = _repository.AsSugarClient(); + PrdFeedingH? prdFeedingH = null; + List list = new(); + DbResult result2 = new(); DbResult result = await db.Ado.UseTranAsync(async () => { - var moTask = await db.Queryable().FirstAsync(x => x.id == input.mo_task_id); - var parentMoTask = await db.Queryable().FirstAsync(x => x.id == moTask.parent_id); + PrdMoTask moTask = await db.Queryable().FirstAsync(x => x.id == input.mo_task_id); + PrdMoTask parentMoTask = await db.Queryable().FirstAsync(x => x.id == moTask.parent_id); string worklineId = moTask.workline_id; if (parentMoTask != null && !string.IsNullOrEmpty(parentMoTask.workline_id)) { worklineId = parentMoTask.workline_id; } - var carry = await db.Queryable().SingleAsync(x => x.carry_code == input.carry_code); - var workline = await db.Queryable().SingleAsync(x => x.Id == worklineId); - var workshop = await db.Queryable().SingleAsync(x => x.Id == workline.ParentId); - var inputMaterials = await db.Queryable() + WmsCarryH carry = await db.Queryable().SingleAsync(x => x.carry_code == input.carry_code); + OrganizeEntity workline = await db.Queryable().SingleAsync(x => x.Id == worklineId); + OrganizeEntity workshop = await db.Queryable().SingleAsync(x => x.Id == workline.ParentId); + List inputMaterials = await db.Queryable() .Where(x => x.mbom_id == moTask.bom_id && x.mbom_process_id == moTask.mbom_process_id) .Select(x => x.material_id) .ToListAsync(); @@ -222,12 +223,14 @@ namespace Tnb.ProductionMgr if (input.details != null && input.details.Count > 0) { - foreach (var item in input.details) + foreach (Dictionary item in input.details) { if (!inputMaterials.Contains(item["material_id"])) + { throw new Exception("该物料不是生产bom投入物料,不能签收"); + } - var detail = await db.Queryable() + PrdMaterialReceiptD? detail = await db.Queryable() .Where(x => x.member_carry_code == input.carry_code && x.is_all_feeding == 0).FirstAsync(); decimal num = Convert.ToDecimal(item["num"]); list.Add(new PrdFeedingD @@ -249,20 +252,18 @@ namespace Tnb.ProductionMgr { throw new Exception("投料数量不能大于签收数量"); } - else if (detail.feeding_num + num == detail.num) - { - await db.Updateable() - .SetColumns(x => x.feeding_num == x.feeding_num + num) - .SetColumns(x => x.is_all_feeding == 1) - .Where(x => x.id == detail.id) - .ExecuteCommandAsync(); - } else { - await db.Updateable() - .SetColumns(x => x.feeding_num == x.feeding_num + num) - .Where(x => x.id == detail.id) - .ExecuteCommandAsync(); + _ = detail.feeding_num + num == detail.num + ? await db.Updateable() + .SetColumns(x => x.feeding_num == x.feeding_num + num) + .SetColumns(x => x.is_all_feeding == 1) + .Where(x => x.id == detail.id) + .ExecuteCommandAsync() + : await db.Updateable() + .SetColumns(x => x.feeding_num == x.feeding_num + num) + .Where(x => x.id == detail.id) + .ExecuteCommandAsync(); } } else @@ -277,8 +278,8 @@ namespace Tnb.ProductionMgr } - await db.Insertable(prdFeedingH).ExecuteCommandAsync(); - await db.Insertable(list).ExecuteCommandAsync(); + _ = await db.Insertable(prdFeedingH).ExecuteCommandAsync(); + _ = await db.Insertable(list).ExecuteCommandAsync(); }); @@ -322,8 +323,7 @@ namespace Tnb.ProductionMgr // } } - if (!result.IsSuccess) throw Oops.Bah(result.ErrorMessage); - return result.IsSuccess ? "签收成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Bah(result.ErrorMessage) : (dynamic)(result.IsSuccess ? "签收成功" : result.ErrorMessage); } @@ -337,28 +337,32 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task Feeding(MaterialReceiptNewInput input) { - var db = _repository.AsSugarClient(); - var moTask = await _prdMoTaskService.GetPrdMoTaskInfoByStationId(new Dictionary() + ISqlSugarClient db = _repository.AsSugarClient(); + PrdMoTask moTask = await _prdMoTaskService.GetPrdMoTaskInfoByStationId(new Dictionary() { {"station_id",input.station_id} }); - if (moTask == null) throw Oops.Bah("找不到任务单"); - PrdFeedingH prdFeedingH = null; - List list = new List(); - DbResult result2 = new DbResult(); + if (moTask == null) + { + throw Oops.Bah("找不到任务单"); + } + + PrdFeedingH? prdFeedingH = null; + List list = new(); + DbResult result2 = new(); DbResult result = await db.Ado.UseTranAsync(async () => { - var parentMoTask = await db.Queryable().FirstAsync(x => x.id == moTask.parent_id); + PrdMoTask parentMoTask = await db.Queryable().FirstAsync(x => x.id == moTask.parent_id); string worklineId = moTask.workline_id; if (parentMoTask != null && !string.IsNullOrEmpty(parentMoTask.workline_id)) { worklineId = parentMoTask.workline_id; } - var carry = await db.Queryable().SingleAsync(x => x.carry_code == input.carry_code); - var workline = await db.Queryable().SingleAsync(x => x.Id == worklineId); - var workshop = await db.Queryable().SingleAsync(x => x.Id == workline.ParentId); - var inputMaterials = await db.Queryable() + WmsCarryH carry = await db.Queryable().SingleAsync(x => x.carry_code == input.carry_code); + OrganizeEntity workline = await db.Queryable().SingleAsync(x => x.Id == worklineId); + OrganizeEntity workshop = await db.Queryable().SingleAsync(x => x.Id == workline.ParentId); + List inputMaterials = await db.Queryable() .Where(x => x.mbom_id == moTask.bom_id && x.mbom_process_id == moTask.mbom_process_id) .Select(x => x.material_id) .ToListAsync(); @@ -385,12 +389,14 @@ namespace Tnb.ProductionMgr if (input.details != null && input.details.Count > 0) { - foreach (var item in input.details) + foreach (Dictionary item in input.details) { if (!inputMaterials.Contains(item["material_id"])) + { throw new Exception("该物料不是生产bom投入物料,不能签收"); + } - var detail = await db.Queryable() + PrdMaterialReceiptD? detail = await db.Queryable() .Where(x => x.member_carry_code == input.carry_code && x.is_all_feeding == 0).FirstAsync(); decimal num = Convert.ToDecimal(item["num"]); list.Add(new PrdFeedingD @@ -412,20 +418,18 @@ namespace Tnb.ProductionMgr { throw new Exception("投料数量不能大于签收数量"); } - else if (detail.feeding_num + num == detail.num) - { - await db.Updateable() - .SetColumns(x => x.feeding_num == x.feeding_num + num) - .SetColumns(x => x.is_all_feeding == 1) - .Where(x => x.id == detail.id) - .ExecuteCommandAsync(); - } else { - await db.Updateable() - .SetColumns(x => x.feeding_num == x.feeding_num + num) - .Where(x => x.id == detail.id) - .ExecuteCommandAsync(); + _ = detail.feeding_num + num == detail.num + ? await db.Updateable() + .SetColumns(x => x.feeding_num == x.feeding_num + num) + .SetColumns(x => x.is_all_feeding == 1) + .Where(x => x.id == detail.id) + .ExecuteCommandAsync() + : await db.Updateable() + .SetColumns(x => x.feeding_num == x.feeding_num + num) + .Where(x => x.id == detail.id) + .ExecuteCommandAsync(); } } else @@ -440,21 +444,20 @@ namespace Tnb.ProductionMgr } - await db.Insertable(prdFeedingH).ExecuteCommandAsync(); - await db.Insertable(list).ExecuteCommandAsync(); + _ = await db.Insertable(prdFeedingH).ExecuteCommandAsync(); + _ = await db.Insertable(list).ExecuteCommandAsync(); }); - if (!result.IsSuccess) throw Oops.Bah(result.ErrorMessage); - return result.IsSuccess ? "签收成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Bah(result.ErrorMessage) : (dynamic)(result.IsSuccess ? "签收成功" : result.ErrorMessage); } [HttpPost] public async Task GetFeedingRecordTree() { - var db = _repository.AsSugarClient(); - var result = await db.Queryable() + ISqlSugarClient db = _repository.AsSugarClient(); + List result = await db.Queryable() .Where(a => a.schedule_type == 2 && a.parent_id != null) .Select(a => new FeedingRecordTreeOutput() { @@ -479,7 +482,7 @@ namespace Tnb.ProductionMgr }) }).Mapper(x => { - foreach (var item in x.children) + foreach (FeedingRecordChildren item in x.children) { item.children = db.Queryable() .LeftJoin((c, d) => c.material_id == d.id) diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdInstockService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdInstockService.cs index 7a168a59..377649b8 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdInstockService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdInstockService.cs @@ -57,9 +57,9 @@ namespace Tnb.ProductionMgr private async Task GetList(VisualDevModelListQueryInput input) { - Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); + Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); string moCode = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : ""; - var list = await _repository.AsSugarClient().Queryable() + List list = await _repository.AsSugarClient().Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => a.mold_id == c.id) .LeftJoin((a, b, c, d) => a.eqp_id == d.id) @@ -79,7 +79,7 @@ namespace Tnb.ProductionMgr estimated_end_date = a.estimated_end_date.ToString(), create_time = a.create_time.ToString() }).ToListAsync(); - var treeList = list.ToTree(); + List treeList = list.ToTree(); treeList = treeList.Skip((input.currentPage - 1) * input.pageSize).Take(input.pageSize).ToList(); SqlSugarPagedList pagedList = new() { @@ -97,11 +97,11 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task SaveData(PrdInstockInput input) { - var db = _repository.AsSugarClient(); - var location = await db.Queryable().FirstAsync(x => x.location_code == input.location_code); - PrdInstockH prdInstockH = null; - List prdInstockDs = new List() { }; - DbResult result2 = new DbResult(); + ISqlSugarClient db = _repository.AsSugarClient(); + BasLocation location = await db.Queryable().FirstAsync(x => x.location_code == input.location_code); + PrdInstockH? prdInstockH = null; + List prdInstockDs = new() { }; + DbResult result2 = new(); if (string.IsNullOrEmpty(input.station_id)) { @@ -130,7 +130,7 @@ namespace Tnb.ProductionMgr status = 0, }; - foreach (var item in input.details) + foreach (Dictionary item in input.details) { prdInstockDs.Add(new PrdInstockD() { @@ -158,22 +158,24 @@ namespace Tnb.ProductionMgr if (result.IsSuccess) { - MESCreateInstockInput mesCreateInstockInput = new MESCreateInstockInput(); - mesCreateInstockInput.instock = new MESWmsInstockHInput() + MESCreateInstockInput mesCreateInstockInput = new() { - org_id = _userManager.GetUserInfo().Result.organizeId, - bill_date = DateTime.Now, - bill_type = input.bill_type, - warehouse_id = location?.wh_id, - source_id = prdInstockH.id, - create_id = _userManager.UserId, - carry_code = input.carry_code, - location_code = input.location_code, - is_check = input.is_check, + instock = new MESWmsInstockHInput() + { + org_id = _userManager.GetUserInfo().Result.organizeId, + bill_date = DateTime.Now, + bill_type = input.bill_type, + warehouse_id = location?.wh_id, + source_id = prdInstockH.id, + create_id = _userManager.UserId, + carry_code = input.carry_code, + location_code = input.location_code, + is_check = input.is_check, + }, + instockds = new List(), + instockcodes = new List() }; - mesCreateInstockInput.instockds = new List(); - mesCreateInstockInput.instockcodes = new List(); - foreach (var item in input.details) + foreach (Dictionary item in input.details) { mesCreateInstockInput.instockds.Add(new MESWmsInstockDInput() { @@ -197,34 +199,27 @@ namespace Tnb.ProductionMgr }); } string domain = (App.HttpContext.Request.IsHttps ? "https://" : "http://") + App.HttpContext.Request.Host; - Dictionary header = new Dictionary() + Dictionary header = new() { ["Authorization"] = App.HttpContext.Request.Headers["Authorization"] }; - var sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CREATE_INSTOCK, JsonConvert.SerializeObject(mesCreateInstockInput), header); + string sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CREATE_INSTOCK, JsonConvert.SerializeObject(mesCreateInstockInput), header); Log.Information(sendResult); AuthResponse authResponse = JsonConvert.DeserializeObject(sendResult); - if (authResponse.code != 200 || !authResponse.data.ObjToBool()) - { - throw Oops.Bah(authResponse.msg); - } - else - { - result2 = await db.Ado.UseTranAsync(async () => + result2 = authResponse.code != 200 || !authResponse.data.ObjToBool() + ? throw Oops.Bah(authResponse.msg) + : await db.Ado.UseTranAsync(async () => { - await _repository.InsertAsync(prdInstockH); + _ = await _repository.InsertAsync(prdInstockH); if (prdInstockDs.Count > 0) { - await db.Insertable(prdInstockDs).ExecuteCommandAsync(); + _ = await db.Insertable(prdInstockDs).ExecuteCommandAsync(); } }); - - } } - if (!result2.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); - return result2.IsSuccess ? "保存成功" : result2.ErrorMessage; + return !result2.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result2.IsSuccess ? "保存成功" : result2.ErrorMessage); } /// @@ -235,20 +230,20 @@ namespace Tnb.ProductionMgr public async Task SyncInstock(Dictionary dic) { string sourceId = dic.ContainsKey("source_id") ? dic["source_id"] : ""; - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); DbResult result = await db.Ado.UseTranAsync(async () => { if (!string.IsNullOrEmpty(sourceId)) { - await _repository.UpdateAsync(x => new PrdInstockH() + _ = await _repository.UpdateAsync(x => new PrdInstockH() { status = 1 }, x => x.id == sourceId); - var details = await db.Queryable().Where(x => x.instock_id == sourceId).ToListAsync(); + List details = await db.Queryable().Where(x => x.instock_id == sourceId).ToListAsync(); - foreach (var item in details) + foreach (PrdInstockD item in details) { - await db.Updateable().SetColumns(x => x.status == 1) + _ = await db.Updateable().SetColumns(x => x.status == 1) .Where(x => x.id == item.report_id).ExecuteCommandAsync(); } } @@ -268,21 +263,40 @@ namespace Tnb.ProductionMgr { string equip_code = inut.equip_code; string as_location_code = inut.as_location_code; - if (!string.IsNullOrEmpty(equip_code)) throw Oops.Bah("请传机台号"); - var db = _repository.AsSugarClient(); + if (!string.IsNullOrEmpty(equip_code)) + { + throw Oops.Bah("请传机台号"); + } + + ISqlSugarClient db = _repository.AsSugarClient(); EqpEquipment equipment = await db.Queryable().Where(x => x.code == equip_code).FirstAsync(); - if (equipment == null) throw Oops.Bah("未找到机台"); - if (string.IsNullOrEmpty(equipment.as_location_id)) throw Oops.Bah("未找到入库库位"); + if (equipment == null) + { + throw Oops.Bah("未找到机台"); + } + + if (string.IsNullOrEmpty(equipment.as_location_id)) + { + throw Oops.Bah("未找到入库库位"); + } + BasLocation basLocation = await db.Queryable().SingleAsync(x => x.id == equipment.as_location_id); - if (basLocation == null) throw Oops.Bah("未找到入库库位"); + if (basLocation == null) + { + throw Oops.Bah("未找到入库库位"); + } + PrdReport prdReport = await db.Queryable() .Where(x => x.equip_id == equipment.id && x.status == 0).OrderByDescending(x => x.create_time) .FirstAsync(); - if (prdReport == null) throw Oops.Bah("未找到提报记录"); + if (prdReport == null) + { + throw Oops.Bah("未找到提报记录"); + } - PrdInstockH prdInstockH = null; - List prdInstockDs = new List() { }; - DbResult result2 = new DbResult(); + PrdInstockH? prdInstockH = null; + List prdInstockDs = new() { }; + DbResult result2 = new(); BasMaterial basMaterial = await db.Queryable().SingleAsync(x => x.id == prdReport.material_id); DbResult result = await db.Ado.UseTranAsync(async () => { @@ -320,21 +334,23 @@ namespace Tnb.ProductionMgr if (result.IsSuccess) { - MESCreateInstockInput mesCreateInstockInput = new MESCreateInstockInput(); - mesCreateInstockInput.instock = new MESWmsInstockHInput() + MESCreateInstockInput mesCreateInstockInput = new() { - org_id = _userManager.GetUserInfo().Result.organizeId, - bill_date = DateTime.Now, - bill_type = DictConst.CHANCHENGPINRUKUDAN, - warehouse_id = basLocation?.wh_id, - source_id = prdInstockH.id, - create_id = _userManager.UserId, - carry_code = prdReport.material_box_code, - location_code = basLocation.location_code, - is_check = 1, + instock = new MESWmsInstockHInput() + { + org_id = _userManager.GetUserInfo().Result.organizeId, + bill_date = DateTime.Now, + bill_type = DictConst.CHANCHENGPINRUKUDAN, + warehouse_id = basLocation?.wh_id, + source_id = prdInstockH.id, + create_id = _userManager.UserId, + carry_code = prdReport.material_box_code, + location_code = basLocation.location_code, + is_check = 1, + }, + instockds = new List(), + instockcodes = new List() }; - mesCreateInstockInput.instockds = new List(); - mesCreateInstockInput.instockcodes = new List(); mesCreateInstockInput.instockds.Add(new MESWmsInstockDInput() { material_id = prdReport.material_id, @@ -354,46 +370,39 @@ namespace Tnb.ProductionMgr codeqty = (int)prdReport.reported_qty, }); string domain = (App.HttpContext.Request.IsHttps ? "https://" : "http://") + App.HttpContext.Request.Host; - Dictionary header = new Dictionary() + Dictionary header = new() { ["Authorization"] = App.HttpContext.Request.Headers["Authorization"] }; - var sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CREATE_INSTOCK, JsonConvert.SerializeObject(mesCreateInstockInput), header); + string sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CREATE_INSTOCK, JsonConvert.SerializeObject(mesCreateInstockInput), header); Log.Information(sendResult); AuthResponse authResponse = JsonConvert.DeserializeObject(sendResult); - if (authResponse.code != 200 || !authResponse.data.ObjToBool()) - { - throw Oops.Bah(authResponse.msg); - } - else - { - result2 = await db.Ado.UseTranAsync(async () => + result2 = authResponse.code != 200 || !authResponse.data.ObjToBool() + ? throw Oops.Bah(authResponse.msg) + : await db.Ado.UseTranAsync(async () => { - await _repository.InsertAsync(prdInstockH); + _ = await _repository.InsertAsync(prdInstockH); if (prdInstockDs.Count > 0) { - await db.Insertable(prdInstockDs).ExecuteCommandAsync(); + _ = await db.Insertable(prdInstockDs).ExecuteCommandAsync(); } }); - - } } - if (!result2.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); - return result2.IsSuccess ? "申请成功" : result2.ErrorMessage; + return !result2.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result2.IsSuccess ? "申请成功" : result2.ErrorMessage); } [HttpPost] public async Task InstockTubeOne(PrdReport prdReport) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); string location_code = "JMXHC-01"; string warehouse_id = "26103348825381"; - PrdInstockH prdInstockH = null; - List prdInstockDs = new List() { }; - DbResult result2 = new DbResult(); + PrdInstockH? prdInstockH = null; + List prdInstockDs = new() { }; + DbResult result2 = new(); BasMaterial basMaterial = await db.Queryable().SingleAsync(x => x.id == prdReport.material_id); DbResult result = await db.Ado.UseTranAsync(async () => { @@ -431,21 +440,23 @@ namespace Tnb.ProductionMgr if (result.IsSuccess) { - MESCreateInstockInput mesCreateInstockInput = new MESCreateInstockInput(); - mesCreateInstockInput.instock = new MESWmsInstockHInput() + MESCreateInstockInput mesCreateInstockInput = new() { - org_id = _userManager.GetUserInfo().Result.organizeId, - bill_date = DateTime.Now, - bill_type = DictConst.CHANCHENGPINRUKUDAN, - warehouse_id = warehouse_id, - source_id = prdInstockH.id, - create_id = _userManager.UserId, - carry_code = prdReport.material_box_code, - location_code = location_code, - is_check = 1, + instock = new MESWmsInstockHInput() + { + org_id = _userManager.GetUserInfo().Result.organizeId, + bill_date = DateTime.Now, + bill_type = DictConst.CHANCHENGPINRUKUDAN, + warehouse_id = warehouse_id, + source_id = prdInstockH.id, + create_id = _userManager.UserId, + carry_code = prdReport.material_box_code, + location_code = location_code, + is_check = 1, + }, + instockds = new List(), + instockcodes = new List() }; - mesCreateInstockInput.instockds = new List(); - mesCreateInstockInput.instockcodes = new List(); mesCreateInstockInput.instockds.Add(new MESWmsInstockDInput() { material_id = prdReport.material_id, @@ -465,30 +476,24 @@ namespace Tnb.ProductionMgr codeqty = (int)prdReport.reported_qty, }); string domain = (App.HttpContext.Request.IsHttps ? "https://" : "http://") + App.HttpContext.Request.Host; - Dictionary header = new Dictionary() + Dictionary header = new() { ["Authorization"] = App.HttpContext.Request.Headers["Authorization"] }; - var sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CREATE_INSTOCK, JsonConvert.SerializeObject(mesCreateInstockInput), header); + string sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CREATE_INSTOCK, JsonConvert.SerializeObject(mesCreateInstockInput), header); Log.Information(sendResult); AuthResponse authResponse = JsonConvert.DeserializeObject(sendResult); - if (authResponse.code != 200 || !authResponse.data.ObjToBool()) - { - throw Oops.Bah(authResponse.msg); - } - else - { - result2 = await db.Ado.UseTranAsync(async () => + result2 = authResponse.code != 200 || !authResponse.data.ObjToBool() + ? throw Oops.Bah(authResponse.msg) + : await db.Ado.UseTranAsync(async () => { - await _repository.InsertAsync(prdInstockH); + _ = await _repository.InsertAsync(prdInstockH); if (prdInstockDs.Count > 0) { - await db.Insertable(prdInstockDs).ExecuteCommandAsync(); + _ = await db.Insertable(prdInstockDs).ExecuteCommandAsync(); } }); - - } } return result2.IsSuccess ? "true" : "false"; diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdKittingOutService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdKittingOutService.cs index caa07277..cbff6ef9 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdKittingOutService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdKittingOutService.cs @@ -164,36 +164,38 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task KittingOut(KittingOutInput kittingOutInput) { - PrdKittingOutH prdKittingOutH = new PrdKittingOutH(); + PrdKittingOutH prdKittingOutH = new(); try { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); OrganizeEntity workline = await _organizeService.GetAnyParentByWorkstationId(kittingOutInput.workstation_id, DictConst.RegionCategoryWorklineCode); kittingOutInput.workline_id = workline?.Id ?? ""; - List input = new List(); - input.Add(new MESKittingOutStkInput() + List input = new() { - org_id = _userManager.GetUserInfo().Result.organizeId, - bill_date = DateTime.Now, - warehouse_id = kittingOutInput.warehouse_id, - location_code = kittingOutInput.location_code, - material_id = kittingOutInput.material_id, - material_code = kittingOutInput.material_code, - collocation_scheme_id = kittingOutInput.collocation_scheme_id, - collocation_scheme_code = kittingOutInput.collocation_scheme_code, - source_id = prdKittingOutH.id, - create_id = _userManager.UserId, - wmsKittingoutDs = new List(), - }); + new MESKittingOutStkInput() + { + org_id = _userManager.GetUserInfo().Result.organizeId, + bill_date = DateTime.Now, + warehouse_id = kittingOutInput.warehouse_id, + location_code = kittingOutInput.location_code, + material_id = kittingOutInput.material_id, + material_code = kittingOutInput.material_code, + collocation_scheme_id = kittingOutInput.collocation_scheme_id, + collocation_scheme_code = kittingOutInput.collocation_scheme_code, + source_id = prdKittingOutH.id, + create_id = _userManager.UserId, + wmsKittingoutDs = new List(), + } + }; input[0].wmsKittingoutDs = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(kittingOutInput.tableField115)); string domain = (App.HttpContext.Request.IsHttps ? "https://" : "http://") + App.HttpContext.Request.Host; - Dictionary header = new Dictionary() + Dictionary header = new() { ["Authorization"] = App.HttpContext.Request.Headers["Authorization"] }; - var sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_KITTING_OUT_STK, JsonConvert.SerializeObject(input), header); + string sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_KITTING_OUT_STK, JsonConvert.SerializeObject(input), header); Log.Information(sendResult); AuthResponse authResponse = JsonConvert.DeserializeObject(sendResult); @@ -217,8 +219,8 @@ namespace Tnb.ProductionMgr prdKittingOutH.create_id = _userManager.UserId; prdKittingOutH.create_time = DateTime.Now; prdKittingOutH.org_id = _userManager.GetUserInfo().Result.organizeId; - List prdKittingOutDs = new List(); - foreach (var item in kittingOutInput.tableField115) + List prdKittingOutDs = new(); + foreach (Dictionary item in kittingOutInput.tableField115) { prdKittingOutDs.Add(new PrdKittingOutD() { @@ -238,10 +240,10 @@ namespace Tnb.ProductionMgr DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { - await _repository.InsertAsync(prdKittingOutH); + _ = await _repository.InsertAsync(prdKittingOutH); if (prdKittingOutDs.Count > 0) { - await db.Insertable(prdKittingOutDs).ExecuteCommandAsync(); + _ = await db.Insertable(prdKittingOutDs).ExecuteCommandAsync(); } }); @@ -271,11 +273,11 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task KittingOutNew(KittingOutNewInput kittingOutInput) { - PrdKittingOutH prdKittingOutH = new PrdKittingOutH(); + PrdKittingOutH prdKittingOutH = new(); string warehouse_id = "26103348825381";//二楼缓存仓 try { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); PrdMoTask prdMoTask = await db.Queryable().SingleAsync(x => x.id == kittingOutInput.mo_task_id); BasMaterial basMaterial = await db.Queryable().SingleAsync(x => x.id == prdMoTask.material_id); WmsCollocationSchemeH wmsCollocationSchemeH = await db.Queryable().SingleAsync(x => x.id == kittingOutInput.collocation_scheme_id); @@ -295,23 +297,25 @@ namespace Tnb.ProductionMgr Dictionary unitCodeDic = basMaterials.ToDictionary(x => x.id, x => x.unit_id); OrganizeEntity workline = await _organizeService.GetAnyParentByWorkstationId(kittingOutInput.workstation_id, DictConst.RegionCategoryWorklineCode); - List input = new List(); - input.Add(new MESKittingOutStkInput() + List input = new() { - org_id = _userManager.GetUserInfo().Result.organizeId, - bill_date = DateTime.Now, - warehouse_id = warehouse_id, - location_code = kittingOutInput.location_code, - material_id = prdMoTask.material_id, - material_code = basMaterial.code, - collocation_scheme_id = kittingOutInput.collocation_scheme_id, - collocation_scheme_code = wmsCollocationSchemeH.bill_code, - source_id = prdKittingOutH.id, - create_id = _userManager.UserId, - wmsKittingoutDs = new List(), - }); + new MESKittingOutStkInput() + { + org_id = _userManager.GetUserInfo().Result.organizeId, + bill_date = DateTime.Now, + warehouse_id = warehouse_id, + location_code = kittingOutInput.location_code, + material_id = prdMoTask.material_id, + material_code = basMaterial.code, + collocation_scheme_id = kittingOutInput.collocation_scheme_id, + collocation_scheme_code = wmsCollocationSchemeH.bill_code, + source_id = prdKittingOutH.id, + create_id = _userManager.UserId, + wmsKittingoutDs = new List(), + } + }; - foreach (var item in wmsCollocationSchemeDs) + foreach (WmsCollocationSchemeD item in wmsCollocationSchemeDs) { input[0].wmsKittingoutDs.Add(new MESKittingOutStkDInput() { @@ -326,11 +330,11 @@ namespace Tnb.ProductionMgr } string domain = (App.HttpContext.Request.IsHttps ? "https://" : "http://") + App.HttpContext.Request.Host; - Dictionary header = new Dictionary() + Dictionary header = new() { ["Authorization"] = App.HttpContext.Request.Headers["Authorization"] }; - var sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_KITTING_OUT_STK, JsonConvert.SerializeObject(input), header); + string sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_KITTING_OUT_STK, JsonConvert.SerializeObject(input), header); Log.Information(sendResult); AuthResponse authResponse = JsonConvert.DeserializeObject(sendResult); @@ -354,8 +358,8 @@ namespace Tnb.ProductionMgr prdKittingOutH.create_id = _userManager.UserId; prdKittingOutH.create_time = DateTime.Now; prdKittingOutH.org_id = _userManager.GetUserInfo().Result.organizeId; - List prdKittingOutDs = new List(); - foreach (var item in wmsCollocationSchemeDs) + List prdKittingOutDs = new(); + foreach (WmsCollocationSchemeD item in wmsCollocationSchemeDs) { prdKittingOutDs.Add(new PrdKittingOutD() { @@ -375,10 +379,10 @@ namespace Tnb.ProductionMgr DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { - await _repository.InsertAsync(prdKittingOutH); + _ = await _repository.InsertAsync(prdKittingOutH); if (prdKittingOutDs.Count > 0) { - await db.Insertable(prdKittingOutDs).ExecuteCommandAsync(); + _ = await db.Insertable(prdKittingOutDs).ExecuteCommandAsync(); } }); diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMaterialReceiptService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMaterialReceiptService.cs index ace01ef4..5516ea48 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdMaterialReceiptService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdMaterialReceiptService.cs @@ -53,7 +53,7 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task GetInfoByQrCode(string qrCode) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); // var result = await db.Queryable() // .Where((a) => a.carry_code == qrCode) // .Select(a => new @@ -77,7 +77,7 @@ namespace Tnb.ProductionMgr if (await db.Queryable() .AnyAsync(x => x.member_carry_code == qrCode && x.is_all_feeding == 0)) { - var result = await db.Queryable() + FeedingDetailOutput result = await db.Queryable() .LeftJoin((a, b) => a.carry_id == b.id) .Where((a) => a.member_carry_code == qrCode && a.is_all_feeding == 0) .Select((a, b) => new FeedingDetailOutput @@ -103,7 +103,7 @@ namespace Tnb.ProductionMgr } else { - var result = await db.Queryable() + FeedingDetailOutput result = await db.Queryable() .LeftJoin((a, b) => a.carry_id == b.id) .Where((a) => a.carry_code == qrCode) .Select((a, b) => new FeedingDetailOutput @@ -131,14 +131,14 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task SaveData(MaterialReceiptInput input) { - var db = _repository.AsSugarClient(); - DbResult result2 = new DbResult(); - PrdMaterialReceiptH prdMaterialReceiptH = null; - List list = new List(); + ISqlSugarClient db = _repository.AsSugarClient(); + DbResult result2 = new(); + PrdMaterialReceiptH? prdMaterialReceiptH = null; + List list = new(); DbResult result = await db.Ado.UseTranAsync(async () => { - var moTask = await db.Queryable().FirstAsync(x => x.id == input.mo_task_id); - var inputMaterials = await db.Queryable() + PrdMoTask moTask = await db.Queryable().FirstAsync(x => x.id == input.mo_task_id); + List inputMaterials = await db.Queryable() .Where(x => x.mbom_id == moTask.bom_id) .WhereIF(!string.IsNullOrEmpty(input.mbom_process_id), x => x.mbom_process_id == input.mbom_process_id) .Select(x => x.material_id) @@ -168,10 +168,12 @@ namespace Tnb.ProductionMgr if (input.details != null && input.details.Count > 0) { - foreach (var item in input.details) + foreach (Dictionary item in input.details) { if (!inputMaterials.Contains(item["material_id"])) + { throw new Exception("该物料不是生产bom投入物料,不能签收"); + } list.Add(new PrdMaterialReceiptD { @@ -214,7 +216,7 @@ namespace Tnb.ProductionMgr // carry_code = input.carry_code ?? "", // }); - var mesCarrySignInput = new MESCarrySignInput() + MESCarrySignInput mesCarrySignInput = new() { org_id = _userManager.GetUserInfo().Result.organizeId, create_id = _userManager.UserId, @@ -222,30 +224,24 @@ namespace Tnb.ProductionMgr }; string domain = (App.HttpContext.Request.IsHttps ? "https://" : "http://") + App.HttpContext.Request.Host; - Dictionary header = new Dictionary() + Dictionary header = new() { ["Authorization"] = App.HttpContext.Request.Headers["Authorization"] }; - var sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CARRY_SIGN, JsonConvert.SerializeObject(mesCarrySignInput), header); + string sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CARRY_SIGN, JsonConvert.SerializeObject(mesCarrySignInput), header); Log.Information(sendResult); AuthResponse authResponse = JsonConvert.DeserializeObject(sendResult); - if (authResponse.code != 200) - { - throw Oops.Bah(authResponse.msg); - } - else - { - result2 = await db.Ado.UseTranAsync(async () => + result2 = authResponse.code != 200 + ? throw Oops.Bah(authResponse.msg) + : await db.Ado.UseTranAsync(async () => { - await db.Insertable(prdMaterialReceiptH).ExecuteCommandAsync(); - await db.Insertable(list).ExecuteCommandAsync(); + _ = await db.Insertable(prdMaterialReceiptH).ExecuteCommandAsync(); + _ = await db.Insertable(list).ExecuteCommandAsync(); }); - - } } - if (!result.IsSuccess) throw Oops.Bah(result.ErrorMessage); - if (!result2.IsSuccess) throw Oops.Bah(result2.ErrorMessage); - return "签收成功"; + return !result.IsSuccess + ? throw Oops.Bah(result.ErrorMessage) + : !result2.IsSuccess ? throw Oops.Bah(result2.ErrorMessage) : (dynamic)"签收成功"; } } } \ No newline at end of file diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoService.cs index 7869fe92..bfeceab0 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdMoService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoService.cs @@ -108,12 +108,12 @@ namespace Tnb.ProductionMgr private async Task GetList(VisualDevModelListQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); string moCode = queryJson.ContainsKey("mo_code") ? queryJson["mo_code"].ToString() : ""; string moStatus = queryJson.ContainsKey("mo_status") ? queryJson["mo_status"].ToString() : ""; string combineMoCode = queryJson.ContainsKey("combine_mo_code") ? queryJson["combine_mo_code"].ToString() : ""; - var result = await db.Queryable() + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => c.EnCode == DictConst.MeasurementUnit) .LeftJoin((a, b, c, d) => c.Id == d.DictionaryTypeId && a.unit_id == d.Id) @@ -175,10 +175,10 @@ namespace Tnb.ProductionMgr /// /// [HttpGet("{icmoCode}")] - public async Task GetReportRecord(string icmoCode) + public dynamic GetReportRecord(string icmoCode) { - var db = _repository.AsSugarClient(); - var output = new PrdMoTaskDefectOutput(); + _ = _repository.AsSugarClient(); + PrdMoTaskDefectOutput output = new(); //output.mo_task_code = icmoCode; //var scrap = (await db.Queryable().FirstAsync(it => it.icmo_code == icmoCode)); //output.items = new List(); @@ -215,16 +215,16 @@ namespace Tnb.ProductionMgr throw new ArgumentException($"{nameof(input.Behavior)},not be null or empty"); } - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); //获取同组工单的Id,一起下发 - var combineMoCodes = await db.Queryable().Where(it => input.WorkOrderIds.Contains(it.id)).Select(it => it.combine_mo_code).ToListAsync(); + List combineMoCodes = await db.Queryable().Where(it => input.WorkOrderIds.Contains(it.id)).Select(it => it.combine_mo_code).ToListAsync(); if (combineMoCodes?.Count > 0) { - var moIds = await db.Queryable().Where(it => combineMoCodes.Contains(it.combine_mo_code) && !input.WorkOrderIds.Contains(it.id)).Select(it => it.id).ToListAsync(); + List moIds = await db.Queryable().Where(it => combineMoCodes.Contains(it.combine_mo_code) && !input.WorkOrderIds.Contains(it.id)).Select(it => it.id).ToListAsync(); input.WorkOrderIds = input.WorkOrderIds.Concat(moIds).ToList(); } - string getMoStatus(MoBehavior behavior) + static string getMoStatus(MoBehavior behavior) { string status = ""; switch (behavior) @@ -238,13 +238,13 @@ namespace Tnb.ProductionMgr } return status!; } - var behavior = input.Behavior.ToEnum(); - var status = getMoStatus(behavior); - var row = await db.Updateable() + MoBehavior behavior = input.Behavior.ToEnum(); + string status = getMoStatus(behavior); + int row = await db.Updateable() .SetColumns(it => new PrdMo { mo_status = status }) .Where(it => input.WorkOrderIds.Contains(it.id)) .ExecuteCommandAsync(); - return (row > 0); + return row > 0; } // /// // /// 关联同组工单 @@ -312,20 +312,20 @@ namespace Tnb.ProductionMgr .Select((a, b, c) => new { planDate = a.plan_start_date, - mold_code = c.mold_code, + c.mold_code, }).ToListAsync(); - var planDateAll = true; - var moldIdAll = true; + bool planDateAll = true; + bool moldIdAll = true; if (list?.Count > 0) { - var planDate = list.FirstOrDefault()?.planDate; - var moldCode = list.FirstOrDefault()?.mold_code; + DateTime? planDate = list.FirstOrDefault()?.planDate; + string? moldCode = list.FirstOrDefault()?.mold_code; planDateAll = list.All(x => x.planDate == planDate); moldIdAll = moldCode != null && list.All(x => x.mold_code == moldCode); if (planDateAll && moldIdAll) { - var groupId = SnowflakeIdHelper.NextId(); + string groupId = SnowflakeIdHelper.NextId(); multi.executeRes = await _repository.AsSugarClient().Updateable() .SetColumns(c => new PrdMo { combine_mo_code = groupId }) .Where(it => input.WorkOrderIds.Contains(it.id)) @@ -369,7 +369,7 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task GetPrdMoStatistics(PrdMoStatisticsInput input) { - var result = await _db.Queryable() + SqlSugarPagedList result = await _db.Queryable() .LeftJoin((a, b) => a.mo_status == b.Id) .LeftJoin((a, b, c) => a.material_id == c.id) .WhereIF(!string.IsNullOrEmpty(input.mo_status), (a, b) => b.EnCode == input.mo_status) @@ -420,9 +420,9 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task PrdMoFromOneList(PrdMoFromQueryInput input) { - List ids = new List(); - List ids1 = new List(); - List ids2 = new List(); + List ids = new(); + List ids1 = new(); + List ids2 = new(); if (!string.IsNullOrEmpty(input.mo_task_code)) { ids1 = await _db.Queryable().Where(x => x.mo_task_code.Contains(x.mo_task_code)).Select(x => x.mo_id).ToListAsync(); @@ -441,7 +441,7 @@ namespace Tnb.ProductionMgr ids = ids1.Intersect(ids2).ToList(); } - var result = await _db.Queryable() + SqlSugarPagedList result = await _db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .WhereIF(!string.IsNullOrEmpty(input.mo_code), (a, b) => a.mo_code.Contains(input.mo_code)) .WhereIF(ids != null && ids.Count > 0, (a, b) => ids.Contains(a.id)) @@ -464,7 +464,6 @@ namespace Tnb.ProductionMgr /// /// 工单追溯二级列表 /// - /// /// [HttpPost] public async Task PrdMoFromTwoList(PrdMoFromTwoQueryInput prdMoFromTwoQueryInput) @@ -472,16 +471,15 @@ namespace Tnb.ProductionMgr string mo_id = prdMoFromTwoQueryInput.mo_id ?? ""; string mo_task_code = prdMoFromTwoQueryInput.mo_task_code ?? ""; string barcode = prdMoFromTwoQueryInput.barcode ?? ""; - List ids = new List(); + List ids = new(); if (!string.IsNullOrEmpty(barcode)) { ids = await _db.Queryable().Where(x => x.barcode.Contains(barcode)).Select(x => x.mo_task_id).ToListAsync(); } PrdMo prdMo = await _repository.GetSingleAsync(x => x.id == mo_id); - if (prdMo.mo_type is DictConst.PrdMoTypeZS or DictConst.PrdMoTypeJC) - { - return await _db.Queryable() + return prdMo.mo_type is DictConst.PrdMoTypeZS or DictConst.PrdMoTypeJC + ? await _db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => a.eqp_id == c.ObjectId && c.ObjectType == "Eqp") .LeftJoin((a, b, c, d) => c.OrganizeId == d.Id) @@ -504,11 +502,8 @@ namespace Tnb.ProductionMgr workshop_name = e.FullName, station_name = d.FullName, equip_code = f.code - }).ToListAsync(); - } - else - { - return await _db.Queryable() + }).ToListAsync() + : (dynamic)await _db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => a.workline_id == c.Id) .LeftJoin((a, b, c, d) => a.bom_id == d.id) @@ -529,14 +524,12 @@ namespace Tnb.ProductionMgr workline_name = c.FullName, mbom_version = d.version }).ToListAsync(); - } } /// /// 工单追溯三级级列表 /// - /// /// [HttpPost] public async Task PrdMoFromThreeList(PrdMoFromThreeQueryInput prdMoFromThreeQueryInput) @@ -544,7 +537,7 @@ namespace Tnb.ProductionMgr string mo_task_id = prdMoFromThreeQueryInput.mo_task_id ?? ""; string mo_task_code = prdMoFromThreeQueryInput.mo_task_code ?? ""; string barcode = prdMoFromThreeQueryInput.barcode ?? ""; - List ids = new List(); + List ids = new(); if (!string.IsNullOrEmpty(barcode)) { ids = await _db.Queryable().Where(x => x.barcode.Contains(barcode)).Select(x => x.mo_task_id).ToListAsync(); @@ -574,7 +567,7 @@ namespace Tnb.ProductionMgr }).Mapper(x => { List orgId1 = orgs.Where(y => y.OrganizeIdTree.Contains(x.workline_id)).Select(y => y.Id).ToList(); - string station_id = orgIds.Intersect(orgId1)?.FirstOrDefault(); + string? station_id = orgIds.Intersect(orgId1)?.FirstOrDefault(); if (!string.IsNullOrEmpty(station_id)) { x.station_name = orgs.FirstOrDefault(y => y.Id == station_id)?.FullName; @@ -586,14 +579,13 @@ namespace Tnb.ProductionMgr /// /// 工单追溯人列表 /// - /// /// [HttpPost] public async Task PrdMoFromManList(PrdMoFromTabQueryInput prdMoFromTabQueryInput) { string mo_task_id = prdMoFromTabQueryInput.mo_task_id ?? ""; string barcode = prdMoFromTabQueryInput.barcode ?? ""; - List ids = new List(); + List ids = new(); if (!string.IsNullOrEmpty(barcode)) { ids = await _db.Queryable().Where(x => x.barcode.Contains(barcode)).Select(x => x.mo_task_id).ToListAsync(); @@ -621,14 +613,13 @@ namespace Tnb.ProductionMgr /// /// 工单追溯机列表 /// - /// /// [HttpPost] public async Task PrdMoFromEquipList(PrdMoFromTabQueryInput prdMoFromTabQueryInput) { string mo_task_id = prdMoFromTabQueryInput.mo_task_id ?? ""; string barcode = prdMoFromTabQueryInput.barcode ?? ""; - List ids = new List(); + List ids = new(); if (!string.IsNullOrEmpty(barcode)) { ids = await _db.Queryable().Where(x => x.barcode.Contains(barcode)).Select(x => x.mo_task_id).ToListAsync(); @@ -649,14 +640,13 @@ namespace Tnb.ProductionMgr /// /// 工单追溯料列表 /// - /// /// [HttpPost] public async Task PrdMoFromMaterialList(PrdMoFromTabQueryInput prdMoFromTabQueryInput) { string mo_task_id = prdMoFromTabQueryInput.mo_task_id ?? ""; string barcode = prdMoFromTabQueryInput.barcode ?? ""; - List ids = new List(); + List ids = new(); if (!string.IsNullOrEmpty(barcode)) { ids = await _db.Queryable().Where(x => x.barcode.Contains(barcode)).Select(x => x.mo_task_id).ToListAsync(); @@ -671,9 +661,8 @@ namespace Tnb.ProductionMgr */ if (string.IsNullOrEmpty(barcode)) { - if (prdMoTask.schedule_type == 1) - { - return await _db.Queryable() + return prdMoTask.schedule_type == 1 + ? await _db.Queryable() .LeftJoin((a, b) => a.id == b.ebom_id) .LeftJoin((a, b, c) => b.material_id == c.id) .Where((a, b, c) => a.id == prdMoTask.ebom_id) @@ -681,11 +670,8 @@ namespace Tnb.ProductionMgr { material_code = c.code, material_name = c.name, - }).ToListAsync(); - } - else - { - return await _db.Queryable() + }).ToListAsync() + : (dynamic)await _db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .Where((a, b) => a.mbom_id == prdMoTask.bom_id) .Select((a, b) => new PrdMoFromMaterialListOutput() @@ -693,20 +679,19 @@ namespace Tnb.ProductionMgr material_code = b.code, material_name = b.name, }).ToListAsync(); - } } else { PrdReport prdReport = await _db.Queryable().Where(x => x.barcode == barcode).FirstAsync(); List prdReports = await _db.Queryable().Where(x => x.create_time <= prdReport.create_time && x.barcode != barcode && x.mo_task_id == mo_task_id).ToListAsync(); int? beforeReportNum = prdReports.Sum(x => x.reported_qty); - List prdFeedingIds = new List(); + List prdFeedingIds = new(); if (prdMoTask.schedule_type == 1) { BasEbomH basEbomH = await _db.Queryable().SingleAsync(x => x.id == prdMoTask.ebom_id); List basEbomDs = await _db.Queryable().Where(x => x.ebom_id == prdMoTask.ebom_id).ToListAsync(); - foreach (var item in basEbomDs) + foreach (BasEbomD item in basEbomDs) { decimal? num1 = beforeReportNum / basEbomH.quantity * item.quantity; List prdFeedingDs = await _db.Queryable() @@ -716,7 +701,7 @@ namespace Tnb.ProductionMgr .Select((a, b) => a).ToListAsync(); decimal sum1 = 0; decimal sum2 = 0; - foreach (var prdFeedingD in prdFeedingDs) + foreach (PrdFeedingD prdFeedingD in prdFeedingDs) { if (sum1 <= num1) { @@ -760,11 +745,15 @@ namespace Tnb.ProductionMgr List basMbomInputs = await _db.Queryable().Where(x => x.mbom_process_id == prdMoTask.mbom_process_id).ToListAsync(); BasMbom basMbom = await _db.Queryable().SingleAsync(x => x.id == prdMoTask.bom_id); BasMbomProcess basMbomProcess = await _db.Queryable().SingleAsync(x => x.id == prdMoTask.mbom_process_id); - List lastPrdReportIds = new List(); - foreach (var item in basMbomInputs) + List lastPrdReportIds = new(); + foreach (BasMbomInput item in basMbomInputs) { BasMbomOutput basMbomOutput = await _db.Queryable().Where(x => x.mbom_process_id == basMbomProcess.id && x.material_id == prdMoTask.material_id).FirstAsync(); - if (basMbomOutput == null) break; + if (basMbomOutput == null) + { + break; + } + decimal? num1 = beforeReportNum / Convert.ToDecimal(basMbomOutput.num) * item.num; List prdFeedingDs = await _db.Queryable() .LeftJoin((a, b) => a.feeding_id == b.id) @@ -774,22 +763,28 @@ namespace Tnb.ProductionMgr if (prdFeedingDs == null || prdFeedingDs.Count <= 0) { - if (string.IsNullOrEmpty(basMbomProcess.last_process_no)) continue; + if (string.IsNullOrEmpty(basMbomProcess.last_process_no)) + { + continue; + } List lastBasMbomProcesses = await _db.Queryable().Where(x => x.no == basMbomProcess.last_process_no && x.mbom_id == prdMoTask.bom_id).ToListAsync(); - foreach (var lastBasMbomProcess in lastBasMbomProcesses) + foreach (BasMbomProcess lastBasMbomProcess in lastBasMbomProcesses) { List lastPrdReports = await _db.Queryable() .Where(x => x.mbom_process_id == lastBasMbomProcess.id && x.material_id == item.material_id) .OrderBy(x => x.create_time) .ToListAsync(); - if (lastPrdReports == null || lastPrdReports.Count <= 0) continue; + if (lastPrdReports == null || lastPrdReports.Count <= 0) + { + continue; + } PrdMoTask lastPrdMoTask = await _db.Queryable().FirstAsync(x => x.mo_id == prdMo.id && x.mbom_process_id == lastBasMbomProcess.id); decimal sum1 = 0; decimal sum2 = 0; - foreach (var lastPrdReport in lastPrdReports) + foreach (PrdReport lastPrdReport in lastPrdReports) { if (sum1 <= num1) { @@ -817,7 +812,7 @@ namespace Tnb.ProductionMgr { decimal sum1 = 0; decimal sum2 = 0; - foreach (var prdFeedingD in prdFeedingDs) + foreach (PrdFeedingD prdFeedingD in prdFeedingDs) { if (sum1 <= num1) { @@ -839,7 +834,7 @@ namespace Tnb.ProductionMgr } } - var queryable1 = _db.Queryable() + ISugarQueryable queryable1 = _db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => a.material_receipt_detail_id == c.id) .LeftJoin((a, b, c, d) => c.supplier_id == d.id) @@ -859,7 +854,7 @@ namespace Tnb.ProductionMgr if (lastPrdReportIds != null && lastPrdReportIds.Count > 0) { - var queryable2 = _db.Queryable() + ISugarQueryable queryable2 = _db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .Where((a, b) => lastPrdReportIds.Contains(a.id)) .Select((a, b) => new PrdMoFromMaterialListOutput() @@ -889,25 +884,24 @@ namespace Tnb.ProductionMgr /// /// 物料反向追溯物料信息 /// - /// /// [HttpPost] public async Task PrdMoReverseFromMaterialInfo(PrdMoReverseFromQueryInput prdMoReverseFromQueryInput) { string barcode = prdMoReverseFromQueryInput.barcode ?? ""; string domain = (App.HttpContext.Request.IsHttps ? "https://" : "http://") + App.HttpContext.Request.Host; - Dictionary header = new Dictionary() + Dictionary header = new() { ["Authorization"] = App.HttpContext.Request.Headers["Authorization"] }; - Dictionary postData = new Dictionary() + Dictionary postData = new() { ["org_id"] = _userManager.GetUserInfo().Result.organizeId, ["barcode"] = new List() { barcode }, ["currentPage"] = 1, ["pageSize"] = int.MaxValue, }; - var sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_FETCH_IN_OUT_STOCK_INFO_BY_BAR_CODE, JsonConvert.SerializeObject(postData), header); + string sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_FETCH_IN_OUT_STOCK_INFO_BY_BAR_CODE, JsonConvert.SerializeObject(postData), header); Log.Information(sendResult); AuthResponse authResponse = JsonConvert.DeserializeObject(sendResult); @@ -946,7 +940,6 @@ namespace Tnb.ProductionMgr /// /// 物料反向追溯投料信息 /// - /// /// [HttpPost] public async Task PrdMoReverseFromFeedingInfo(PrdMoReverseFromQueryInput prdMoReverseFromQueryInput) @@ -958,7 +951,7 @@ namespace Tnb.ProductionMgr .Where(a => a.barcode == barcode) .Select((a, b, c) => c.mo_task_id).ToListAsync(); - var result = await _db.Queryable() + List result = await _db.Queryable() .LeftJoin((a, b) => a.mo_id == b.id) .LeftJoin((a, b, c) => a.material_id == c.id) .Where((a, b, c) => ids.Contains(a.id)) @@ -998,14 +991,17 @@ namespace Tnb.ProductionMgr /// /// 物料反向追溯产出信息 /// - /// /// [HttpPost] public async Task PrdMoReverseFromOutInfo(PrdMoReverseFromOutInfoQueryInput prdMoReverseFromOutInfoQueryInput) { string feeding_detail_id = prdMoReverseFromOutInfoQueryInput.feeding_detail_id ?? ""; PrdFeedingD prdFeedingD = await _db.Queryable().FirstAsync(x => x.id == feeding_detail_id); - if (prdFeedingD.use_num <= 0) return Array.Empty(); + if (prdFeedingD.use_num <= 0) + { + return Array.Empty(); + } + PrdFeedingH prdFeedingH = await _db.Queryable().FirstAsync(x => x.id == prdFeedingD.feeding_id); PrdMoTask prdMoTask = await _db.Queryable().FirstAsync(x => x.id == prdFeedingH.mo_task_id); List prdFeedingDs = await _db.Queryable() @@ -1013,7 +1009,7 @@ namespace Tnb.ProductionMgr .Where((a, b) => a.material_id == prdFeedingD.material_id && b.mo_task_id == prdFeedingH.mo_task_id && b.create_time <= prdFeedingH.create_time && a.id != prdFeedingD.id) .Select((a, b) => a).ToListAsync(); decimal beforeIn = prdFeedingDs.Sum(x => x.num); - List reportIds = new List(); + List reportIds = new(); if (prdMoTask.schedule_type == 1) { BasEbomH basEbomH = await _db.Queryable().SingleAsync(x => x.id == prdMoTask.ebom_id); @@ -1026,9 +1022,9 @@ namespace Tnb.ProductionMgr { bool flag = true; decimal residueNeed = 0; - foreach (var prdReport in prdReports) + foreach (PrdReport prdReport in prdReports) { - var needNum = (prdReport.reported_qty ?? 0) / basEbomH.quantity * basEbomD.quantity; + decimal needNum = (prdReport.reported_qty ?? 0) / basEbomH.quantity * basEbomD.quantity; if (beforeIn - needNum >= 0) { beforeIn -= needNum; @@ -1088,7 +1084,7 @@ namespace Tnb.ProductionMgr if (prdReports != null && prdReports.Count > 0) { - List mbomProcesssIds = new List() { prdMoTask.mbom_process_id }; + List mbomProcesssIds = new() { prdMoTask.mbom_process_id }; BasMbomProcess startMbomProcess = await _db.Queryable().Where(x => x.id == prdMoTask.mbom_process_id).FirstAsync(); List allMbomProcesses = await _db.Queryable().Where(x => x.mbom_id == prdMoTask.bom_id).ToListAsync(); string startNo = startMbomProcess.next_process_no; @@ -1128,7 +1124,7 @@ namespace Tnb.ProductionMgr .Select((a, b) => b).ToListAsync(); decimal? needNum = 1;//一个最终物料需要本任务单投入物料的数量 - string tempMaterialId = outputList.FirstOrDefault(x => x.mbom_process_id == mbomProcesssIds[mbomProcesssIds.Count - 1])?.material_id; + string? tempMaterialId = outputList.FirstOrDefault(x => x.mbom_process_id == mbomProcesssIds[^1])?.material_id; for (int i = mbomProcesssIds.Count - 1; i > 0; i--) { @@ -1150,7 +1146,7 @@ namespace Tnb.ProductionMgr bool flag = true; decimal residueNeed = 0; - foreach (var prdReport in prdReports) + foreach (PrdReport prdReport in prdReports) { decimal needNumTotal = prdReport.reported_qty * needNum ?? 0; if (beforeIn - needNumTotal >= 0) @@ -1202,18 +1198,18 @@ namespace Tnb.ProductionMgr List barCodes = await _db.Queryable().Where(x => reportIds.Contains(x.id)).Select(x => x.barcode).ToListAsync(); string domain = (App.HttpContext.Request.IsHttps ? "https://" : "http://") + App.HttpContext.Request.Host; - Dictionary header = new Dictionary() + Dictionary header = new() { ["Authorization"] = App.HttpContext.Request.Headers["Authorization"] }; - Dictionary postData = new Dictionary() + Dictionary postData = new() { ["org_id"] = _userManager.GetUserInfo().Result.organizeId, ["barcode"] = barCodes, ["currentPage"] = 1, ["pageSize"] = int.MaxValue, }; - var sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_FETCH_IN_OUT_STOCK_INFO_BY_BAR_CODE, JsonConvert.SerializeObject(postData), header); + string sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_FETCH_IN_OUT_STOCK_INFO_BY_BAR_CODE, JsonConvert.SerializeObject(postData), header); Log.Information(sendResult); AuthResponse authResponse = JsonConvert.DeserializeObject(sendResult); @@ -1227,7 +1223,7 @@ namespace Tnb.ProductionMgr PageResult output = JsonConvert.DeserializeObject>(authResponse.data.ToString(), new Tnb.Common.Utils.DateTimeJsonConverter()); if (output.list != null && output.list.Count > 0) { - foreach (var item in output.list) + foreach (PrdMoReverseFromOutput item in output.list) { item.material_name = basMaterial.name; } diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskIssueService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskIssueService.cs index 6aa2a463..9d17bad3 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskIssueService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskIssueService.cs @@ -92,11 +92,11 @@ namespace Tnb.ProductionMgr private async Task GetList(VisualDevModelListQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); string moTaskCode = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : ""; string moTaskStatus = queryJson.ContainsKey("mo_task_status") ? queryJson["mo_task_status"].ToString() : ""; - var result = await db.Queryable() + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => c.EnCode == DictConst.TaskStatus) .LeftJoin((a, b, c, d) => c.Id == d.DictionaryTypeId && a.mo_task_status == d.EnCode) diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs index cfb0f976..b4da378d 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs @@ -48,9 +48,9 @@ namespace Tnb.ProductionMgr private readonly IDictionaryDataService _dictionaryDataService; private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; - private static Dictionary _dicDefect = new Dictionary(); - private static Dictionary _dicWorkLine = new Dictionary(); - private static Dictionary _dicProcess = new Dictionary(); + private static Dictionary _dicDefect = new(); + private static readonly Dictionary _dicWorkLine = new(); + private static readonly Dictionary _dicProcess = new(); private readonly ISqlSugarClient _db; private readonly IBillRullService _billRuleService; private readonly IPrdInstockService _prdInstockService; @@ -86,7 +86,6 @@ namespace Tnb.ProductionMgr /// /// 根据产品ID获取模具列表 /// - /// 产品ID /// /// ///
return results: @@ -103,7 +102,7 @@ namespace Tnb.ProductionMgr [HttpGet("{materialId}")] public async Task GetMoldListByItemId(string materialId) { - var result = new List(); + List result = new(); result = await _db.Queryable() .InnerJoin((a, b) => a.mold_id == b.id) .InnerJoin((a, b, c) => a.material_id == c.id) @@ -128,7 +127,7 @@ namespace Tnb.ProductionMgr [HttpGet("{moldId}")] public async Task GetEquipmentListByMoldId(string moldId) { - var items = await _db.Queryable().InnerJoin((a, b) => a.equipment_id == b.id) + List items = await _db.Queryable().InnerJoin((a, b) => a.equipment_id == b.id) .Where((a, b) => a.mold_id == moldId) .Select((a, b) => new Entities.Dto.EquipmentListOutput { @@ -169,8 +168,8 @@ namespace Tnb.ProductionMgr [HttpGet("{eqpId}")] public async Task PrdTaskSort(string eqpId) { - var taskStatusDic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId); - var list = await _repository.AsSugarClient().Queryable() + Dictionary taskStatusDic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId); + List list = await _repository.AsSugarClient().Queryable() .LeftJoin((a, b) => a.mo_id == b.id) .LeftJoin((a, b, c) => a.material_id == c.id) .LeftJoin((a, b, c, d) => a.mold_id == d.id) @@ -187,7 +186,7 @@ namespace Tnb.ProductionMgr mold_code = d.mold_code, }) .ToListAsync(); - var data = list.Select((x, idx) => new PrdTaskSortOutput + List data = list.Select((x, idx) => new PrdTaskSortOutput { no = idx + 1, mo_status_code = x.mo_status_code, @@ -209,9 +208,9 @@ namespace Tnb.ProductionMgr [HttpGet("{taskId}")] public async Task GetMoOperRecord(string taskId) { - var list = await _repository.AsSugarClient().Queryable().Where(it => it.mo_task_id == taskId).ToListAsync(); - var data = list.Adapt>(); - var dic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId); + List list = await _repository.AsSugarClient().Queryable().Where(it => it.mo_task_id == taskId).ToListAsync(); + List data = list.Adapt>(); + Dictionary dic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId); _repository.AsSugarClient().ThenMapper(data, x => { x.statusName = dic.ContainsKey(x.status) ? dic[x.status].ToString() : x.status; @@ -227,15 +226,15 @@ namespace Tnb.ProductionMgr [HttpGet("{moTaskId}")] public async Task GetScarpStatRecord(string moTaskId) { - var output = new PrdMoTaskDefectOutput(); - var db = _repository.AsSugarClient(); + PrdMoTaskDefectOutput output = new(); + ISqlSugarClient db = _repository.AsSugarClient(); if (_dicDefect.Count < 1) { _dicDefect = await db.Queryable().ToDictionaryAsync(x => x.id, x => x.defect_type_name); } output.mo_task_code = (await db.Queryable().FirstAsync(it => it.id == moTaskId))?.mo_task_code; - var defects = await db.Queryable().Where(it => it.mo_task_id == moTaskId).ToListAsync(); - var users = await db.Queryable().ToListAsync(); + List defects = await db.Queryable().Where(it => it.mo_task_id == moTaskId).ToListAsync(); + List users = await db.Queryable().ToListAsync(); if (defects?.Count > 0) { output.batchItems = defects.GroupBy(g => new { g.batch, g.create_id }).Select(t => new BatchItem @@ -263,6 +262,7 @@ namespace Tnb.ProductionMgr /// 根据工单Id获取任务单列表 ///
/// + /// /// /// output: ///
{ @@ -285,10 +285,9 @@ namespace Tnb.ProductionMgr public async Task GetPrdTaskInfoByMoId(string moId, int schedType = 1) { List result = new(); - var dic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId); - if (schedType == 1) - { - result = await _db.Queryable().LeftJoin((a, b) => a.mo_id == b.id) + Dictionary dic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId); + result = schedType == 1 + ? await _db.Queryable().LeftJoin((a, b) => a.mo_id == b.id) .LeftJoin((a, b, c) => a.material_id == c.id) .LeftJoin((a, b, c, d) => a.mold_id == d.id) .LeftJoin((a, b, c, d, e) => a.eqp_id == e.id) @@ -318,11 +317,8 @@ namespace Tnb.ProductionMgr { it.mo_task_status = dic.ContainsKey(it.mo_task_status) ? dic[it.mo_task_status].ToString() : ""; }) - .ToListAsync(); - } - else - { - result = await _db.Queryable().LeftJoin((a, b) => a.mo_id == b.id) + .ToListAsync() + : await _db.Queryable().LeftJoin((a, b) => a.mo_id == b.id) .LeftJoin((a, b, c) => a.material_id == c.id) .LeftJoin((a, b, c, d) => a.workline_id == d.Id) .LeftJoin((a, b, c, d, e) => a.process_id == e.id) @@ -350,7 +346,6 @@ namespace Tnb.ProductionMgr it.mo_task_status = dic.ContainsKey(it.mo_task_status) ? dic[it.mo_task_status].ToString()! : ""; }) .ToListAsync(); - } return result; @@ -362,8 +357,8 @@ namespace Tnb.ProductionMgr [HttpGet] public async Task GetPackScheldToBeIssueList([FromQuery] PackScheldToBeIssueListInput input) { - var dic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId); - var result = await _db.Queryable() + Dictionary dic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId); + List result = await _db.Queryable() .LeftJoin((a, b) => a.workline_id == b.Id) .LeftJoin((a, b, c) => a.mo_id == c.id) .LeftJoin((a, b, c, d) => a.bom_id == d.id) @@ -402,8 +397,8 @@ namespace Tnb.ProductionMgr [HttpGet("{mo_task_id}")] public async Task GetSubMoTaskListByTaskId(string mo_task_id) { - var dic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId); - var result = await _db.Queryable() + Dictionary dic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId); + List result = await _db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => a.workline_id == c.Id) .LeftJoin((a, b, c, d) => a.mo_id == d.id) @@ -522,21 +517,21 @@ namespace Tnb.ProductionMgr [HttpGet] public async Task GetUnSchedulingList([FromQuery] VisualDevModelListQueryInput input) { - Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); - List moStatusList = new List(); + Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); + List moStatusList = new(); if (queryJson != null && queryJson.ContainsKey("mo_stauts")) { moStatusList = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(queryJson["mo_status"])); } - List moTypeList = new List(); + List moTypeList = new(); if (queryJson != null && queryJson.ContainsKey("mo_type")) { moTypeList = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(queryJson["mo_type"])); } - string moCode = queryJson != null && queryJson.ContainsKey("mo_code") ? queryJson["mo_code"].ToString() : ""; - string combineMoCode = queryJson != null && queryJson.ContainsKey("combine_mo_code") ? queryJson["combine_mo_code"].ToString() : ""; - var db = _repository.AsSugarClient(); - var result = await db.Queryable() + string? moCode = queryJson != null && queryJson.ContainsKey("mo_code") ? queryJson["mo_code"].ToString() : ""; + string? combineMoCode = queryJson != null && queryJson.ContainsKey("combine_mo_code") ? queryJson["combine_mo_code"].ToString() : ""; + ISqlSugarClient db = _repository.AsSugarClient(); + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => a.mo_type == c.Id) .LeftJoin((a, b, c, d) => a.mo_status == d.Id) @@ -649,17 +644,20 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task ProductionScheduling(ProductionSchedulingCrInput input) { - var db = _repository.AsSugarClient(); - var row = -1; + ISqlSugarClient db = _repository.AsSugarClient(); + int row = -1; if (input.schedule_type.HasValue) { if (input.schedule_type.Value == 1) //注塑、基础排产 { - var mo = await db.Queryable().FirstAsync(it => it.id == input.mo_id); - BasMbomProcess basMbomProcess = null; + PrdMo? mo = await db.Queryable().FirstAsync(it => it.id == input.mo_id); + BasMbomProcess? basMbomProcess = null; if (!string.IsNullOrEmpty(input.bom_id)) + { basMbomProcess = await db.Queryable().FirstAsync(x => x.mbom_id == input.bom_id); - var moTask = input.Adapt(); + } + + PrdMoTask moTask = input.Adapt(); moTask.id = SnowflakeIdHelper.NextId(); moTask.create_id = _userManager.UserId; moTask.create_time = DateTime.Now; @@ -676,8 +674,8 @@ namespace Tnb.ProductionMgr moTask.workstation_id = organizeRelationEntity?.OrganizeId ?? ""; } - var moCode = mo?.mo_code; - var taskCode = await _billRuleService.GetBillNumber(Tnb.BasicData.CodeTemplateConst.PRDMOTASK_CODE); + string? moCode = mo?.mo_code; + string taskCode = await _billRuleService.GetBillNumber(Tnb.BasicData.CodeTemplateConst.PRDMOTASK_CODE); moTask.mo_task_code = taskCode; // var taskCode = await db.Queryable().Where(it => !string.IsNullOrEmpty(it.mo_task_code) && it.mo_task_code.Contains(moCode)).OrderByDescending(it => it.mo_task_code).Select(it => it.mo_task_code).FirstAsync(); // if (taskCode.IsNullOrEmpty()) @@ -701,15 +699,17 @@ namespace Tnb.ProductionMgr row = await db.Insertable(moTask).ExecuteCommandAsync(); #region 质检模块 //质检 - TriggerPlanEntity entity = new TriggerPlanEntity(); - entity.materialid = moTask.material_id; - entity.processid = moTask.process_id; - entity.workid = moTask.workstation_id; - entity.triggerevent = EnumTriggerEvent.首件检新的生产任务; + TriggerPlanEntity entity = new() + { + materialid = moTask.material_id, + processid = moTask.process_id, + workid = moTask.workstation_id, + triggerevent = EnumTriggerEvent.首件检新的生产任务 + }; await _qcCheckPlanService.CreateTask(entity); #endregion //根据工单号获取当前工单包含的已排产数 - var schedQty = db.Queryable().Where(it => it.mo_id == input.mo_id)?.Sum(d => d.scheduled_qty); + int? schedQty = db.Queryable().Where(it => it.mo_id == input.mo_id)?.Sum(d => d.scheduled_qty); if (mo != null) {//判断如果当前 工单的已排产数大于工单计划数量则更新工单状态为 已排产 @@ -724,38 +724,35 @@ namespace Tnb.ProductionMgr // } // row = await db.Updateable(mo).ExecuteCommandAsync(); - if (mo.scheduled_qty == null) - { - await _db.Updateable() + _ = mo.scheduled_qty == null + ? await _db.Updateable() .SetColumns(x => x.mo_status == DictConst.AlreadyId) .SetColumns(x => x.scheduled_qty == input.scheduled_qty) .Where(x => x.id == mo.id) - .ExecuteCommandAsync(); - } - else - { - await _db.Updateable().SetColumns(x => x.scheduled_qty == x.scheduled_qty + input.scheduled_qty) + .ExecuteCommandAsync() + : await _db.Updateable().SetColumns(x => x.scheduled_qty == x.scheduled_qty + input.scheduled_qty) .Where(x => x.id == mo.id) .ExecuteCommandAsync(); - } } - var material = await db.Queryable().FirstAsync(it => it.id == moTask.material_id); + BasMaterial? material = await db.Queryable().FirstAsync(it => it.id == moTask.material_id); - var taskLog = new PrdTaskLog(); - taskLog.id = SnowflakeIdHelper.NextId(); - taskLog.mo_code = (await db.Queryable().FirstAsync(it => it.id == input.mo_id))?.mo_code!; - taskLog.eqp_code = (await db.Queryable().FirstAsync(it => it.id == input.eqp_id))?.code!; - taskLog.mold_code = (await db.Queryable().FirstAsync(it => it.id == input.mold_id))?.mold_code!; - taskLog.item_code = material?.code!; - taskLog.item_standard = material?.material_standard!; - taskLog.status = DictConst.ToBeScheduledEncode; - taskLog.operator_name = _userManager.RealName; - taskLog.create_id = _userManager.UserId; - taskLog.create_time = DateTime.Now; - taskLog.mo_task_id = moTask.id; - taskLog.mo_task_code = moTask.mo_task_code; + PrdTaskLog taskLog = new() + { + id = SnowflakeIdHelper.NextId(), + mo_code = (await db.Queryable().FirstAsync(it => it.id == input.mo_id))?.mo_code!, + eqp_code = (await db.Queryable().FirstAsync(it => it.id == input.eqp_id))?.code!, + mold_code = (await db.Queryable().FirstAsync(it => it.id == input.mold_id))?.mold_code!, + item_code = material?.code!, + item_standard = material?.material_standard!, + status = DictConst.ToBeScheduledEncode, + operator_name = _userManager.RealName, + create_id = _userManager.UserId, + create_time = DateTime.Now, + mo_task_id = moTask.id, + mo_task_code = moTask.mo_task_code + }; - await db.Insertable(taskLog).ExecuteCommandAsync(); + _ = await db.Insertable(taskLog).ExecuteCommandAsync(); //将生产任务插入到自检报废记录表 //var sacipRecord = new PrdMoTaskDefectRecord(); //sacipRecord.id = SnowflakeIdHelper.NextId(); @@ -776,7 +773,7 @@ namespace Tnb.ProductionMgr await db.Ado.CommitTranAsync(); } - catch (Exception ex) + catch (Exception) { await db.Ado.RollbackTranAsync(); } @@ -798,11 +795,11 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task PackSchedling(PackSchedlingCrInput input) { - var row = -1; + int row = -1; try { await _db.Ado.BeginTranAsync(); - var moTask = input.Adapt(); + PrdMoTask moTask = input.Adapt(); moTask.id = SnowflakeIdHelper.NextId(); moTask.create_id = _userManager.UserId; moTask.bom_id = input.bom_id; @@ -814,14 +811,14 @@ namespace Tnb.ProductionMgr moTask.estimated_start_date = input.estimated_start_date; moTask.estimated_end_date = input.estimated_end_date; moTask.scheduled_qty = input.scheduled_qty; - var mo = await _db.Queryable().FirstAsync(it => it.id == input.mo_id); + PrdMo? mo = await _db.Queryable().FirstAsync(it => it.id == input.mo_id); // moTask.unit_id = mo.unit_id; - var moCode = mo?.mo_code; + string? moCode = mo?.mo_code; // var taskCode = await _db.Queryable().Where(it => string.IsNullOrEmpty(it.parent_id) && !string.IsNullOrEmpty(it.mo_task_code) && it.mo_task_code.Contains(moCode)) // .OrderByDescending(it => it.mo_task_code) // .Select(it => it.mo_task_code) // .FirstAsync(); - var taskCode = await _billRuleService.GetBillNumber(Tnb.BasicData.CodeTemplateConst.PRDMOTASK_CODE); + string taskCode = await _billRuleService.GetBillNumber(Tnb.BasicData.CodeTemplateConst.PRDMOTASK_CODE); moTask.mo_task_code = taskCode; // if (taskCode is null || taskCode.IsNullOrEmpty()) // { @@ -841,28 +838,32 @@ namespace Tnb.ProductionMgr row = await _db.Insertable(moTask).ExecuteCommandAsync(); #region 质检模块 //质检 - TriggerPlanEntity entity = new TriggerPlanEntity(); - entity.materialid = moTask.material_id; - entity.processid = moTask.process_id; - entity.workid = moTask.workstation_id; - entity.triggerevent = EnumTriggerEvent.首件检新的生产任务; + TriggerPlanEntity entity = new() + { + materialid = moTask.material_id, + processid = moTask.process_id, + workid = moTask.workstation_id, + triggerevent = EnumTriggerEvent.首件检新的生产任务 + }; await _qcCheckPlanService.CreateTask(entity); #endregion - var material_h = await _db.Queryable().FirstAsync(it => it.id == moTask.material_id); + BasMaterial? material_h = await _db.Queryable().FirstAsync(it => it.id == moTask.material_id); //添加生产任务操作记录日志 - var taskLog = new PrdTaskLog(); - taskLog.id = SnowflakeIdHelper.NextId(); - taskLog.mo_code = (await _db.Queryable().FirstAsync(it => it.id == input.mo_id))?.mo_code!; - taskLog.item_code = material_h?.code!; - taskLog.item_standard = material_h?.material_standard!; - taskLog.status = DictConst.ToBeScheduledEncode; - taskLog.operator_name = _userManager.RealName; - taskLog.create_id = _userManager.UserId; - taskLog.create_time = DateTime.Now; - taskLog.mo_task_id = moTask.id; - taskLog.mo_task_code = moTask.mo_task_code!; + PrdTaskLog taskLog = new() + { + id = SnowflakeIdHelper.NextId(), + mo_code = (await _db.Queryable().FirstAsync(it => it.id == input.mo_id))?.mo_code!, + item_code = material_h?.code!, + item_standard = material_h?.material_standard!, + status = DictConst.ToBeScheduledEncode, + operator_name = _userManager.RealName, + create_id = _userManager.UserId, + create_time = DateTime.Now, + mo_task_id = moTask.id, + mo_task_code = moTask.mo_task_code! + }; row = await _db.Insertable(taskLog).ExecuteCommandAsync(); //将生产任务插入到自检报废记录表 //var sacipRecord = new PrdMoTaskDefectRecord(); @@ -883,7 +884,7 @@ namespace Tnb.ProductionMgr //await db.Insertable(sacipRecord).ExecuteCommandAsync(); //根据工单号获取当前工单包含的已排产数 - var schedQty = _db.Queryable().Where(it => it.mo_id == input.mo_id)?.Sum(d => d.scheduled_qty); + int? schedQty = _db.Queryable().Where(it => it.mo_id == input.mo_id)?.Sum(d => d.scheduled_qty); // if (mo != null) // {//判断如果当前 工单的已排产数大于工单计划数量则更新工单状态为 已排产 // if (schedQty.HasValue && schedQty.Value >= mo.plan_qty) @@ -903,23 +904,18 @@ namespace Tnb.ProductionMgr if (mo != null) { - if (mo.scheduled_qty == null) - { - await _db.Updateable() + _ = mo.scheduled_qty == null + ? await _db.Updateable() .SetColumns(x => x.mo_status == DictConst.AlreadyId) .SetColumns(x => x.scheduled_qty == input.scheduled_qty) .Where(x => x.id == mo.id) - .ExecuteCommandAsync(); - } - else - { - await _db.Updateable().SetColumns(x => x.scheduled_qty == x.scheduled_qty + input.scheduled_qty) + .ExecuteCommandAsync() + : await _db.Updateable().SetColumns(x => x.scheduled_qty == x.scheduled_qty + input.scheduled_qty) .Where(x => x.id == mo.id) .ExecuteCommandAsync(); - } } - var subTaskList = await _db.Queryable() + List subTaskList = await _db.Queryable() .LeftJoin((a, b) => a.id == b.mbom_id) .LeftJoin((a, b, c) => a.route_id == c.id) // .LeftJoin((a, b, c, d) => b.process_id == d.process_id && c.id == d.route_id) @@ -949,24 +945,26 @@ namespace Tnb.ProductionMgr List subMoTasks = new(); List subMoTaskLogs = new(); - foreach (var item in subTaskList) + foreach (SubBomListOutput? item in subTaskList) { BasMbomProcess basMbomProcess = await _db.Queryable().SingleAsync(x => x.id == item.mbom_process_id); - List mbomProcessStationIds = JsonConvert.DeserializeObject(basMbomProcess.station).Select(x => x[x.Length - 1]).ToList(); + List mbomProcessStationIds = JsonConvert.DeserializeObject(basMbomProcess.station).Select(x => x[^1]).ToList(); List? resultList = workstationIds.Intersect(mbomProcessStationIds).ToList(); - PrdMoTask subMoTask = new(); - subMoTask.mo_id = input.mo_id; - subMoTask.material_id = item.material_id; - subMoTask.schedule_type = 2; - subMoTask.parent_id = moTask.id; - subMoTask.bom_id = input.bom_id; - subMoTask.process_id = item.process_id; - subMoTask.mbom_process_id = item.mbom_process_id; - subMoTask.workstation_id = resultList?.FirstOrDefault() ?? ""; - subMoTask.mo_task_status = DictConst.ToBeScheduledEncode; - subMoTask.workroute_id = item.route_id; - subMoTask.workline_id = input.workline_id; + PrdMoTask subMoTask = new() + { + mo_id = input.mo_id, + material_id = item.material_id, + schedule_type = 2, + parent_id = moTask.id, + bom_id = input.bom_id, + process_id = item.process_id, + mbom_process_id = item.mbom_process_id, + workstation_id = resultList?.FirstOrDefault() ?? "", + mo_task_status = DictConst.ToBeScheduledEncode, + workroute_id = item.route_id, + workline_id = input.workline_id + }; subMoTask.material_id = item.material_id; subMoTask.scheduled_qty = input.scheduled_qty; subMoTask.process_task_qty = item.output_qty * moTask.scheduled_qty; @@ -976,8 +974,8 @@ namespace Tnb.ProductionMgr subMoTask.create_time = DateTime.Now; subMoTasks.Add(subMoTask); - var subTaskLog = new PrdTaskLog(); - var subMaterial = await _db.Queryable().SingleAsync(x => x.id == item.material_id); + PrdTaskLog subTaskLog = new(); + BasMaterial? subMaterial = await _db.Queryable().SingleAsync(x => x.id == item.material_id); subTaskLog.id = SnowflakeIdHelper.NextId(); subTaskLog.mo_code = (await _db.Queryable().FirstAsync(it => it.id == input.mo_id))?.mo_code!; subTaskLog.item_code = subMaterial?.code!; @@ -1000,7 +998,7 @@ namespace Tnb.ProductionMgr } } row = await _db.Insertable(subMoTasks).ExecuteCommandAsync(); - await _db.Insertable(subMoTaskLogs).ExecuteCommandAsync(); + _ = await _db.Insertable(subMoTaskLogs).ExecuteCommandAsync(); } await _db.Ado.CommitTranAsync(); } @@ -1022,7 +1020,7 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task PrdTaskRelease(PrdTaskReleaseUpInput input) { - var row = -1; + int row = -1; if (input is null) { throw new ArgumentNullException(nameof(input)); @@ -1038,19 +1036,23 @@ namespace Tnb.ProductionMgr //var taskList = await _db.Queryable().Where(it => input.TaskIds.Contains(it.id) && it.mo_task_status == DictConst.ToBeScheduledEncode).ToListAsync(); //if (taskList?.Count > 0) { - string SetTaskStatus(PrdTaskBehavior behavior) => behavior switch + static string SetTaskStatus(PrdTaskBehavior behavior) { - PrdTaskBehavior.Release => DictConst.ToBeStartedEnCode, - PrdTaskBehavior.Start => DictConst.InProgressEnCode, - PrdTaskBehavior.Closed => DictConst.ClosedEnCode, - PrdTaskBehavior.Compled => DictConst.ComplatedEnCode, - PrdTaskBehavior.Pause => DictConst.MoStatusPauseCode, - _ => throw new NotImplementedException(), - }; + return behavior switch + { + PrdTaskBehavior.Release => DictConst.ToBeStartedEnCode, + PrdTaskBehavior.Start => DictConst.InProgressEnCode, + PrdTaskBehavior.Closed => DictConst.ClosedEnCode, + PrdTaskBehavior.Compled => DictConst.ComplatedEnCode, + PrdTaskBehavior.Pause => DictConst.MoStatusPauseCode, + _ => throw new NotImplementedException(), + }; + } + PrdTaskBehavior behavior = input.Behavior.ToEnum(); - var status = SetTaskStatus(behavior); - var db = _repository.AsSugarClient(); - var list = await db.Queryable().Where(it => input.TaskIds.Contains(it.id)).Select(it => it).ToListAsync(); + string status = SetTaskStatus(behavior); + ISqlSugarClient db = _repository.AsSugarClient(); + List? list = await db.Queryable().Where(it => input.TaskIds.Contains(it.id)).Select(it => it).ToListAsync(); if (behavior == PrdTaskBehavior.Compled) { // if (list?.Count > 0) @@ -1074,27 +1076,29 @@ namespace Tnb.ProductionMgr - var taskReportLogs = new List(); - var prdTaskList = await db.Queryable().Where(it => input.TaskIds.Contains(it.id)).ToListAsync(); + List taskReportLogs = new(); + List prdTaskList = await db.Queryable().Where(it => input.TaskIds.Contains(it.id)).ToListAsync(); if (prdTaskList?.Count > 0) { #region 质检模块 //质检 if (prdTaskList.Where(p => p.mo_task_status == "Pause").Count() > 0 && status == "InProgress") { - foreach (var task in prdTaskList.Where(p => p.mo_task_status == "Pause").ToList()) + foreach (PrdMoTask? task in prdTaskList.Where(p => p.mo_task_status == "Pause").ToList()) { - TriggerPlanEntity entity = new TriggerPlanEntity(); - entity.materialid = task.material_id; - entity.processid = task.process_id; - entity.workid = task.workstation_id; - entity.triggerevent = EnumTriggerEvent.首件检生产任务暂停; + TriggerPlanEntity entity = new() + { + materialid = task.material_id, + processid = task.process_id, + workid = task.workstation_id, + triggerevent = EnumTriggerEvent.首件检生产任务暂停 + }; await _qcCheckPlanService.CreateTask(entity); } } #endregion - foreach (var item in prdTaskList) + foreach (PrdMoTask item in prdTaskList) { switch (behavior) { @@ -1110,7 +1114,7 @@ namespace Tnb.ProductionMgr throw Oops.Bah("已开始的不能再开始"); } - if (item.mo_task_status != DictConst.ToBeStartedEnCode && item.mo_task_status != DictConst.MoStatusPauseCode) + if (item.mo_task_status is not DictConst.ToBeStartedEnCode and not DictConst.MoStatusPauseCode) { throw Oops.Bah("状态错误无法开始"); } @@ -1130,7 +1134,7 @@ namespace Tnb.ProductionMgr { throw Oops.Bah("已完成的不能再完成"); } - if (item.mo_task_status != DictConst.InProgressEnCode && item.mo_task_status != DictConst.MoStatusPauseCode) + if (item.mo_task_status is not DictConst.InProgressEnCode and not DictConst.MoStatusPauseCode) { throw Oops.Bah("状态错误无法完成"); } @@ -1154,15 +1158,18 @@ namespace Tnb.ProductionMgr prdTaskList.ForEach(x => x.act_end_date = DateTime.Now); } row = await db.Updateable(prdTaskList).ExecuteCommandAsync(); - foreach (var item in prdTaskList) + foreach (PrdMoTask item in prdTaskList) { - if (string.IsNullOrEmpty(item.parent_id)) continue; + if (string.IsNullOrEmpty(item.parent_id)) + { + continue; + } //子任务所有状态相同才修改父任务状态 int count1 = await db.Queryable().CountAsync(y => y.parent_id == item.parent_id); int count2 = await db.Queryable().CountAsync(y => y.parent_id == item.parent_id && y.mo_task_status == status); if (count1 == count2) { - await db.Updateable().SetColumns(x => x.mo_task_status == status) + _ = await db.Updateable().SetColumns(x => x.mo_task_status == status) .Where(x => x.id == item.parent_id).ExecuteCommandAsync(); } } @@ -1174,10 +1181,10 @@ namespace Tnb.ProductionMgr if (row > 0) { //更新子任务 - var subMoTaskList = await db.Queryable().Where(it => input.TaskIds.Contains(it.parent_id)).ToListAsync(); + List subMoTaskList = await db.Queryable().Where(it => input.TaskIds.Contains(it.parent_id)).ToListAsync(); if (subMoTaskList?.Count > 0) { - var subTaskIds = subMoTaskList.Select(it => it.id).ToList(); + List subTaskIds = subMoTaskList.Select(it => it.id).ToList(); row = await db.Updateable() .SetColumns(it => new PrdMoTask { mo_task_status = status }) .Where(it => subTaskIds.Contains(it.id)) @@ -1189,18 +1196,20 @@ namespace Tnb.ProductionMgr } } //插入操作记录日志 - var prdMOTasks = await _db.Queryable().Where(it => input.TaskIds.Contains(it.id) && string.IsNullOrEmpty(it.parent_id)).ToListAsync(); + List prdMOTasks = await _db.Queryable().Where(it => input.TaskIds.Contains(it.id) && string.IsNullOrEmpty(it.parent_id)).ToListAsync(); if (prdMOTasks?.Count > 0) { List taskLogEntities = new(); - foreach (var taskId in input.TaskIds) + foreach (string taskId in input.TaskIds) { - var taskLog = await db.Queryable().FirstAsync(it => it.mo_task_id == taskId); + PrdTaskLog? taskLog = await db.Queryable().FirstAsync(it => it.mo_task_id == taskId); if (taskLog is null) { - var taskItem = list?.Find(x => x.id == taskId); - taskLog = new PrdTaskLog(); - taskLog.id = SnowflakeIdHelper.NextId(); + PrdMoTask? taskItem = list?.Find(x => x.id == taskId); + taskLog = new PrdTaskLog + { + id = SnowflakeIdHelper.NextId() + }; if (taskItem != null) { if (taskItem.mo_id!.IsNotEmptyOrNull()) @@ -1217,7 +1226,7 @@ namespace Tnb.ProductionMgr } if (taskItem.material_id!.IsNotEmptyOrNull()) { - var material = await db.Queryable().FirstAsync(it => it.id == taskItem.material_id); + BasMaterial? material = await db.Queryable().FirstAsync(it => it.id == taskItem.material_id); taskLog.item_code = material?.code!; taskLog.item_standard = material?.material_standard!; } @@ -1231,7 +1240,7 @@ namespace Tnb.ProductionMgr } else { - var records = await db.Queryable().Where(it => it.mo_task_id == taskLog.mo_task_id).ToListAsync(); + List records = await db.Queryable().Where(it => it.mo_task_id == taskLog.mo_task_id).ToListAsync(); if (records != null && !records.Select(x => x.status).Contains(status)) { taskLog.id = SnowflakeIdHelper.NextId(); @@ -1249,12 +1258,12 @@ namespace Tnb.ProductionMgr List prdTaskDefectLogs = new(); if (taskReportLogs?.Count > 0) { - foreach (var taskInfo in taskReportLogs) + foreach (PrdMoTask taskInfo in taskReportLogs) { //组装生产提报对象 - var material = (await db.Queryable().FirstAsync(it => it.id == taskInfo.material_id)); - var mo = await db.Queryable().FirstAsync(it => it.id == taskInfo.mo_id); - var record = taskInfo.Adapt(); + BasMaterial? material = await db.Queryable().FirstAsync(it => it.id == taskInfo.material_id); + PrdMo? mo = await db.Queryable().FirstAsync(it => it.id == taskInfo.mo_id); + PrdReportRecord record = taskInfo.Adapt(); record.id = SnowflakeIdHelper.NextId(); record.masterial_code = material?.code; record.masterial_name = material?.name; @@ -1269,39 +1278,41 @@ namespace Tnb.ProductionMgr prdReportLogs.Add(record); //组装自检报废对象 - var sacipRecord = new PrdMoTaskDefectRecord(); - sacipRecord.id = SnowflakeIdHelper.NextId(); - sacipRecord.material_code = material?.code!; - sacipRecord.material_name = material?.name!; - sacipRecord.eqp_code = (await db.Queryable().FirstAsync(it => it.id == taskInfo.eqp_id))?.code!; - sacipRecord.mold_name = (await db.Queryable().FirstAsync(it => it.id == taskInfo.mold_id))?.mold_name!; - sacipRecord.estimated_start_date = taskInfo.estimated_start_date; - sacipRecord.estimated_end_date = taskInfo.estimated_end_date; - sacipRecord.plan_qty = taskInfo.plan_qty; - sacipRecord.scrap_qty = taskInfo.scrap_qty.HasValue ? taskInfo.scrap_qty.Value : 0; - sacipRecord.status = taskInfo.mo_task_status; - sacipRecord.create_id = _userManager.UserId; - sacipRecord.create_time = DateTime.Now; - sacipRecord.mo_task_id = taskInfo.id; - sacipRecord.mo_task_code = taskInfo.mo_task_code; - sacipRecord.mo_task_type = mo?.mo_type; + PrdMoTaskDefectRecord sacipRecord = new() + { + id = SnowflakeIdHelper.NextId(), + material_code = material?.code!, + material_name = material?.name!, + eqp_code = (await db.Queryable().FirstAsync(it => it.id == taskInfo.eqp_id))?.code!, + mold_name = (await db.Queryable().FirstAsync(it => it.id == taskInfo.mold_id))?.mold_name!, + estimated_start_date = taskInfo.estimated_start_date, + estimated_end_date = taskInfo.estimated_end_date, + plan_qty = taskInfo.plan_qty, + scrap_qty = taskInfo.scrap_qty.HasValue ? taskInfo.scrap_qty.Value : 0, + status = taskInfo.mo_task_status, + create_id = _userManager.UserId, + create_time = DateTime.Now, + mo_task_id = taskInfo.id, + mo_task_code = taskInfo.mo_task_code, + mo_task_type = mo?.mo_type + }; sacipRecord.status = taskInfo.mo_task_status; prdTaskDefectLogs.Add(sacipRecord); } } - var reportTaskIds = prdReportLogs.Select(it => it.mo_task_id).ToList(); + List reportTaskIds = prdReportLogs.Select(it => it.mo_task_id).ToList(); if (reportTaskIds?.Count > 0) { - var items = await db.Queryable().Where(it => reportTaskIds.Contains(it.mo_task_id)).ToListAsync(); + List items = await db.Queryable().Where(it => reportTaskIds.Contains(it.mo_task_id)).ToListAsync(); if (items == null || items.Count < 1) { row = await db.Insertable(prdReportLogs).ExecuteCommandAsync(); } } - var defectTaskIds = prdTaskDefectLogs.Select(it => it.mo_task_id).ToList(); + List defectTaskIds = prdTaskDefectLogs.Select(it => it.mo_task_id).ToList(); if (defectTaskIds?.Count > 0) { - var items = await db.Queryable().Where(it => defectTaskIds.Contains(it.mo_task_id)).ToListAsync(); + List items = await db.Queryable().Where(it => defectTaskIds.Contains(it.mo_task_id)).ToListAsync(); if (items == null || items.Count < 1) { row = await db.Insertable(prdTaskDefectLogs).ExecuteCommandAsync(); @@ -1311,7 +1322,7 @@ namespace Tnb.ProductionMgr } //else // throw new AppFriendlyException("只有待下发状态的任务才可下发", 500); - return (row > 0); + return row > 0; } /// @@ -1323,18 +1334,21 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task IcmoModify(IcmoUpInput input) { - var row = -1; - var db = _repository.AsSugarClient(); + int row = -1; + ISqlSugarClient db = _repository.AsSugarClient(); if (input.icmo_id.IsNullOrWhiteSpace()) + { throw new ArgumentNullException(nameof(input.icmo_id)); - var icmoItem = await db.Queryable().FirstAsync(it => it.id == input.icmo_id); + } + + PrdMoTask? icmoItem = await db.Queryable().FirstAsync(it => it.id == input.icmo_id); switch (input.category) { case 1: //设备 if (icmoItem != null) { - var eqpItem = await db.Queryable().FirstAsync(it => it.id == icmoItem.eqp_id); + EqpEquipment eqpItem = await db.Queryable().FirstAsync(it => it.id == icmoItem.eqp_id); icmoItem.eqp_id = eqpItem.id; icmoItem.eqp_type_code = db.Queryable().First(it => it.id == eqpItem.equip_type_id)?.code!; //if (input.scheduled_qty > icmoItem.plan_qty) @@ -1348,7 +1362,7 @@ namespace Tnb.ProductionMgr case 2: //模具 if (icmoItem != null) { - var moldItem = await db.Queryable().FirstAsync(it => it.id == icmoItem.mold_id); + ToolMolds moldItem = await db.Queryable().FirstAsync(it => it.id == icmoItem.mold_id); icmoItem.mold_id = moldItem.id; icmoItem.mold_code = moldItem.mold_code; icmoItem.mold_name = moldItem.mold_name; @@ -1357,7 +1371,7 @@ namespace Tnb.ProductionMgr break; } row = await db.Updateable(icmoItem).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); - return (row > 0); + return row > 0; } // /// @@ -1427,15 +1441,15 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task PrdReport(PrdReportCrInput input) { - var db = _repository.AsSugarClient(); - var prdMoTask = await db.Queryable().SingleAsync(x => x.id == input.mo_task_id); - var equip = await db.Queryable().SingleAsync(x => x.id == prdMoTask.eqp_id); - var report = await db.Queryable().FirstAsync(it => it.mo_task_id == input.mo_task_id); + ISqlSugarClient db = _repository.AsSugarClient(); + PrdMoTask? prdMoTask = await db.Queryable().SingleAsync(x => x.id == input.mo_task_id); + EqpEquipment equip = await db.Queryable().SingleAsync(x => x.id == prdMoTask.eqp_id); + PrdReport report = await db.Queryable().FirstAsync(it => it.mo_task_id == input.mo_task_id); DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { - var row = -1; - var prdMo = await db.Queryable().SingleAsync(x => x.id == prdMoTask.mo_id); - var mbomProcess = await db.Queryable().SingleAsync(x => x.id == prdMoTask.mbom_process_id); + int row = -1; + PrdMo prdMo = await db.Queryable().SingleAsync(x => x.id == prdMoTask.mo_id); + BasMbomProcess? mbomProcess = await db.Queryable().SingleAsync(x => x.id == prdMoTask.mbom_process_id); if (prdMoTask.mo_task_status == DictConst.MoStatusPauseCode) { @@ -1444,10 +1458,10 @@ namespace Tnb.ProductionMgr if ((prdMoTask.reported_work_qty ?? 0) + input.reported_qty > prdMoTask.scheduled_qty) { - var config1 = await db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.IS_SURPASS); + BasFactoryConfig config1 = await db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.IS_SURPASS); if (config1?.value == "1") { - var config2 = await db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.IS_SURPASS_PERCENTAGE); + BasFactoryConfig? config2 = await db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.IS_SURPASS_PERCENTAGE); if (!string.IsNullOrEmpty(config2?.value)) { if ((prdMoTask.reported_work_qty ?? 0) + input.reported_qty > prdMoTask.scheduled_qty * (100 + Convert.ToDecimal(config2?.value ?? "1")) / 100) @@ -1488,61 +1502,48 @@ namespace Tnb.ProductionMgr #region 质检模块 //质检模块 - TriggerPlanEntity entity = new TriggerPlanEntity(); - entity.materialid = prdMoTask.material_id; - entity.processid = prdMoTask.process_id; - entity.workid = prdMoTask.workstation_id; - var reported = prdMoTask.reported_work_qty == null ? 0 : prdMoTask.reported_work_qty; - var scrap = prdMoTask.scrap_qty == null ? 0 : prdMoTask.scrap_qty; + TriggerPlanEntity entity = new() + { + materialid = prdMoTask.material_id, + processid = prdMoTask.process_id, + workid = prdMoTask.workstation_id + }; + int? reported = prdMoTask.reported_work_qty == null ? 0 : prdMoTask.reported_work_qty; + int? scrap = prdMoTask.scrap_qty == null ? 0 : prdMoTask.scrap_qty; entity.oldpronum = reported + scrap; entity.newpronum = input.reported_qty; entity.triggerevent = EnumTriggerEvent.生产检定量; await _qcCheckPlanService.CreateTask(entity); #endregion - if (prdMoTask.reported_work_qty == null) - { - await db.Updateable() + _ = prdMoTask.reported_work_qty == null + ? await db.Updateable() // .SetColumns(x => x.complete_qty == x.complete_qty + input.reported_qty) .SetColumns(x => x.reported_work_qty == input.reported_qty) // .SetColumnsIF(flag,x=>x.mo_task_status==DictConst.ComplatedEnCode) - .Where(x => x.id == input.mo_task_id).ExecuteCommandAsync(); - } - else - { - await db.Updateable() + .Where(x => x.id == input.mo_task_id).ExecuteCommandAsync() + : await db.Updateable() // .SetColumns(x => x.complete_qty == x.complete_qty + input.reported_qty) .SetColumns(x => x.reported_work_qty == x.reported_work_qty + input.reported_qty) // .SetColumnsIF(flag,x=>x.mo_task_status==DictConst.ComplatedEnCode) .Where(x => x.id == input.mo_task_id).ExecuteCommandAsync(); - } if (prdMoTask.schedule_type == 1) { - if (prdMo.reported_work_qty == null) - { - await db.Updateable() + _ = prdMo.reported_work_qty == null + ? await db.Updateable() .SetColumns(x => x.reported_work_qty == input.reported_qty) - .Where(x => x.id == prdMo.id).ExecuteCommandAsync(); - } - else - { - await db.Updateable() + .Where(x => x.id == prdMo.id).ExecuteCommandAsync() + : await db.Updateable() .SetColumns(x => x.reported_work_qty == x.reported_work_qty + input.reported_qty) .Where(x => x.id == prdMo.id).ExecuteCommandAsync(); - } - if (prdMo.complete_qty == null) - { - await db.Updateable() + _ = prdMo.complete_qty == null + ? await db.Updateable() .SetColumns(x => x.complete_qty == input.reported_qty) - .Where(x => x.id == prdMo.id).ExecuteCommandAsync(); - } - else - { - await db.Updateable() + .Where(x => x.id == prdMo.id).ExecuteCommandAsync() + : await db.Updateable() .SetColumns(x => x.complete_qty == x.complete_qty + input.reported_qty) .Where(x => x.id == prdMo.id).ExecuteCommandAsync(); - } PerProcessStandardsH processStandardsH = await db.Queryable() .Where(x => x.equip_id == prdMoTask.eqp_id && x.molds_id == prdMoTask.mold_id && @@ -1553,11 +1554,11 @@ namespace Tnb.ProductionMgr if (toolMolds != null && toolMolds?.mold_cavity > 0 && processStandardsH != null && processStandardsH?.moulding_cycle > 0) { - decimal? addTime = ((prdMoTask.scheduled_qty - input.reported_qty - (prdMoTask.scrap_qty ?? 0)) * processStandardsH?.moulding_cycle - 1) / toolMolds.mold_cavity + 1; + decimal? addTime = ((((prdMoTask.scheduled_qty - input.reported_qty - (prdMoTask.scrap_qty ?? 0)) * processStandardsH?.moulding_cycle) - 1) / toolMolds.mold_cavity) + 1; if (prdMoTask.act_start_date != null && addTime != null && addTime > 0) { DateTime cal_plan_end_date = prdMoTask.act_start_date.Value.AddSeconds((double)addTime); - await db.Updateable() + _ = await db.Updateable() .SetColumns(x => x.plan_end_date == cal_plan_end_date) .Where(x => x.id == input.mo_task_id).ExecuteCommandAsync(); } @@ -1568,50 +1569,40 @@ namespace Tnb.ProductionMgr { if (mbomProcess.is_last == 1 && prdMoTask != null && !string.IsNullOrEmpty(prdMoTask.parent_id)) { - var parentMoTask = await db.Queryable().SingleAsync(x => x.id == prdMoTask.parent_id); + PrdMoTask parentMoTask = await db.Queryable().SingleAsync(x => x.id == prdMoTask.parent_id); if (parentMoTask?.last_process_complete_qty == null) { - await db.Updateable() + _ = await db.Updateable() .SetColumns(x => x.last_process_complete_qty == input.reported_qty) // .SetColumnsIF(flag,x=>x.mo_task_status==DictConst.ComplatedEnCode) .Where(x => x.id == prdMoTask.parent_id).ExecuteCommandAsync(); } else if (parentMoTask?.last_process_complete_qty != null) { - await db.Updateable() + _ = await db.Updateable() .SetColumns(x => x.last_process_complete_qty == x.last_process_complete_qty + input.reported_qty) // .SetColumnsIF(flag,x=>x.mo_task_status==DictConst.ComplatedEnCode) .Where(x => x.id == prdMoTask.parent_id).ExecuteCommandAsync(); } - if (prdMo.reported_work_qty == null) - { - await db.Updateable() + _ = prdMo.reported_work_qty == null + ? await db.Updateable() .SetColumns(x => x.reported_work_qty == input.reported_qty) - .Where(x => x.id == prdMo.id).ExecuteCommandAsync(); - } - else - { - await db.Updateable() + .Where(x => x.id == prdMo.id).ExecuteCommandAsync() + : await db.Updateable() .SetColumns(x => x.reported_work_qty == x.reported_work_qty + input.reported_qty) .Where(x => x.id == prdMo.id).ExecuteCommandAsync(); - } - if (prdMo.complete_qty == null) - { - await db.Updateable() + _ = prdMo.complete_qty == null + ? await db.Updateable() .SetColumns(x => x.complete_qty == input.reported_qty) - .Where(x => x.id == prdMo.id).ExecuteCommandAsync(); - } - else - { - await db.Updateable() + .Where(x => x.id == prdMo.id).ExecuteCommandAsync() + : await db.Updateable() .SetColumns(x => x.complete_qty == x.complete_qty + input.reported_qty) .Where(x => x.id == prdMo.id).ExecuteCommandAsync(); - } } - var list = await db.Queryable() + List list = await db.Queryable() .LeftJoin((a, b) => a.process_id == b.process_id && b.enabled == 1) .Where((a, b) => a.process_id == prdMoTask.process_id).Select((a, b) => b).ToListAsync(); @@ -1620,18 +1611,18 @@ namespace Tnb.ProductionMgr if (prdMoTask.act_start_date != null && addTime != null && addTime > 0) { DateTime cal_plan_end_date = prdMoTask.act_start_date.Value.AddSeconds((double)addTime); - await db.Updateable() + _ = await db.Updateable() .SetColumns(x => x.plan_end_date == cal_plan_end_date) .Where(x => x.id == input.mo_task_id).ExecuteCommandAsync(); } } - var master = await db.Queryable().FirstAsync(it => it.mo_task_id == input.mo_task_id); + PrdReportRecord master = await db.Queryable().FirstAsync(it => it.mo_task_id == input.mo_task_id); if (master != null) { master.reported_work_qty += input.reported_qty; master.completed_qty += input.reported_qty; - await db.Updateable(master).ExecuteCommandAsync(); + _ = await db.Updateable(master).ExecuteCommandAsync(); } @@ -1721,13 +1712,11 @@ namespace Tnb.ProductionMgr if (equip.tube == "1") { string resultMsg = await _prdInstockService.InstockTubeOne(report); - if (resultMsg == "true") return true; - throw Oops.Bah(resultMsg); + return resultMsg == "true" ? (dynamic)true : throw Oops.Bah(resultMsg); } } - if (!result.IsSuccess) throw Oops.Bah(result.ErrorMessage); - return result.IsSuccess; + return !result.IsSuccess ? throw Oops.Bah(result.ErrorMessage) : (dynamic)result.IsSuccess; } /// @@ -1758,94 +1747,88 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task SelfTestScrapped(SelfTestScrappedInput input) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); if (await db.Queryable().AnyAsync(x => x.id == input.mo_task_id && x.mo_task_status == DictConst.MoStatusPauseCode)) { throw Oops.Bah("暂停的任务单无法报废"); } - var result = await db.Ado.UseTranAsync(async () => + DbResult result = await db.Ado.UseTranAsync(async () => { List destDefects = new(); - var batch = DateTime.Now.ToString("yyyyMMddHHmmss"); - var prdMoTask = await db.Queryable().SingleAsync(x => x.id == input.mo_task_id); + string batch = DateTime.Now.ToString("yyyyMMddHHmmss"); + PrdMoTask prdMoTask = await db.Queryable().SingleAsync(x => x.id == input.mo_task_id); - foreach (var categoryItem in input.categoryItems) + foreach (SelfTestScrappedInputItem categoryItem in input.categoryItems) { - foreach (var dItem in categoryItem.items) + foreach (defectItem dItem in categoryItem.items) { - var defect = new PrdMoTaskDefect(); - defect.id = SnowflakeIdHelper.NextId(); - defect.mo_task_id = input.mo_task_id; - defect.batch = batch; - defect.defective_cagetory_id = categoryItem.category_id; - defect.defective_item = dItem.defective_item; - defect.defective_item_qty = dItem.defective_item_qty; - defect.create_id = _userManager.UserId; - defect.scrap_qty = input.scrap_qty; + PrdMoTaskDefect defect = new() + { + id = SnowflakeIdHelper.NextId(), + mo_task_id = input.mo_task_id, + batch = batch, + defective_cagetory_id = categoryItem.category_id, + defective_item = dItem.defective_item, + defective_item_qty = dItem.defective_item_qty, + create_id = _userManager.UserId, + scrap_qty = input.scrap_qty + }; destDefects.Add(defect); } } - await db.Insertable(destDefects).ExecuteCommandAsync(); + _ = await db.Insertable(destDefects).ExecuteCommandAsync(); - var scrapQty = db.Queryable().Where(it => it.mo_task_id == input.mo_task_id)?.Sum(d => d.defective_item_qty); + int? scrapQty = db.Queryable().Where(it => it.mo_task_id == input.mo_task_id)?.Sum(d => d.defective_item_qty); if (scrapQty.HasValue && scrapQty.Value > 0)//更新生产任务表报废数量 { #region 质检模块 //质检模块 - TriggerPlanEntity entity = new TriggerPlanEntity(); - entity.materialid = prdMoTask.material_id; - entity.processid = prdMoTask.process_id; - entity.workid = prdMoTask.workstation_id; - var reported = prdMoTask.reported_work_qty == null ? 0 : prdMoTask.reported_work_qty; - var scrap = prdMoTask.scrap_qty == null ? 0 : prdMoTask.scrap_qty; + TriggerPlanEntity entity = new() + { + materialid = prdMoTask.material_id, + processid = prdMoTask.process_id, + workid = prdMoTask.workstation_id + }; + int? reported = prdMoTask.reported_work_qty == null ? 0 : prdMoTask.reported_work_qty; + int? scrap = prdMoTask.scrap_qty == null ? 0 : prdMoTask.scrap_qty; entity.oldpronum = reported + scrap; entity.newpronum = input.scrap_qty; entity.triggerevent = EnumTriggerEvent.生产检定量; await _qcCheckPlanService.CreateTask(entity); #endregion - await db.Updateable().SetColumns(it => new PrdMoTask { scrap_qty = scrapQty.Value }).Where(it => it.id == input.mo_task_id).ExecuteCommandAsync(); + _ = await db.Updateable().SetColumns(it => new PrdMoTask { scrap_qty = scrapQty.Value }).Where(it => it.id == input.mo_task_id).ExecuteCommandAsync(); } - var defectRecord = await db.Queryable().FirstAsync(it => it.mo_task_id == input.mo_task_id); + PrdMoTaskDefectRecord defectRecord = await db.Queryable().FirstAsync(it => it.mo_task_id == input.mo_task_id); if (defectRecord != null) { defectRecord.scrap_qty += input.scrap_qty; - await db.Updateable(defectRecord).ExecuteCommandAsync(); + _ = await db.Updateable(defectRecord).ExecuteCommandAsync(); } - var reportMaster = await db.Queryable().FirstAsync(it => it.mo_task_id == input.mo_task_id); - var prdMo = await db.Queryable().SingleAsync(x => x.id == prdMoTask.mo_id); + PrdReportRecord reportMaster = await db.Queryable().FirstAsync(it => it.mo_task_id == input.mo_task_id); + PrdMo prdMo = await db.Queryable().SingleAsync(x => x.id == prdMoTask.mo_id); - if (prdMo.reported_work_qty == null) - { - await db.Updateable() + _ = prdMo.reported_work_qty == null + ? await db.Updateable() .SetColumns(x => x.scrap_qty == input.scrap_qty) - .Where(x => x.id == prdMo.id).ExecuteCommandAsync(); - } - else - { - await db.Updateable() + .Where(x => x.id == prdMo.id).ExecuteCommandAsync() + : await db.Updateable() .SetColumns(x => x.scrap_qty == x.scrap_qty + input.scrap_qty) .Where(x => x.id == prdMo.id).ExecuteCommandAsync(); - } - if (prdMo.complete_qty == null) - { - await db.Updateable() + _ = prdMo.complete_qty == null + ? await db.Updateable() .SetColumns(x => x.complete_qty == input.scrap_qty) - .Where(x => x.id == prdMo.id).ExecuteCommandAsync(); - } - else - { - await db.Updateable() + .Where(x => x.id == prdMo.id).ExecuteCommandAsync() + : await db.Updateable() .SetColumns(x => x.complete_qty == x.complete_qty + input.scrap_qty) .Where(x => x.id == prdMo.id).ExecuteCommandAsync(); - } if (reportMaster != null) { reportMaster.completed_qty += input.scrap_qty; - await db.Updateable(reportMaster).ExecuteCommandAsync(); + _ = await db.Updateable(reportMaster).ExecuteCommandAsync(); } if (prdMoTask.schedule_type == 1) @@ -1859,11 +1842,11 @@ namespace Tnb.ProductionMgr if (toolMolds != null && toolMolds?.mold_cavity > 0 && processStandardsH != null && processStandardsH?.moulding_cycle > 0) { - decimal? addTime = ((prdMoTask.scheduled_qty - prdMoTask.reported_work_qty - input.scrap_qty) * processStandardsH?.moulding_cycle - 1) / toolMolds.mold_cavity + 1; + decimal? addTime = ((((prdMoTask.scheduled_qty - prdMoTask.reported_work_qty - input.scrap_qty) * processStandardsH?.moulding_cycle) - 1) / toolMolds.mold_cavity) + 1; if (prdMoTask.act_start_date != null && addTime != null && addTime > 0) { DateTime cal_plan_end_date = prdMoTask.act_start_date.Value.AddSeconds((double)addTime); - await db.Updateable() + _ = await db.Updateable() .SetColumns(x => x.plan_end_date == cal_plan_end_date) .Where(x => x.id == input.mo_task_id).ExecuteCommandAsync(); } @@ -1871,7 +1854,7 @@ namespace Tnb.ProductionMgr } else { - var list = await db.Queryable() + List list = await db.Queryable() .LeftJoin((a, b) => a.process_id == b.process_id && b.enabled == 1) .Where((a, b) => a.process_id == prdMoTask.process_id).Select((a, b) => b).ToListAsync(); @@ -1880,7 +1863,7 @@ namespace Tnb.ProductionMgr if (prdMoTask.act_start_date != null && addTime != null && addTime > 0) { DateTime cal_plan_end_date = prdMoTask.act_start_date.Value.AddSeconds((double)addTime); - await db.Updateable() + _ = await db.Updateable() .SetColumns(x => x.plan_end_date == cal_plan_end_date) .Where(x => x.id == input.mo_task_id).ExecuteCommandAsync(); } @@ -1892,13 +1875,16 @@ namespace Tnb.ProductionMgr /// /// 修改组装、包装,生产任务信息 /// - /// /// [HttpPost] public async Task UpdatePackMoTask(PackPrdTaskUpInput input) { - if (input == null) throw new ArgumentNullException("input"); - var row = await _db.Updateable().SetColumns(it => new PrdMoTask + if (input == null) + { + throw new ArgumentNullException("input"); + } + + int row = await _db.Updateable().SetColumns(it => new PrdMoTask { workline_id = input.workline_id, bom_id = input.bom_id, @@ -1917,54 +1903,69 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task GenSubMo(GenSubMoCrInput input) { - if (input is null) throw new ArgumentNullException("input"); - if (input.ids is null || input.ids.Count == 0) throw new ArgumentException($"{nameof(input.ids)} not be null or count zero"); - var curMo = await _db.Queryable().FirstAsync(it => it.id == input.mo_id); - if (curMo == null) throw new ArgumentNullException("创建子工单时的父工单不能为null"); + if (input is null) + { + throw new ArgumentNullException("input"); + } + if (input.ids is null || input.ids.Count == 0) + { + throw new ArgumentException($"{nameof(input.ids)} not be null or count zero"); + } + + PrdMo curMo = await _db.Queryable().FirstAsync(it => it.id == input.mo_id); + if (curMo == null) + { + throw new ArgumentNullException("创建子工单时的父工单不能为null"); + } var outMaterials = await _db.Queryable().InnerJoin((a, b) => a.id == b.mbom_id) .InnerJoin((a, b, c) => a.id == c.mbom_id && b.id == c.mbom_process_id) .Where((a, b, c) => a.id == input.bom_id && input.ids.Contains(b.process_id)) .Select((a, b, c) => new { - material_id = c.material_id, - num = c.num, + c.material_id, + c.num, }) .ToListAsync(); if (outMaterials?.Count > 0) { - var ids = outMaterials.Select(x => x.material_id).ToList(); - await _db.Deleteable().Where(it => it.parent_id == input.mo_id).ExecuteCommandAsync(); + List ids = outMaterials.Select(x => x.material_id).ToList(); + _ = await _db.Deleteable().Where(it => it.parent_id == input.mo_id).ExecuteCommandAsync(); if (ids?.Count > 0) { - var dicOutMaterialNum = outMaterials.DistinctBy(x => x.material_id).ToDictionary(x => x.material_id, x => x.num.ParseToInt()); + Dictionary dicOutMaterialNum = outMaterials.DistinctBy(x => x.material_id).ToDictionary(x => x.material_id, x => x.num.ParseToInt()); List subMoList = new(); - var outputMaterials = await _db.Queryable().Where(it => ids.Contains(it.id)).ToListAsync(); - foreach (var om in outputMaterials) + List outputMaterials = await _db.Queryable().Where(it => ids.Contains(it.id)).ToListAsync(); + foreach (BasMaterial om in outputMaterials) { - PrdMo subMo = new(); - subMo.material_id = om.id; - subMo.material_code = om.code; - subMo.plan_qty = dicOutMaterialNum.ContainsKey(om.id) ? dicOutMaterialNum[om.id] * curMo.plan_qty : 0; - subMo.mo_type = curMo.mo_type; - subMo.parent_id = curMo.id; - subMo.plan_start_date = curMo.plan_start_date; - subMo.plan_end_date = curMo.plan_end_date; - subMo.create_id = _userManager.UserId; - subMo.create_time = DateTime.Now; - subMo.mo_status = DictConst.WaitProductId; + PrdMo subMo = new() + { + material_id = om.id, + material_code = om.code, + plan_qty = dicOutMaterialNum.ContainsKey(om.id) ? dicOutMaterialNum[om.id] * curMo.plan_qty : 0, + mo_type = curMo.mo_type, + parent_id = curMo.id, + plan_start_date = curMo.plan_start_date, + plan_end_date = curMo.plan_end_date, + create_id = _userManager.UserId, + create_time = DateTime.Now, + mo_status = DictConst.WaitProductId + }; subMoList.Add(subMo); } //生成子工单编码 for (int i = 0; i < subMoList.Count; i++) { - var num = (i + 1).ToString().PadLeft(2, '0'); + string num = (i + 1).ToString().PadLeft(2, '0'); subMoList[i].mo_code = $"{curMo.mo_code}-{num}"; } - var row = await _db.Insertable(subMoList).ExecuteCommandAsync(); - if (row < 1) throw Oops.Oh(ErrorCode.COM1000); + int row = await _db.Insertable(subMoList).ExecuteCommandAsync(); + if (row < 1) + { + throw Oops.Oh(ErrorCode.COM1000); + } } } @@ -1973,17 +1974,17 @@ namespace Tnb.ProductionMgr #endregion - private static Dictionary dicProperties = new Dictionary(StringComparer.OrdinalIgnoreCase); - private static T DictionaryToObject(IDictionary dictionary) where T : class, new() + private static readonly Dictionary dicProperties = new(StringComparer.OrdinalIgnoreCase); + private static T DictionaryToObject(IDictionary dictionary) where T : class, new() { - var name = typeof(T).Name; + string name = typeof(T).Name; T instance = new(); if (!dicProperties.TryGetValue(name, out string[] properies)) { properies = instance.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public).Select(p => p.Name).ToArray(); dicProperties[name] = properies; } - foreach (var pn in properies) + foreach (string pn in properies) { if (dictionary.ContainsKey(pn)) { @@ -2039,19 +2040,19 @@ namespace Tnb.ProductionMgr private async Task GetList(VisualDevModelListQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); string moTaskCode = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : ""; string eqpId = queryJson.ContainsKey("eqp_id") ? queryJson["eqp_id"].ToString() : ""; - List worklineIds = new List(); - List equipIds = new List(); + List worklineIds = new(); + List equipIds = new(); if (!string.IsNullOrEmpty(eqpId)) { worklineIds = await db.Queryable().Where(x => x.ParentId == eqpId && x.Category == DictConst.RegionCategoryWorklineCode && x.DeleteMark == null).Select(x => x.Id).ToListAsync(); equipIds = await db.Queryable().Where(x => x.equip_type_id == eqpId).Select(x => x.id).ToListAsync(); } - var result = await db.Queryable() + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => c.EnCode == DictConst.TaskStatus) .LeftJoin((a, b, c, d) => @@ -2096,15 +2097,15 @@ namespace Tnb.ProductionMgr /// private async Task Delete(string id) { - var db = _repository.AsSugarClient(); - var result = await db.Ado.UseTranAsync(async () => + ISqlSugarClient db = _repository.AsSugarClient(); + DbResult result = await db.Ado.UseTranAsync(async () => { - var row = -1; - var prdTask = await db.Queryable().FirstAsync(it => it.id == id); + int row = -1; + PrdMoTask prdTask = await db.Queryable().FirstAsync(it => it.id == id); row = await db.Deleteable().Where(it => it.id == id).ExecuteCommandAsync(); if (row > 0) { - var prdMo = await db.Queryable().FirstAsync(it => it.id == prdTask.mo_id); + PrdMo? prdMo = await db.Queryable().FirstAsync(it => it.id == prdTask.mo_id); if (prdMo is not null) { prdMo.scheduled_qty += prdTask.scheduled_qty; @@ -2114,7 +2115,10 @@ namespace Tnb.ProductionMgr } return row > 0; }); - if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1002); + if (!result.IsSuccess) + { + throw Oops.Oh(ErrorCode.COM1002); + } } public async Task> GetListByEqpId(string eqpId) { @@ -2131,7 +2135,7 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task GetEstimatedEndTime(CountEstimatedEndTimeInput input) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); if (input.type == 1) { PerProcessStandardsH processStandardsH = await db.Queryable() @@ -2140,17 +2144,32 @@ namespace Tnb.ProductionMgr .OrderByDescending(x => x.create_time).FirstAsync(); ToolMolds toolMolds = await db.Queryable().SingleAsync(x => x.id == input.molds_id); - if (toolMolds == null) throw Oops.Bah("没找到模具"); - if (toolMolds?.mold_cavity <= 0) throw Oops.Bah("模穴数错误"); - if (processStandardsH == null) throw Oops.Bah("工艺标准成型周期错误"); - if (processStandardsH?.moulding_cycle <= 0) throw Oops.Bah("工艺标准成型周期错误"); + if (toolMolds == null) + { + throw Oops.Bah("没找到模具"); + } - decimal? addTime = (input.scheduled_qty * processStandardsH?.moulding_cycle - 1) / toolMolds.mold_cavity + 1; + if (toolMolds?.mold_cavity <= 0) + { + throw Oops.Bah("模穴数错误"); + } + + if (processStandardsH == null) + { + throw Oops.Bah("工艺标准成型周期错误"); + } + + if (processStandardsH?.moulding_cycle <= 0) + { + throw Oops.Bah("工艺标准成型周期错误"); + } + + decimal? addTime = (((input.scheduled_qty * processStandardsH?.moulding_cycle) - 1) / toolMolds.mold_cavity) + 1; return input.estimated_start_date.AddSeconds((double)addTime.Value).ToString("yyyy-MM-dd HH:mm:ss"); } else { - var list = await db.Queryable() + List list = await db.Queryable() .LeftJoin((a, b) => a.process_id == b.process_id && b.enabled == 1) .Where((a, b) => a.mbom_id == input.mbom_id).Select((a, b) => b).ToListAsync(); @@ -2165,7 +2184,6 @@ namespace Tnb.ProductionMgr /// /// 获取这个产线生产中的任务单 /// - /// /// [HttpPost] public async Task GetMoTaskByWorklineId(Dictionary dic) @@ -2182,43 +2200,43 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task ChangeEquip(ChangeEquipInput input) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); DbResult result = await db.Ado.UseTranAsync(async () => { - var moTask = await db.Queryable().SingleAsync(x => x.id == input.mo_task_id); + PrdMoTask moTask = await db.Queryable().SingleAsync(x => x.id == input.mo_task_id); if (moTask.eqp_id == input.equip_id) { throw new Exception("与原机台相同"); } - await db.Updateable().SetColumns(x => x.eqp_id == input.equip_id) + _ = await db.Updateable().SetColumns(x => x.eqp_id == input.equip_id) .Where(x => x.id == input.mo_task_id).ExecuteCommandAsync(); - var mo = await db.Queryable().SingleAsync(x => x.id == moTask.mo_id); - var material = await db.Queryable().SingleAsync(x => x.id == moTask.material_id); - var process = await db.Queryable().SingleAsync(x => x.id == moTask.process_id); - var taskLog = new PrdTaskLog(); - taskLog.id = SnowflakeIdHelper.NextId(); - taskLog.mo_code = mo?.mo_code!; - taskLog.eqp_code = (await db.Queryable().FirstAsync(it => it.id == input.equip_id))?.code!; - taskLog.mold_code = ""; - taskLog.item_code = material?.code!; - taskLog.item_standard = material?.material_standard!; - taskLog.status = "更换机台"; - taskLog.operator_name = _userManager.RealName; - taskLog.create_id = _userManager.UserId; - taskLog.create_time = DateTime.Now; - taskLog.mo_task_id = moTask.id; - taskLog.mo_task_code = moTask.mo_task_code; - taskLog.station_code = ""; - taskLog.process_code = process?.code; + PrdMo mo = await db.Queryable().SingleAsync(x => x.id == moTask.mo_id); + BasMaterial? material = await db.Queryable().SingleAsync(x => x.id == moTask.material_id); + BasMaterial process = await db.Queryable().SingleAsync(x => x.id == moTask.process_id); + PrdTaskLog taskLog = new() + { + id = SnowflakeIdHelper.NextId(), + mo_code = mo?.mo_code!, + eqp_code = (await db.Queryable().FirstAsync(it => it.id == input.equip_id))?.code!, + mold_code = "", + item_code = material?.code!, + item_standard = material?.material_standard!, + status = "更换机台", + operator_name = _userManager.RealName, + create_id = _userManager.UserId, + create_time = DateTime.Now, + mo_task_id = moTask.id, + mo_task_code = moTask.mo_task_code, + station_code = "", + process_code = process?.code + }; - await db.Insertable(taskLog).ExecuteCommandAsync(); + _ = await db.Insertable(taskLog).ExecuteCommandAsync(); }); - if (!result.IsSuccess) throw Oops.Bah(result.ErrorMessage); - return result.IsSuccess ? "更换成功" : result.ErrorMessage; - + return !result.IsSuccess ? throw Oops.Bah(result.ErrorMessage) : (dynamic)(result.IsSuccess ? "更换成功" : result.ErrorMessage); } /// @@ -2228,44 +2246,44 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task ChangeMold(ChangeMoldInput input) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); DbResult result = await db.Ado.UseTranAsync(async () => { - var moTask = await db.Queryable().SingleAsync(x => x.id == input.mo_task_id); + PrdMoTask moTask = await db.Queryable().SingleAsync(x => x.id == input.mo_task_id); if (moTask.mold_id == input.mold_id) { throw new Exception("与原模具相同"); } - await db.Updateable().SetColumns(x => x.mold_id == input.mold_id) + _ = await db.Updateable().SetColumns(x => x.mold_id == input.mold_id) .Where(x => x.id == input.mo_task_id).ExecuteCommandAsync(); - var mo = await db.Queryable().SingleAsync(x => x.id == moTask.mo_id); - var mold = await db.Queryable().SingleAsync(x => x.id == input.mold_id); - var material = await db.Queryable().SingleAsync(x => x.id == moTask.material_id); - var process = await db.Queryable().SingleAsync(x => x.id == moTask.process_id); - var taskLog = new PrdTaskLog(); - taskLog.id = SnowflakeIdHelper.NextId(); - taskLog.mo_code = mo?.mo_code!; - taskLog.eqp_code = ""; - taskLog.mold_code = mold?.mold_code; - taskLog.item_code = material?.code!; - taskLog.item_standard = material?.material_standard!; - taskLog.status = "更换模具"; - taskLog.operator_name = _userManager.RealName; - taskLog.create_id = _userManager.UserId; - taskLog.create_time = DateTime.Now; - taskLog.mo_task_id = moTask.id; - taskLog.mo_task_code = moTask.mo_task_code; - taskLog.station_code = ""; - taskLog.process_code = process?.code; + PrdMo mo = await db.Queryable().SingleAsync(x => x.id == moTask.mo_id); + ToolMolds mold = await db.Queryable().SingleAsync(x => x.id == input.mold_id); + BasMaterial? material = await db.Queryable().SingleAsync(x => x.id == moTask.material_id); + BasMaterial process = await db.Queryable().SingleAsync(x => x.id == moTask.process_id); + PrdTaskLog taskLog = new() + { + id = SnowflakeIdHelper.NextId(), + mo_code = mo?.mo_code!, + eqp_code = "", + mold_code = mold?.mold_code, + item_code = material?.code!, + item_standard = material?.material_standard!, + status = "更换模具", + operator_name = _userManager.RealName, + create_id = _userManager.UserId, + create_time = DateTime.Now, + mo_task_id = moTask.id, + mo_task_code = moTask.mo_task_code, + station_code = "", + process_code = process?.code + }; - await db.Insertable(taskLog).ExecuteCommandAsync(); + _ = await db.Insertable(taskLog).ExecuteCommandAsync(); }); - if (!result.IsSuccess) throw Oops.Bah(result.ErrorMessage); - return result.IsSuccess ? "更换成功" : result.ErrorMessage; - + return !result.IsSuccess ? throw Oops.Bah(result.ErrorMessage) : (dynamic)(result.IsSuccess ? "更换成功" : result.ErrorMessage); } /// @@ -2275,44 +2293,44 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task ChangeWorkline(ChangeWorklineInput input) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); DbResult result = await db.Ado.UseTranAsync(async () => { - var moTask = await db.Queryable().SingleAsync(x => x.id == input.mo_task_id); + PrdMoTask moTask = await db.Queryable().SingleAsync(x => x.id == input.mo_task_id); if (moTask.workline_id == input.workline_id) { throw new Exception("与原产线相同"); } - await db.Updateable().SetColumns(x => x.workline_id == input.workline_id) + _ = await db.Updateable().SetColumns(x => x.workline_id == input.workline_id) .Where(x => x.id == input.mo_task_id).ExecuteCommandAsync(); - var mo = await db.Queryable().SingleAsync(x => x.id == moTask.mo_id); - var material = await db.Queryable().SingleAsync(x => x.id == moTask.material_id); - var process = await db.Queryable().SingleAsync(x => x.id == moTask.process_id); - var taskLog = new PrdTaskLog(); - taskLog.id = SnowflakeIdHelper.NextId(); - taskLog.mo_code = mo?.mo_code!; - taskLog.eqp_code = ""; - taskLog.mold_code = ""; - taskLog.item_code = material?.code!; - taskLog.item_standard = material?.material_standard!; - taskLog.status = "更换产线"; - taskLog.operator_name = _userManager.RealName; - taskLog.create_id = _userManager.UserId; - taskLog.create_time = DateTime.Now; - taskLog.mo_task_id = moTask.id; - taskLog.mo_task_code = moTask.mo_task_code; - taskLog.station_code = ""; - taskLog.process_code = process?.code; + PrdMo mo = await db.Queryable().SingleAsync(x => x.id == moTask.mo_id); + BasMaterial? material = await db.Queryable().SingleAsync(x => x.id == moTask.material_id); + BasMaterial process = await db.Queryable().SingleAsync(x => x.id == moTask.process_id); + PrdTaskLog taskLog = new() + { + id = SnowflakeIdHelper.NextId(), + mo_code = mo?.mo_code!, + eqp_code = "", + mold_code = "", + item_code = material?.code!, + item_standard = material?.material_standard!, + status = "更换产线", + operator_name = _userManager.RealName, + create_id = _userManager.UserId, + create_time = DateTime.Now, + mo_task_id = moTask.id, + mo_task_code = moTask.mo_task_code, + station_code = "", + process_code = process?.code + }; - await db.Insertable(taskLog).ExecuteCommandAsync(); + _ = await db.Insertable(taskLog).ExecuteCommandAsync(); }); - if (!result.IsSuccess) throw Oops.Bah(result.ErrorMessage); - return result.IsSuccess ? "更换成功" : result.ErrorMessage; - + return !result.IsSuccess ? throw Oops.Bah(result.ErrorMessage) : (dynamic)(result.IsSuccess ? "更换成功" : result.ErrorMessage); } /// @@ -2320,11 +2338,15 @@ namespace Tnb.ProductionMgr /// /// [HttpPost] - public async Task GetPrdMoTaskInfoById(Dictionary dic) + public async Task GetPrdMoTaskInfoById(Dictionary dic) { string id = dic.ContainsKey("id") ? dic["id"] : ""; - if (string.IsNullOrEmpty(id)) return null; - var db = _repository.AsSugarClient(); + if (string.IsNullOrEmpty(id)) + { + return null; + } + + ISqlSugarClient db = _repository.AsSugarClient(); return await db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => a.mold_id == c.id) @@ -2335,26 +2357,26 @@ namespace Tnb.ProductionMgr .Where((a, b, c, d) => a.id == id) .Select((a, b, c, d, e, f, g) => new { - id = a.id, - mo_task_code = a.mo_task_code, + a.id, + a.mo_task_code, mo_task_status = e.FullName, - material_id = a.material_id, + a.material_id, material_code = b.code, material_name = b.name, - mold_id = a.mold_id, - mold_code = c.mold_code, - mold_name = c.mold_name, - schedule_type = a.schedule_type, + a.mold_id, + c.mold_code, + c.mold_name, + a.schedule_type, equip_code = d.code, equip_name = d.name, - workstation_id = a.workstation_id, + a.workstation_id, workstation_code = g.EnCode, workstation_name = g.FullName, - scheduled_qty = a.scheduled_qty, - reported_work_qty = a.reported_work_qty, - scrap_qty = a.scrap_qty, - process_id = a.process_id, - process_name = f.process_name, + a.scheduled_qty, + a.reported_work_qty, + a.scrap_qty, + a.process_id, + f.process_name, }).FirstAsync(); } @@ -2366,15 +2388,15 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task GetGanntInfo1() { - var db = _repository.AsSugarClient(); - Dictionary result = new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary result = new(); var listRows = await db.Queryable() .LeftJoin((a, b) => a.equip_type_id == b.id) .Where((a, b) => b.code == "ZSJ" || b.code == "005") .OrderBy((a, b) => b.code) .Select((a, b) => new { - id = a.id, + a.id, expanded = true, label = a.name, parentId = "" @@ -2391,11 +2413,11 @@ namespace Tnb.ProductionMgr .Where((a, b) => a.estimated_start_date >= startTime && a.estimated_end_date <= endTime) .Select((a, b, c) => new { - id = a.id, + a.id, label = b.name, material_name = b.name, reported_work_qty = a.reported_work_qty == null ? 0 : a.reported_work_qty, - scheduled_qty = a.scheduled_qty, + a.scheduled_qty, mo_task_status = c.FullName, // label = b.name +" " +(a.reported_work_qty==null?0:a.reported_work_qty)+"/"+a.scheduled_qty + " " +c.FullName, rowId = a.eqp_id, @@ -2418,8 +2440,8 @@ namespace Tnb.ProductionMgr }) .ToListAsync(); // DateTime min = (DateTime)charItems.Min(x => x.time.start); - TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).Ticks); - TimeSpan ts2 = new TimeSpan(Convert.ToDateTime(startTime.ToString("yyyy-MM-dd")).Ticks); + TimeSpan ts1 = new(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).Ticks); + TimeSpan ts2 = new(Convert.ToDateTime(startTime.ToString("yyyy-MM-dd")).Ticks); TimeSpan ts3 = ts1.Subtract(ts2).Duration(); @@ -2438,8 +2460,8 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task GetGanntInfo2() { - var db = _repository.AsSugarClient(); - Dictionary result = new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary result = new(); var listRows = await db.Queryable() .Where(x => x.DeleteMark == null && (x.Category == DictConst.RegionCategoryWorklineCode || x.Category == DictConst.RegionCategoryWorkshopCode)) .OrderByDescending(x => x.Category) @@ -2462,11 +2484,11 @@ namespace Tnb.ProductionMgr .Where((a, b) => a.estimated_start_date >= startTime && a.estimated_end_date <= endTime) .Select((a, b, c) => new { - id = a.id, + a.id, label = b.name, material_name = b.name, reported_work_qty = a.reported_work_qty == null ? 0 : a.reported_work_qty, - scheduled_qty = a.scheduled_qty, + a.scheduled_qty, mo_task_status = c.FullName, // label = b.name +" " +(a.reported_work_qty==null?0:a.reported_work_qty)+"/"+a.scheduled_qty + " " +c.FullName, rowId = a.workline_id, @@ -2489,8 +2511,8 @@ namespace Tnb.ProductionMgr }) .ToListAsync(); // DateTime min = (DateTime)charItems.Min(x => x.time.start); - TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).Ticks); - TimeSpan ts2 = new TimeSpan(Convert.ToDateTime(startTime.ToString("yyyy-MM-dd")).Ticks); + TimeSpan ts1 = new(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).Ticks); + TimeSpan ts2 = new(Convert.ToDateTime(startTime.ToString("yyyy-MM-dd")).Ticks); TimeSpan ts3 = ts1.Subtract(ts2).Duration(); @@ -2509,40 +2531,38 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task SaveData1(List input) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); DbResult result = await db.Ado.UseTranAsync(async () => { - foreach (var item in input) + foreach (GanntSaveInput item in input) { // if(await db.Queryable().Where(x=>x.Id==item.row_id && x.Category==DictConst.RegionCategoryWorkshopCode).AnyAsync()) // throw Oops.Bah("不能排在车间上"); - var prdMoTask = await db.Queryable().SingleAsync(x => x.id == item.id); + PrdMoTask prdMoTask = await db.Queryable().SingleAsync(x => x.id == item.id); if (prdMoTask.eqp_id != item.row_id) { - await db.Updateable() + _ = await db.Updateable() .SetColumns(x => x.workline_id == item.row_id) .Where(x => x.id == item.id).ExecuteCommandAsync(); } if (prdMoTask.estimated_start_date.Value.ToString("yyyy-MM-dd HH:mm") != item.time.start.Value.ToString("yyyy-MM-dd HH:mm")) { - await db.Updateable() + _ = await db.Updateable() .SetColumns(x => x.estimated_start_date == item.time.start) .Where(x => x.id == item.id).ExecuteCommandAsync(); } if (prdMoTask.estimated_end_date.Value.ToString("yyyy-MM-dd HH:mm") != item.time.end.Value.ToString("yyyy-MM-dd HH:mm")) { - await db.Updateable() + _ = await db.Updateable() .SetColumns(x => x.estimated_end_date == item.time.end) .Where(x => x.id == item.id).ExecuteCommandAsync(); } } }); - if (!result.IsSuccess) throw Oops.Bah(result.ErrorMessage); - - return result.IsSuccess ? "排产成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Bah(result.ErrorMessage) : (dynamic)(result.IsSuccess ? "排产成功" : result.ErrorMessage); } /// @@ -2552,40 +2572,41 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task SaveData2(List input) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); DbResult result = await db.Ado.UseTranAsync(async () => { - foreach (var item in input) + foreach (GanntSaveInput item in input) { if (await db.Queryable().Where(x => x.Id == item.row_id && x.Category == DictConst.RegionCategoryWorkshopCode).AnyAsync()) + { throw Oops.Bah("不能排在车间上"); - var prdMoTask = await db.Queryable().SingleAsync(x => x.id == item.id); + } + + PrdMoTask prdMoTask = await db.Queryable().SingleAsync(x => x.id == item.id); if (prdMoTask.workline_id != item.row_id) { - await db.Updateable() + _ = await db.Updateable() .SetColumns(x => x.workline_id == item.row_id) .Where(x => x.id == item.id).ExecuteCommandAsync(); } if (prdMoTask.estimated_start_date.Value.ToString("yyyy-MM-dd HH:mm") != item.time.start.Value.ToString("yyyy-MM-dd HH:mm")) { - await db.Updateable() + _ = await db.Updateable() .SetColumns(x => x.estimated_start_date == item.time.start) .Where(x => x.id == item.id).ExecuteCommandAsync(); } if (prdMoTask.estimated_end_date.Value.ToString("yyyy-MM-dd HH:mm") != item.time.end.Value.ToString("yyyy-MM-dd HH:mm")) { - await db.Updateable() + _ = await db.Updateable() .SetColumns(x => x.estimated_end_date == item.time.end) .Where(x => x.id == item.id).ExecuteCommandAsync(); } } }); - if (!result.IsSuccess) throw Oops.Bah(result.ErrorMessage); - - return result.IsSuccess ? "排产成功" : result.ErrorMessage; + return !result.IsSuccess ? throw Oops.Bah(result.ErrorMessage) : (dynamic)(result.IsSuccess ? "排产成功" : result.ErrorMessage); } /// @@ -2617,7 +2638,7 @@ namespace Tnb.ProductionMgr public async Task GetMaterialPreparationPlan() { string now = DateTime.Now.ToString("yyyy-MM-dd"); - var childrenList = await _db.Queryable() + List childrenList = await _db.Queryable() .LeftJoin((a, b) => a.id == b.parent_id) .LeftJoin((a, b, c) => b.material_id == c.id) .Where((a, b) => a.schedule_type == 2 && string.IsNullOrEmpty(a.parent_id) && a.estimated_start_date.Value.ToString("yyyy-MM-dd") == now) @@ -2643,7 +2664,7 @@ namespace Tnb.ProductionMgr }).ToListAsync(); - var prdMoTaskList = await _db.Queryable() + List prdMoTaskList = await _db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .Where(a => a.schedule_type == 2 && string.IsNullOrEmpty(a.parent_id) && a.estimated_start_date.Value.ToString("yyyy-MM-dd") == now && (a.mo_task_status == DictConst.MoStatusPauseCode || a.mo_task_status == DictConst.ToBeScheduledEncode || a.mo_task_status == DictConst.ToBeStartedEnCode || a.mo_task_status == DictConst.InProgressEnCode)) .Select((a, b) => new MaterialPreparationPlanOutput() @@ -2656,12 +2677,12 @@ namespace Tnb.ProductionMgr }) .ToListAsync(); - foreach (var item in prdMoTaskList) + foreach (MaterialPreparationPlanOutput? item in prdMoTaskList) { item.children = childrenList.Where(x => x.parent_id == item.mo_task_id).ToList(); - foreach (var itemChild in item.children) + foreach (MaterialPreparationPlanDOutput itemChild in item.children) { - foreach (var itemChildChild in itemChild.children) + foreach (MaterialPreparationPlanDDOutput itemChildChild in itemChild.children) { if (itemChildChild.num > 0 && itemChild.rate_num != null && itemChild.rate_num > 0) { @@ -2683,8 +2704,12 @@ namespace Tnb.ProductionMgr public async Task GetPrdMoTaskInfoByStationId(Dictionary dic) { string station_id = dic.ContainsKey("station_id") ? dic["station_id"] : ""; - if (string.IsNullOrEmpty(station_id)) throw Oops.Bah("工位错误"); - var prdMoTask = await _db.Queryable().Where(x => x.workstation_id == station_id && x.parent_id != null && x.mo_task_status == DictConst.InProgressEnCode).FirstAsync(); + if (string.IsNullOrEmpty(station_id)) + { + throw Oops.Bah("工位错误"); + } + + PrdMoTask? prdMoTask = await _db.Queryable().Where(x => x.workstation_id == station_id && x.parent_id != null && x.mo_task_status == DictConst.InProgressEnCode).FirstAsync(); if (prdMoTask != null) { BasMaterial basMaterial = await _db.Queryable().SingleAsync(x => x.id == prdMoTask.material_id); diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdOutstockService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdOutstockService.cs index dae8b582..57409ef4 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdOutstockService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdOutstockService.cs @@ -60,13 +60,15 @@ namespace Tnb.ProductionMgr { try { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); - MESCreateOutstockInput input = new MESCreateOutstockInput(); - input.outstock = new MESWmsOutstockHInput(); - input.outstockDs = new List(); + MESCreateOutstockInput input = new() + { + outstock = new MESWmsOutstockHInput(), + outstockDs = new List() + }; - string locationId = visualDevModelDataCrInput.data.ContainsKey("location_id") ? visualDevModelDataCrInput.data["location_id"].ToString() : ""; + string? locationId = visualDevModelDataCrInput.data.ContainsKey("location_id") ? visualDevModelDataCrInput.data["location_id"].ToString() : ""; BasLocation location = await db.Queryable().SingleAsync(x => x.id == locationId); input.outstock.bill_type = visualDevModelDataCrInput.data.ContainsKey("bill_type") ? visualDevModelDataCrInput.data["bill_type"].ToString() : ""; @@ -92,11 +94,11 @@ namespace Tnb.ProductionMgr input.outstockDs = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(visualDevModelDataCrInput.data["tablefield107"])); string domain = (App.HttpContext.Request.IsHttps ? "https://" : "http://") + App.HttpContext.Request.Host; - Dictionary header = new Dictionary() + Dictionary header = new() { ["Authorization"] = App.HttpContext.Request.Headers["Authorization"] }; - var sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CREATE_OUTSTOCK, JsonConvert.SerializeObject(input), header); + string sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CREATE_OUTSTOCK, JsonConvert.SerializeObject(input), header); Log.Information(sendResult); AuthResponse authResponse = JsonConvert.DeserializeObject(sendResult); @@ -124,16 +126,22 @@ namespace Tnb.ProductionMgr { try { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); string warehouse_id = "26103348825381";//二楼缓存仓 - MESCreateOutstockInput input = new MESCreateOutstockInput(); - input.outstock = new MESWmsOutstockHInput(); - input.outstockDs = new List(); + MESCreateOutstockInput input = new() + { + outstock = new MESWmsOutstockHInput(), + outstockDs = new List() + }; PrdMoTask prdMoTask = await db.Queryable().SingleAsync(x => x.id == generalOutstockInput.mo_task_id); BasLocation location = await db.Queryable().Where(x => x.location_code == generalOutstockInput.location_code).FirstAsync(); - if (location == null) throw Oops.Bah("未找到库位"); + if (location == null) + { + throw Oops.Bah("未找到库位"); + } + string locationId = location.id; input.outstock.bill_type = DictConst.SHENGCHANLINGLIAO; @@ -158,7 +166,7 @@ namespace Tnb.ProductionMgr }) .ToDictionaryAsync(x => x.key, x => x.value); - foreach (var item in generalOutstockInput.details) + foreach (GeneralOutstockDInput item in generalOutstockInput.details) { input.outstockDs.Add(new MESWmsOutstockDInput() { @@ -170,11 +178,11 @@ namespace Tnb.ProductionMgr } string domain = (App.HttpContext.Request.IsHttps ? "https://" : "http://") + App.HttpContext.Request.Host; - Dictionary header = new Dictionary() + Dictionary header = new() { ["Authorization"] = App.HttpContext.Request.Headers["Authorization"] }; - var sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CREATE_OUTSTOCK, JsonConvert.SerializeObject(input), header); + string sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CREATE_OUTSTOCK, JsonConvert.SerializeObject(input), header); Log.Information(sendResult); AuthResponse authResponse = JsonConvert.DeserializeObject(sendResult); @@ -184,18 +192,20 @@ namespace Tnb.ProductionMgr } else { - PrdOutstockH prdOutstockH = new PrdOutstockH(); - prdOutstockH.bill_type = DictConst.SHENGCHANLINGLIAO; - prdOutstockH.warehouse_id = warehouse_id; - prdOutstockH.location_code = generalOutstockInput.location_code; - prdOutstockH.create_id = _userManager.UserId; - prdOutstockH.org_id = _userManager.GetUserInfo().Result.organizeId; - prdOutstockH.bill_date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); - prdOutstockH.workstation = generalOutstockInput.workstation_id; - prdOutstockH.workline = workline?.Id ?? ""; + PrdOutstockH prdOutstockH = new() + { + bill_type = DictConst.SHENGCHANLINGLIAO, + warehouse_id = warehouse_id, + location_code = generalOutstockInput.location_code, + create_id = _userManager.UserId, + org_id = _userManager.GetUserInfo().Result.organizeId, + bill_date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), + workstation = generalOutstockInput.workstation_id, + workline = workline?.Id ?? "" + }; - List prdOutstockDs = new List(); - foreach (var item in generalOutstockInput.details) + List prdOutstockDs = new(); + foreach (GeneralOutstockDInput item in generalOutstockInput.details) { prdOutstockDs.Add(new PrdOutstockD() { @@ -211,10 +221,10 @@ namespace Tnb.ProductionMgr DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { - await _repository.InsertAsync(prdOutstockH); + _ = await _repository.InsertAsync(prdOutstockH); if (prdOutstockDs.Count > 0) { - await db.Insertable(prdOutstockDs).ExecuteCommandAsync(); + _ = await db.Insertable(prdOutstockDs).ExecuteCommandAsync(); } }); diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdPackReportService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdPackReportService.cs index 06455d94..74c5bfa9 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdPackReportService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdPackReportService.cs @@ -31,7 +31,7 @@ namespace Tnb.ProductionMgr { private readonly ISqlSugarClient _db; private readonly IDictionaryDataService _dictionaryDataService; - private static Dictionary> _dicWorkLine = new Dictionary>(); + private static Dictionary> _dicWorkLine = new(); public PrdPackReportService(ISqlSugarRepository repository, IDictionaryDataService dictionaryDataService) { _db = repository.AsSugarClient(); @@ -44,7 +44,11 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task GetList(PrdPackReportQueryInput input) { - if (input == null) throw new ArgumentNullException("input"); + if (input == null) + { + throw new ArgumentNullException("input"); + } + if (string.IsNullOrEmpty(input.stationId)) { return new @@ -55,8 +59,8 @@ namespace Tnb.ProductionMgr } List trees = new(); - var dic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId); - var list = await _db.Queryable().Where(it => it.Category == "workline").ToListAsync(); + Dictionary dic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId); + List list = await _db.Queryable().Where(it => it.Category == "workline").ToListAsync(); if (_dicWorkLine.Count < 1) { @@ -80,7 +84,7 @@ namespace Tnb.ProductionMgr endTimes[1] = GetDateTimeMilliseconds(input.estimated_end_date![1]); } - var items = await _db.Queryable() + SqlSugarPagedList items = await _db.Queryable() .LeftJoin((a, b) => a.process_id == b.id) .LeftJoin((a, b, c) => a.mo_id == c.id) .LeftJoin((a, b, c, d) => a.id == d.parent_id) @@ -107,9 +111,15 @@ namespace Tnb.ProductionMgr }) .ToPagedListAsync(input.currentPage, input.pageSize); if (start) + { items.list = items.list.Where(a => startTimes[0] <= a.plan_start_date && startTimes[1] >= a.plan_start_date).ToList(); + } + if (end) + { items.list = items.list.Where(a => endTimes[0] <= a.plan_end_date && endTimes[1] >= a.plan_end_date).ToList(); + } + _db.ThenMapper(items.list, it => { it.mo_task_status = it.mo_task_status.IsNotEmptyOrNull() && dic.ContainsKey(it.mo_task_status) ? dic[it.mo_task_status].ToString() : ""; @@ -117,13 +127,13 @@ namespace Tnb.ProductionMgr if (items != null && items.list != null && items.list.Any()) { - foreach (var item in items.list) + foreach (PrdMoTask? item in items.list) { - var node = item.Adapt(); + PackReportTreeOutput node = item.Adapt(); node.parentId = "0"; if (item.workline_id.IsNotEmptyOrNull()) { - var workLine = _dicWorkLine.ContainsKey(item.workline_id) ? (Tuple)_dicWorkLine[item.workline_id] : null; + Tuple? workLine = _dicWorkLine.ContainsKey(item.workline_id) ? _dicWorkLine[item.workline_id] : null; if (workLine != null) { node.workline_id = $"{workLine.Item1}/{workLine.Item2}"; @@ -135,24 +145,30 @@ namespace Tnb.ProductionMgr trees.Add(node); } } - var treeList = trees.ToTree(); + List treeList = trees.ToTree(); if (!string.IsNullOrEmpty(input.process)) { - List removelist = new List(); - foreach (var item in treeList) + List removelist = new(); + foreach (PackReportTreeOutput item in treeList) { bool flag = false; if (item.process_id != null && item.process_id.Contains(input.process)) + { flag = true; + } + if (item.children != null && item.children.Count > 0) { - var childs = item.children.Adapt>(); + List childs = item.children.Adapt>(); if (childs.Where(p => p.process_id.Contains(input.process)).Any()) + { flag = true; + } } if (!flag) + { removelist.Add(item); - + } } removelist.ForEach(p => treeList.Remove(p)); @@ -172,16 +188,16 @@ namespace Tnb.ProductionMgr private static DateTime GetDateTimeMilliseconds(long timestamp) { long begtime = timestamp * 10000; - DateTime dt_1970 = new DateTime(1970, 1, 1, 8, 0, 0); + DateTime dt_1970 = new(1970, 1, 1, 8, 0, 0); long tricks_1970 = dt_1970.Ticks;//1970年1月1日刻度 long time_tricks = tricks_1970 + begtime;//日志日期刻度 - DateTime dt = new DateTime(time_tricks);//转化为DateTime + DateTime dt = new(time_tricks);//转化为DateTime return dt; } private async Task GetChild(string parentId, List nodes, Dictionary dic, string stationId) { - var items = await _db.Queryable() + List items = await _db.Queryable() .LeftJoin((a, b) => a.process_id == b.id) .LeftJoin((a, b, c) => a.mo_id == c.id) .LeftJoin((a, b, c, d) => a.mbom_process_id == d.id) @@ -210,7 +226,7 @@ namespace Tnb.ProductionMgr if (items?.Count > 0) { - var nsChild = items.Adapt>(); + List nsChild = items.Adapt>(); for (int i = 0; i < nsChild.Count; i++) { nsChild[i].parentId = parentId; @@ -220,7 +236,7 @@ namespace Tnb.ProductionMgr if (nsChild[i].workline_id.IsNotEmptyOrNull()) { - var workLine = _dicWorkLine.ContainsKey(nsChild[i].workline_id) ? (Tuple)_dicWorkLine[nsChild[i].workline_id] : null; + Tuple? workLine = _dicWorkLine.ContainsKey(nsChild[i].workline_id) ? _dicWorkLine[nsChild[i].workline_id] : null; if (workLine != null) { nsChild[i].workline_id = $"{workLine.Item1}/{workLine.Item2}"; @@ -229,7 +245,7 @@ namespace Tnb.ProductionMgr } nodes.AddRange(nsChild); - foreach (var item in items) + foreach (PrdMoTask? item in items) { await GetChild(item.id, nodes, dic, stationId); } @@ -252,7 +268,7 @@ namespace Tnb.ProductionMgr }; } - var result = await _db.Queryable() + SqlSugarPagedList result = await _db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => a.process_id == c.id) .LeftJoin((a, b, c, e) => e.DictionaryTypeId == DictConst.PrdTaskStatusTypeId && a.mo_task_status == e.EnCode) @@ -309,7 +325,7 @@ namespace Tnb.ProductionMgr }; } - var result = await _db.Queryable() + SqlSugarPagedList result = await _db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => a.process_id == c.id) .LeftJoin((a, b, c, d) => a.workline_id == d.Id) @@ -360,11 +376,11 @@ namespace Tnb.ProductionMgr } Dictionary queryJson = string.IsNullOrEmpty(input.queryJson) ? new Dictionary() : input.queryJson.ToObject>(); - string mo_task_code = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : ""; - string status = queryJson.ContainsKey("status") ? queryJson["status"].ToString() : ""; + string? mo_task_code = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : ""; + string? status = queryJson.ContainsKey("status") ? queryJson["status"].ToString() : ""; DateTime? start_time = queryJson.ContainsKey("start_time") ? queryJson["start_time"].ToString() == "" ? null : Convert.ToDateTime(queryJson["start_time"]) : null; DateTime? end_time = queryJson.ContainsKey("end_time") ? queryJson["end_time"].ToString() == "" ? null : Convert.ToDateTime(queryJson["end_time"]) : null; - List statusList = new List(); + List statusList = new(); if (!string.IsNullOrEmpty(status)) { switch (status) @@ -390,7 +406,7 @@ namespace Tnb.ProductionMgr input.sort = "desc"; } - var result = await _db.Queryable() + SqlSugarPagedList result = await _db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => a.process_id == c.id) .LeftJoin((a, b, c, d) => a.workline_id == d.Id) @@ -469,12 +485,7 @@ namespace Tnb.ProductionMgr { PrdMoTask prdMoTask = await _db.Queryable().SingleAsync(x => x.id == input.mo_task_id); BasQrcode basQrcode = await _db.Queryable().Where(x => x.source_name == "TOOL_MOLDS" && x.code == input.mold_qrcode).FirstAsync(); - if (prdMoTask != null && basQrcode != null) - { - return prdMoTask.mold_id == basQrcode.source_id; - } - - return false; + return prdMoTask != null && basQrcode != null ? prdMoTask.mold_id == basQrcode.source_id : (dynamic)false; } } } diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdTaskManageService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdTaskManageService.cs index 931cf10c..a79766a9 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdTaskManageService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdTaskManageService.cs @@ -105,10 +105,10 @@ namespace Tnb.ProductionMgr private async Task GetList(VisualDevModelListQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); - string moTaskCode = queryJson != null && queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : ""; - string stationId = queryJson != null && queryJson.ContainsKey("stationId") ? queryJson["stationId"].ToString() : ""; + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); + string? moTaskCode = queryJson != null && queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : ""; + string? stationId = queryJson != null && queryJson.ContainsKey("stationId") ? queryJson["stationId"].ToString() : ""; if (string.IsNullOrEmpty(stationId)) { @@ -121,23 +121,23 @@ namespace Tnb.ProductionMgr Dictionary dic = await _dictionaryDataService.GetDicByKey(DictConst.TaskStatus); - DateTime[] planStartDateArr = null; - DateTime[] planEndDateArr = null; - if (queryJson.TryGetValue("plan_start_date", out var value1)) + DateTime[]? planStartDateArr = null; + DateTime[]? planEndDateArr = null; + if (queryJson.TryGetValue("plan_start_date", out object? value1)) { planStartDateArr = value1.ToObject().Select(x => x.TimeStampToDateTime()).ToArray(); } - if (queryJson.TryGetValue("plan_end_date", out var value2)) + if (queryJson.TryGetValue("plan_end_date", out object? value2)) { planEndDateArr = value2.ToObject().Select(x => x.TimeStampToDateTime()).ToArray(); } - var result = await db.Queryable() + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.eqp_id == b.id) .LeftJoin((a, b, c) => a.material_id == c.id) .LeftJoin((a, b, c, d) => a.mold_id == d.id) - .Where((a, b, c, d) => (a.mo_task_status == DictConst.ToBeStartedEnCode || a.mo_task_status == DictConst.InProgressEnCode || a.mo_task_status == DictConst.MoStatusExceptionCode || a.mo_task_status == DictConst.MoStatusPauseCode || a.mo_task_status == DictConst.ComplatedEnCode)) + .Where((a, b, c, d) => a.mo_task_status == DictConst.ToBeStartedEnCode || a.mo_task_status == DictConst.InProgressEnCode || a.mo_task_status == DictConst.MoStatusExceptionCode || a.mo_task_status == DictConst.MoStatusPauseCode || a.mo_task_status == DictConst.ComplatedEnCode) .Where((a, b, c, d) => a.schedule_type == 1) .WhereIF(!string.IsNullOrEmpty(moTaskCode), (a, b, c, d) => a.mo_task_code.Contains(moTaskCode)) .WhereIF(planStartDateArr != null, (a, b, c, d) => a.estimated_start_date >= planStartDateArr[0] && a.estimated_start_date <= planStartDateArr[1]) @@ -243,7 +243,6 @@ namespace Tnb.ProductionMgr /// /// 根据任务单号获取提报记录明细 /// - /// 任务单号 /// /// returns: ///
{ @@ -256,8 +255,8 @@ namespace Tnb.ProductionMgr [HttpGet] public async Task GetPrdReportByIcmoCode([FromRoute] string mo_task_code) { - var db = _repository.AsSugarClient(); - var dic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary dic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId); var prdTask = await db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => a.mold_id == c.id) @@ -268,28 +267,28 @@ namespace Tnb.ProductionMgr .Where((a, b) => a.mo_task_code == mo_task_code) .Select((a, b, c, d, e, f, g) => new { - id = a.id, - mo_task_code = a.mo_task_code, - mo_id = a.mo_id, - material_id = a.material_id, + a.id, + a.mo_task_code, + a.mo_id, + a.material_id, material_code = b.code, material_name = b.name, - material_property = b.material_property, + b.material_property, mo_task_status = e.FullName, - plan_qty = a.plan_qty, - scheduled_qty = a.scheduled_qty, + a.plan_qty, + a.scheduled_qty, complete_qty = a.reported_work_qty + a.scrap_qty, - scrap_qty = a.scrap_qty, - mold_code = c.mold_code, + a.scrap_qty, + c.mold_code, // icmo_qty = a.icmo_qty, - reported_work_qty = a.reported_work_qty, + a.reported_work_qty, // reported_qty = a.reported_qty, // prd_qty = a.prd_qty, eqp_code = d.code, - mbom_process_id = a.mbom_process_id, + a.mbom_process_id, workline_name = f.FullName, - process_name = g.process_name, - process_id = a.process_id + g.process_name, + a.process_id }).FirstAsync(); return prdTask; diff --git a/ProductionMgr/Tnb.ProductionMgr/ProductionReportRecordService.cs b/ProductionMgr/Tnb.ProductionMgr/ProductionReportRecordService.cs index 21fdb00c..aef57906 100644 --- a/ProductionMgr/Tnb.ProductionMgr/ProductionReportRecordService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/ProductionReportRecordService.cs @@ -83,13 +83,13 @@ namespace Tnb.ProductionMgr if (!string.IsNullOrEmpty(input.queryJson)) { Dictionary queryJson = JsonConvert.DeserializeObject>(input.queryJson); - if (queryJson.TryGetValue("mo_task_code", out var value)) + if (queryJson.TryGetValue("mo_task_code", out string? value)) { moTaskCode = value; } } - var db = _repository.AsSugarClient(); - var result = await db.Queryable() + ISqlSugarClient db = _repository.AsSugarClient(); + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.mo_task_type == b.Id) .LeftJoin((a, b, c) => a.status == c.EnCode) .LeftJoin((a, b, c, d) => a.mo_task_id == d.id) @@ -125,11 +125,11 @@ namespace Tnb.ProductionMgr private async Task AddRecord(string id, VisualDevModelDataUpInput input) { - var db = _repository.AsSugarClient(); - var result = await db.Ado.UseTranAsync(async () => + ISqlSugarClient db = _repository.AsSugarClient(); + DbResult result = await db.Ado.UseTranAsync(async () => { - List prdReports = new List(); - foreach (var item in (JArray)input.data["tablefield107"]) + List prdReports = new(); + foreach (JToken item in (JArray)input.data["tablefield107"]) { if (item["id"] == null) { @@ -144,10 +144,10 @@ namespace Tnb.ProductionMgr } } - await db.Insertable(prdReports).ExecuteCommandAsync(); + _ = await db.Insertable(prdReports).ExecuteCommandAsync(); int? sum = prdReports.Sum(x => x.reported_qty); - await db.Updateable() + _ = await db.Updateable() .SetColumns(x => x.completed_qty == x.completed_qty + sum) .SetColumns(x => x.reported_work_qty == x.reported_work_qty + sum) .Where(x => x.id == input.data["id"].ToString()).ExecuteCommandAsync(); diff --git a/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs b/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs index 2d8b55a1..b6e7f3ad 100644 --- a/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs +++ b/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs @@ -11,8 +11,8 @@ namespace Tnb.ProductionMgr //redis定时获取数采数据 public class RedisBackGround : IHostedService, IDisposable { - private Timer? packtimer; - private Timer? limittimer; + private readonly Timer? packtimer; + private readonly Timer? limittimer; private readonly RedisCache _redisCache; private readonly IPrdInstockService _prdInstockService; public RedisBackGround(RedisCache redisCache, IPrdInstockService prdInstockService) @@ -29,19 +29,24 @@ namespace Tnb.ProductionMgr string sign = "agvMode"; foreach (string s in strs) { - var dic = _redisCache.HGetAll(s).Result; - foreach (var kv in dic) + Dictionary dic = _redisCache.HGetAll(s).Result; + foreach (KeyValuePair kv in dic) { if (!kv.Key.Contains(sign)) + { continue; - var res = JsonConvert.DeserializeObject(kv.Value); + } + + JObject? res = JsonConvert.DeserializeObject(kv.Value); if (res != null && res["Value"] != null) { - if (int.Parse(res["Value"]!.ToString()) != (int)Eagvmode.无请求 || int.Parse(res["Value"]!.ToString()) != (int)Eagvmode.收到请求) + if (int.Parse(res["Value"]!.ToString()) is not ((int)Eagvmode.无请求) or not ((int)Eagvmode.收到请求)) { - InstockInput instockInput = new InstockInput(); - instockInput.equip_code = res["TagName"]!.ToString(); - _prdInstockService.InstockTypeOne(instockInput); + InstockInput instockInput = new() + { + equip_code = res["TagName"]!.ToString() + }; + _ = _prdInstockService.InstockTypeOne(instockInput); } } } @@ -56,19 +61,24 @@ namespace Tnb.ProductionMgr string sign = "AGVFullCall"; foreach (string s in strs) { - var dic = _redisCache.HGetAll(s).Result; - foreach (var kv in dic) + Dictionary dic = _redisCache.HGetAll(s).Result; + foreach (KeyValuePair kv in dic) { if (!kv.Key.Contains(sign)) + { continue; - var res = JsonConvert.DeserializeObject(kv.Value); + } + + JObject? res = JsonConvert.DeserializeObject(kv.Value); if (res != null && res["Value"] != null) { if (res.Value("Value")) { - InstockInput instockInput = new InstockInput(); - instockInput.equip_code = res["TagName"]!.ToString(); - _prdInstockService.InstockTypeOne(instockInput); + InstockInput instockInput = new() + { + equip_code = res["TagName"]!.ToString() + }; + _ = _prdInstockService.InstockTypeOne(instockInput); } } } @@ -83,12 +93,15 @@ namespace Tnb.ProductionMgr string sign = "AGVCall"; foreach (string s in strs) { - var dic = _redisCache.HGetAll(s).Result; - foreach (var kv in dic) + Dictionary dic = _redisCache.HGetAll(s).Result; + foreach (KeyValuePair kv in dic) { if (!kv.Key.Contains(sign)) + { continue; - var res = JsonConvert.DeserializeObject(kv.Value); + } + + JObject? res = JsonConvert.DeserializeObject(kv.Value); if (res != null && res["Value"] != null) { if (res.Value("Value")) diff --git a/ProductionMgr/Tnb.ProductionMgr/RedisDataService.cs b/ProductionMgr/Tnb.ProductionMgr/RedisDataService.cs index dbbe2981..f6ce935f 100644 --- a/ProductionMgr/Tnb.ProductionMgr/RedisDataService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/RedisDataService.cs @@ -28,6 +28,14 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task GetWeight(string device, string jihao) { + bool flag = await _redisCache.HashExist(device, jihao); + if (!flag) + { + throw Oops.Bah("没有找到" + device + "----" + jihao + "的数据"); + } + + string data = await _redisCache.GetHash(device, jihao); + JObject? res = JsonConvert.DeserializeObject(data); /* var dic =await _redisCache.HGetAll("TY4C-JICHU"); string a = ""; @@ -45,20 +53,7 @@ namespace Tnb.ProductionMgr await _redisCache.HSet("TY4C-JICHU", b[0], b[1]); }*/ - decimal result = 0; - bool flag = await _redisCache.HashExist(device, jihao); - if (!flag) - throw Oops.Bah("没有找到" + device + "----" + jihao + "的数据"); - var data = await _redisCache.GetHash(device, jihao); - var res = JsonConvert.DeserializeObject(data); - if (res != null && res["Value"] != null) - { - result = decimal.Parse(res["Value"]!.ToString()); - } - else - { - throw Oops.Bah("数据格式错误"); - } + decimal result = res != null && res["Value"] != null ? decimal.Parse(res["Value"]!.ToString()) : throw Oops.Bah("数据格式错误"); return result; } } diff --git a/ProductionMgr/Tnb.ProductionMgr/WorkOrderSchedulingService.cs b/ProductionMgr/Tnb.ProductionMgr/WorkOrderSchedulingService.cs index daa990cc..d3c11d64 100644 --- a/ProductionMgr/Tnb.ProductionMgr/WorkOrderSchedulingService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/WorkOrderSchedulingService.cs @@ -39,31 +39,33 @@ namespace Tnb.ProductionMgr ("25546256076325","25530834099477"), }; List list = new(); - var index = 1; - foreach (var item in multi) + int index = 1; + foreach ((string pId, string eqpId) in multi) { - MoldsEntity entity = new(); - entity.id = SnowflakeIdHelper.NextId(); - entity.MoldCode = $"m00{index}"; - entity.MoldName = "磨具" + index; - entity.ItemId = item.pId; - entity.EqpId = item.eqpId; + MoldsEntity entity = new() + { + id = SnowflakeIdHelper.NextId(), + MoldCode = $"m00{index}", + MoldName = "磨具" + index, + ItemId = pId, + EqpId = eqpId + }; list.Add(entity); index++; } - var link = await _repository.GetFirstAsync(x => x.FullName == "tnb_eqp"); - var db = _dataBaseManager.ChangeDataBase(link); - var row = await db.Insertable(list).ExecuteCommandAsync(); + DbLinkEntity link = await _repository.GetFirstAsync(x => x.FullName == "tnb_eqp"); + SqlSugarScope db = _dataBaseManager.ChangeDataBase(link); + int row = await db.Insertable(list).ExecuteCommandAsync(); if (row > 0) { - foreach (var item in list) + foreach (MoldsEntity item in list) { - var dic = new Dictionary + Dictionary dic = new() { {"id",item.EqpId }, { "mold_id", item.id} }; - var row2 = await db.Updateable(dic).AS("eqp_equipment") + int row2 = await db.Updateable(dic).AS("eqp_equipment") .WhereColumns("id"). ExecuteCommandAsync(); } diff --git a/ProductionMgr/Tnb.ProductionMgr/WorklineCommService.cs b/ProductionMgr/Tnb.ProductionMgr/WorklineCommService.cs index 63e4c92e..32bb0c29 100644 --- a/ProductionMgr/Tnb.ProductionMgr/WorklineCommService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/WorklineCommService.cs @@ -48,16 +48,16 @@ public class WorklineCommService : IWorklineCommService, IDynamicApiController, [AllowAnonymous] public async Task GetCartonQrcode(string workline) { - var line = await _repository.GetFirstAsync(a => a.id == workline); - var productNo = line?.product_code; + PrdWorklineState line = await _repository.GetFirstAsync(a => a.id == workline); + string? productNo = line?.product_code; //TODO 仅测试接口用 if (string.IsNullOrEmpty(productNo)) { productNo = "16945" + Random.Shared.Next(0, 999999999).ToString(); //"16945155732431"; } - var pd = DateTime.Now; - var exp = pd.AddYears(3); - var lotNo = pd.ToString("yyMMddHH"); + DateTime pd = DateTime.Now; + DateTime exp = pd.AddYears(3); + string lotNo = pd.ToString("yyMMddHH"); string tpl = "(01){0}\n(11){1}\n(17){2}\n(10){3}"; string qrcode = string.Format(tpl, productNo, pd.ToString("yyMM00"), exp.ToString("yyMM00"), lotNo); return new { qrcode }; diff --git a/QcMgr/Tnb.QcMgr/QcCheckItemService.cs b/QcMgr/Tnb.QcMgr/QcCheckItemService.cs index 615aa824..263e5352 100644 --- a/QcMgr/Tnb.QcMgr/QcCheckItemService.cs +++ b/QcMgr/Tnb.QcMgr/QcCheckItemService.cs @@ -34,14 +34,14 @@ namespace Tnb.QcMgr private async Task Delete(string id) { - var db = _repository.AsSugarClient(); - var QcCheckItemsH = await db.Queryable().Where(p => p.id == id).FirstAsync(); - var QcCheckItemsRs = await db.Queryable().Where(p => p.itemshid == id).ToListAsync(); - var QcCheckItemsDs = await db.Queryable().Where(p => QcCheckItemsRs.Select(p => p.itemsdid).ToList().Contains(p.id)).ToListAsync(); + ISqlSugarClient db = _repository.AsSugarClient(); + QcCheckItemsH QcCheckItemsH = await db.Queryable().Where(p => p.id == id).FirstAsync(); + List QcCheckItemsRs = await db.Queryable().Where(p => p.itemshid == id).ToListAsync(); + List QcCheckItemsDs = await db.Queryable().Where(p => QcCheckItemsRs.Select(p => p.itemsdid).ToList().Contains(p.id)).ToListAsync(); await db.Ado.BeginTranAsync(); - await db.Deleteable(QcCheckItemsH).ExecuteCommandAsync(); - await db.Deleteable(QcCheckItemsRs).ExecuteCommandAsync(); - await db.Deleteable(QcCheckItemsDs).ExecuteCommandAsync(); + _ = await db.Deleteable(QcCheckItemsH).ExecuteCommandAsync(); + _ = await db.Deleteable(QcCheckItemsRs).ExecuteCommandAsync(); + _ = await db.Deleteable(QcCheckItemsDs).ExecuteCommandAsync(); await db.Ado.CommitTranAsync(); } @@ -52,33 +52,37 @@ namespace Tnb.QcMgr [HttpGet] public async Task GetCheckItem() { - var db = _repository.AsSugarClient(); - List CheckItemOuts = new List(); + ISqlSugarClient db = _repository.AsSugarClient(); + List CheckItemOuts = new(); var datas = await db.Queryable().InnerJoin((a, b) => a.type == b.id).Select((a, b) => new { - id = a.id, - name = a.name, - code = a.code, - type = a.type, + a.id, + a.name, + a.code, + a.type, typename = b.name }).ToListAsync(); foreach (var data in datas) { if (CheckItemOuts.Where(p => p.checktypeid == data.type).Any()) { - var CheckItemOut = CheckItemOuts.Where(p => p.checktypeid == data.type).First(); + CheckItemOut CheckItemOut = CheckItemOuts.Where(p => p.checktypeid == data.type).First(); if (CheckItemOut.items == null) { - CheckItemOut.items = new List(); - CheckItemOut.items.Add(new CheckItem { itemid = data.id, name = data.name!, code = data.code! }); + CheckItemOut.items = new List + { + new CheckItem { itemid = data.id, name = data.name!, code = data.code! } + }; } else + { CheckItemOut.items.Add(new CheckItem { itemid = data.id, name = data.name!, code = data.code! }); + } } else { CheckItemOuts.Add(new CheckItemOut { checktypeid = data.type!, checktypename = data.typename!, items = new List() }); - var CheckItemOut = CheckItemOuts.Where(p => p.checktypeid == data.type).First(); + CheckItemOut CheckItemOut = CheckItemOuts.Where(p => p.checktypeid == data.type).First(); CheckItemOut.items?.Add(new CheckItem() { itemid = data.id, name = data.name!, code = data.code! }); } } @@ -93,68 +97,92 @@ namespace Tnb.QcMgr [HttpPost] public async Task GetCheckItems(CheckItemsInput CheckItemsInput) { - var db = _repository.AsSugarClient(); - var QcCheckItems = await db.Queryable().ToListAsync(); - var QcCheckTypes = await db.Queryable().ToListAsync(); - var QcCheckItemsH = await db.Queryable().Where(p => p.id == CheckItemsInput.id).FirstAsync(); - List QcCheckItemsRs = new List(); - List QcCheckItemsDs = new List(); + ISqlSugarClient db = _repository.AsSugarClient(); + List QcCheckItems = await db.Queryable().ToListAsync(); + List QcCheckTypes = await db.Queryable().ToListAsync(); + QcCheckItemsH QcCheckItemsH = await db.Queryable().Where(p => p.id == CheckItemsInput.id).FirstAsync(); + List QcCheckItemsRs = new(); + List QcCheckItemsDs = new(); if (QcCheckItemsH != null) { QcCheckItemsRs = await db.Queryable().Where(p => p.itemshid == QcCheckItemsH.id).ToListAsync(); if (QcCheckItemsRs != null) + { QcCheckItemsDs = await db.Queryable().Where(p => QcCheckItemsRs.Select(p => p.itemsdid).ToList().Contains(p.id)).ToListAsync(); + } } else + { throw Oops.Oh(ErrorCode.COM1005); - var CheckItemsOut = new CheckItemsOut(); - CheckItemsOut.id = QcCheckItemsH.id; - CheckItemsOut.name = QcCheckItemsH.name!; - CheckItemsOut.status = QcCheckItemsH.status!; - CheckItemsOut.checktypes = new List(); + } + + CheckItemsOut CheckItemsOut = new() + { + id = QcCheckItemsH.id, + name = QcCheckItemsH.name!, + status = QcCheckItemsH.status!, + checktypes = new List() + }; if (QcCheckItemsRs != null && QcCheckItemsDs != null) { - foreach (var QcCheckItemsR in QcCheckItemsRs) + foreach (QcCheckItemsR QcCheckItemsR in QcCheckItemsRs) { if (CheckItemsOut.checktypes.Where(p => p.checktypeid == QcCheckItemsR.typeid).ToList().Count == 0) { - CheckTypeOut checkType = new CheckTypeOut(); - checkType.checktypeid = QcCheckItemsR.typeid!; - checkType.checktypename = QcCheckTypes.Where(p => p.id == QcCheckItemsR.typeid).First().name!; - checkType.items = new List(); + CheckTypeOut checkType = new() + { + checktypeid = QcCheckItemsR.typeid!, + checktypename = QcCheckTypes.Where(p => p.id == QcCheckItemsR.typeid).First().name!, + items = new List() + }; CheckItemsOut.checktypes.Add(checkType); } - var item = QcCheckItemsDs.Where(p => p.id == QcCheckItemsR.itemsdid).FirstOrDefault(); + QcCheckItemsD? item = QcCheckItemsDs.Where(p => p.id == QcCheckItemsR.itemsdid).FirstOrDefault(); if (item != null) { - ItemOut Item = new ItemOut(); - Item.itemid = QcCheckItemsR.itemid!; - Item.itemdid = item.id!; - Item.code = QcCheckItems.Where(p => p.id == QcCheckItemsR.itemid).First().code!; - Item.name = QcCheckItems.Where(p => p.id == QcCheckItemsR.itemid).First().name!; - Item.setData = new Data(); - Item.setData.extype = item.extype!; - Item.setData.excontent = JSON.Deserialize(item.excontent!); - Item.setData.check = item.check!; + ItemOut Item = new() + { + itemid = QcCheckItemsR.itemid!, + itemdid = item.id!, + code = QcCheckItems.Where(p => p.id == QcCheckItemsR.itemid).First().code!, + name = QcCheckItems.Where(p => p.id == QcCheckItemsR.itemid).First().name!, + setData = new Data + { + extype = item.extype!, + excontent = JSON.Deserialize(item.excontent!), + check = item.check! + } + }; if (!string.IsNullOrEmpty(item.errorcause)) + { Item.setData.errorcause = item.errorcause!.Replace("[", "").Replace("]", "").Split(',', StringSplitOptions.RemoveEmptyEntries); + } + if (!string.IsNullOrEmpty(item.errorlevel)) + { Item.setData.errorlevel = item.errorlevel!.Replace("[", "").Replace("]", "").Split(',', StringSplitOptions.RemoveEmptyEntries); + } + Item.setData.remark = item.remark!; Item.setData.attachment = item.attachment!; Item.setData.customer = item.custom!; if (!string.IsNullOrEmpty(item.isexec)) + { Item.setData.isexec = JSON.Deserialize(item.isexec!); - Item.setShow = new Show(); - Item.setShow.extype = !string.IsNullOrEmpty(Item.setData.extype); - Item.setShow.excontent = !string.IsNullOrEmpty(item.excontent); - Item.setShow.check = !string.IsNullOrEmpty(Item.setData.check); - Item.setShow.errorcause = Item.setData.errorcause == null ? false : true; - Item.setShow.errorlevel = Item.setData.errorlevel == null ? 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; + } + + Item.setShow = new Show + { + extype = !string.IsNullOrEmpty(Item.setData.extype), + excontent = !string.IsNullOrEmpty(item.excontent), + check = !string.IsNullOrEmpty(Item.setData.check), + errorcause = Item.setData.errorcause != null, + errorlevel = Item.setData.errorlevel != null, + remark = !string.IsNullOrEmpty(Item.setData.remark), + attachment = !string.IsNullOrEmpty(Item.setData.attachment), + customer = !string.IsNullOrEmpty(Item.setData.customer), + isexec = Item.setData.isexec != null + }; CheckItemsOut.checktypes.Where(p => p.checktypeid == QcCheckItemsR.typeid).First().items?.Add(Item); } } @@ -171,27 +199,32 @@ namespace Tnb.QcMgr [HttpPost] public async Task SaveData(CheckItemsInput CheckItemsInput) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); try { if (!string.IsNullOrEmpty(CheckItemsInput.id)) + { await Delete(CheckItemsInput.id); - QcCheckItemsH QcCheckItemsH = new QcCheckItemsH(); - QcCheckItemsH.name = CheckItemsInput.name; - QcCheckItemsH.status = CheckItemsInput.status; - QcCheckItemsH.create_time = DateTime.Now; - QcCheckItemsH.create_id = _userManager.UserId; - List QcCheckItemsRs = new List(); - List QcCheckItemsDs = new List(); + } + + QcCheckItemsH QcCheckItemsH = new() + { + name = CheckItemsInput.name, + status = CheckItemsInput.status, + create_time = DateTime.Now, + create_id = _userManager.UserId + }; + List QcCheckItemsRs = new(); + List QcCheckItemsDs = new(); if (CheckItemsInput.checktypes != null) { - foreach (var checktype in CheckItemsInput.checktypes) + foreach (CheckTypeInput checktype in CheckItemsInput.checktypes) { if (checktype.items != null) { - foreach (var item in checktype.items) + foreach (ItemInput item in checktype.items) { - var QcCheckItemsD = new QcCheckItemsD() + QcCheckItemsD QcCheckItemsD = new() { extype = item.extype, excontent = item.excontent, @@ -204,7 +237,7 @@ namespace Tnb.QcMgr custom = item.customer }; QcCheckItemsDs.Add(QcCheckItemsD); - var QcCheckItemsR = new QcCheckItemsR() + QcCheckItemsR QcCheckItemsR = new() { itemshid = QcCheckItemsH.id, typeid = checktype.id, @@ -224,9 +257,9 @@ namespace Tnb.QcMgr }); await db.Ado.BeginTranAsync(); - await db.Insertable(QcCheckItemsH).ExecuteCommandAsync(); - await db.Insertable(QcCheckItemsRs).ExecuteCommandAsync(); - await db.Insertable(QcCheckItemsDs).ExecuteCommandAsync(); + _ = await db.Insertable(QcCheckItemsH).ExecuteCommandAsync(); + _ = await db.Insertable(QcCheckItemsRs).ExecuteCommandAsync(); + _ = await db.Insertable(QcCheckItemsDs).ExecuteCommandAsync(); await db.Ado.CommitTranAsync(); } catch (Exception) diff --git a/QcMgr/Tnb.QcMgr/QcCheckPlanService.cs b/QcMgr/Tnb.QcMgr/QcCheckPlanService.cs index ae2f83f8..9fafc113 100644 --- a/QcMgr/Tnb.QcMgr/QcCheckPlanService.cs +++ b/QcMgr/Tnb.QcMgr/QcCheckPlanService.cs @@ -41,21 +41,21 @@ namespace Tnb.QcMgr } private async Task Delete(string id) { - var db = _repository.AsSugarClient(); - var QcCheckPlanH = await db.Queryable().Where(p => p.id == id).FirstAsync(); - var QcCheckPlanDs = await db.Queryable().Where(p => p.mainid == id).ToListAsync(); - var QcCheckPlanAdds = await db.Queryable().Where(p => p.mainid == id).ToListAsync(); - var QcCheckPlanMaterials = await db.Queryable().Where(p => p.planid == id).ToListAsync(); - var QcCheckPlanProcesss = await db.Queryable().Where(p => p.planid == id).ToListAsync(); - var QcCheckPlanWorks = await db.Queryable().Where(p => p.planid == id).ToListAsync(); + ISqlSugarClient db = _repository.AsSugarClient(); + QcCheckPlanH QcCheckPlanH = await db.Queryable().Where(p => p.id == id).FirstAsync(); + List QcCheckPlanDs = await db.Queryable().Where(p => p.mainid == id).ToListAsync(); + List QcCheckPlanAdds = await db.Queryable().Where(p => p.mainid == id).ToListAsync(); + List QcCheckPlanMaterials = await db.Queryable().Where(p => p.planid == id).ToListAsync(); + List QcCheckPlanProcesss = await db.Queryable().Where(p => p.planid == id).ToListAsync(); + List QcCheckPlanWorks = await db.Queryable().Where(p => p.planid == id).ToListAsync(); await _timeTaskService.DeleteByName("生成质检任务" + QcCheckPlanH.id); await db.Ado.BeginTranAsync(); - await db.Deleteable(QcCheckPlanH).ExecuteCommandAsync(); - await db.Deleteable(QcCheckPlanDs).ExecuteCommandAsync(); - await db.Deleteable(QcCheckPlanAdds).ExecuteCommandAsync(); - await db.Deleteable(QcCheckPlanMaterials).ExecuteCommandAsync(); - await db.Deleteable(QcCheckPlanProcesss).ExecuteCommandAsync(); - await db.Deleteable(QcCheckPlanWorks).ExecuteCommandAsync(); + _ = await db.Deleteable(QcCheckPlanH).ExecuteCommandAsync(); + _ = await db.Deleteable(QcCheckPlanDs).ExecuteCommandAsync(); + _ = await db.Deleteable(QcCheckPlanAdds).ExecuteCommandAsync(); + _ = await db.Deleteable(QcCheckPlanMaterials).ExecuteCommandAsync(); + _ = await db.Deleteable(QcCheckPlanProcesss).ExecuteCommandAsync(); + _ = await db.Deleteable(QcCheckPlanWorks).ExecuteCommandAsync(); await db.Ado.CommitTranAsync(); } /// @@ -66,15 +66,17 @@ namespace Tnb.QcMgr [HttpPost] public async Task GetCheckItems(string id) { - var db = _repository.AsSugarClient(); - var QcCheckItems = await db.Queryable().ToListAsync(); - var QcCheckTypes = await db.Queryable().ToListAsync(); - var QcCheckPlanAdd = await db.Queryable().Where(p => p.mainid == id).FirstAsync(); - var QcCheckPlanDs = await db.Queryable().Where(p => p.mainid == id).ToListAsync(); - var CheckPlansOut = new CheckPlansOut(); - CheckPlansOut.id = id; - CheckPlansOut.hasadd = false; - CheckPlansOut.hasitem = false; + ISqlSugarClient db = _repository.AsSugarClient(); + List QcCheckItems = await db.Queryable().ToListAsync(); + List QcCheckTypes = await db.Queryable().ToListAsync(); + QcCheckPlanAdd QcCheckPlanAdd = await db.Queryable().Where(p => p.mainid == id).FirstAsync(); + List QcCheckPlanDs = await db.Queryable().Where(p => p.mainid == id).ToListAsync(); + CheckPlansOut CheckPlansOut = new() + { + id = id, + hasadd = false, + hasitem = false + }; if (QcCheckPlanAdd != null) { CheckPlansOut.hasadd = true; @@ -87,54 +89,61 @@ namespace Tnb.QcMgr { CheckPlansOut.hasitem = true; CheckPlansOut.checktypes = new List(); - foreach (var QcCheckPlanD in QcCheckPlanDs) + foreach (QcCheckPlanD QcCheckPlanD in QcCheckPlanDs) { if (CheckPlansOut.checktypes.Where(p => p.checktypeid == QcCheckPlanD.typeid).ToList().Count == 0) { - CheckPlanTypeOut checkType = new CheckPlanTypeOut(); - checkType.checktypeid = QcCheckPlanD.typeid!; - checkType.checktypename = QcCheckTypes.Where(p => p.id == QcCheckPlanD.typeid).First().name!; - checkType.items = new List(); + CheckPlanTypeOut checkType = new() + { + checktypeid = QcCheckPlanD.typeid!, + checktypename = QcCheckTypes.Where(p => p.id == QcCheckPlanD.typeid).First().name!, + items = new List() + }; CheckPlansOut.checktypes.Add(checkType); } - PlanItemOut Item = new PlanItemOut(); - Item.itemid = QcCheckPlanD.itemid!; - Item.itemdid = QcCheckPlanD.id!; - Item.code = QcCheckItems.Where(p => p.id == QcCheckPlanD.itemid).First().code!; - Item.name = QcCheckItems.Where(p => p.id == QcCheckPlanD.itemid).First().name!; - Item.setData = new PlanItemData(); - Item.setData.extype = QcCheckPlanD.extype!; - Item.setData.excontent = JSON.Deserialize(QcCheckPlanD.excontent!); - Item.setData.check = QcCheckPlanD.check!; + PlanItemOut Item = new() + { + itemid = QcCheckPlanD.itemid!, + itemdid = QcCheckPlanD.id!, + code = QcCheckItems.Where(p => p.id == QcCheckPlanD.itemid).First().code!, + name = QcCheckItems.Where(p => p.id == QcCheckPlanD.itemid).First().name!, + setData = new PlanItemData + { + extype = QcCheckPlanD.extype!, + excontent = JSON.Deserialize(QcCheckPlanD.excontent!), + check = QcCheckPlanD.check! + } + }; if (!string.IsNullOrEmpty(QcCheckPlanD.errorcause)) + { Item.setData.errorcause = QcCheckPlanD.errorcause!.Replace("[", "").Replace("]", "").Split(',', StringSplitOptions.RemoveEmptyEntries); + } + if (!string.IsNullOrEmpty(QcCheckPlanD.errorlevel)) + { Item.setData.errorlevel = QcCheckPlanD.errorlevel!.Replace("[", "").Replace("]", "").Split(',', StringSplitOptions.RemoveEmptyEntries); + } + Item.setData.remark = QcCheckPlanD.remark!; Item.setData.attachment = QcCheckPlanD.attachment!; Item.setData.customer = QcCheckPlanD.custom!; if (!string.IsNullOrEmpty(QcCheckPlanD.isexec)) + { Item.setData.isexec = JSON.Deserialize(QcCheckPlanD.isexec!); - Item.setShow = new PlanItemShow(); - Item.setShow.extype = !string.IsNullOrEmpty(Item.setData.extype); - Item.setShow.excontent = !string.IsNullOrEmpty(QcCheckPlanD.excontent); - Item.setShow.check = !string.IsNullOrEmpty(Item.setData.check); - Item.setShow.errorcause = Item.setData.errorcause == null ? false : true; - Item.setShow.errorlevel = Item.setData.errorlevel == null ? 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); - if (Item.setData.isexec == null) - { - Item.setShow.isexec = false; } - else + + Item.setShow = new PlanItemShow { - if (!Item.setData.isexec.attachment && !Item.setData.isexec.remark) - Item.setShow.isexec = false; - else - Item.setShow.isexec = true; - } + extype = !string.IsNullOrEmpty(Item.setData.extype), + excontent = !string.IsNullOrEmpty(QcCheckPlanD.excontent), + check = !string.IsNullOrEmpty(Item.setData.check), + errorcause = Item.setData.errorcause != null, + errorlevel = Item.setData.errorlevel != null, + remark = !string.IsNullOrEmpty(Item.setData.remark), + attachment = !string.IsNullOrEmpty(Item.setData.attachment), + customer = !string.IsNullOrEmpty(Item.setData.customer) + }; + Item.setShow.isexec = Item.setData.isexec != null && (Item.setData.isexec.attachment || Item.setData.isexec.remark); CheckPlansOut.checktypes.Where(p => p.checktypeid == QcCheckPlanD.typeid).First()?.items?.Add(Item); } @@ -150,18 +159,20 @@ namespace Tnb.QcMgr [HttpPost] public async Task GetTriggerPlans() { - var db = _repository.AsSugarClient(); - var QcTriggerPlans = await db.Queryable().ToListAsync(); - var QcTriggerEvents = await db.Queryable().ToListAsync(); - List TriggerPlans = new List(); - foreach (var triggerPlan in QcTriggerPlans) + ISqlSugarClient db = _repository.AsSugarClient(); + List QcTriggerPlans = await db.Queryable().ToListAsync(); + List QcTriggerEvents = await db.Queryable().ToListAsync(); + List TriggerPlans = new(); + foreach (QcTriggerPlan triggerPlan in QcTriggerPlans) { - TriggerPlan TriggerPlan = new TriggerPlan(); - TriggerPlan.id = triggerPlan.id; - TriggerPlan.name = triggerPlan.name!; - TriggerPlan.code = triggerPlan.code!; - TriggerPlan.type = triggerPlan.type!; - TriggerPlan.cycle = triggerPlan.cycle!; + TriggerPlan TriggerPlan = new() + { + id = triggerPlan.id, + name = triggerPlan.name!, + code = triggerPlan.code!, + type = triggerPlan.type!, + cycle = triggerPlan.cycle! + }; if (!string.IsNullOrEmpty(triggerPlan.trievent)) { TriggerPlan.trieventid = triggerPlan.trievent!.Replace("[", "").Replace("]", "").Replace("\r\n", "").Replace("\"", "").Replace(" ", "").Split(',', StringSplitOptions.RemoveEmptyEntries); @@ -180,69 +191,81 @@ namespace Tnb.QcMgr [HttpPost] public async Task SaveData(CheckPlanInput CheckPlanInput) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); try { if (string.IsNullOrEmpty(CheckPlanInput.mainid)) + { return; + } + await _timeTaskService.DeleteByName("生成质检任务" + CheckPlanInput.mainid); - await db.Deleteable(p => p.mainid == CheckPlanInput.mainid).ExecuteCommandAsync(); - await db.Deleteable(p => p.mainid == CheckPlanInput.mainid).ExecuteCommandAsync(); - QcCheckPlanAdd QcCheckPlanAdd = new QcCheckPlanAdd(); - QcCheckPlanAdd.mainid = CheckPlanInput.mainid; - QcCheckPlanAdd.triggertype = CheckPlanInput.triggertype; - QcCheckPlanAdd.content = CheckPlanInput.content; - QcCheckPlanAdd.number = CheckPlanInput.number; - List QcCheckPlanDs = new List(); + _ = await db.Deleteable(p => p.mainid == CheckPlanInput.mainid).ExecuteCommandAsync(); + _ = await db.Deleteable(p => p.mainid == CheckPlanInput.mainid).ExecuteCommandAsync(); + QcCheckPlanAdd QcCheckPlanAdd = new() + { + mainid = CheckPlanInput.mainid, + triggertype = CheckPlanInput.triggertype, + content = CheckPlanInput.content, + number = CheckPlanInput.number + }; + List QcCheckPlanDs = new(); if (CheckPlanInput.checktypes != null) { - foreach (var checktype in CheckPlanInput.checktypes) + foreach (CheckPlanTypeInput checktype in CheckPlanInput.checktypes) { if (checktype.items != null) { - foreach (var item in checktype.items) + foreach (PlanItemInput item in checktype.items) { - QcCheckPlanD QcCheckPlanD = new QcCheckPlanD(); - QcCheckPlanD.mainid = CheckPlanInput.mainid; - QcCheckPlanD.typeid = checktype.id; - QcCheckPlanD.itemid = item.itemid; - QcCheckPlanD.extype = item.extype; - QcCheckPlanD.excontent = item.excontent; - QcCheckPlanD.check = item.check; - QcCheckPlanD.errorcause = item.errorcause?.Replace("\"", "").Trim(); - QcCheckPlanD.errorlevel = item.errorlevel?.Replace("\"", "").Trim(); - QcCheckPlanD.remark = item.remark; - QcCheckPlanD.attachment = item.attachment; - QcCheckPlanD.isexec = item.isexec; - QcCheckPlanD.custom = item.customer; - QcCheckPlanD.create_id = _userManager.UserId; - QcCheckPlanD.create_time = DateTime.Now; + QcCheckPlanD QcCheckPlanD = new() + { + mainid = CheckPlanInput.mainid, + typeid = checktype.id, + itemid = item.itemid, + extype = item.extype, + excontent = item.excontent, + check = item.check, + errorcause = item.errorcause?.Replace("\"", "").Trim(), + errorlevel = item.errorlevel?.Replace("\"", "").Trim(), + remark = item.remark, + attachment = item.attachment, + isexec = item.isexec, + custom = item.customer, + create_id = _userManager.UserId, + create_time = DateTime.Now + }; QcCheckPlanDs.Add(QcCheckPlanD); } } } } await db.Ado.BeginTranAsync(); - await db.Insertable(QcCheckPlanDs).ExecuteCommandAsync(); - await db.Insertable(QcCheckPlanAdd).ExecuteCommandAsync(); + _ = await db.Insertable(QcCheckPlanDs).ExecuteCommandAsync(); + _ = await db.Insertable(QcCheckPlanAdd).ExecuteCommandAsync(); await db.Ado.CommitTranAsync(); if (QcCheckPlanAdd.triggertype == ((int)EnumTriggerType.周期触发).ToString() || QcCheckPlanAdd.triggertype == ((int)EnumTriggerType.一次性).ToString()) { - var comtentModel = new ContentModel(); - comtentModel.cron = QcCheckPlanAdd.content!.Replace("\"", ""); - comtentModel.interfaceId = ""; - comtentModel.interfaceName = ""; - comtentModel.parameter = new List(); + ContentModel comtentModel = new() + { + cron = QcCheckPlanAdd.content!.Replace("\"", ""), + interfaceId = "", + interfaceName = "", + parameter = new List() + }; comtentModel.parameter!.Add(new InterfaceParameter() { field = "id", value = QcCheckPlanAdd.mainid, defaultValue = "" }); if (QcCheckPlanAdd.triggertype == ((int)EnumTriggerType.一次性).ToString()) + { comtentModel.parameter!.Add(new InterfaceParameter() { field = "doonce", value = true.ToString(), defaultValue = "" }); + } + comtentModel.localHostTaskId = "QcTaskTimeWorker/CreateTask"; comtentModel.startTime = DateTimeOffset.Now.ToUnixTimeMilliseconds(); comtentModel.TenantId = _userManager?.TenantId!; comtentModel.TenantDbName = _userManager?.TenantDbName!; comtentModel.ConnectionConfig = _userManager?.ConnectionConfig!; comtentModel.Token = _userManager?.ToKen!; - TimeTaskCrInput timeTaskCrInput = new TimeTaskCrInput() + TimeTaskCrInput timeTaskCrInput = new() { enCode = DateTime.Now.ToString("yyyyMMddHHmmss"), fullName = "生成质检任务" + QcCheckPlanAdd.mainid, @@ -271,7 +294,7 @@ namespace Tnb.QcMgr [HttpPost] public async Task CreateTask(TriggerPlanEntity entity) { - var Query = _repository.AsSugarClient().Queryable + ISugarQueryable Query = _repository.AsSugarClient().Queryable ((a, b, c, d, e) => new object[] { JoinType.Inner,a.id== b.mainid, JoinType.Left,a.id == c.planid, @@ -279,9 +302,9 @@ namespace Tnb.QcMgr JoinType.Left,a.id == e.planid, }); GetQuery(Query, entity); - var list = await Query.ToListAsync(); - List removes = new List(); - foreach (var data in list) + List list = await Query.ToListAsync(); + List removes = new(); + foreach (QcCheckPlanH data in list) { if (!string.IsNullOrEmpty(entity.materialid)) { @@ -322,25 +345,27 @@ namespace Tnb.QcMgr // .WhereIF(!string.IsNullOrEmpty(entity.workid), (a, b, c, d, e) => e.workid == entity.workid).ToListAsync(); Filter(list, entity); if (list.Count > 0) + { await SaveTask(list, entity); + } } private void GetQuery(ISugarQueryable Query, TriggerPlanEntity entity) { - var DictionaryData = _repository.AsSugarClient().Queryable + List DictionaryData = _repository.AsSugarClient().Queryable ((a, b) => new object[] { JoinType.Left, a.DictionaryTypeId == b.Id, }) .Where((a, b) => b.FullName == "质检类型选择").ToList(); - var TriggerEvent = new QcTriggerEvent(); - var enumTriggerEvent = entity.triggerevent; - var remark = RemarkAttribute.GetRemark(enumTriggerEvent); - var type = DictionaryData.Where(p => p.FullName == remark.CheckType).First().Id; + QcTriggerEvent TriggerEvent = new(); + EnumTriggerEvent? enumTriggerEvent = entity.triggerevent; + RemarkAttribute remark = RemarkAttribute.GetRemark(enumTriggerEvent); + string type = DictionaryData.Where(p => p.FullName == remark.CheckType).First().Id; TriggerEvent = _repository.AsSugarClient().Queryable().Where(p => p.type == type && p.name == remark.CheckContent).First(); Query = Query.Where((a, b, c, d, e) => b.triggertype == "3" && b.content!.Contains(TriggerEvent.id)); } private void Filter(List QcCheckPlanHs, TriggerPlanEntity entity) { - var removePlanHs = new List(); - var enumTriggerEvent = entity.triggerevent; - foreach (var plan in QcCheckPlanHs) + List removePlanHs = new(); + EnumTriggerEvent? enumTriggerEvent = entity.triggerevent; + foreach (QcCheckPlanH plan in QcCheckPlanHs) { if (enumTriggerEvent == EnumTriggerEvent.首件检换模具) { @@ -378,9 +403,11 @@ namespace Tnb.QcMgr } if (enumTriggerEvent == EnumTriggerEvent.生产检定量) { - var number = _repository.AsSugarClient().Queryable().Where(p => p.mainid == plan.id).First().number; - if ((entity.newpronum + entity.oldpronum / number) <= (entity.oldpronum / number)) + int? number = _repository.AsSugarClient().Queryable().Where(p => p.mainid == plan.id).First().number; + if ((entity.newpronum + (entity.oldpronum / number)) <= (entity.oldpronum / number)) + { removePlanHs.Add(plan); + } } if (enumTriggerEvent == EnumTriggerEvent.生产检定码) { @@ -388,9 +415,11 @@ namespace Tnb.QcMgr } if (enumTriggerEvent == EnumTriggerEvent.生产检产出频次) { - var number = _repository.AsSugarClient().Queryable().Where(p => p.mainid == plan.id).First().number; + int? number = _repository.AsSugarClient().Queryable().Where(p => p.mainid == plan.id).First().number; if ((entity.pronum % number) != 0) + { removePlanHs.Add(plan); + } } if (enumTriggerEvent == EnumTriggerEvent.生产检固定次数) { @@ -401,49 +430,53 @@ namespace Tnb.QcMgr } } - removePlanHs.ForEach(p => { QcCheckPlanHs.Remove(p); }); + removePlanHs.ForEach(p => { _ = QcCheckPlanHs.Remove(p); }); } private async Task SaveTask(List planhs, TriggerPlanEntity entity) { - var DictionaryData = _repository.AsSugarClient().Queryable + DictionaryDataEntity DictionaryData = _repository.AsSugarClient().Queryable ((a, b) => new object[] { JoinType.Left, a.DictionaryTypeId == b.Id, }) .Where((a, b) => b.FullName == "质检状态" && a.FullName == "待执行").First(); - var plands = await _repository.AsSugarClient().Queryable().Where(p => planhs.Select(p => p.id).ToList().Contains(p.mainid!)).ToListAsync(); - foreach (var planh in planhs) + List plands = await _repository.AsSugarClient().Queryable().Where(p => planhs.Select(p => p.id).ToList().Contains(p.mainid!)).ToListAsync(); + foreach (QcCheckPlanH planh in planhs) { - var time = DateTime.Now; - QcCheckExecH qcCheckExecH = new QcCheckExecH(); - qcCheckExecH.id = SnowflakeIdHelper.NextId(); - qcCheckExecH.checktype = planh.checktype; - qcCheckExecH.status = DictionaryData.Id; - qcCheckExecH.tasktime = time.ToString("yyyy-MM-dd HH:mm:ss"); - qcCheckExecH.materialid = entity.materialid; - qcCheckExecH.processid = entity.processid; - qcCheckExecH.workid = entity.workid; - qcCheckExecH.create_id = _userManager.UserId; - qcCheckExecH.create_time = time; - var ExecDs = new List(); - foreach (var pland in plands.Where(p => p.mainid == planh.id).ToList()) + DateTime time = DateTime.Now; + QcCheckExecH qcCheckExecH = new() { - QcCheckExecD QcCheckExecD = new QcCheckExecD(); - QcCheckExecD.mainid = qcCheckExecH.id; - QcCheckExecD.extype = pland.extype; - QcCheckExecD.excontent = pland.excontent; - QcCheckExecD.check = pland.check; - QcCheckExecD.errorcause = pland.errorcause; - QcCheckExecD.errorlevel = pland.errorlevel; - QcCheckExecD.remark = pland.remark; - QcCheckExecD.attachment = pland.attachment; - QcCheckExecD.isexec = pland.isexec; - QcCheckExecD.custom = pland.custom; - QcCheckExecD.typeid = pland.typeid; - QcCheckExecD.itemid = pland.itemid; - QcCheckExecD.create_id = _userManager.UserId; - QcCheckExecD.create_time = time; + id = SnowflakeIdHelper.NextId(), + checktype = planh.checktype, + status = DictionaryData.Id, + tasktime = time.ToString("yyyy-MM-dd HH:mm:ss"), + materialid = entity.materialid, + processid = entity.processid, + workid = entity.workid, + create_id = _userManager.UserId, + create_time = time + }; + List ExecDs = new(); + foreach (QcCheckPlanD? pland in plands.Where(p => p.mainid == planh.id).ToList()) + { + QcCheckExecD QcCheckExecD = new() + { + mainid = qcCheckExecH.id, + extype = pland.extype, + excontent = pland.excontent, + check = pland.check, + errorcause = pland.errorcause, + errorlevel = pland.errorlevel, + remark = pland.remark, + attachment = pland.attachment, + isexec = pland.isexec, + custom = pland.custom, + typeid = pland.typeid, + itemid = pland.itemid, + create_id = _userManager.UserId, + create_time = time + }; ExecDs.Add(QcCheckExecD); } - await _repository.AsSugarClient().Insertable(qcCheckExecH).ExecuteCommandAsync(); - await _repository.AsSugarClient().Insertable(ExecDs).ExecuteCommandAsync(); + _ = await _repository.AsSugarClient().Insertable(qcCheckExecH).ExecuteCommandAsync(); + _ = await _repository.AsSugarClient().Insertable(ExecDs).ExecuteCommandAsync(); } } diff --git a/QcMgr/Tnb.QcMgr/QcCheckTaskResultService.cs b/QcMgr/Tnb.QcMgr/QcCheckTaskResultService.cs index 7a49684f..1d2880e5 100644 --- a/QcMgr/Tnb.QcMgr/QcCheckTaskResultService.cs +++ b/QcMgr/Tnb.QcMgr/QcCheckTaskResultService.cs @@ -34,22 +34,24 @@ namespace Tnb.QcMgr } private async Task GetListAsync(VisualDevModelListQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary dic = new Dictionary(); - dic.Add("ok", "合格"); - dic.Add("no", "不合格"); - dic.Add("barelyok", "让步合格"); - dic.Add("await", "待检"); - dic.Add("temporarily", "暂控"); - Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary dic = new() + { + { "ok", "合格" }, + { "no", "不合格" }, + { "barelyok", "让步合格" }, + { "await", "待检" }, + { "temporarily", "暂控" } + }; + Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); string materialid = queryJson.ContainsKey("materialid") ? queryJson["materialid"].ToString() : ""; string checktype = queryJson.ContainsKey("checktype") ? queryJson["checktype"].ToString() : ""; string status = queryJson.ContainsKey("status") ? queryJson["status"].ToString() : ""; - var list = await db.Queryable() + List list = await db.Queryable() .LeftJoin((a, b) => a.DictionaryTypeId == b.Id) .Where((a, b) => b.FullName == "质检状态" || b.FullName == "质检类型选择").ToListAsync(); - var BasLocations = await db.Queryable().ToListAsync(); - var result = await db.Queryable() + List BasLocations = await db.Queryable().ToListAsync(); + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.materialid == b.id) .LeftJoin((a, b, c) => a.processid == c.id) .LeftJoin((a, b, c, d) => a.workid == d.Id) @@ -69,11 +71,11 @@ namespace Tnb.QcMgr checknum = a.checknum, status = a.status, result = a.result, - tasktime = a.tasktime == null ? "" : a.tasktime, - exectime = a.exectime == null ? "" : a.exectime, - execuser = e.RealName == null ? "" : e.RealName, + tasktime = a.tasktime ?? "", + exectime = a.exectime ?? "", + execuser = e.RealName ?? "", }).OrderByDescending(a => DateTime.Parse(a.exectime)).ToPagedListAsync(input.currentPage, input.pageSize); - foreach (var item in result.list) + foreach (QcCheckExecHOut? item in result.list) { item.checktype = list.Select(p => p.Id).Contains(item.checktype) ? list.Where(p => p.Id == item.checktype).First().FullName : ""; item.status = list.Select(p => p.Id).Contains(item.status) ? list.Where(p => p.Id == item.status).First().FullName : ""; @@ -86,31 +88,27 @@ namespace Tnb.QcMgr [HttpPost] public async Task GetCheckTask(VisualDevModelListQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary dic = new Dictionary(); - dic.Add("ok", "合格"); - dic.Add("no", "不合格"); - dic.Add("barelyOk", "让步合格"); - dic.Add("await", "待检"); - dic.Add("temporarily", "暂控"); - Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary dic = new() + { + { "ok", "合格" }, + { "no", "不合格" }, + { "barelyOk", "让步合格" }, + { "await", "待检" }, + { "temporarily", "暂控" } + }; + Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); string materialid = queryJson.ContainsKey("materialid") ? queryJson["materialid"].ToString() : ""; string checktype = queryJson.ContainsKey("checktype") ? queryJson["checktype"].ToString() : ""; string status = queryJson.ContainsKey("status") ? queryJson["status"].ToString() : ""; - var list = await db.Queryable() + List list = await db.Queryable() .LeftJoin((a, b) => a.DictionaryTypeId == b.Id) .Where((a, b) => b.FullName == "质检状态" || b.FullName == "质检类型选择").ToListAsync(); - var BasLocations = await db.Queryable().ToListAsync(); - Expression> expression; - if (list.Where(p => p.FullName == "待执行").First().Id == status) - { - expression = a => DateTime.Parse(a.tasktime!); - } - else - { - expression = a => DateTime.Parse(a.exectime!); - } - var result = await db.Queryable() + List BasLocations = await db.Queryable().ToListAsync(); + Expression> expression = list.Where(p => p.FullName == "待执行").First().Id == status + ? (a => DateTime.Parse(a.tasktime!)) + : (a => DateTime.Parse(a.exectime!)); + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.materialid == b.id) .LeftJoin((a, b, c) => a.processid == c.id) .LeftJoin((a, b, c, d) => a.workid == d.Id) @@ -130,12 +128,12 @@ namespace Tnb.QcMgr checknum = a.checknum, status = a.status, result = a.result, - tasktime = a.tasktime == null ? "" : a.tasktime, - exectime = a.exectime == null ? "" : a.exectime, - execuser = e.RealName == null ? "" : e.RealName, + tasktime = a.tasktime ?? "", + exectime = a.exectime ?? "", + execuser = e.RealName ?? "", }).OrderByDescending(expression).ToPagedListAsync(input.currentPage, input.pageSize); - foreach (var item in result.list) + foreach (QcCheckExecHOut? item in result.list) { item.checktype = list.Select(p => p.Id).Contains(item.checktype) ? list.Where(p => p.Id == item.checktype).First().FullName : ""; item.status = list.Select(p => p.Id).Contains(item.status) ? list.Where(p => p.Id == item.status).First().FullName : ""; diff --git a/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs b/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs index 1f1201d1..34a86548 100644 --- a/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs +++ b/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs @@ -39,22 +39,24 @@ namespace Tnb.QcMgr private async Task GetListAsync(VisualDevModelListQueryInput input) { - var db = _repository.AsSugarClient(); - Dictionary dic = new Dictionary(); - dic.Add("ok", "合格"); - dic.Add("no", "不合格"); - dic.Add("barelyok", "让步合格"); - dic.Add("await", "待检"); - dic.Add("temporarily", "暂控"); - Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); + ISqlSugarClient db = _repository.AsSugarClient(); + Dictionary dic = new() + { + { "ok", "合格" }, + { "no", "不合格" }, + { "barelyok", "让步合格" }, + { "await", "待检" }, + { "temporarily", "暂控" } + }; + Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); string materialid = queryJson.ContainsKey("materialid") ? queryJson["materialid"].ToString() : ""; string checktype = queryJson.ContainsKey("checktype") ? queryJson["checktype"].ToString() : ""; string status = queryJson.ContainsKey("status") ? queryJson["status"].ToString() : ""; - var list = await db.Queryable() + List list = await db.Queryable() .LeftJoin((a, b) => a.DictionaryTypeId == b.Id) .Where((a, b) => b.FullName == "质检状态" || b.FullName == "质检类型选择").ToListAsync(); - var BasLocations = await db.Queryable().ToListAsync(); - var result = await db.Queryable() + List BasLocations = await db.Queryable().ToListAsync(); + SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.materialid == b.id) .LeftJoin((a, b, c) => a.processid == c.id) .LeftJoin((a, b, c, d) => a.workid == d.Id) @@ -74,11 +76,11 @@ namespace Tnb.QcMgr checknum = a.checknum, status = a.status, result = a.result, - tasktime = a.tasktime == null ? "" : a.tasktime, - exectime = a.exectime == null ? "" : a.exectime, - execuser = e.RealName == null ? "" : e.RealName, + tasktime = a.tasktime ?? "", + exectime = a.exectime ?? "", + execuser = e.RealName ?? "", }).OrderByDescending(a => DateTime.Parse(a.tasktime)).ToPagedListAsync(input.currentPage, input.pageSize); - foreach (var item in result.list) + foreach (QcCheckExecHOut? item in result.list) { item.checktype = list.Select(p => p.Id).Contains(item.checktype) ? list.Where(p => p.Id == item.checktype).First().FullName : ""; item.status = list.Select(p => p.Id).Contains(item.status) ? list.Where(p => p.Id == item.status).First().FullName : ""; @@ -95,55 +97,66 @@ namespace Tnb.QcMgr [HttpGet] public async Task GetTaskItems(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(); + ISqlSugarClient db = _repository.AsSugarClient(); + QcCheckExecH QcCheckExecH = await db.Queryable().Where(p => p.id == id).FirstAsync(); + List QcCheckExecDs = await db.Queryable().Where(p => p.mainid == id).ToListAsync(); + List QcCheckItems = await db.Queryable().ToListAsync(); + List QcCheckTypes = await db.Queryable().ToListAsync(); + List QcErrorCauses = await db.Queryable().ToListAsync(); + List QcErrorLevels = await db.Queryable().ToListAsync(); - CheckTaskOut CheckTaskOut = new CheckTaskOut(); - CheckTaskOut.mainid = id; - CheckTaskOut.wareid = QcCheckExecH.wareid!; - CheckTaskOut.workid = QcCheckExecH.workid!; - CheckTaskOut.status = QcCheckExecH.status!; + CheckTaskOut CheckTaskOut = new() + { + mainid = id, + wareid = QcCheckExecH.wareid!, + workid = QcCheckExecH.workid!, + status = QcCheckExecH.status! + }; if (!string.IsNullOrEmpty(CheckTaskOut.workid)) + { CheckTaskOut.workname = db.Queryable().Where(p => p.Id == CheckTaskOut.workid).First().FullName; + } + CheckTaskOut.checktypes = new List(); - foreach (var QcCheckExecD in QcCheckExecDs) + foreach (QcCheckExecD QcCheckExecD in QcCheckExecDs) { if (CheckTaskOut.checktypes.Where(p => p.checktypeid == QcCheckExecD.typeid).ToList().Count == 0) { - CheckExecTypeOut checkType = new CheckExecTypeOut(); - checkType.checktypeid = QcCheckExecD.typeid!; - checkType.checktypename = QcCheckTypes.Where(p => p.id == QcCheckExecD.typeid).First().name!; - checkType.items = new List(); + CheckExecTypeOut checkType = new() + { + checktypeid = QcCheckExecD.typeid!, + checktypename = QcCheckTypes.Where(p => p.id == QcCheckExecD.typeid).First().name!, + items = new List() + }; CheckTaskOut.checktypes.Add(checkType); } - ExecItemOut Item = new ExecItemOut(); - 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!; + ExecItemOut Item = new() + { + itemid = QcCheckExecD.itemid!, + itemdid = QcCheckExecD.id!, + code = QcCheckItems.Where(p => p.id == QcCheckExecD.itemid).First().code!, + name = QcCheckItems.Where(p => p.id == QcCheckExecD.itemid).First().name!, + setData = new ExecItemData + { + extype = QcCheckExecD.extype!, + excontent = JSON.Deserialize(QcCheckExecD.excontent!), + check = QcCheckExecD.check! + } + }; if (!string.IsNullOrEmpty(QcCheckExecD.errorcause)) { - var strs = QcCheckExecD.errorcause!.Replace("[", "").Replace("]", "").Split(',', StringSplitOptions.RemoveEmptyEntries); + string[] strs = QcCheckExecD.errorcause!.Replace("[", "").Replace("]", "").Split(',', StringSplitOptions.RemoveEmptyEntries); Item.setData.errorcause = new List(); - foreach (var str in strs) + foreach (string 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); + string[] strs = QcCheckExecD.errorlevel!.Replace("[", "").Replace("]", "").Split(',', StringSplitOptions.RemoveEmptyEntries); Item.setData.errorlevel = new List(); - foreach (var str in strs) + foreach (string str in strs) { Item.setData.errorlevel.Add(new Error { id = str, name = QcErrorLevels.Where(p => p.id == str).First().name! }); } @@ -152,17 +165,22 @@ namespace Tnb.QcMgr 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 == null || Item.setData.errorcause?.Count == 0 ? false : true; - Item.setShow.errorlevel = Item.setData.errorlevel == null || 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; + } + + Item.setShow = new ExecItemShow + { + extype = !string.IsNullOrEmpty(Item.setData.extype), + excontent = !string.IsNullOrEmpty(QcCheckExecD.excontent), + check = !string.IsNullOrEmpty(Item.setData.check), + errorcause = Item.setData.errorcause != null && (Item.setData.errorcause?.Count) != 0, + errorlevel = Item.setData.errorlevel != null && (Item.setData.errorlevel?.Count) != 0, + remark = !string.IsNullOrEmpty(Item.setData.remark), + attachment = !string.IsNullOrEmpty(Item.setData.attachment), + customer = !string.IsNullOrEmpty(Item.setData.customer), + isexec = Item.setData.isexec != null + }; CheckTaskOut.checktypes.Where(p => p.checktypeid == QcCheckExecD.typeid).First()?.items?.Add(Item); } return CheckTaskOut; @@ -176,57 +194,68 @@ namespace Tnb.QcMgr [HttpPost] public async Task SaveData(CheckTaskInput CheckTaskInput) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); try { - var QcCheckExecH = await db.Queryable().Where(p => p.id == CheckTaskInput.mainid).FirstAsync(); - var DictionaryType = await db.Queryable().Where(p => p.FullName == "质检状态").FirstAsync(); - var DictionaryData = await db.Queryable().Where(p => p.DictionaryTypeId == DictionaryType.Id && p.FullName == "已完成").FirstAsync(); + QcCheckExecH QcCheckExecH = await db.Queryable().Where(p => p.id == CheckTaskInput.mainid).FirstAsync(); + DictionaryTypeEntity DictionaryType = await db.Queryable().Where(p => p.FullName == "质检状态").FirstAsync(); + DictionaryDataEntity DictionaryData = await db.Queryable().Where(p => p.DictionaryTypeId == DictionaryType.Id && p.FullName == "已完成").FirstAsync(); QcCheckExecH.checknum = CheckTaskInput.checknum; QcCheckExecH.status = DictionaryData.Id; 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(); - var QcCheckExecDdel = new List(); - var QcCheckExecDinsert = new List(); + List QcCheckExecDs = await db.Queryable().Where(p => p.mainid == CheckTaskInput.mainid).ToListAsync(); + List QcCheckExecDdel = new(); + List QcCheckExecDinsert = new(); if (CheckTaskInput.checktypes?.Count > 0) { for (int i = 0; i < CheckTaskInput.checktypes.Count; i++) { if (CheckTaskInput.checktypes[i].Count > 0) { - foreach (var exextype in CheckTaskInput.checktypes[i]) + foreach (Exextype exextype in CheckTaskInput.checktypes[i]) { if (exextype.items != null) { - foreach (var item in exextype.items) + foreach (ExecItemInput item in exextype.items) { if (item.postItemForm == null) + { throw Oops.Oh("执行失败"); - var QcCheckExecD = QcCheckExecDs.Where(p => p.id == item.itemdid).FirstOrDefault(); + } + + QcCheckExecD? 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(); + } + + QcCheckExecD insert = new() + { + mainid = QcCheckExecD.mainid, + extype = QcCheckExecD.extype, + excontent = QcCheckExecD.excontent, + check = QcCheckExecD.check, + errorcause = QcCheckExecD.errorcause, + errorlevel = QcCheckExecD.errorlevel, + remark = QcCheckExecD.remark, + attachment = QcCheckExecD.attachment, + isexec = QcCheckExecD.isexec, + custom = QcCheckExecD.custom, + typeid = QcCheckExecD.typeid, + itemid = QcCheckExecD.itemid, + create_id = QcCheckExecD.create_id, + create_time = QcCheckExecD.create_time, + postdata = item.postItemForm, + result = item.result, + checkindex = (i + 1).ToString() + }; QcCheckExecDinsert.Add(insert); } } @@ -235,9 +264,9 @@ namespace Tnb.QcMgr } } await db.Ado.BeginTranAsync(); - await db.Updateable(QcCheckExecH).ExecuteCommandAsync(); - await db.Deleteable(QcCheckExecDdel).ExecuteCommandAsync(); - await db.Insertable(QcCheckExecDinsert).ExecuteCommandAsync(); + _ = await db.Updateable(QcCheckExecH).ExecuteCommandAsync(); + _ = await db.Deleteable(QcCheckExecDdel).ExecuteCommandAsync(); + _ = await db.Insertable(QcCheckExecDinsert).ExecuteCommandAsync(); await db.Ado.CommitTranAsync(); } catch (Exception) @@ -254,59 +283,67 @@ namespace Tnb.QcMgr [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(); + ISqlSugarClient db = _repository.AsSugarClient(); + QcCheckExecH QcCheckExecH = await db.Queryable().Where(p => p.id == id).FirstAsync(); + List QcCheckExecDs = await db.Queryable().Where(p => p.mainid == id).ToListAsync(); + List QcCheckItems = await db.Queryable().ToListAsync(); + List QcCheckTypes = await db.Queryable().ToListAsync(); + List QcErrorCauses = await db.Queryable().ToListAsync(); + List QcErrorLevels = await db.Queryable().ToListAsync(); - Result Result = new Result(); - Result.mainid = id; - Result.checknum = QcCheckExecH.checknum!; - Result.status = QcCheckExecH.status!; - Result.checktypes = new List>(); - Result.result = QcCheckExecH.result; - var groupkeys = QcCheckExecDs.Select(p => p.checkindex).Distinct().ToList(); - foreach (var key in groupkeys) + Result Result = new() { - var QcCheckExecDsbykey = QcCheckExecDs.Where(p => p.checkindex == key).ToList(); - var checktype = new List(); - foreach (var QcCheckExecD in QcCheckExecDsbykey) + mainid = id, + checknum = QcCheckExecH.checknum!, + status = QcCheckExecH.status!, + checktypes = new List>(), + result = QcCheckExecH.result + }; + List groupkeys = QcCheckExecDs.Select(p => p.checkindex).Distinct().ToList(); + foreach (string? key in groupkeys) + { + List QcCheckExecDsbykey = QcCheckExecDs.Where(p => p.checkindex == key).ToList(); + List checktype = new(); + foreach (QcCheckExecD? 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 checkType = new() + { + checktypeid = QcCheckExecD.typeid!, + checktypename = QcCheckTypes.Where(p => p.id == QcCheckExecD.typeid).First().name!, + 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.result = QcCheckExecD.result; - Item.setData = new ExecItemData(); - Item.setData.extype = QcCheckExecD.extype!; - Item.setData.excontent = JSON.Deserialize(QcCheckExecD.excontent!); - Item.setData.check = QcCheckExecD.check!; + ExecItem Item = new() + { + itemid = QcCheckExecD.itemid!, + itemdid = QcCheckExecD.id!, + code = QcCheckItems.Where(p => p.id == QcCheckExecD.itemid).First().code!, + name = QcCheckItems.Where(p => p.id == QcCheckExecD.itemid).First().name!, + result = QcCheckExecD.result, + setData = new ExecItemData + { + extype = QcCheckExecD.extype!, + excontent = JSON.Deserialize(QcCheckExecD.excontent!), + check = QcCheckExecD.check! + } + }; if (!string.IsNullOrEmpty(QcCheckExecD.errorcause)) { - var strs = QcCheckExecD.errorcause!.Replace("[", "").Replace("]", "").Split(',', StringSplitOptions.RemoveEmptyEntries); + string[] strs = QcCheckExecD.errorcause!.Replace("[", "").Replace("]", "").Split(',', StringSplitOptions.RemoveEmptyEntries); Item.setData.errorcause = new List(); - foreach (var str in strs) + foreach (string 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); + string[] strs = QcCheckExecD.errorlevel!.Replace("[", "").Replace("]", "").Split(',', StringSplitOptions.RemoveEmptyEntries); Item.setData.errorlevel = new List(); - foreach (var str in strs) + foreach (string str in strs) { Item.setData.errorlevel.Add(new Error { id = str, name = QcErrorLevels.Where(p => p.id == str).First().name! }); } @@ -315,19 +352,27 @@ namespace Tnb.QcMgr 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; + } + + Item.setShow = new ExecItemShow + { + extype = !string.IsNullOrEmpty(Item.setData.extype), + excontent = !string.IsNullOrEmpty(QcCheckExecD.excontent), + check = !string.IsNullOrEmpty(Item.setData.check), + errorcause = (Item.setData.errorcause?.Count) != 0, + errorlevel = (Item.setData.errorlevel?.Count) != 0, + remark = !string.IsNullOrEmpty(Item.setData.remark), + attachment = !string.IsNullOrEmpty(Item.setData.attachment), + customer = !string.IsNullOrEmpty(Item.setData.customer), + isexec = Item.setData.isexec != null + }; 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); @@ -339,51 +384,55 @@ namespace Tnb.QcMgr [HttpPost] public async Task CreateTaskData(CheckTaskData checkTaskData) { - var db = _repository.AsSugarClient(); - var DictionaryType = await db.Queryable().Where(p => p.FullName == "质检状态").FirstAsync(); - var DictionaryData = await db.Queryable().Where(p => p.DictionaryTypeId == DictionaryType.Id && p.FullName == "待执行").FirstAsync(); - QcCheckExecH QcCheckExecH = new QcCheckExecH(); - QcCheckExecH.checktype = checkTaskData.checktype; - QcCheckExecH.materialid = checkTaskData.materialid; - QcCheckExecH.processid = checkTaskData.processid; - QcCheckExecH.workid = checkTaskData.workid; - QcCheckExecH.wareid = checkTaskData.wareid; - QcCheckExecH.status = DictionaryData.Id; - QcCheckExecH.tasktime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); - QcCheckExecH.create_id = _userManager.UserId; - QcCheckExecH.create_time = DateTime.Now; - List QcCheckExecDs = new List(); + ISqlSugarClient db = _repository.AsSugarClient(); + DictionaryTypeEntity DictionaryType = await db.Queryable().Where(p => p.FullName == "质检状态").FirstAsync(); + DictionaryDataEntity DictionaryData = await db.Queryable().Where(p => p.DictionaryTypeId == DictionaryType.Id && p.FullName == "待执行").FirstAsync(); + QcCheckExecH QcCheckExecH = new() + { + checktype = checkTaskData.checktype, + materialid = checkTaskData.materialid, + processid = checkTaskData.processid, + workid = checkTaskData.workid, + wareid = checkTaskData.wareid, + status = DictionaryData.Id, + tasktime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), + create_id = _userManager.UserId, + create_time = DateTime.Now + }; + List QcCheckExecDs = new(); if (checkTaskData.checktypes != null) { - foreach (var checktype in checkTaskData.checktypes) + foreach (CheckTaskDataInput checktype in checkTaskData.checktypes) { if (checktype.items != null) { - foreach (var item in checktype.items) + foreach (TaskItemInput item in checktype.items) { - QcCheckExecD QcCheckExecD = new QcCheckExecD(); - QcCheckExecD.mainid = QcCheckExecH.id; - QcCheckExecD.typeid = checktype.id; - QcCheckExecD.itemid = item.itemid; - QcCheckExecD.extype = item.extype; - QcCheckExecD.excontent = item.excontent; - QcCheckExecD.check = item.check; - QcCheckExecD.errorcause = item.errorcause?.Replace("\"", "").Trim(); - QcCheckExecD.errorlevel = item.errorlevel?.Replace("\"", "").Trim(); - QcCheckExecD.remark = item.remark; - QcCheckExecD.attachment = item.attachment; - QcCheckExecD.isexec = item.isexec; - QcCheckExecD.custom = item.customer; - QcCheckExecD.create_id = _userManager.UserId; - QcCheckExecD.create_time = DateTime.Now; + QcCheckExecD QcCheckExecD = new() + { + mainid = QcCheckExecH.id, + typeid = checktype.id, + itemid = item.itemid, + extype = item.extype, + excontent = item.excontent, + check = item.check, + errorcause = item.errorcause?.Replace("\"", "").Trim(), + errorlevel = item.errorlevel?.Replace("\"", "").Trim(), + remark = item.remark, + attachment = item.attachment, + isexec = item.isexec, + custom = item.customer, + create_id = _userManager.UserId, + create_time = DateTime.Now + }; QcCheckExecDs.Add(QcCheckExecD); } } } } await db.Ado.BeginTranAsync(); - await db.Insertable(QcCheckExecH).ExecuteCommandAsync(); - await db.Insertable(QcCheckExecDs).ExecuteCommandAsync(); + _ = await db.Insertable(QcCheckExecH).ExecuteCommandAsync(); + _ = await db.Insertable(QcCheckExecDs).ExecuteCommandAsync(); await db.Ado.CommitTranAsync(); } diff --git a/QcMgr/Tnb.QcMgr/QcCheckTypeService.cs b/QcMgr/Tnb.QcMgr/QcCheckTypeService.cs index bff674e9..0347b618 100644 --- a/QcMgr/Tnb.QcMgr/QcCheckTypeService.cs +++ b/QcMgr/Tnb.QcMgr/QcCheckTypeService.cs @@ -41,13 +41,13 @@ namespace Tnb.QcMgr } private async Task GetList(VisualDevModelListQueryInput input) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); - var data = await _runService.GetListResult(templateEntity, input); + JNPF.Common.Filter.PageResult> data = await _runService.GetListResult(templateEntity, input); if (data?.list?.Count > 0) { - var items = await db.Queryable().ToListAsync(); - foreach (var row in data.list) + List items = await db.Queryable().ToListAsync(); + foreach (Dictionary row in data.list) { row["inspection_items"] = string.Join(",", items.Where(p => p.type == row["id"].ToString()).Select(p => p.name).ToList()); } diff --git a/QcMgr/Tnb.QcMgr/QcSpcService.cs b/QcMgr/Tnb.QcMgr/QcSpcService.cs index 44099ebb..e261ac1d 100644 --- a/QcMgr/Tnb.QcMgr/QcSpcService.cs +++ b/QcMgr/Tnb.QcMgr/QcSpcService.cs @@ -31,17 +31,19 @@ namespace Tnb.QcMgr [HttpPost] public async Task GetSpcItems(string id) { - var datas = await _repository.AsSugarClient().Queryable().Where(p => p.mainid == id).ToListAsync(); - List SpcDataInputs = new List(); + List datas = await _repository.AsSugarClient().Queryable().Where(p => p.mainid == id).ToListAsync(); + List SpcDataInputs = new(); datas.ForEach(p => { - SpcDataInput SpcDataInput = new SpcDataInput(); - SpcDataInput.mainid = p.mainid; - SpcDataInput.checktime = p.checktime; - SpcDataInput.batch = p.batch; - SpcDataInput.data = Array.ConvertAll(p.data!.Split(","), float.Parse); - SpcDataInput.checknum = p.checknum; - SpcDataInput.defectivenum = p.defectivenum; + SpcDataInput SpcDataInput = new() + { + mainid = p.mainid, + checktime = p.checktime, + batch = p.batch, + data = Array.ConvertAll(p.data!.Split(","), float.Parse), + checknum = p.checknum, + defectivenum = p.defectivenum + }; SpcDataInputs.Add(SpcDataInput); }); return SpcDataInputs; @@ -54,29 +56,34 @@ namespace Tnb.QcMgr [HttpPost] public async Task SaveData(List SpcDataInput) { - var db = _repository.AsSugarClient(); + ISqlSugarClient db = _repository.AsSugarClient(); try { if (!string.IsNullOrEmpty(SpcDataInput.First().mainid)) - await db.Deleteable(p => p.mainid == SpcDataInput.First().mainid).ExecuteCommandAsync(); - List QcSpcDs = new List(); + { + _ = await db.Deleteable(p => p.mainid == SpcDataInput.First().mainid).ExecuteCommandAsync(); + } + + List QcSpcDs = new(); SpcDataInput.ForEach(p => { - QcSpcD QcSpcD = new QcSpcD(); - QcSpcD.mainid = p.mainid; - QcSpcD.checktime = p.checktime; - QcSpcD.batch = p.batch; - QcSpcD.data = string.Join(",", p.data); - QcSpcD.checknum = p.checknum; - QcSpcD.defectivenum = p.defectivenum; - QcSpcD.create_id = _userManager.UserId; - QcSpcD.create_time = DateTime.Now; + QcSpcD QcSpcD = new() + { + mainid = p.mainid, + checktime = p.checktime, + batch = p.batch, + data = string.Join(",", p.data), + checknum = p.checknum, + defectivenum = p.defectivenum, + create_id = _userManager.UserId, + create_time = DateTime.Now + }; QcSpcDs.Add(QcSpcD); }); await db.Ado.BeginTranAsync(); - await db.Insertable(QcSpcDs).ExecuteCommandAsync(); + _ = await db.Insertable(QcSpcDs).ExecuteCommandAsync(); await db.Ado.CommitTranAsync(); } catch (Exception) @@ -91,41 +98,47 @@ namespace Tnb.QcMgr /// /// [HttpPost] - public async Task GetSpcData(string id) + public async Task GetSpcData(string id) { - var QcSpcH = await _repository.AsSugarClient().Queryable().Where(p => p.id == id).FirstAsync(); - var QcSpcDs = await _repository.AsSugarClient().Queryable().Where(p => p.mainid == id).ToListAsync(); - var cinfigs = await _repository.AsSugarClient().Queryable().ToListAsync(); + QcSpcH QcSpcH = await _repository.AsSugarClient().Queryable().Where(p => p.id == id).FirstAsync(); + List QcSpcDs = await _repository.AsSugarClient().Queryable().Where(p => p.mainid == id).ToListAsync(); + List cinfigs = await _repository.AsSugarClient().Queryable().ToListAsync(); if (QcSpcH.graphtype == "X-R控制图") { - XRchart XRchart = new XRchart(); - XRchart.xcharts = new List(); - XRchart.rcharts = new List(); - foreach (var QcSpcD in QcSpcDs) + XRchart XRchart = new() + { + xcharts = new List(), + rcharts = new List() + }; + foreach (QcSpcD QcSpcD in QcSpcDs) { List datas = Array.ConvertAll(QcSpcD.data!.Split(",", StringSplitOptions.RemoveEmptyEntries), float.Parse).ToList(); - XRxchart xchart = new XRxchart(); - xchart.x = datas.Average(); - xchart.jc = datas.Max() - datas.Min(); - xchart.usl = QcSpcH.uplimit; - xchart.cl = QcSpcH.target; - xchart.lsl = QcSpcH.lowerlimit; - XRrchart rchart = new XRrchart(); - rchart.r = datas.Max() - datas.Min(); + XRxchart xchart = new() + { + x = datas.Average(), + jc = datas.Max() - datas.Min(), + usl = QcSpcH.uplimit, + cl = QcSpcH.target, + lsl = QcSpcH.lowerlimit + }; + XRrchart rchart = new() + { + r = datas.Max() - datas.Min() + }; XRchart.xcharts.Add(xchart); XRchart.rcharts.Add(rchart); } - var xAverage = XRchart.xcharts.Select(p => p.x).Average(); - var num = XRchart.xcharts.Select(p => p.jc).Average() * cinfigs.Where(p => p.spctype == "X-R图" && p.spckey == "A2" && p.subcapacity == QcSpcH.samplesize).Select(p => p.spcdata).First(); + float? xAverage = XRchart.xcharts.Select(p => p.x).Average(); + float? num = XRchart.xcharts.Select(p => p.jc).Average() * cinfigs.Where(p => p.spctype == "X-R图" && p.spckey == "A2" && p.subcapacity == QcSpcH.samplesize).Select(p => p.spcdata).First(); XRchart.xcharts.ForEach(p => { p.uclx = xAverage + num; p.clx = xAverage; p.lclx = xAverage - num; }); - var D4 = cinfigs.Where(p => p.spctype == "X-R图" && p.spckey == "D4" && p.subcapacity == QcSpcH.samplesize).Select(p => p.spcdata).First(); - var D3 = cinfigs.Where(p => p.spctype == "X-R图" && p.spckey == "D3" && p.subcapacity == QcSpcH.samplesize).Select(p => p.spcdata).First(); - var rAverage = XRchart.rcharts.Select(p => p.r).Average(); + float? D4 = cinfigs.Where(p => p.spctype == "X-R图" && p.spckey == "D4" && p.subcapacity == QcSpcH.samplesize).Select(p => p.spcdata).First(); + float? D3 = cinfigs.Where(p => p.spctype == "X-R图" && p.spckey == "D3" && p.subcapacity == QcSpcH.samplesize).Select(p => p.spcdata).First(); + float? rAverage = XRchart.rcharts.Select(p => p.r).Average(); XRchart.rcharts.ForEach(p => { p.uclr = rAverage * D4; @@ -136,34 +149,40 @@ namespace Tnb.QcMgr } if (QcSpcH.graphtype == "X-S控制图") { - XSchart XSchart = new XSchart(); - XSchart.xcharts = new List(); - XSchart.scharts = new List(); - foreach (var QcSpcD in QcSpcDs) + XSchart XSchart = new() + { + xcharts = new List(), + scharts = new List() + }; + foreach (QcSpcD QcSpcD in QcSpcDs) { List datas = Array.ConvertAll(QcSpcD.data!.Split(",", StringSplitOptions.RemoveEmptyEntries), float.Parse).ToList(); - XSxchart xchart = new XSxchart(); - xchart.x = datas.Average(); - xchart.bzc = CalculateStdDev(datas); - xchart.usl = QcSpcH.uplimit; - xchart.cl = QcSpcH.target; - xchart.lsl = QcSpcH.lowerlimit; - XSschart schart = new XSschart(); - schart.s = CalculateStdDev(datas); + XSxchart xchart = new() + { + x = datas.Average(), + bzc = CalculateStdDev(datas), + usl = QcSpcH.uplimit, + cl = QcSpcH.target, + lsl = QcSpcH.lowerlimit + }; + XSschart schart = new() + { + s = CalculateStdDev(datas) + }; XSchart.xcharts.Add(xchart); XSchart.scharts.Add(schart); } - var xAverage = XSchart.xcharts.Select(p => p.x).Average(); - var num = XSchart.xcharts.Select(p => p.bzc).Average() * cinfigs.Where(p => p.spctype == "X-S图" && p.spckey == "A3" && p.subcapacity == QcSpcH.samplesize).Select(p => p.spcdata).First(); + float? xAverage = XSchart.xcharts.Select(p => p.x).Average(); + float? num = XSchart.xcharts.Select(p => p.bzc).Average() * cinfigs.Where(p => p.spctype == "X-S图" && p.spckey == "A3" && p.subcapacity == QcSpcH.samplesize).Select(p => p.spcdata).First(); XSchart.xcharts.ForEach(p => { p.uclx = xAverage + num; p.clx = xAverage; p.lclx = xAverage - num; }); - var B4 = cinfigs.Where(p => p.spctype == "X-S图" && p.spckey == "B4" && p.subcapacity == QcSpcH.samplesize).Select(p => p.spcdata).First(); - var B3 = cinfigs.Where(p => p.spctype == "X-S图" && p.spckey == "B3" && p.subcapacity == QcSpcH.samplesize).Select(p => p.spcdata).First(); - var sAverage = XSchart.scharts.Select(p => p.s).Average(); + float? B4 = cinfigs.Where(p => p.spctype == "X-S图" && p.spckey == "B4" && p.subcapacity == QcSpcH.samplesize).Select(p => p.spcdata).First(); + float? B3 = cinfigs.Where(p => p.spctype == "X-S图" && p.spckey == "B3" && p.subcapacity == QcSpcH.samplesize).Select(p => p.spcdata).First(); + float? sAverage = XSchart.scharts.Select(p => p.s).Average(); XSchart.scharts.ForEach(p => { p.ucls = sAverage * B4; @@ -174,34 +193,40 @@ namespace Tnb.QcMgr } if (QcSpcH.graphtype == "X中位数-R图") { - XRchart XRchart = new XRchart(); - XRchart.xcharts = new List(); - XRchart.rcharts = new List(); - foreach (var QcSpcD in QcSpcDs) + XRchart XRchart = new() + { + xcharts = new List(), + rcharts = new List() + }; + foreach (QcSpcD QcSpcD in QcSpcDs) { List datas = Array.ConvertAll(QcSpcD.data!.Split(",", StringSplitOptions.RemoveEmptyEntries), float.Parse).ToList(); - XRxchart xchart = new XRxchart(); - xchart.x = CalculateMedian(datas); - xchart.jc = datas.Max() - datas.Min(); - xchart.usl = QcSpcH.uplimit; - xchart.cl = QcSpcH.target; - xchart.lsl = QcSpcH.lowerlimit; - XRrchart rchart = new XRrchart(); - rchart.r = datas.Max() - datas.Min(); + XRxchart xchart = new() + { + x = CalculateMedian(datas), + jc = datas.Max() - datas.Min(), + usl = QcSpcH.uplimit, + cl = QcSpcH.target, + lsl = QcSpcH.lowerlimit + }; + XRrchart rchart = new() + { + r = datas.Max() - datas.Min() + }; XRchart.xcharts.Add(xchart); XRchart.rcharts.Add(rchart); } - var xAverage = XRchart.xcharts.Select(p => p.x).Average(); - var num = XRchart.xcharts.Select(p => p.jc).Average() * cinfigs.Where(p => p.spctype == "中位数图" && p.spckey == "A2" && p.subcapacity == QcSpcH.samplesize).Select(p => p.spcdata).First(); + float? xAverage = XRchart.xcharts.Select(p => p.x).Average(); + float? num = XRchart.xcharts.Select(p => p.jc).Average() * cinfigs.Where(p => p.spctype == "中位数图" && p.spckey == "A2" && p.subcapacity == QcSpcH.samplesize).Select(p => p.spcdata).First(); XRchart.xcharts.ForEach(p => { p.uclx = xAverage + num; p.clx = xAverage; p.lclx = xAverage - num; }); - var D4 = cinfigs.Where(p => p.spctype == "中位数图" && p.spckey == "D4" && p.subcapacity == QcSpcH.samplesize).Select(p => p.spcdata).First(); - var D3 = cinfigs.Where(p => p.spctype == "中位数图" && p.spckey == "D3" && p.subcapacity == QcSpcH.samplesize).Select(p => p.spcdata).First(); - var rAverage = XRchart.rcharts.Select(p => p.r).Average(); + float? D4 = cinfigs.Where(p => p.spctype == "中位数图" && p.spckey == "D4" && p.subcapacity == QcSpcH.samplesize).Select(p => p.spcdata).First(); + float? D3 = cinfigs.Where(p => p.spctype == "中位数图" && p.spckey == "D3" && p.subcapacity == QcSpcH.samplesize).Select(p => p.spcdata).First(); + float? rAverage = XRchart.rcharts.Select(p => p.r).Average(); XRchart.rcharts.ForEach(p => { p.uclr = rAverage * D4; @@ -212,27 +237,33 @@ namespace Tnb.QcMgr } if (QcSpcH.graphtype == "X-MR控制图") { - XMRchart XMRchart = new XMRchart(); - XMRchart.xmrxcharts = new List(); - XMRchart.xmrmrcharts = new List(); - foreach (var QcSpcD in QcSpcDs) + XMRchart XMRchart = new() + { + xmrxcharts = new List(), + xmrmrcharts = new List() + }; + foreach (QcSpcD QcSpcD in QcSpcDs) { List datas = Array.ConvertAll(QcSpcD.data!.Split(",", StringSplitOptions.RemoveEmptyEntries), float.Parse).ToList(); - XMRxchart xchart = new XMRxchart(); - xchart.x = datas.Average(); - xchart.usl = QcSpcH.uplimit; - xchart.cl = QcSpcH.target; - xchart.lsl = QcSpcH.lowerlimit; + XMRxchart xchart = new() + { + x = datas.Average(), + usl = QcSpcH.uplimit, + cl = QcSpcH.target, + lsl = QcSpcH.lowerlimit + }; if (XMRchart.xmrxcharts.Count > 0) { - XMRmrschart rchart = new XMRmrschart(); - rchart.mr = Math.Abs((float)(xchart.x - XMRchart.xmrxcharts.Last().x)!); + XMRmrschart rchart = new() + { + mr = Math.Abs((float)(xchart.x - XMRchart.xmrxcharts.Last().x)!) + }; XMRchart.xmrmrcharts.Add(rchart); } XMRchart.xmrxcharts.Add(xchart); } - var xAverage = XMRchart.xmrxcharts.Select(p => p.x).Average(); - var mrAverage = XMRchart.xmrmrcharts.Select(p => p.mr).Average(); + float? xAverage = XMRchart.xmrxcharts.Select(p => p.x).Average(); + float? mrAverage = XMRchart.xmrmrcharts.Select(p => p.mr).Average(); XMRchart.xmrxcharts.ForEach(p => { p.uclx = xAverage + (float)(2.66 * mrAverage)!; @@ -249,17 +280,19 @@ namespace Tnb.QcMgr } if (QcSpcH.graphtype == "P图") { - List pcharts = new List(); - foreach (var QcSpcD in QcSpcDs) + List pcharts = new(); + foreach (QcSpcD QcSpcD in QcSpcDs) { - Pchart pchart = new Pchart(); - pchart.p = QcSpcD.defectivenum / QcSpcD.checknum; - pchart.n = QcSpcD.checknum; + Pchart pchart = new() + { + p = QcSpcD.defectivenum / QcSpcD.checknum, + n = QcSpcD.checknum + }; pcharts.Add(pchart); } - var pAverage = (pcharts.Select(p => p.n * p.p).Sum()) / (pcharts.Select(p => p.n).Sum()); - var nAverage = pcharts.Select(p => p.n).Average(); + float? pAverage = pcharts.Select(p => p.n * p.p).Sum() / pcharts.Select(p => p.n).Sum(); + float? nAverage = pcharts.Select(p => p.n).Average(); pcharts.ForEach(p => { p.cl = pAverage; @@ -270,16 +303,18 @@ namespace Tnb.QcMgr } if (QcSpcH.graphtype == "U图") { - List ucharts = new List(); - foreach (var QcSpcD in QcSpcDs) + List ucharts = new(); + foreach (QcSpcD QcSpcD in QcSpcDs) { - Uchart uchart = new Uchart(); - uchart.u = QcSpcD.defectivenum / QcSpcD.checknum; - uchart.n = QcSpcD.checknum; + Uchart uchart = new() + { + u = QcSpcD.defectivenum / QcSpcD.checknum, + n = QcSpcD.checknum + }; ucharts.Add(uchart); } - var uAverage = (ucharts.Select(p => p.u).Sum()) / (ucharts.Count()); - var nAverage = ucharts.Select(p => p.n).Average(); + float? uAverage = ucharts.Select(p => p.u).Sum() / ucharts.Count(); + float? nAverage = ucharts.Select(p => p.n).Average(); ucharts.ForEach(p => { p.cl = uAverage; @@ -290,15 +325,17 @@ namespace Tnb.QcMgr } if (QcSpcH.graphtype == "nP图") { - List npcharts = new List(); - foreach (var QcSpcD in QcSpcDs) + List npcharts = new(); + foreach (QcSpcD QcSpcD in QcSpcDs) { - NPchart npchart = new NPchart(); - npchart.np = QcSpcD.defectivenum; + NPchart npchart = new() + { + np = QcSpcD.defectivenum + }; npcharts.Add(npchart); } - var npAverage = (npcharts.Select(p => p.np).Sum()) / (npcharts.Count()); - var pAverage = npcharts.Select(p => p.np).Sum() / (npcharts.Count() * QcSpcH.subcapacity); + float? npAverage = npcharts.Select(p => p.np).Sum() / npcharts.Count(); + float? pAverage = npcharts.Select(p => p.np).Sum() / (npcharts.Count() * QcSpcH.subcapacity); npcharts.ForEach(p => { p.cl = npAverage; @@ -309,14 +346,16 @@ namespace Tnb.QcMgr } if (QcSpcH.graphtype == "C图") { - List ccharts = new List(); - foreach (var QcSpcD in QcSpcDs) + List ccharts = new(); + foreach (QcSpcD QcSpcD in QcSpcDs) { - Cchart cchart = new Cchart(); - cchart.c = QcSpcD.defectivenum; + Cchart cchart = new() + { + c = QcSpcD.defectivenum + }; ccharts.Add(cchart); } - var cAverage = (ccharts.Select(p => p.c).Sum()) / (ccharts.Count()); + float? cAverage = ccharts.Select(p => p.c).Sum() / ccharts.Count(); ccharts.ForEach(p => { p.cl = cAverage; @@ -346,25 +385,20 @@ namespace Tnb.QcMgr private static float CalculateMedian(IEnumerable values) { float ret = 0; - var floats = values.OrderBy(d => d).ToArray(); - if (floats.Count() % 2 == 0) - { - ret = (floats[floats.Count() / 2 - 1] + floats[(floats.Count() + 2) / 2 - 1]) / 2; - } - else - { - ret = floats[(floats.Count() + 1) / 2 - 1]; - } + float[] floats = values.OrderBy(d => d).ToArray(); + ret = floats.Count() % 2 == 0 + ? (floats[(floats.Count() / 2) - 1] + floats[((floats.Count() + 2) / 2) - 1]) / 2 + : floats[((floats.Count() + 1) / 2) - 1]; return ret; } //移动极差平均值计算 private static float CalculateMovRange(IEnumerable values) { - List floats = new List(); - var arr = values.ToArray(); + List floats = new(); + float[] arr = values.ToArray(); for (int i = 0; i < arr.Length - 1; i++) { - floats.Add(Math.Abs((arr[i + 1] - arr[i]))); + floats.Add(Math.Abs(arr[i + 1] - arr[i])); } return floats.Average(); } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/BasRegionUserService.cs b/WarehouseMgr/Tnb.WarehouseMgr/BasRegionUserService.cs index b220b5b9..e37fc67a 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/BasRegionUserService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/BasRegionUserService.cs @@ -21,7 +21,7 @@ namespace Tnb.WarehouseMgr private readonly ISqlSugarClient _db; private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; - private static Dictionary _dicRegion = new Dictionary(); + private static Dictionary _dicRegion = new(); public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public BasRegionUserService(ISqlSugarRepository repository, IRunService runService, IVisualDevService visualDevService) { @@ -39,9 +39,9 @@ namespace Tnb.WarehouseMgr } if (input.data.ContainsKey(nameof(BasRegionUser.region_id)) && input.data.ContainsKey(nameof(BasRegionUser.user_id))) { - var regionId = input.data[nameof(BasRegionUser.region_id)].ToString()!; - var userId = input.data[nameof(BasRegionUser.user_id)].ToString(); - var user = await _db.Queryable().Where(it => it.region_id == regionId && it.user_id == userId).FirstAsync(); + string regionId = input.data[nameof(BasRegionUser.region_id)].ToString()!; + string? userId = input.data[nameof(BasRegionUser.user_id)].ToString(); + BasRegionUser user = await _db.Queryable().Where(it => it.region_id == regionId && it.user_id == userId).FirstAsync(); if (user != null) { throw new AppFriendlyException($"区域【{_dicRegion[regionId]}】,已存在用户【{user.user_name}】", 500); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs index 6579ac49..ab54ec7b 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs @@ -31,20 +31,11 @@ namespace Tnb.WarehouseMgr [Route("api/[area]/[controller]/[action]")] public class BaseWareHouseService : IOverideVisualDevService, IDynamicApiController, ITransient { - private static Lazy> _stroageMapLazy; + private static readonly Lazy> _stroageMapLazy; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); - public static SemaphoreSlim s_taskExecuteSemaphore = new SemaphoreSlim(1); + public static SemaphoreSlim s_taskExecuteSemaphore = new(1); - - - private IEventPublisher _eventPublisher; - - - protected IEventPublisher EventPublisher - { - set { _eventPublisher = value; } - get { return _eventPublisher; } - } + protected IEventPublisher? EventPublisher { set; get; } @@ -54,14 +45,17 @@ namespace Tnb.WarehouseMgr _stroageMapLazy = new Lazy>(() => { Dictionary map = new(); - var serviceTypes = App.EffectiveTypes.Where(u => u.IsClass && !u.IsInterface && !u.IsAbstract && typeof(IWHStorageService).IsAssignableFrom(u)).ToList(); - foreach (var serviceType in serviceTypes) + List serviceTypes = App.EffectiveTypes.Where(u => u.IsClass && !u.IsInterface && !u.IsAbstract && typeof(IWHStorageService).IsAssignableFrom(u)).ToList(); + foreach (Type? serviceType in serviceTypes) { - var callerName = serviceType.GetCustomAttribute()?.Name ?? string.Empty; + string callerName = serviceType.GetCustomAttribute()?.Name ?? string.Empty; if (!callerName.IsNullOrEmpty()) { - var obj = Activator.CreateInstance(serviceType) as IWHStorageService; - if (obj == null) continue; + if (Activator.CreateInstance(serviceType) is not IWHStorageService obj) + { + continue; + } + map[callerName] = obj; } } @@ -73,31 +67,30 @@ namespace Tnb.WarehouseMgr protected Task GetUserIdentity(string? asscessToken = null) { asscessToken = asscessToken?.Replace("Bearer ", "").Replace("bearer ", ""); - var at = asscessToken ?? UserManager.AsscessToken; - var claims = JWTEncryption.ReadJwtToken(at)?.Claims; - ClaimsIdentity toKen = new ClaimsIdentity(); + string at = asscessToken ?? UserManager.AsscessToken; + IEnumerable? claims = JWTEncryption.ReadJwtToken(at)?.Claims; + ClaimsIdentity toKen = new(); foreach (Claim item in claims) { toKen.AddClaim(item); } - var curUser = new ClaimsPrincipal(toKen); + ClaimsPrincipal curUser = new(toKen); return Task.FromResult(curUser); } protected Task SetUserEntity(IUserManager userManager, ClaimsPrincipal principal) - => Task.Run(() => - { - FieldInfo fieldInfo = userManager.GetType().GetField("_user", BindingFlags.NonPublic | BindingFlags.Instance); - if (fieldInfo != null) - { - fieldInfo.SetValue(userManager, principal); - } - }); + { + return Task.Run(() => + { + FieldInfo fieldInfo = userManager.GetType().GetField("_user", BindingFlags.NonPublic | BindingFlags.Instance); + fieldInfo?.SetValue(userManager, principal); + }); + } protected Task InvokeGenPretaskExcute() { - var wareHouseSvc = App.GetRequiredService(); + IWareHouseService wareHouseSvc = App.GetRequiredService(); return wareHouseSvc.GenTaskExecute(); } @@ -112,15 +105,23 @@ namespace Tnb.WarehouseMgr protected Task IsCarryAndLocationMatchByCarryStd(WmsCarryH carry, BasLocation locDest) { bool isMatch = false; - if (carry == null) throw new ArgumentNullException(nameof(carry)); - if (locDest == null) throw new ArgumentNullException(nameof(locDest)); + if (carry == null) + { + throw new ArgumentNullException(nameof(carry)); + } + + if (locDest == null) + { + throw new ArgumentNullException(nameof(locDest)); + } + if (!carry.carrystd_id.IsNullOrEmpty() && !locDest.carrystd_id.IsNullOrEmpty()) { JArray? jsonArr = null; try { jsonArr = JArray.Parse(locDest.carrystd_id); - var locCarryStdArr = jsonArr.Select(x => x.ToObject()).ToArray(); + string?[] locCarryStdArr = jsonArr.Select(x => x.ToObject()).ToArray(); isMatch = locCarryStdArr.Contains(carry.carrystd_id); } catch (Exception ex) when (ex is JsonException jex) @@ -140,7 +141,7 @@ namespace Tnb.WarehouseMgr [NonAction] protected Task GetRealFloor(int floor) { - var realFloor = 0; + int realFloor = 0; if (floor == 4) { realFloor = 5; @@ -164,7 +165,7 @@ namespace Tnb.WarehouseMgr [NonAction] protected async Task Publish(string taskName) { - await _eventPublisher.PublishAsync(new TaskStatusChangeSource(EventSubscribeEventConsts.TASKSTATUSCHANGE_EVENTID, taskName)); + await EventPublisher.PublishAsync(new TaskStatusChangeSource(EventSubscribeEventConsts.TASKSTATUSCHANGE_EVENTID, taskName)); } [NonAction] @@ -188,7 +189,7 @@ namespace Tnb.WarehouseMgr [NonAction] protected void BarCodePrint(List barCodes) { - var tcs = new TaskCompletionSource(); + TaskCompletionSource tcs = new(); // open port. try { @@ -213,8 +214,8 @@ namespace Tnb.WarehouseMgr int len1 = 128, len2 = 128; buf1 = new byte[len1]; buf2 = new byte[len2]; - PPLBUtility.B_EnumUSB(pbuf); - PPLBUtility.B_GetUSBDeviceInfo(1, buf1, out len1, buf2, out len2); + _ = PPLBUtility.B_EnumUSB(pbuf); + _ = PPLBUtility.B_GetUSBDeviceInfo(1, buf1, out len1, buf2, out len2); sw = 1; if (1 == sw) { @@ -238,14 +239,14 @@ namespace Tnb.WarehouseMgr if (2 == sw) { //Immediate Error Report. - PPLBUtility.B_WriteData(1, encAscII.GetBytes("^ee\r\n"), 5);//^ee + _ = PPLBUtility.B_WriteData(1, encAscII.GetBytes("^ee\r\n"), 5);//^ee ret = PPLBUtility.B_ReadData(pbuf, 4, 1000); } } } else { - System.IO.Directory.CreateDirectory(PPLBUtility.szSavePath); + _ = System.IO.Directory.CreateDirectory(PPLBUtility.szSavePath); ret = PPLBUtility.B_CreatePrn(0, PPLBUtility.szSaveFile);// open file. strmsg += "Open "; strmsg += PPLBUtility.szSaveFile; @@ -259,15 +260,17 @@ namespace Tnb.WarehouseMgr } } if (0 != ret) + { return; + } // sample setting. - PPLBUtility.B_Set_Originpoint(0, 0); - PPLBUtility.B_Select_Option(2); - PPLBUtility.B_Set_Darkness(8); - PPLBUtility.B_Del_Pcx("*");// delete all picture. + _ = PPLBUtility.B_Set_Originpoint(0, 0); + _ = PPLBUtility.B_Select_Option(2); + _ = PPLBUtility.B_Set_Darkness(8); + _ = PPLBUtility.B_Del_Pcx("*");// delete all picture. //PPLBUtility.B_Set_LabelForSmartPrint(254 * 3, 30);//label information: length= 3 * 25.4 mm, gap= 3 mm. 254 * 3, 30 - PPLBUtility.B_Set_Labwidth(80 * 8); + _ = PPLBUtility.B_Set_Labwidth(80 * 8); //var labelWidth = 640; //254 * 3; // 标签宽度 //var barcodeWidth = 320; // 条码宽度 //var barcodeX = (labelWidth - barcodeWidth) / 2; @@ -275,14 +278,14 @@ namespace Tnb.WarehouseMgr - foreach (var code in barCodes) + foreach (string code in barCodes) { //print text, true type text. - PPLBUtility.B_Prn_Text(200, 50, 0, 2, 2, 2, 'N', code); + _ = PPLBUtility.B_Prn_Text(200, 50, 0, 2, 2, 2, 'N', code); //barcode. - PPLBUtility.B_Prn_Barcode(50, 100, 0, "1", 3, 5, 70, 'B', code);//have a counter - // output. - PPLBUtility.B_Print_Out(1);// copy 2. + _ = PPLBUtility.B_Prn_Barcode(50, 100, 0, "1", 3, 5, 70, 'B', code);//have a counter + // output. + _ = PPLBUtility.B_Print_Out(1);// copy 2. } } catch (Exception ex) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService`1.cs b/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService`1.cs index 3109287a..1d7ab7ee 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService`1.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService`1.cs @@ -8,7 +8,7 @@ namespace Tnb.WarehouseMgr { public class BaseWareHouseService : BaseWareHouseService { - protected static Dictionary s_elevatorMap = new Dictionary(); + protected static Dictionary s_elevatorMap = new(); private static readonly Lazy initializationTask; @@ -44,13 +44,13 @@ namespace Tnb.WarehouseMgr cfgOpts.MessageFormat = (logMsg) => { Span span = logMsg.LogLevel.ToString().ToCharArray(); - var sb = new StringBuilder(); - sb.Append($"{span.Slice(0, 4)} "); - sb.Append($"{logMsg.LogName} "); - sb.Append($"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} "); - sb.Append($"#{logMsg.EventId.Id} "); - sb.Append(logMsg.Message + " "); - sb.Append(logMsg.Exception?.ToString()); + StringBuilder sb = new(); + _ = sb.Append($"{span[..4]} "); + _ = sb.Append($"{logMsg.LogName} "); + _ = sb.Append($"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} "); + _ = sb.Append($"#{logMsg.EventId.Id} "); + _ = sb.Append(logMsg.Message + " "); + _ = sb.Append(logMsg.Exception?.ToString()); return sb.ToString(); }; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs index 3f7019a0..03d7b45d 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs @@ -82,7 +82,7 @@ namespace Tnb.WarehouseMgr { Log.Information("取货确认.................."); - var elevator = await _db.Queryable().LeftJoin((a, b) => a.id == b.bill_id) + WmsElevatorH elevator = await _db.Queryable().LeftJoin((a, b) => a.id == b.bill_id) .LeftJoin((a, b, c) => b.location_id == c.startlocation_id) .LeftJoin((a, b, c, d) => c.startlocation_id == d.location_id) .Where((a, b, c, d) => d.point_code == input.sourceName && input.taskCode.Contains(c.bill_code)) @@ -101,15 +101,15 @@ namespace Tnb.WarehouseMgr try { Logger.Information($"当前任务Id:{elevator.distask_id}"); - if (s_elevatorMap.TryGetValue(elevator.device_id, out var elevatorCode)) + if (s_elevatorMap.TryGetValue(elevator.device_id, out object? elevatorCode)) { - var devName = elevatorCode?.ToString() ?? _eleCtlCfg.DevName; + string devName = elevatorCode?.ToString() ?? _eleCtlCfg.DevName; (int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) = await _elevatorControlService.GetElevatorStatus(devName, CancellationToken.None); - Logger.Information($"电梯当前状态->系统状态:{sysStatus.ToEnum().ToString()},运行状态:{runStatus.ToEnum().ToString()},Agv状态:{agvStatus.ToEnum().ToString()},当前楼层:{floorNo}"); + Logger.Information($"电梯当前状态->系统状态:{sysStatus.ToEnum()},运行状态:{runStatus.ToEnum()},Agv状态:{agvStatus.ToEnum()},当前楼层:{floorNo}"); { if (doorStatus.ToEnum() != EnumDoorStatus.开门到位保持) { - await _elevatorControlService.SendOpenCloseCmd(devName, 3); //发送电梯前门开门指令 + _ = await _elevatorControlService.SendOpenCloseCmd(devName, 3); //发送电梯前门开门指令 } if (sysStatus.ToEnum() == EnumSysStatus.正常状态 && runStatus.ToEnum() == EnumRunStatus.停梯) { @@ -142,7 +142,7 @@ namespace Tnb.WarehouseMgr try { //根据Agv传递的参数获取,对应的电梯 - var elevator = await _db.Queryable().LeftJoin((a, b) => a.id == b.bill_id) + WmsElevatorH elevator = await _db.Queryable().LeftJoin((a, b) => a.id == b.bill_id) .LeftJoin((a, b, c) => b.location_id == c.endlocation_id) .LeftJoin((a, b, c, d) => c.endlocation_id == d.location_id) .Where((a, b, c, d) => d.point_code == input.targetName && c.bill_code == input.taskCode) @@ -153,12 +153,15 @@ namespace Tnb.WarehouseMgr }, true) .FirstAsync(); if (elevator.IsNull()) - throw new Exception($"根据参数,sourceName:{input.sourceName},taskCode:{input.taskCode},未找到匹配的电梯任务"); - if (s_elevatorMap.TryGetValue(elevator.elevator_id, out var elevatorCode)) { - var devName = elevatorCode?.ToString() ?? _eleCtlCfg.DevName; + throw new Exception($"根据参数,sourceName:{input.sourceName},taskCode:{input.taskCode},未找到匹配的电梯任务"); + } + + if (s_elevatorMap.TryGetValue(elevator.elevator_id, out object? elevatorCode)) + { + string devName = elevatorCode?.ToString() ?? _eleCtlCfg.DevName; (int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) = await _elevatorControlService.GetElevatorStatus(devName, CancellationToken.None);//elevator.elevator_code - Logger.Information($"电梯当前状态->系统状态:{sysStatus.ToEnum().ToString()},运行状态:{runStatus},门状态:{doorStatus},Agv状态:{agvStatus},当前楼层:{floorNo}"); + Logger.Information($"电梯当前状态->系统状态:{sysStatus.ToEnum()},运行状态:{runStatus},门状态:{doorStatus},Agv状态:{agvStatus},当前楼层:{floorNo}"); //判断Agv电梯是否进入状态 if (agvStatus != (int)EnumAgvStatus.AGV运行状态) { @@ -170,7 +173,7 @@ namespace Tnb.WarehouseMgr //电梯到达目标楼层后,判断当前电梯门状态是否为开门到位保持状态 if (doorStatus != (int)EnumDoorStatus.开门到位保持) { - await _elevatorControlService.SendOpenCloseCmd(devName, 3); //发送电梯前门开门指令 + _ = await _elevatorControlService.SendOpenCloseCmd(devName, 3); //发送电梯前门开门指令 } if (sysStatus == (int)EnumSysStatus.正常状态 && runStatus == (int)EnumRunStatus.停梯 && doorStatus == (int)EnumDoorStatus.开门到位保持) @@ -221,9 +224,13 @@ namespace Tnb.WarehouseMgr case "ALLOCATED": break; case "PROCESSING": //if (await _cacheManager.GetAsync($"{input.taskChainCode}") == "任务链状态上报,上报状态PROCESSING") break; - if (input.taskChainCode.Trim().IsNullOrEmpty()) break; - var disTasks = await _db.Queryable().Where(it => it.bill_code.Contains(input.taskChainCode)).ToListAsync(); - var eps = await _db.Queryable().Where(it => it.code.Contains(input.deviceID)).ToListAsync(); + if (input.taskChainCode.Trim().IsNullOrEmpty()) + { + break; + } + + List disTasks = await _db.Queryable().Where(it => it.bill_code.Contains(input.taskChainCode)).ToListAsync(); + List eps = await _db.Queryable().Where(it => it.code.Contains(input.deviceID)).ToListAsync(); TaskExecuteUpInput taskExecuteUpInput = new() { disTaskIds = disTasks.Select(x => x.id).ToList(), @@ -238,7 +245,7 @@ namespace Tnb.WarehouseMgr } //写入redis //await _cacheManager.SetAsync($"{input.taskChainCode}", $"任务链状态上报,上报状态{input.status}"); - var opts = App.GetOptions(); + ConnectionConfigOptions opts = App.GetOptions(); UserAgent userAgent = new(App.HttpContext); //写系统日志 await _eventPublisher.PublishAsync(new LogEventSource("Log:CreateOpLog", opts, new SysLogEntity @@ -276,7 +283,7 @@ namespace Tnb.WarehouseMgr try { - var disTasks = await _db.Queryable().Where(it => it.bill_code.Contains(input.taskCode)).ToListAsync(); + List disTasks = await _db.Queryable().Where(it => it.bill_code.Contains(input.taskCode)).ToListAsync(); if (input.action == "LOAD") { TaskExecuteAfterUpInput taskExecuteAfterUpInput = new() @@ -285,15 +292,15 @@ namespace Tnb.WarehouseMgr }; await _wareHouseService.TaskExecuteAfter(taskExecuteAfterUpInput); Logger.Information($"Agv取货完成,任务Id:{string.Join(",", disTasks.Select(x => x.id))}"); - var elevatorQueueItem = await _db.Queryable().FirstAsync(it => disTasks.Select(x => x.id).Contains(it.distask_id) && it.task_status == "执行中"); + WmsElevatorUnexecute elevatorQueueItem = await _db.Queryable().FirstAsync(it => disTasks.Select(x => x.id).Contains(it.distask_id) && it.task_status == "执行中"); if (elevatorQueueItem != null) { Logger.Information("开始进入关门流程"); - var doorStatus = await _elevatorControlService.GetTagAsync(elevatorQueueItem.elevator_code, ElevatorConsts.DoorStatus); + int doorStatus = await _elevatorControlService.GetTagAsync(elevatorQueueItem.elevator_code, ElevatorConsts.DoorStatus); if (doorStatus.ToEnum() != EnumDoorStatus.关门到位保持) { - await _elevatorControlService.SendOpenCloseCmd(elevatorQueueItem.elevator_code, 4); //向电梯发送前门关门指令 - await _db.Deleteable(elevatorQueueItem).ExecuteCommandAsync(); + _ = await _elevatorControlService.SendOpenCloseCmd(elevatorQueueItem.elevator_code, 4); //向电梯发送前门关门指令 + _ = await _db.Deleteable(elevatorQueueItem).ExecuteCommandAsync(); } } @@ -327,7 +334,7 @@ namespace Tnb.WarehouseMgr { try { - var eles = await _db.Queryable().LeftJoin((a, b) => a.id == b.bill_id) + List eles = await _db.Queryable().LeftJoin((a, b) => a.id == b.bill_id) .LeftJoin((a, b, c) => b.location_id == c.startlocation_id) .Where((a, b, c) => c.startlocation_code == input.sourceName && c.bill_code == input.taskCode) .ToListAsync(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/ElevatorControlService.cs b/WarehouseMgr/Tnb.WarehouseMgr/ElevatorControlService.cs index b5709a50..afeebd57 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/ElevatorControlService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/ElevatorControlService.cs @@ -20,8 +20,8 @@ namespace Tnb.WarehouseMgr { private readonly ElevatorControlConfiguration _elevatorCtlCfg = new(); private readonly BackgroundService _agvHeartbeatMonitor; - private static Dictionary> _fetchStartedStausValue = new(); - private bool isFrontDoorBit = false; //是否到前门位 + private static readonly Dictionary> _fetchStartedStausValue = new(); + private readonly bool isFrontDoorBit = false; //是否到前门位 public ElevatorControlService() { @@ -36,17 +36,17 @@ namespace Tnb.WarehouseMgr [HttpPost] public async Task CallLiftTest(string devName, int floor) { - var isSuccefuly = false; - (int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) = await GetElevatorStatus(devName, CancellationToken.None); + bool isSuccefuly = false; + (int sysStatus, int runStatus, _, int doorStatus, int agvStatus) = await GetElevatorStatus(devName, CancellationToken.None); //判断当前楼层是否是放货楼层,如不是则呼叫电梯到当前楼层 if (sysStatus.ToEnum() == EnumSysStatus.正常状态 && runStatus.ToEnum() == EnumRunStatus.停梯 && agvStatus.ToEnum() != EnumAgvStatus.AGV运行状态) { if (doorStatus.ToEnum() != EnumDoorStatus.关门到位保持) { - await SendOpenCloseCmd(devName, (int)EnumAgvControl.前门关门); + _ = await SendOpenCloseCmd(devName, (int)EnumAgvControl.前门关门); } - var result = await WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor); //呼叫电梯到指定楼层 + dynamic result = await WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor); //呼叫电梯到指定楼层 if (!string.IsNullOrEmpty(result)) { JObject jo = JObject.Parse(result); @@ -60,7 +60,7 @@ namespace Tnb.WarehouseMgr /// /// [HttpPost] - public async Task ThreeFloorElevatorFlow() + public dynamic ThreeFloorElevatorFlow() { //test by close door //_agvHeartbeatMonitor.StartAsync(CancellationToken.None); @@ -118,7 +118,7 @@ namespace Tnb.WarehouseMgr private Task SetRequestParameter(string tagName, object value) { - var tcs = new TaskCompletionSource(); + TaskCompletionSource tcs = new(); dynamic reqParam = new ExpandoObject(); reqParam.DevName = _elevatorCtlCfg.DevName; reqParam.TagName = tagName; @@ -131,15 +131,14 @@ namespace Tnb.WarehouseMgr private Task> SetParameter(dynamic obj) { - var parameters = new Dictionary() + Dictionary parameters = new() { ["DevName"] = _elevatorCtlCfg.DevName, ["token"] = _elevatorCtlCfg.token, }; - var dynamicDic = obj as IDictionary; - if (dynamicDic != null) + if (obj is IDictionary dynamicDic) { - foreach (var (k, v) in dynamicDic) + foreach ((string k, object v) in dynamicDic) { parameters[k] = v?.ToString() ?? string.Empty; } @@ -150,18 +149,21 @@ namespace Tnb.WarehouseMgr /// /// 向系统发送开关门指令 /// + /// /// 开关门指令 /// public async Task SendOpenCloseCmd(string devName, int value) { - var dicCommand = new Dictionary(StringComparer.OrdinalIgnoreCase); - dicCommand["DevName"] = devName; - dicCommand["token"] = _elevatorCtlCfg.token; - dicCommand["TagName"] = "DoorExecute"; - dicCommand["Value"] = value.ToString(); + Dictionary dicCommand = new(StringComparer.OrdinalIgnoreCase) + { + ["DevName"] = devName, + ["token"] = _elevatorCtlCfg.token, + ["TagName"] = "DoorExecute", + ["Value"] = value.ToString() + }; try { - await HttpClientHelper.GetAsync(_elevatorCtlCfg.WriteTagUrl, pars: dicCommand); + _ = await HttpClientHelper.GetAsync(_elevatorCtlCfg.WriteTagUrl, pars: dicCommand); } catch (Exception) { @@ -177,43 +179,51 @@ namespace Tnb.WarehouseMgr private async Task SetAgvControlStatus(int value) { - var dicCommand = new Dictionary(StringComparer.OrdinalIgnoreCase); - dicCommand["DevName"] = _elevatorCtlCfg.DevName; - dicCommand["TagName"] = "AGVControl"; - dicCommand["Value"] = value.ToString(); - dicCommand["token"] = _elevatorCtlCfg.token; + Dictionary dicCommand = new(StringComparer.OrdinalIgnoreCase) + { + ["DevName"] = _elevatorCtlCfg.DevName, + ["TagName"] = "AGVControl", + ["Value"] = value.ToString(), + ["token"] = _elevatorCtlCfg.token + }; return await HttpClientHelper.GetAsync(_elevatorCtlCfg.WriteTagUrl, pars: dicCommand); } /// /// 向指定的标签属性写入值 /// + /// /// /// /// public async Task WriteTagAsync(string devName, string tagName, int value) { - var dicCommand = new Dictionary(StringComparer.OrdinalIgnoreCase); - dicCommand["DevName"] = devName; - dicCommand["token"] = _elevatorCtlCfg.token; - dicCommand["TagName"] = tagName; - dicCommand["Value"] = value.ToString(); + Dictionary dicCommand = new(StringComparer.OrdinalIgnoreCase) + { + ["DevName"] = devName, + ["token"] = _elevatorCtlCfg.token, + ["TagName"] = tagName, + ["Value"] = value.ToString() + }; return await HttpClientHelper.GetAsync(_elevatorCtlCfg.WriteTagUrl, pars: dicCommand); } /// /// 根据标签名称获取标签值 /// + /// /// /// public async Task GetTagAsync(string devName, string tagName) { - var dicCommand = new Dictionary(); - dicCommand["DevName"] = devName; - dicCommand["token"] = _elevatorCtlCfg.token; - dicCommand["TagName"] = tagName; - var result = await HttpClientHelper.GetAsync(_elevatorCtlCfg.GetTagUrl, pars: dicCommand); + Dictionary dicCommand = new() + { + ["DevName"] = devName, + ["token"] = _elevatorCtlCfg.token, + ["TagName"] = tagName + }; + string result = await HttpClientHelper.GetAsync(_elevatorCtlCfg.GetTagUrl, pars: dicCommand); JObject jo = JObject.Parse(result); return jo.Value("V"); } @@ -221,21 +231,24 @@ namespace Tnb.WarehouseMgr /// /// 获取电梯状态 /// + /// /// /// public async Task<(int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus)> GetElevatorStatus(string devName, CancellationToken token) { (int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) multi = (-1, -1, -1, -1, -1); - var pars = new Dictionary(); - pars["DevName"] = devName; - pars["Pos"] = "1"; - pars["Count"] = "11"; - pars["token"] = _elevatorCtlCfg.token; - var url = _elevatorCtlCfg.GetTagListUrl; - var systemInfo = await HttpClientHelper.GetAsync(url, pars: pars); - var jo = JObject.Parse(systemInfo); - var objs = jo["Items"].Values().ToList(); + Dictionary pars = new() + { + ["DevName"] = devName, + ["Pos"] = "1", + ["Count"] = "11", + ["token"] = _elevatorCtlCfg.token + }; + string url = _elevatorCtlCfg.GetTagListUrl; + string systemInfo = await HttpClientHelper.GetAsync(url, pars: pars); + JObject jo = JObject.Parse(systemInfo); + List objs = jo["Items"].Values().ToList(); //if (objs?.Count == 4) { if (objs[0].Value("Name").Equals("SysStatus") @@ -252,15 +265,16 @@ namespace Tnb.WarehouseMgr /// /// 检查Agv状态 /// + /// /// /// public async Task CheckAgvStatus(string devName, CancellationToken cancellationToken) { - var isInAgvStatus = false; - var agvStatus = await GetTagAsync(devName, ElevatorConsts.AGVStatus); + bool isInAgvStatus = false; + int agvStatus = await GetTagAsync(devName, ElevatorConsts.AGVStatus); if (agvStatus.ToEnum() != EnumAgvStatus.AGV运行状态) { - var result = await WriteTagAsync(devName, ElevatorConsts.AGVControl, 1); + dynamic result = await WriteTagAsync(devName, ElevatorConsts.AGVControl, 1); JObject jo = JObject.Parse(result); if (jo != null && jo.Value("Result").Equals("Ok", StringComparison.OrdinalIgnoreCase)) { @@ -278,17 +292,17 @@ namespace Tnb.WarehouseMgr /// public async Task CallLift(string devName, int floor, CancellationToken cancellationToken) { - var isSuccefuly = false; - (int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) = await GetElevatorStatus(devName, CancellationToken.None); + bool isSuccefuly = false; + (int sysStatus, int runStatus, _, int doorStatus, int agvStatus) = await GetElevatorStatus(devName, CancellationToken.None); //判断当前楼层是否是放货楼层,如不是则呼叫电梯到当前楼层 if (sysStatus.ToEnum() == EnumSysStatus.正常状态 && runStatus.ToEnum() == EnumRunStatus.停梯 && agvStatus.ToEnum() != EnumAgvStatus.AGV运行状态) { if (doorStatus.ToEnum() != EnumDoorStatus.关门到位保持) { - await SendOpenCloseCmd(devName, (int)EnumAgvControl.前门关门); + _ = await SendOpenCloseCmd(devName, (int)EnumAgvControl.前门关门); } - var result = await WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor); //呼叫电梯到指定楼层 + dynamic result = await WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor); //呼叫电梯到指定楼层 if (!string.IsNullOrEmpty(result)) { JObject jo = JObject.Parse(result); @@ -301,7 +315,7 @@ namespace Tnb.WarehouseMgr public class ElevatorData { - public string name { get; set; } - public string value { get; set; } + public string? name { get; set; } + public string? value { get; set; } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/EventSubscribers/TaskStatusChangeSubscriber.cs b/WarehouseMgr/Tnb.WarehouseMgr/EventSubscribers/TaskStatusChangeSubscriber.cs index d445daf5..25024b80 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/EventSubscribers/TaskStatusChangeSubscriber.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/EventSubscribers/TaskStatusChangeSubscriber.cs @@ -48,7 +48,7 @@ public class TaskStatusChangeSubscriber : IEventSubscriber, ISingleton }*/ - var tscSource = (TaskStatusChangeSource)context.Source; + TaskStatusChangeSource tscSource = (TaskStatusChangeSource)context.Source; switch (tscSource.Payload) { case nameof(_wareHouseService.GenTaskExecute): diff --git a/WarehouseMgr/Tnb.WarehouseMgr/Extensions/BackgroundServiceExtensions.cs b/WarehouseMgr/Tnb.WarehouseMgr/Extensions/BackgroundServiceExtensions.cs index 8d7394b9..de56d383 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/Extensions/BackgroundServiceExtensions.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/Extensions/BackgroundServiceExtensions.cs @@ -1,7 +1,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -namespace Tnb.WarehouseMgr +namespace Tnb.WarehouseMgr.Extensions { public static class BackgroundServiceExtensions { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/Extensions/WareHouseBasedControllerActivator.cs b/WarehouseMgr/Tnb.WarehouseMgr/Extensions/WareHouseBasedControllerActivator.cs index 6dd74dd8..3828c87c 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/Extensions/WareHouseBasedControllerActivator.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/Extensions/WareHouseBasedControllerActivator.cs @@ -2,16 +2,16 @@ using Microsoft.AspNetCore.Mvc.Controllers; using Microsoft.Extensions.DependencyInjection; -namespace Tnb.WarehouseMgr +namespace Tnb.WarehouseMgr.Extensions { public class WareHouseBasedControllerActivator : IControllerActivator { public object Create(ControllerContext context) { if (context == null) { throw new ArgumentNullException("context"); } - var controllerType = context.ActionDescriptor.ControllerTypeInfo.AsType(); + Type controllerType = context.ActionDescriptor.ControllerTypeInfo.AsType(); //获取Controller实例 - var controller = context.HttpContext.RequestServices.GetRequiredService(controllerType); + object controller = context.HttpContext.RequestServices.GetRequiredService(controllerType); //判断是否继承了自定义Controller基类 //if(controller is BaseWareHouseService basedWhSvc) //{ diff --git a/WarehouseMgr/Tnb.WarehouseMgr/Filters/NotifyFilterAttribute.cs b/WarehouseMgr/Tnb.WarehouseMgr/Filters/NotifyFilterAttribute.cs index 4c5164bb..aaa3c279 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/Filters/NotifyFilterAttribute.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/Filters/NotifyFilterAttribute.cs @@ -10,8 +10,8 @@ namespace Tnb.WarehouseMgr.Filters public override async void OnActionExecuted(ActionExecutedContext context) { - var actionName = context.ActionDescriptor.RouteValues["action"]!; - var taskMessageNotify = context.HttpContext.RequestServices.GetRequiredService(); + string actionName = context.ActionDescriptor.RouteValues["action"]!; + ITaskMessageNotify taskMessageNotify = context.HttpContext.RequestServices.GetRequiredService(); if (taskMessageNotify != null) { NotifyMessage message = new() { TaskName = actionName }; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/LocationDefinitionService.cs b/WarehouseMgr/Tnb.WarehouseMgr/LocationDefinitionService.cs index 644251cd..ca2f76d1 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/LocationDefinitionService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/LocationDefinitionService.cs @@ -29,58 +29,90 @@ namespace Tnb.WarehouseMgr private async Task DataImport(VisualDevImportDataInput input) { int row = 0; - var errorlist = new List>(); - VisualDevImportDataOutput result = new VisualDevImportDataOutput(); + List> errorlist = new(); + VisualDevImportDataOutput result = new(); try { List> dics = input.list; - List locs = new List(); - BasLocation loc = new BasLocation(); - List cStdCodes = new List(); - List whCodes = new List(); - List rgCodes = new List(); + List locs = new(); + BasLocation loc = new(); + List cStdCodes = new(); + List whCodes = new(); + List rgCodes = new(); //遍历字典,找出需要查询数据库拿的相关字段 - foreach (var d in dics) + foreach (Dictionary d in dics) { if (d.Select(x => x.Value.ToString()).ToList().Find(v => v != "" && v != string.Empty && v != null) == null) { continue; } - var LCode = d["location_code"]?.ToString() ?? string.Empty; - if (LCode == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据库位编号不可为空", 500); - var isType = d["is_type"]?.ToString() ?? string.Empty; - if (isType == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据库位类型不可为空", 500); - var floor = d["floor"]?.ToString() ?? string.Empty; - if (floor == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据楼层不可为空", 500); - var layers = d["layers"]?.ToString() ?? string.Empty; - var locLine = d["loc_line"]?.ToString() ?? string.Empty; - var locColumn = d["loc_column"]?.ToString() ?? string.Empty; - if (locLine == string.Empty || locColumn == string.Empty || layers == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据行列层不可为空", 500); - var isSign = d["is_sign"]?.ToString() ?? string.Empty; - if (isSign == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据自动签收不可为空", 500); - var cStdCode = d["carrystd_id"]?.ToString() ?? string.Empty; - var whCode = d["wh_id"]?.ToString() ?? string.Empty; - var rgCode = d["region_id"]?.ToString() ?? string.Empty; + string LCode = d["location_code"]?.ToString() ?? string.Empty; + if (LCode == string.Empty) + { + throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据库位编号不可为空", 500); + } + + string isType = d["is_type"]?.ToString() ?? string.Empty; + if (isType == string.Empty) + { + throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据库位类型不可为空", 500); + } + + string floor = d["floor"]?.ToString() ?? string.Empty; + if (floor == string.Empty) + { + throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据楼层不可为空", 500); + } + + string layers = d["layers"]?.ToString() ?? string.Empty; + string locLine = d["loc_line"]?.ToString() ?? string.Empty; + string locColumn = d["loc_column"]?.ToString() ?? string.Empty; + if (locLine == string.Empty || locColumn == string.Empty || layers == string.Empty) + { + throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据行列层不可为空", 500); + } + + string isSign = d["is_sign"]?.ToString() ?? string.Empty; + if (isSign == string.Empty) + { + throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据自动签收不可为空", 500); + } + + string cStdCode = d["carrystd_id"]?.ToString() ?? string.Empty; + string whCode = d["wh_id"]?.ToString() ?? string.Empty; + string rgCode = d["region_id"]?.ToString() ?? string.Empty; cStdCodes.Add(cStdCode); whCodes.Add(whCode); rgCodes.Add(rgCode); d["create_time"] = DateTime.Now; - d.Remove("modify_time"); + _ = d.Remove("modify_time"); loc = d.Adapt(); locs.Add(loc); } - var carryStdDic = await _db.Queryable().Where(it => cStdCodes.FindAll(x => x.ToString().IsNotEmptyOrNull() && x.ToString() != "").Contains(it.carrystd_code)).ToDictionaryAsync(x => x.carrystd_code, x => x.id); - var whDic = await _db.Queryable().Where(it => whCodes.FindAll(x => x.ToString().IsNotEmptyOrNull() && x.ToString() != "").Contains(it.whcode)).ToDictionaryAsync(x => x.whcode, x => x.id); - var rgDic = await _db.Queryable().Where(it => rgCodes.FindAll(x => x.ToString().IsNotEmptyOrNull() && x.ToString() != "").Contains(it.region_code)).ToDictionaryAsync(x => x.region_code, x => x.id); - var orgId = _userManager.User.OrganizeId; - var userId = _userManager.UserId; - foreach (var l in locs) + Dictionary carryStdDic = await _db.Queryable().Where(it => cStdCodes.FindAll(x => x.ToString().IsNotEmptyOrNull() && x.ToString() != "").Contains(it.carrystd_code)).ToDictionaryAsync(x => x.carrystd_code, x => x.id); + Dictionary whDic = await _db.Queryable().Where(it => whCodes.FindAll(x => x.ToString().IsNotEmptyOrNull() && x.ToString() != "").Contains(it.whcode)).ToDictionaryAsync(x => x.whcode, x => x.id); + Dictionary rgDic = await _db.Queryable().Where(it => rgCodes.FindAll(x => x.ToString().IsNotEmptyOrNull() && x.ToString() != "").Contains(it.region_code)).ToDictionaryAsync(x => x.region_code, x => x.id); + string orgId = _userManager.User.OrganizeId; + string userId = _userManager.UserId; + foreach (BasLocation l in locs) { - if (!carryStdDic.ContainsKey(l.carrystd_id)) throw new AppFriendlyException($"第{locs.IndexOf(l) + 1}个数据的载具规格有误", 500); - if (!whDic.ContainsKey(l.wh_id)) throw new AppFriendlyException($"第{locs.IndexOf(l) + 1}个数据的仓库有误", 500); - if (!rgDic.ContainsKey(l.region_id)) throw new AppFriendlyException($"第{locs.IndexOf(l) + 1}个数据的区域名称有误", 500); + if (!carryStdDic.ContainsKey(l.carrystd_id)) + { + throw new AppFriendlyException($"第{locs.IndexOf(l) + 1}个数据的载具规格有误", 500); + } + + if (!whDic.ContainsKey(l.wh_id)) + { + throw new AppFriendlyException($"第{locs.IndexOf(l) + 1}个数据的仓库有误", 500); + } + + if (!rgDic.ContainsKey(l.region_id)) + { + throw new AppFriendlyException($"第{locs.IndexOf(l) + 1}个数据的区域名称有误", 500); + } + l.id = SnowflakeIdHelper.NextId(); l.org_id = orgId; l.location_name = l.location_code; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/PDATransferSignService.cs b/WarehouseMgr/Tnb.WarehouseMgr/PDATransferSignService.cs index 499c5907..f44348cf 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/PDATransferSignService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/PDATransferSignService.cs @@ -50,23 +50,21 @@ namespace Tnb.WarehouseMgr await _db.Ado.BeginTranAsync(); WmsCarryH? carry = null; WmsCarryH? newCarry = null; - if (!input.carryId.IsNullOrWhiteSpace()) - { - carry = await _db.Queryable().SingleAsync(it => it.id == input.carryId); - } - else - { - carry = await _db.Queryable().SingleAsync(it => it.carry_code == input.carry_code); - } + carry = !input.carryId.IsNullOrWhiteSpace() + ? await _db.Queryable().SingleAsync(it => it.id == input.carryId) + : await _db.Queryable().SingleAsync(it => it.carry_code == input.carry_code); if (!input.new_carry_code.IsNullOrWhiteSpace()) + { newCarry = await _db.Queryable().SingleAsync(it => it.carry_code == input.new_carry_code); + } + if (carry != null && newCarry != null) { if (carry?.location_id?.IsNotEmptyOrNull() ?? false) { - var loc = await _db.Queryable().SingleAsync(it => it.id == carry.location_id); + BasLocation loc = await _db.Queryable().SingleAsync(it => it.id == carry.location_id); loc.is_use = ((int)EnumCarryStatus.空闲).ToString(); - await _db.Updateable(loc).UpdateColumns(it => it.is_use).ExecuteCommandAsync(); + _ = await _db.Updateable(loc).UpdateColumns(it => it.is_use).ExecuteCommandAsync(); } WmsDistaskH? disTask = null; if (!input.disTaskId.IsNullOrEmpty()) @@ -83,15 +81,15 @@ namespace Tnb.WarehouseMgr } if (disTask != null) { - var nCCode = await _db.Queryable().Where(it => it.carry_id == newCarry.id).ToListAsync(); - var dicMin = await _db.Queryable().Where(it => input.distaskCodes.Select(x => x.material_id).Contains(it.id)).ToDictionaryAsync(d => d.id, d => d.minpacking); - WmsCarryCode cCode = new WmsCarryCode(); - List iCodes = new List(); - List uCodes = new List(); - foreach (var dCode in input.distaskCodes) + List nCCode = await _db.Queryable().Where(it => it.carry_id == newCarry.id).ToListAsync(); + Dictionary dicMin = await _db.Queryable().Where(it => input.distaskCodes.Select(x => x.material_id).Contains(it.id)).ToDictionaryAsync(d => d.id, d => d.minpacking); + WmsCarryCode cCode = new(); + List iCodes = new(); + List uCodes = new(); + foreach (WmsDistaskCode dCode in input.distaskCodes) { decimal codeQty = 0; - var sMCode = nCCode.Find(x => x.material_id == dCode.material_id && x.codeqty <= dicMin[dCode.material_id].ParseToDecimal()); + WmsCarryCode? sMCode = nCCode.Find(x => x.material_id == dCode.material_id && x.codeqty <= dicMin[dCode.material_id].ParseToDecimal()); cCode = dCode.Adapt(); cCode.carry_id = newCarry.id; cCode.code_batch = $"{DateTime.Today.Year}{DateTime.Today.Month}{DateTime.Today.Day}"; @@ -110,8 +108,8 @@ namespace Tnb.WarehouseMgr } - await _db.Insertable(iCodes).ExecuteCommandAsync(); - await _db.Updateable(uCodes).ExecuteCommandAsync(); + _ = await _db.Insertable(iCodes).ExecuteCommandAsync(); + _ = await _db.Updateable(uCodes).ExecuteCommandAsync(); if (_dicBizType.ContainsKey(disTask.biz_type)) { WareHouseUpInput upInput = new() @@ -125,7 +123,7 @@ namespace Tnb.WarehouseMgr await DoUpdate(upInput); //回更业务 } disTask.is_sign = 1; - await _db.Updateable(disTask).UpdateColumns(it => it.is_sign).ExecuteCommandAsync(); + _ = await _db.Updateable(disTask).UpdateColumns(it => it.is_sign).ExecuteCommandAsync(); } } await _db.Ado.CommitTranAsync(); @@ -146,10 +144,10 @@ namespace Tnb.WarehouseMgr { //if (UserManager.AsscessToken.IsNullOrWhiteSpace()) return; //var curUser = await GetUserIdentity(); - var curDb = _db.CopyNew(); + SqlSugarClient curDb = _db.CopyNew(); try { - List> dics = new List>(); + List> dics = new(); var sgs = await curDb.Queryable().LeftJoin((a, b) => a.id == b.bill_id) .Select((a, b) => new { @@ -171,7 +169,7 @@ namespace Tnb.WarehouseMgr Dictionary dic = new(); foreach (var itGroup in itGroups) { - var minStock = itGroup.First().min_stock; + int? minStock = itGroup.First().min_stock; if (itGroup.Select(x => x.codeqty).Sum() <= minStock) { dic.Add(nameof(WmsCarryCode.material_id), itGroup.Key); @@ -193,7 +191,7 @@ namespace Tnb.WarehouseMgr create_id= _userManager.UserId, } }; - foreach (var d in dics) + foreach (Dictionary d in dics) { input.outstock.location_code = "YCL03-01-01"; MESWmsOutstockDInput outstockD = new() @@ -218,7 +216,7 @@ namespace Tnb.WarehouseMgr RequestMethod = App.HttpContext?.Request?.Method, userIdentity = await GetUserIdentity(_userManager.ToKen), }; - var timedTaskEx = ex.ToTimedTaskException(ei); + TimedTaskException timedTaskEx = ex.ToTimedTaskException(ei); throw timedTaskEx; } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/PcStroageService.cs b/WarehouseMgr/Tnb.WarehouseMgr/PcStroageService.cs index 16976bef..86004fe1 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/PcStroageService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/PcStroageService.cs @@ -9,7 +9,7 @@ namespace Tnb.WarehouseMgr [Caller("web")] public class PcStroageService : IWHStorageService { - private static Dictionary _serviceMap = new(StringComparer.OrdinalIgnoreCase); + private static readonly Dictionary _serviceMap = new(StringComparer.OrdinalIgnoreCase); static PcStroageService() { @@ -21,7 +21,9 @@ namespace Tnb.WarehouseMgr public async Task Do(WareHouseUpInput input) { if (_serviceMap.ContainsKey(input.bizTypeId)) + { await _serviceMap[input.bizTypeId].ModifyAsync(input); + } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/PdaStroageService.cs b/WarehouseMgr/Tnb.WarehouseMgr/PdaStroageService.cs index edf25d6b..ce1d74be 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/PdaStroageService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/PdaStroageService.cs @@ -10,13 +10,13 @@ namespace Tnb.WarehouseMgr [Caller("app")] public class PdaStroageService : IWHStorageService { - private static Dictionary _serviceMap = new Dictionary(StringComparer.OrdinalIgnoreCase); + private static readonly Dictionary _serviceMap = new(StringComparer.OrdinalIgnoreCase); static PdaStroageService() { - var serviceTypes = App.EffectiveTypes.Where(u => u.IsClass && !u.IsInterface && !u.IsAbstract && typeof(IPdaStroage).IsAssignableFrom(u) && u.IsSubclassOf(typeof(BaseWareHouseService))).ToList(); - foreach (var serviceType in serviceTypes) + List serviceTypes = App.EffectiveTypes.Where(u => u.IsClass && !u.IsInterface && !u.IsAbstract && typeof(IPdaStroage).IsAssignableFrom(u) && u.IsSubclassOf(typeof(BaseWareHouseService))).ToList(); + foreach (Type? serviceType in serviceTypes) { - var bizTypeId = serviceType.GetCustomAttribute()?.BizTypeId; + string? bizTypeId = serviceType.GetCustomAttribute()?.BizTypeId; if (!bizTypeId.IsNullOrEmpty()) { _serviceMap[bizTypeId!] = (BaseWareHouseService)App.GetService(serviceType)!; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/Print/PPLBUtility.cs b/WarehouseMgr/Tnb.WarehouseMgr/Print/PPLBUtility.cs index 4a742f5f..1bc85611 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/Print/PPLBUtility.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/Print/PPLBUtility.cs @@ -4,22 +4,19 @@ namespace Tnb.WarehouseMgr.Print { public class PPLBUtility { - - - - const uint IMAGE_BITMAP = 0; - const uint LR_LOADFROMFILE = 16; - static readonly string dllPath = Path.Combine(AppContext.BaseDirectory, @"Library\x64", "Library\\x64\\Winpplb.dll"); + private const uint IMAGE_BITMAP = 0; + private const uint LR_LOADFROMFILE = 16; + private static readonly string dllPath = Path.Combine(AppContext.BaseDirectory, @"Library\x64", "Library\\x64\\Winpplb.dll"); [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] - static extern IntPtr LoadImage(IntPtr hinst, string lpszName, uint uType, + private static extern IntPtr LoadImage(IntPtr hinst, string lpszName, uint uType, int cxDesired, int cyDesired, uint fuLoad); [DllImport("Gdi32.dll", SetLastError = true, CharSet = CharSet.Auto)] - static extern int DeleteObject(IntPtr ho); + private static extern int DeleteObject(IntPtr ho); public const string szSavePath = "C:\\Argox"; public const string szSaveFile = "C:\\Argox\\PPLB_Example.Prn"; - const string sznop1 = "nop_front\r\n"; - const string sznop2 = "nop_middle\r\n"; + private const string sznop1 = "nop_front\r\n"; + private const string sznop2 = "nop_middle\r\n"; /// /// 印出一个 Maxi Code 2D Barcode /// @@ -60,8 +57,15 @@ namespace Tnb.WarehouseMgr.Print ///打印方向,'0’是 0°,'1’是90°、'2’是180°,'3’是270° /// /// - /// - /// + /// + /// + /// + /// + /// + /// + /// + /// + /// /// 资料字串。 /// [DllImport("Library\\x64\\Library\\x64\\Winpplb.dll")] @@ -527,13 +531,12 @@ namespace Tnb.WarehouseMgr.Print /// 0 -> OK. /// Reference BW-Error.txt file. /// - /// + /// ///B_Prn_Text(50, 110, 0, 4, 1, 1, ‘N’, “A123456”); //无跳号功能 ///or ///B_Prn_Text(50, 110, 0, 4, 1, 1, ‘N’, “A123456<-1>”); //有跳号功能 /// - public static extern int B_Prn_Text(int x, int y, int ori, int font, int hor_factor, - int ver_factor, char mode, string data); + public static extern int B_Prn_Text(int x, int y, int ori, int font, int hor_factor, int ver_factor, char mode, string data); /// /// 打印出一行文字,使用中文字型档案 (1615 或 2424) /// @@ -551,8 +554,7 @@ namespace Tnb.WarehouseMgr.Print ///(1615 或 2424)。 /// [DllImport("Library\\x64\\Winpplb.dll")] - public static extern int B_Prn_Text_Chinese(int x, int y, int fonttype, string id_name, - string data); + public static extern int B_Prn_Text_Chinese(int x, int y, int fonttype, string id_name, string data); /// /// 打印Windows仿真字 /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr/TaskManagerDelBase.cs b/WarehouseMgr/Tnb.WarehouseMgr/TaskManagerDelBase.cs index 049c912d..681ceee0 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/TaskManagerDelBase.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/TaskManagerDelBase.cs @@ -21,24 +21,24 @@ namespace Tnb.WarehouseMgr { await _db.Ado.BeginTranAsync(); - var preTask = await _db.Queryable().SingleAsync(it => it.id == id); + T preTask = await _db.Queryable().SingleAsync(it => it.id == id); if (preTask != null) { - var locIds = new[] { preTask.startlocation_id, preTask.endlocation_id }; - var locs = await _db.Queryable().Where(it => locIds.Contains(it.id)).ToListAsync(); + string[] locIds = new[] { preTask.startlocation_id, preTask.endlocation_id }; + List locs = await _db.Queryable().Where(it => locIds.Contains(it.id)).ToListAsync(); if (locs?.Count > 0) { locs.ForEach(it => { it.is_lock = 0; }); - await _db.Updateable(locs).UpdateColumns(it => it.is_lock).ExecuteCommandAsync(); + _ = await _db.Updateable(locs).UpdateColumns(it => it.is_lock).ExecuteCommandAsync(); } - var carry = await _db.Queryable().SingleAsync(it => it.id == preTask.carry_id); + WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.id == preTask.carry_id); if (carry != null) { carry.is_lock = 0; - await _db.Updateable(carry).UpdateColumns(it => it.is_lock).ExecuteCommandAsync(); + _ = await _db.Updateable(carry).UpdateColumns(it => it.is_lock).ExecuteCommandAsync(); } - await _db.Deleteable(preTask).ExecuteCommandAsync(); - await _db.Updateable().SetColumns(it => it.task_nums == it.task_nums - 1).Where(it => it.area_code == preTask.area_code).ExecuteCommandAsync(); + _ = await _db.Deleteable(preTask).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => it.task_nums == it.task_nums - 1).Where(it => it.area_code == preTask.area_code).ExecuteCommandAsync(); } await _db.Ado.CommitTranAsync(); } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/TaskMesageNotify.cs b/WarehouseMgr/Tnb.WarehouseMgr/TaskMesageNotify.cs index dc3f580c..5c3b04f8 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/TaskMesageNotify.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/TaskMesageNotify.cs @@ -33,7 +33,7 @@ namespace Tnb.WarehouseMgr { public static IServiceCollection AddTaskMessageNotify(this IServiceCollection services) { - services.AddSingleton(); + _ = services.AddSingleton(); return services; } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/TimedTaskBackgroundService.cs b/WarehouseMgr/Tnb.WarehouseMgr/TimedTaskBackgroundService.cs index 1f4faff6..fa748d84 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/TimedTaskBackgroundService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/TimedTaskBackgroundService.cs @@ -21,7 +21,7 @@ namespace Tnb.WarehouseMgr { public bool IsStarted { get; set; } private IEventPublisher _eventPublisher = default!; - private ElevatorControlConfiguration _elevatorControlConfiguration = App.Configuration.Build(); + private readonly ElevatorControlConfiguration _elevatorControlConfiguration = App.Configuration.Build(); private readonly IServiceProvider _serviceProvider; //private static Dictionary> _timedFuncMap = new(StringComparer.OrdinalIgnoreCase); public TimedTaskBackgroundService(IServiceProvider serviceProvider) @@ -33,19 +33,21 @@ namespace Tnb.WarehouseMgr { IsStarted = true; - var timedTask = Task.Run(() => + Task timedTask = Task.Run(() => { _eventPublisher = App.GetRequiredService(); //电梯Agv心跳检测 - TimedTask(async token => + _ = TimedTask(async token => { - var parameter = new Dictionary(); - parameter["DevName"] = _elevatorControlConfiguration.DevName; - parameter["TagName"] = "AGVKeepalive"; - parameter["Value"] = "123"; - parameter["token"] = _elevatorControlConfiguration.token; - var result = await HttpClientHelper.GetAsync(_elevatorControlConfiguration.WriteTagUrl, pars: parameter); + Dictionary parameter = new() + { + ["DevName"] = _elevatorControlConfiguration.DevName, + ["TagName"] = "AGVKeepalive", + ["Value"] = "123", + ["token"] = _elevatorControlConfiguration.token + }; + string result = await HttpClientHelper.GetAsync(_elevatorControlConfiguration.WriteTagUrl, pars: parameter); await Console.Out.WriteLineAsync($"心跳检测结果:{result}"); }, stoppingToken, 30, TimeSpanUnit.Seconds); ////齐套出库 @@ -70,7 +72,7 @@ namespace Tnb.WarehouseMgr private Task TimedTask(Func action, CancellationToken ct, int interval, TimeSpanUnit timeType = TimeSpanUnit.Seconds) { - var token = ct; + CancellationToken token = ct; return Task.Factory.StartNew(async () => { while (!token.IsCancellationRequested) @@ -158,15 +160,15 @@ namespace Tnb.WarehouseMgr internal class CustomerTaskScheduler : TaskScheduler { // 这边的 BlockingCollection 只是举个例子,如果是普通的队列,配合锁也是可以的。 - private readonly BlockingCollection _tasks = new BlockingCollection(); + private readonly BlockingCollection _tasks = new(); public CustomerTaskScheduler() { - var thread = new Thread(() => + Thread thread = new(() => { - foreach (var task in _tasks.GetConsumingEnumerable()) + foreach (Task task in _tasks.GetConsumingEnumerable()) { - TryExecuteTask(task); + _ = TryExecuteTask(task); } }) { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index 66954dcb..f8a94183 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -42,7 +42,7 @@ namespace Tnb.WarehouseMgr private readonly IUserManager _userManager; private readonly ICacheManager _cacheManager; private readonly IElevatorControlService _elevatorControlService; - private static Dictionary _elevatorAgvCtlStatusMap = new(StringComparer.OrdinalIgnoreCase); + private static readonly Dictionary _elevatorAgvCtlStatusMap = new(StringComparer.OrdinalIgnoreCase); private readonly ElevatorControlConfiguration _eleCtlCfg = App.Configuration.Build(); public Func AddUnExecuteTask { get; set; } @@ -84,10 +84,10 @@ namespace Tnb.WarehouseMgr .Select((a, b, c) => new { carry_id = a.id, - carry_name = a.carry_name, + a.carry_name, location_id = b.id, - location_name = b.location_name, + b.location_name, warehouse_id = c.id, warehouse_name = c.whname, }) @@ -102,14 +102,17 @@ namespace Tnb.WarehouseMgr [HttpPost] public async Task ApplyFor(InOutStockApplyforUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } async Task _updateLocalFunc(InOutStockApplyforUpInput input) where TStockD : BaseEntity, new() where TStockCode : BaseEntity, IInOutStockCode, new() { - var instockD = input.Adapt(); - var stockCodes = input.InstockCodes?.Adapt>(); + TStockD instockD = input.Adapt(); + global::System.Collections.Generic.List? stockCodes = input.InstockCodes?.Adapt>(); if (stockCodes?.Count > 0) { stockCodes.ForEach(x => @@ -124,13 +127,16 @@ namespace Tnb.WarehouseMgr return await Update(instockD, stockCodes!); } - var isOk = input.inoutStockType switch + bool isOk = input.inoutStockType switch { EnumInOutStockType.In => await _updateLocalFunc(input), EnumInOutStockType.Out => await _updateLocalFunc(input), _ => throw new ArgumentOutOfRangeException(nameof(input.inoutStockType), $"Not expected EnumInOutStockType value: {input.inoutStockType}"), }; - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } } /// /// 根据明细Id获取出入库明细信息 @@ -154,12 +160,16 @@ namespace Tnb.WarehouseMgr [HttpGet] public async Task> InStockStrategy([FromQuery] InStockStrategyQuery input) { - var items = new List(); + List items = new(); try { - var policy = await _db.Queryable().Where(it => it.status == 1).FirstAsync(); - if (policy == null) throw new AppFriendlyException("没有可用的策略", 500); - var whereExp = Expressionable.Create() + WmsInstockPolicies policy = await _db.Queryable().Where(it => it.status == 1).FirstAsync(); + if (policy == null) + { + throw new AppFriendlyException("没有可用的策略", 500); + } + + Expression> whereExp = Expressionable.Create() .And(it => it.wh_id == input.warehouse_id) .And(it => it.is_lock == 0) .And(it => it.is_type == ((int)EnumLocationType.存储库位).ToString()) @@ -180,7 +190,7 @@ namespace Tnb.WarehouseMgr [HttpGet] public async Task> OutStockStrategy([FromQuery] OutStockStrategyQuery input) { - var whereExprable = Expressionable.Create() + Expressionable whereExprable = Expressionable.Create() .And((a, b, c) => a.is_lock == 0) .And((a, b, c) => !string.IsNullOrEmpty(a.location_id)) .And((a, b, c) => c.is_type == ((int)EnumLocationType.存储库位).ToString()) @@ -192,13 +202,17 @@ namespace Tnb.WarehouseMgr Expression> carryStatusFilterExp = !input.material_id.IsNullOrWhiteSpace() ? (a, b, c) => a.carry_status == ((int)EnumCarryStatus.占用).ToString() : (a, b, c) => a.carry_status == ((int)EnumCarryStatus.空闲).ToString(); - whereExprable.And(carryStatusFilterExp); - var whereExpr = whereExprable.ToExpression(); + _ = whereExprable.And(carryStatusFilterExp); + Expression> whereExpr = whereExprable.ToExpression(); - var cyDb = _db.CopyNew(); - var policy = await cyDb.Queryable().Where(it => it.status == 1).FirstAsync(); - if (policy == null) throw new AppFriendlyException("没有可用策略", 500); - var items = await cyDb.Queryable().LeftJoin((a, b) => a.id == b.carry_id) + SqlSugarClient cyDb = _db.CopyNew(); + WmsInstockPolicies policy = await cyDb.Queryable().Where(it => it.status == 1).FirstAsync(); + if (policy == null) + { + throw new AppFriendlyException("没有可用策略", 500); + } + + List items = await cyDb.Queryable().LeftJoin((a, b) => a.id == b.carry_id) .LeftJoin((a, b, c) => a.location_id == c.id) .Where(whereExpr) .OrderBy(policy.policy) @@ -219,11 +233,11 @@ namespace Tnb.WarehouseMgr Stopwatch sw = Stopwatch.StartNew(); CancellationTokenSource agvCts = new(); - var db = _db.CopyNew(); + SqlSugarClient db = _db.CopyNew(); try { //获取电梯数据 - var elevatorList = await db.Queryable().InnerJoin((a, b) => a.id == b.bill_id) + List elevatorList = await db.Queryable().InnerJoin((a, b) => a.id == b.bill_id) .Select((a, b) => new WmsElevatorH { bill_id = b.bill_id, @@ -236,7 +250,7 @@ namespace Tnb.WarehouseMgr //获取所有未下发的预任务申请 - var preTasks = await db.Queryable().InnerJoin((a, b) => a.startlocation_id == b.location_id && a.carry_id == b.id) + List preTasks = await db.Queryable().InnerJoin((a, b) => a.startlocation_id == b.location_id && a.carry_id == b.id) .InnerJoin((a, b, c) => a.area_id == c.id) .Where(a => a.status == WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID && !string.IsNullOrWhiteSpace(a.startlocation_id)) .OrderBy(a => new { priority = SqlFunc.Desc(a.priority), a.bill_code }) @@ -245,40 +259,40 @@ namespace Tnb.WarehouseMgr move_num = c.move_num }, true) .ToListAsync(); - var agvElevatorTasks = preTasks + List agvElevatorTasks = preTasks .Where(it => it.endlocation_code.StartsWith("DT", StringComparison.OrdinalIgnoreCase) && !it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)) .ToList(); - var firstEleGrp = agvElevatorTasks.GroupBy(g => g.endlocation_code).Select(t => t.OrderBy(o => o.bill_code).FirstOrDefault()); + IEnumerable firstEleGrp = agvElevatorTasks.GroupBy(g => g.endlocation_code).Select(t => t.OrderBy(o => o.bill_code).FirstOrDefault()); agvElevatorTasks = agvElevatorTasks.FindAll(x => firstEleGrp.Select(y => y.endlocation_code).Contains(x.endlocation_code)); preTasks = preTasks.Where(it => !it.endlocation_code.StartsWith("DT", StringComparison.OrdinalIgnoreCase)).Concat(agvElevatorTasks).ToList(); - var ids = preTasks.Select(x => x.id).Distinct().ToList(); - var preTaskCodes = await db.Queryable().Where(it => ids.Contains(it.bill_id)).ToListAsync(); + List ids = preTasks.Select(x => x.id).Distinct().ToList(); + List? preTaskCodes = await db.Queryable().Where(it => ids.Contains(it.bill_id)).ToListAsync(); if (preTasks.Count > 0) { //根据预任务管理区分组,获取到所有分组后的预任务,遍历每个预任务 是否为任务链,通过管理区ID - var preTaskGroups = preTasks.GroupBy(g => g.area_code).ToList(); + List> preTaskGroups = preTasks.GroupBy(g => g.area_code).ToList(); List disTasks = new(); List distaskCodes = new(); - foreach (var itGroup in preTaskGroups) + foreach (IGrouping? itGroup in preTaskGroups) { - var items = itGroup.Adapt>(); + List items = itGroup.Adapt>(); for (int i = 0, cnt = items.Count; i < cnt; i++) { items[i].id = SnowflakeIdHelper.NextId(); items[i].status = WmsWareHouseConst.TASK_BILL_STATUS_DZX_ID; } - var moveNum = itGroup.First().move_num; - var itemsCount = items.Count; - var mod = itemsCount % moveNum > 0 ? itemsCount / moveNum + 1 : itemsCount / moveNum; - var arrary = items.ToArray(); + int moveNum = itGroup.First().move_num; + int itemsCount = items.Count; + int mod = itemsCount % moveNum > 0 ? (itemsCount / moveNum) + 1 : itemsCount / moveNum; + WmsDistaskH[] arrary = items.ToArray(); for (int i = 1; i <= mod; i++) { - var groupCode = await _billRullService.GetBillNumber(WmsWareHouseConst.WMS_TASK_EXECUTE_ENCODE); + string groupCode = await _billRullService.GetBillNumber(WmsWareHouseConst.WMS_TASK_EXECUTE_ENCODE); if (moveNum >= 1) { - var areaPreTasks = itGroup.ToList(); + List areaPreTasks = itGroup.ToList(); if (moveNum == 1 || (moveNum > areaPreTasks.Count && areaPreTasks.Count == 1)) { @@ -293,18 +307,18 @@ namespace Tnb.WarehouseMgr { items.ForEach(x => x.is_chain = 1); - var start = 0; - var end = Math.Min(itemsCount, moveNum); - var arrList = new List(mod); + int start = 0; + int end = Math.Min(itemsCount, moveNum); + List arrList = new(mod); while (start < itemsCount) { - var subArray = arrary[start..end]; + WmsDistaskH[] subArray = arrary[start..end]; arrList.Add(subArray); start = end; - end = Math.Min((end + moveNum), arrary.Length); + end = Math.Min(end + moveNum, arrary.Length); } - foreach (var arr in arrList) + foreach (WmsDistaskH[] arr in arrList) { for (int j = 1, len = arr.Length; j <= len; j++) { @@ -318,10 +332,10 @@ namespace Tnb.WarehouseMgr if (preTaskCodes?.Count > 0) { - foreach (var disTask in items) + foreach (WmsDistaskH disTask in items) { - var curPreTaskCodes = preTaskCodes.FindAll(x => x.bill_id == disTask.pretask_id); - var curDisTaskCodes = curPreTaskCodes.Adapt>(); + List curPreTaskCodes = preTaskCodes.FindAll(x => x.bill_id == disTask.pretask_id); + List curDisTaskCodes = curPreTaskCodes.Adapt>(); curDisTaskCodes.ForEach(x => { x.id = SnowflakeIdHelper.NextId(); @@ -336,15 +350,15 @@ namespace Tnb.WarehouseMgr } await db.Ado.BeginTranAsync(); - var endPointIds = disTasks.Where(t => t.area_code.StartsWith("ELE", StringComparison.OrdinalIgnoreCase)).Select(t => t.endpoint_id).ToList(); + List endPointIds = disTasks.Where(t => t.area_code.StartsWith("ELE", StringComparison.OrdinalIgnoreCase)).Select(t => t.endpoint_id).ToList(); if (endPointIds?.Count > 0) { elevatorList = elevatorList.FindAll(x => endPointIds.Contains(x.point_id)); if (elevatorList?.Count > 0) { - foreach (var e in elevatorList) + foreach (WmsElevatorH? e in elevatorList) { - var disTask = disTasks.Find(x => x.endpoint_id == e.point_id); + WmsDistaskH? disTask = disTasks.Find(x => x.endpoint_id == e.point_id); if (disTask != null) { disTask.device_id = e.elevator_id; @@ -355,14 +369,14 @@ namespace Tnb.WarehouseMgr //disTasks.ForEach(x => x.id = SnowflakeIdHelper.NextId()); - var row = await db.Insertable(disTasks).ExecuteCommandAsync(); + int row = await db.Insertable(disTasks).ExecuteCommandAsync(); if (preTaskCodes?.Count > 0) { row = await db.Insertable(distaskCodes).ExecuteCommandAsync(); } if (row > 0) { - var preTaskIds = preTasks.Select(x => x.id).ToList(); + List preTaskIds = preTasks.Select(x => x.id).ToList(); row = await db.Updateable().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_YXF_ID }).Where(it => preTaskIds.Contains(it.id)).ExecuteCommandAsync(); } @@ -370,7 +384,7 @@ namespace Tnb.WarehouseMgr //呼梯操作 //获取目标库位为电梯库位的任务 - var endLocCodes = disTasks + List<(string endlocation_code, string device_id, string id, string? start_floor)> endLocCodes = disTasks .Where(it => it.endlocation_code.StartsWith("DT", StringComparison.OrdinalIgnoreCase) && !it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)) .Select(it => (it.endlocation_code, it.device_id, it.id, it.start_floor)).ToList(); @@ -380,7 +394,7 @@ namespace Tnb.WarehouseMgr await CallingLanding(endLocCodes); } //执行电梯任务 - var elevatorTasks = disTasks.Where(it => it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)).ToList(); + List? elevatorTasks = disTasks.Where(it => it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)).ToList(); if (elevatorTasks?.Count > 0) { @@ -388,14 +402,14 @@ namespace Tnb.WarehouseMgr Logger.Information("准备执行电梯任务"); Logger.Information("执行电梯任务"); - foreach (var elevatorTask in elevatorTasks) + foreach (WmsDistaskH? elevatorTask in elevatorTasks) { await ExecuteTargetFloorTask(elevatorTask); } } ////调用AGV创建任务链接口 - var agvTasks = disTasks.Where(it => !it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)).ToList(); + List agvTasks = disTasks.Where(it => !it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)).ToList(); if (agvTasks?.Count > 0) { await AgvDispatch(agvTasks, agvCts.Token); @@ -414,7 +428,7 @@ namespace Tnb.WarehouseMgr } finally { - s_taskExecuteSemaphore.Release(); + _ = s_taskExecuteSemaphore.Release(); agvCts.Dispose(); } } @@ -428,31 +442,34 @@ namespace Tnb.WarehouseMgr Logger.Information($" 开始呼梯操作............."); try { - foreach (var (_, devId, disTaskId, floorNO) in endLocCodes) + foreach ((_, string devId, string disTaskId, string floorNO) in endLocCodes) { - if (!s_elevatorMap.TryGetValue(devId, out var elevatorCode)) continue; + if (!s_elevatorMap.TryGetValue(devId, out object? elevatorCode)) + { + continue; + } - var devName = elevatorCode.ToString(); + string? devName = elevatorCode.ToString(); Logger.Information($"当前:{devName.Match(@"\d+")}#梯"); await _elevatorControlService.WriteTagAsync(devName, ElevatorConsts.AGVControl, 1); (int sysStatus, int runStatus, int curFloorNo, int doorStatus, int agvStatus) eleStatusMulti = (-1, -1, -1, -1, -1); - if (!_elevatorAgvCtlStatusMap.TryGetValue(devId, out var agvCtlStatus) || agvCtlStatus != (int)EnumAgvStatus.AGV运行状态) + if (!_elevatorAgvCtlStatusMap.TryGetValue(devId, out int agvCtlStatus) || agvCtlStatus != (int)EnumAgvStatus.AGV运行状态) { do { eleStatusMulti = await _elevatorControlService.GetElevatorStatus(devName, CancellationToken.None); await Task.Delay(500); } while (eleStatusMulti.agvStatus != (int)EnumAgvStatus.AGV运行状态); - Logger.Information($"{devName.Match(@"\d+")}#, 当前Agv状态:{eleStatusMulti.agvStatus.ToEnum().ToString()}"); + Logger.Information($"{devName.Match(@"\d+")}#, 当前Agv状态:{eleStatusMulti.agvStatus.ToEnum()}"); _elevatorAgvCtlStatusMap[devId] = eleStatusMulti.agvStatus; } Logger.Information($"任务开始目标楼层为:{floorNO}"); - var floorN = await GetRealFloor(floorNO.ParseToInt()); + int floorN = await GetRealFloor(floorNO.ParseToInt()); //如果电梯在当前楼层则不呼梯 if (floorN == eleStatusMulti.curFloorNo) { @@ -472,19 +489,19 @@ namespace Tnb.WarehouseMgr create_id = _userManager.UserId, create_time = DateTime.Now }; - var elevatorQueue = await _db.Queryable().Where(it => it.distask_id == disTaskId && it.task_status == "执行中").ToListAsync(); + List elevatorQueue = await _db.Queryable().Where(it => it.distask_id == disTaskId && it.task_status == "执行中").ToListAsync(); if ((elevatorQueue.IsNull() || elevatorQueue.Count < 1) && floorN != eleStatusMulti.curFloorNo) { elevatorQueueItem.task_status = "执行中"; - var callLiftRes = await _elevatorControlService.CallLift(devName, floorN, CancellationToken.None); + bool callLiftRes = await _elevatorControlService.CallLift(devName, floorN, CancellationToken.None); string successful = "成功", fail = "失败"; - var callLiftResult = callLiftRes ? successful : fail; + string callLiftResult = callLiftRes ? successful : fail; Logger.Information($"{devName.Match(@"\d+")}#, 呼梯结果:{callLiftResult}"); } //如果当前电梯有任务在做,将当前呼梯任务放入待执行队列 - await _db.Insertable(elevatorQueueItem).ExecuteCommandAsync(); + _ = await _db.Insertable(elevatorQueueItem).ExecuteCommandAsync(); } } catch (Exception ex) @@ -505,29 +522,29 @@ namespace Tnb.WarehouseMgr Logger.Information($"开始执行电梯任务,任务ID:{disTask.id}"); try { - if (!s_elevatorMap.TryGetValue(disTask.device_id, out var elevatorCode)) + if (!s_elevatorMap.TryGetValue(disTask.device_id, out object? elevatorCode)) { return; } - var devName = s_elevatorMap[disTask.device_id]?.ToString() ?? _eleCtlCfg.DevName; + string devName = s_elevatorMap[disTask.device_id]?.ToString() ?? _eleCtlCfg.DevName; Logger.Information($"当前:{devName.Match(@"\d+")}#梯"); await _elevatorControlService.WriteTagAsync(devName, ElevatorConsts.AGVControl, 1); (int sysStatus, int runStatus, int curFloorNo, int doorStatus, int agvStatus) eleStatusMulti = (-1, -1, -1, -1, -1); - if (!_elevatorAgvCtlStatusMap.TryGetValue(disTask.id, out var agvCtlStatus) || agvCtlStatus != (int)EnumAgvStatus.AGV运行状态) + if (!_elevatorAgvCtlStatusMap.TryGetValue(disTask.id, out int agvCtlStatus) || agvCtlStatus != (int)EnumAgvStatus.AGV运行状态) { do { eleStatusMulti = await _elevatorControlService.GetElevatorStatus(devName, CancellationToken.None); await Task.Delay(500); } while (eleStatusMulti.agvStatus != (int)EnumAgvStatus.AGV运行状态); - Logger.Information($"{devName.Match(@"\d+")}#, 当前Agv状态:{eleStatusMulti.agvStatus.ToEnum().ToString()}"); + Logger.Information($"{devName.Match(@"\d+")}#, 当前Agv状态:{eleStatusMulti.agvStatus.ToEnum()}"); _elevatorAgvCtlStatusMap[disTask.id] = eleStatusMulti.agvStatus; } - var doorStatus = -1; - var closeDoorRes = await _elevatorControlService.SendOpenCloseCmd(devName, 4); //向电梯发送前门关门指令 + int doorStatus = -1; + bool closeDoorRes = await _elevatorControlService.SendOpenCloseCmd(devName, 4); //向电梯发送前门关门指令 Logger.Information($"关门结果:{closeDoorRes}"); do { @@ -536,12 +553,12 @@ namespace Tnb.WarehouseMgr } while (doorStatus != 4); Logger.Information($"当前门状态:{doorStatus}"); - var floor = await GetRealFloor(disTask.end_floor.ParseToInt()); + int floor = await GetRealFloor(disTask.end_floor.ParseToInt()); Logger.Information($"目标楼层:{floor}"); //发送到目标楼的指令 - var reuslt = await _elevatorControlService.WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor); + dynamic reuslt = await _elevatorControlService.WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor); //电梯任务手动执行任务状态上报 (int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) tuple = (-1, -1, -1, -1, -1); @@ -556,7 +573,7 @@ namespace Tnb.WarehouseMgr if (tuple.sysStatus.ToEnum() == EnumSysStatus.正常状态 && tuple.runStatus.ToEnum() == EnumRunStatus.停梯) { Log.Information($"disTask.require_id={disTask.require_id}"); - var disTaskIds = new List { disTask.id }; + List disTaskIds = new() { disTask.id }; var upInput = new { disTaskIds = disTask.id }; TaskExecuteAfterUpInput teaUpInput = new() { @@ -588,8 +605,8 @@ namespace Tnb.WarehouseMgr //调用AGV创建任务链接口 try { - var requestCfg = App.Configuration.Build(); - var url = requestCfg.AgvRequestUrls.CreateTaskChainUrl; + AgvRequestConfig requestCfg = App.Configuration.Build(); + string url = requestCfg.AgvRequestUrls.CreateTaskChainUrl; var taskChainCodeDic = disTasks.Where(t => !t.groups.IsNullOrWhiteSpace()).GroupBy(g => g.groups!) .ToDictionary(x => x.Key, x => x.Select(it => new { @@ -599,7 +616,7 @@ namespace Tnb.WarehouseMgr containerCode = it.carry_code, })); Logger.Information($"请求地址:{url}"); - foreach (var (k, v) in taskChainCodeDic) + foreach ((string k, object v) in taskChainCodeDic) { dynamic reqBody = new ExpandoObject(); reqBody.taskChainCode = k; @@ -608,7 +625,7 @@ namespace Tnb.WarehouseMgr reqBody.taskChainPriority = 0; reqBody.taskList = v; Logger.Information($"请求参数:{JsonConvert.SerializeObject(reqBody)}"); - var respBody = await HttpClientHelper.PostStreamAsync(url, reqBody, token); + dynamic respBody = await HttpClientHelper.PostStreamAsync(url, reqBody, token); Logger.Information($"调用Agv接口响应结果:{respBody}"); } } @@ -635,22 +652,16 @@ namespace Tnb.WarehouseMgr //更任务执行 for (int i = 0, cnt = input.disTaskIds.Count; i < cnt; i++) { - if (input.EqpIds?.Count > 0) - { - await _db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_YXD_ID, device_id = input.EqpIds[i] }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync(); - } - else - { - await _db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_YXD_ID }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync(); - - } + _ = input.EqpIds?.Count > 0 + ? await _db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_YXD_ID, device_id = input.EqpIds[i] }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync() + : await _db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_YXD_ID }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync(); //await _db.Updateable().SetColumns(it => setColVal).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync(); } - var preTaskIds = await _db.Queryable().Where(it => input.disTaskIds.Contains(it.id)).Select(it => it.pretask_id).ToListAsync(); + List preTaskIds = await _db.Queryable().Where(it => input.disTaskIds.Contains(it.id)).Select(it => it.pretask_id).ToListAsync(); if (preTaskIds.Count > 0) { //更预任务申请表状态 - await _db.Updateable().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_START_ID }).Where(it => preTaskIds.Contains(it.id)).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_START_ID }).Where(it => preTaskIds.Contains(it.id)).ExecuteCommandAsync(); } await _db.Ado.CommitTranAsync(); @@ -674,19 +685,19 @@ namespace Tnb.WarehouseMgr { await _db.Ado.BeginTranAsync(); - await _db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_RUNING_ID }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_RUNING_ID }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync(); //清空载具库位数据 var carryAndLocIds = await _db.Queryable().Where(it => input.disTaskIds.Contains(it.id)).Select(it => new { it.carry_id, it.startlocation_id }).ToListAsync(); if (carryAndLocIds?.Count > 0) { - var carryIds = carryAndLocIds.Select(x => x.carry_id).ToList(); - await _db.Updateable().SetColumns(it => new WmsCarryH { location_id = null, location_code = null }).Where(it => carryIds.Contains(it.id)).ExecuteCommandAsync(); + List carryIds = carryAndLocIds.Select(x => x.carry_id).ToList(); + _ = await _db.Updateable().SetColumns(it => new WmsCarryH { location_id = null, location_code = null }).Where(it => carryIds.Contains(it.id)).ExecuteCommandAsync(); } //更新起始库位,状态改为空闲、锁定状态,未锁定 if (carryAndLocIds?.Count > 0) { - var startLocationIds = carryAndLocIds.Select(x => x.startlocation_id).ToList(); - await _db.Updateable().SetColumns(it => new BasLocation { is_use = ((int)EnumCarryStatus.空闲).ToString(), is_lock = 0 }).Where(it => startLocationIds.Contains(it.id)).ExecuteCommandAsync(); + List startLocationIds = carryAndLocIds.Select(x => x.startlocation_id).ToList(); + _ = await _db.Updateable().SetColumns(it => new BasLocation { is_use = ((int)EnumCarryStatus.空闲).ToString(), is_lock = 0 }).Where(it => startLocationIds.Contains(it.id)).ExecuteCommandAsync(); } await _db.Ado.CommitTranAsync(); @@ -709,13 +720,13 @@ namespace Tnb.WarehouseMgr await _db.Ado.BeginTranAsync(); //更新任务执行表,单据状态为 完成 - await _db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync(); - var disTasks = await _db.Queryable().InnerJoin((a, b) => a.carry_id == b.id).Where(a => input.disTaskIds.Contains(a.id)).Select((a, b) => new WmsDistaskH { carry_status = b.carry_status }, true).ToListAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync(); + List disTasks = await _db.Queryable().InnerJoin((a, b) => a.carry_id == b.id).Where(a => input.disTaskIds.Contains(a.id)).Select((a, b) => new WmsDistaskH { carry_status = b.carry_status }, true).ToListAsync(); if (disTasks?.Count > 0) { // 更新预任务申请表,单据状态为 已完成 - var preTaskIds = disTasks.Select(x => x.pretask_id).ToList(); - await _db.Updateable().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID }).Where(it => preTaskIds.Contains(it.id)).ExecuteCommandAsync(); + List preTaskIds = disTasks.Select(x => x.pretask_id).ToList(); + _ = await _db.Updateable().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID }).Where(it => preTaskIds.Contains(it.id)).ExecuteCommandAsync(); //更新电梯任务数量 /* var eles = await _db.Queryable().Where(it => disTasks.Select(x => x.area_code).Contains(it.area_code)).ToListAsync(); @@ -725,8 +736,8 @@ namespace Tnb.WarehouseMgr //更新载具,锁定状态为未锁定,更新载具的库位当前任务的目标库位 Logger.Information("更新载具及库位准备中....."); - var multiList = disTasks.Select(it => (it.carry_id, it.carry_status, it.endlocation_id, it.endlocation_code)).ToList(); - var locWhIdMap = await _db.Queryable().Where(it => multiList.Select(x => x.endlocation_id).Contains(it.id)).ToDictionaryAsync(it => it.id, it => it.wh_id); + List<(string carry_id, string carry_status, string endlocation_id, string endlocation_code)> multiList = disTasks.Select(it => (it.carry_id, it.carry_status, it.endlocation_id, it.endlocation_code)).ToList(); + Dictionary locWhIdMap = await _db.Queryable().Where(it => multiList.Select(x => x.endlocation_id).Contains(it.id)).ToDictionaryAsync(it => it.id, it => it.wh_id); List carryIts = new(); List carryCodeIts = new(); List locIts = new(); @@ -739,7 +750,7 @@ namespace Tnb.WarehouseMgr location_id = multiList[i].endlocation_id, location_code = multiList[i].endlocation_code }; - var endLocId = multiList[i].endlocation_id; + string endLocId = multiList[i].endlocation_id; WmsCarryCode carryCode = new() { warehouse_id = locWhIdMap.ContainsKey(endLocId) ? locWhIdMap[endLocId].ToString() : "", @@ -749,10 +760,12 @@ namespace Tnb.WarehouseMgr carryIts.Add(carry); carryCodeIts.Add(carryCode); - BasLocation loc = new(); - loc.id = multiList[i].endlocation_id; - loc.is_lock = 0; - loc.is_use = multiList[i].carry_status; + BasLocation loc = new() + { + id = multiList[i].endlocation_id, + is_lock = 0, + is_use = multiList[i].carry_status + }; if (multiList[i].carry_status.ToEnum() == EnumCarryStatus.空闲) { loc.is_use = ((int)EnumCarryStatus.占用).ToString(); @@ -761,21 +774,21 @@ namespace Tnb.WarehouseMgr locIts.Add(loc); } Logger.Information("更新载具及库位开始....."); - await _db.Updateable(carryIts).UpdateColumns(it => new { it.is_lock, it.location_id, it.location_code }).ExecuteCommandAsync(); + _ = await _db.Updateable(carryIts).UpdateColumns(it => new { it.is_lock, it.location_id, it.location_code }).ExecuteCommandAsync(); //更新条码的库位和仓库信息 - await _db.Updateable(carryCodeIts).UpdateColumns(it => new { it.warehouse_id, it.location_id, it.location_code }).Where(it => multiList.Select(x => x.carry_id).Contains(it.carry_id)).ExecuteCommandAsync(); + _ = await _db.Updateable(carryCodeIts).UpdateColumns(it => new { it.warehouse_id, it.location_id, it.location_code }).Where(it => multiList.Select(x => x.carry_id).Contains(it.carry_id)).ExecuteCommandAsync(); //更新库位信息,使用状态为 使用,锁定状态为未锁定 - await _db.Updateable(locIts).UpdateColumns(it => new { it.is_use, it.is_lock }).ExecuteCommandAsync(); + _ = await _db.Updateable(locIts).UpdateColumns(it => new { it.is_use, it.is_lock }).ExecuteCommandAsync(); Logger.Information("更新载具及库位结束....."); Logger.Information($"_userManager==null:{_userManager == null}"); /* var loginType= _userManager?.LoginType ?? "web"; Log.Information($"_userManager.LoginType={loginType}"); */ //更新业务主表的单据状态 - foreach (var dt in disTasks) + foreach (WmsDistaskH? dt in disTasks) { Logger.Information("开始业务回更"); - var disTaskCodes = await _db.Queryable().Where(it => it.bill_id == dt.id).ToListAsync(); - var upInput = new WareHouseUpInput { bizTypeId = dt.biz_type, requireId = dt.require_id!, distaskCodes = disTaskCodes, carryIds = disTasks.Select(x => x.carry_id).ToList() }; + List disTaskCodes = await _db.Queryable().Where(it => it.bill_id == dt.id).ToListAsync(); + WareHouseUpInput upInput = new() { bizTypeId = dt.biz_type, requireId = dt.require_id!, distaskCodes = disTaskCodes, carryIds = disTasks.Select(x => x.carry_id).ToList() }; /*if (!_userManager?.LoginType.IsNullOrEmpty() ?? false) { @@ -816,7 +829,7 @@ namespace Tnb.WarehouseMgr async Task _updateStatus(ModifyPoliciesStatusInput input) where T : BaseEntity, IUpdatePoliciesStatus, new() { T obj = new() { status = input.status }; - await _db.Updateable(obj).UpdateColumns(it => it.status).Where(it => input.ids.Contains(it.id)).ExecuteCommandAsync(); + _ = await _db.Updateable(obj).UpdateColumns(it => it.status).Where(it => input.ids.Contains(it.id)).ExecuteCommandAsync(); } switch (input.strategyType) @@ -847,22 +860,22 @@ namespace Tnb.WarehouseMgr }); if (preTasks.FindAll(it => it.startlocation_id == it.endlocation_id)?.Count > 0) { - preTasks.RemoveAll(it => it.startlocation_id == it.endlocation_id); + _ = preTasks.RemoveAll(it => it.startlocation_id == it.endlocation_id); } - var grpList = preTasks.OrderBy(o => o.bill_code).GroupBy(g => g.carry_id).ToList(); + List> grpList = preTasks.OrderBy(o => o.bill_code).GroupBy(g => g.carry_id).ToList(); if (grpList?.Count > 0) { - foreach (var grp in grpList) + foreach (IGrouping? grp in grpList) { - var arr = grp.ToArray(); + WmsPretaskH[] arr = grp.ToArray(); if (arr.Length > 1) { - var subArr = arr[..^1]; + WmsPretaskH[] subArr = arr[..^1]; System.Array.ForEach(subArr, a => a.chain_type = "1"); } } } - var row = await _db.Insertable(preTasks).ExecuteCommandAsync(); + int row = await _db.Insertable(preTasks).ExecuteCommandAsync(); if (preTaskCodes?.Count > 0) { row = await _db.Insertable(preTaskCodes).ExecuteCommandAsync(); @@ -889,22 +902,22 @@ namespace Tnb.WarehouseMgr //根据生成的预任务,插入预任务操作记录 if (input.PreTaskRecord != null) { - await _db.Insertable(input.PreTaskRecord).ExecuteCommandAsync(); + _ = await _db.Insertable(input.PreTaskRecord).ExecuteCommandAsync(); } if (input.PreTaskHandleCodes.Count > 0) { - await _db.Insertable(input.PreTaskHandleCodes).ExecuteCommandAsync(); + _ = await _db.Insertable(input.PreTaskHandleCodes).ExecuteCommandAsync(); } //根据载具ID,更新是否锁定和赋值起始库位 if (setCarryColumnsExp != null) { Expression> whereExp = input.CarryIds?.Count > 0 ? it => input.CarryIds.Contains(it.id) : it => it.id == input.CarryId; - await _db.Updateable().SetColumns(setCarryColumnsExp).Where(whereExp).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(setCarryColumnsExp).Where(whereExp).ExecuteCommandAsync(); } //根据所有库位更新库位的锁定状态为“锁定” if (setLocaionColumbExp != null && input.LocationIds?.Count > 0) { - await _db.Updateable().SetColumns(setLocaionColumbExp).Where(it => input.LocationIds.Contains(it.id)).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(setLocaionColumbExp).Where(it => input.LocationIds.Contains(it.id)).ExecuteCommandAsync(); } await _db.Ado.CommitTranAsync(); } @@ -924,42 +937,47 @@ namespace Tnb.WarehouseMgr [NonAction] public async Task> PathAlgorithms(string pStartId, string pEndId) { - var roads = await _db.Queryable().Where(it => it.status == 1).ToListAsync(); - var points = await LocPathCalcAlgorithms(pStartId, pEndId, roads); + List roads = await _db.Queryable().Where(it => it.status == 1).ToListAsync(); + List points = await LocPathCalcAlgorithms(pStartId, pEndId, roads); try { if (points.FindAll(x => x.location_code != null && x.location_code.Contains("ELE"))?.Count > 0) { //查询当前电梯点 - var curEleDs = await _db.Queryable().Where(it => points.Select(x => x.id).Contains(it.point_id)).ToListAsync(); + List curEleDs = await _db.Queryable().Where(it => points.Select(x => x.id).Contains(it.point_id)).ToListAsync(); //如果有电梯点,则会进行电梯的均匀分配 if (curEleDs?.Count > 0) { //当前电梯 - var curEle = await _db.Queryable().SingleAsync(it => it.id == curEleDs.First().bill_id && it.status == 1); - if (curEle == null) throw new AppFriendlyException("电梯被禁用或未配置", 500); + WmsElevatorH curEle = await _db.Queryable().SingleAsync(it => it.id == curEleDs.First().bill_id && it.status == 1); + if (curEle == null) + { + throw new AppFriendlyException("电梯被禁用或未配置", 500); + } //同电梯组电梯 - var sGpEle = await _db.Queryable().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.status == 1).ToListAsync(); + List sGpEle = await _db.Queryable().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.status == 1).ToListAsync(); //判断电梯组中各电梯任务数 if (sGpEle.FindAll(x => Math.Abs(x.task_nums - curEle.task_nums) % 2 == 1)?.Count > 0) { - var sGpDs = await _db.Queryable().Where(it => it.bill_id == sGpEle.First().id).ToListAsync(); + List sGpDs = await _db.Queryable().Where(it => it.bill_id == sGpEle.First().id).ToListAsync(); if (sGpDs?.Count > 0) { - var sGpPoints = await _db.Queryable().Where(it => sGpDs.Select(x => x.point_id).Contains(it.id)).ToListAsync(); - var sFEndId = sGpDs.Single(x => x.floor == curEleDs.First().floor).point_id; - var eFStartId = sGpDs.Single(x => x.floor == curEleDs.Last().floor).point_id; - var sFPoints = await LocPathCalcAlgorithms(pStartId, sFEndId, roads); + List sGpPoints = await _db.Queryable().Where(it => sGpDs.Select(x => x.point_id).Contains(it.id)).ToListAsync(); + string sFEndId = sGpDs.Single(x => x.floor == curEleDs.First().floor).point_id; + string eFStartId = sGpDs.Single(x => x.floor == curEleDs.Last().floor).point_id; + List sFPoints = await LocPathCalcAlgorithms(pStartId, sFEndId, roads); List elePoints = new(); - foreach (var pt in curEleDs) + foreach (WmsElevatorD pt in curEleDs) { - var elePoint = sGpPoints.Find(x => x.floor == pt.floor); + WmsPointH? elePoint = sGpPoints.Find(x => x.floor == pt.floor); if (elePoint != null) + { elePoints.Add(elePoint); + } } - var eFPoints = await LocPathCalcAlgorithms(eFStartId, pEndId, roads); - elePoints.Remove(elePoints.First()); - elePoints.Remove(elePoints.Last()); + List eFPoints = await LocPathCalcAlgorithms(eFStartId, pEndId, roads); + _ = elePoints.Remove(elePoints.First()); + _ = elePoints.Remove(elePoints.Last()); points.Clear(); points.AddRange(sFPoints); points.AddRange(elePoints); @@ -1006,28 +1024,24 @@ namespace Tnb.WarehouseMgr #endregion #region dijkstra - var points = await _db.Queryable().ToListAsync(); - var startObj = points.Find(x => x.id == pStartId); - var endObj = points.Find(x => x.id == pEndId); - var sIndex = points.IndexOf(startObj); - var eIndex = points.IndexOf(endObj); + List? points = await _db.Queryable().ToListAsync(); + WmsPointH? startObj = points.Find(x => x.id == pStartId); + WmsPointH? endObj = points.Find(x => x.id == pEndId); + int sIndex = points.IndexOf(startObj); + int eIndex = points.IndexOf(endObj); if (eIndex < sIndex) { - var tempIndex = sIndex; - sIndex = eIndex; - eIndex = tempIndex; - var temp = points[sIndex]; - points[sIndex] = points[eIndex]; - points[eIndex] = temp; + (eIndex, sIndex) = (sIndex, eIndex); + (points[eIndex], points[sIndex]) = (points[sIndex], points[eIndex]); } - var vexs = points.Select(p => p.id).ToArray(); + string[] vexs = points.Select(p => p.id).ToArray(); EData[] edges = new EData[roads.Count]; for (int i = 0; i < edges.Length; i++) { - var start = roads[i].startpoint_id; - var end = roads[i].endpoint_id; - var weight = roads[i].distance; + string start = roads[i].startpoint_id; + string end = roads[i].endpoint_id; + int weight = roads[i].distance; edges[i] = new EData(start, end, weight); } @@ -1036,7 +1050,7 @@ namespace Tnb.WarehouseMgr int[] dist = new int[pG.mVexs.Length]; List vertexs = new() { startObj }; pG.CalcDijkstra(sIndex, prev, dist); - var pointIds = points.Select(p => p.id).ToList(); + List pointIds = points.Select(p => p.id).ToList(); Stack result = new(); GetPoints(pointIds, prev, result, eIndex); @@ -1044,7 +1058,7 @@ namespace Tnb.WarehouseMgr if (points?.Count > 0) { //points.Where(it => result.Contains(it.id)); - foreach (var i in result) + foreach (string i in result) { WmsPointH? point = points?.Find(x => x.id == i); if (point != null) @@ -1069,13 +1083,13 @@ namespace Tnb.WarehouseMgr /// private void MatchPoint(List results, List roads, List shortestPathPoints, Dictionary isVisited, string pStartId, string pEndId) { - var sRoads = roads.Where(x => x.startpoint_id == pStartId).ToList(); + List sRoads = roads.Where(x => x.startpoint_id == pStartId).ToList(); for (int j = 0; j < sRoads.Count; j++) { - var sPoint = shortestPathPoints.Find(x => x.id == sRoads[j].endpoint_id); + WmsPointH? sPoint = shortestPathPoints.Find(x => x.id == sRoads[j].endpoint_id); if (sPoint != null && isVisited.ContainsKey(sPoint.id) && !isVisited[sPoint.id] && sPoint.id != pEndId) { - var code = sPoint.point_code; + string code = sPoint.point_code; results.Add(sPoint); isVisited[sPoint.id] = true; MatchPoint(results, roads, shortestPathPoints, isVisited, sPoint.id, pEndId); @@ -1091,7 +1105,7 @@ namespace Tnb.WarehouseMgr /// private static void GetPoints(List pointIds, int[] prev, Stack result, int eIdx) { - var index = eIdx; + int index = eIdx; while (index != 0) { result.Push(pointIds[index]); @@ -1101,14 +1115,14 @@ namespace Tnb.WarehouseMgr private async Task Update(T1 entity, List entities) where T1 : BaseEntity, new() where T2 : BaseEntity, new() { - var isOk = false; + bool isOk = false; try { await _db.Ado.BeginTranAsync(); isOk = await _db.Updateable(entity).ExecuteCommandHasChangeAsync(); if (entities?.Count > 0) { - var row = await _db.Storageable(entities).ExecuteCommandAsync(); + int row = await _db.Storageable(entities).ExecuteCommandAsync(); isOk = row > 0; } await _db.Ado.CommitTranAsync(); @@ -1133,8 +1147,8 @@ namespace Tnb.WarehouseMgr where TOutput : IInOutStockDetail, new() where TStockCode : BaseEntity, IInOutStockCode, new() { - var dic = await _dictionaryDataService.GetDictionaryByTypeId(WmsWareHouseConst.WMS_INSTOCK_D_BILL_STATUS_TYPEID); - var data = await _db.Queryable() + Dictionary dic = await _dictionaryDataService.GetDictionaryByTypeId(WmsWareHouseConst.WMS_INSTOCK_D_BILL_STATUS_TYPEID); + List data = await _db.Queryable() .Where(a => a.id == billDId) .Select(a => new TOutput { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryBindService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryBindService.cs index 1076b9e7..07759054 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryBindService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryBindService.cs @@ -45,7 +45,7 @@ namespace Tnb.WarehouseMgr [NonAction] public async Task CarryBind(VisualDevModelDataCrInput input) { - var isOk = false; + bool isOk = false; try { await _db.Ado.BeginTranAsync(); @@ -53,15 +53,19 @@ namespace Tnb.WarehouseMgr VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSCARRYBIND_ID, true); await _runService.Create(templateEntity, input); - if (input == null) throw new ArgumentNullException(nameof(input)); - var carryId = input.data.ContainsKey("carry_id") ? input.data["carry_id"]?.ToString() : ""; - var subCarryId = input.data.ContainsKey("membercarry_id") ? input.data["membercarry_id"]?.ToString() : ""; - var carry = await _db.Queryable().SingleAsync(it => it.id == carryId); - var subCarry = await _db.Queryable().SingleAsync(it => it.id == subCarryId); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + string? carryId = input.data.ContainsKey("carry_id") ? input.data["carry_id"]?.ToString() : ""; + string? subCarryId = input.data.ContainsKey("membercarry_id") ? input.data["membercarry_id"]?.ToString() : ""; + WmsCarryH? carry = await _db.Queryable().SingleAsync(it => it.id == carryId); + WmsCarryH? subCarry = await _db.Queryable().SingleAsync(it => it.id == subCarryId); if (carry != null && subCarry != null) { carry.carry_status = ((int)EnumCarryStatus.占用).ToString(); - var row = await _db.Updateable(carry).ExecuteCommandAsync(); + int row = await _db.Updateable(carry).ExecuteCommandAsync(); subCarry.carry_status = ((int)EnumCarryStatus.占用).ToString(); row = await _db.Updateable(subCarry).ExecuteCommandAsync(); //更新载具明细表 @@ -77,31 +81,36 @@ namespace Tnb.WarehouseMgr create_time = DateTime.Now }; row = await _db.Insertable(wmsCarryD).ExecuteCommandAsync(); - var items = await _db.Queryable().Where(it => it.carry_id == subCarryId).ToListAsync(); + List items = await _db.Queryable().Where(it => it.carry_id == subCarryId).ToListAsync(); List wmsCarrybindCodes = new(); //更新载具绑定条码表 for (int i = 0; i < items.Count; i++) { - WmsCarrybindCode wmsCarrybindCode = new(); - wmsCarrybindCode.id = SnowflakeIdHelper.NextId(); - wmsCarrybindCode.org_id = (subCarry != null && subCarry.org_id != null) ? subCarry.org_id : _userManager.User.OrganizeId; - wmsCarrybindCode.carrybind_id = input.data["ReturnIdentity"]?.ToString()!; - wmsCarrybindCode.material_id = items[i].material_id; - wmsCarrybindCode.material_code = items[i].material_code; - wmsCarrybindCode.barcode = items[i].barcode; - wmsCarrybindCode.code_batch = items[i].code_batch; - wmsCarrybindCode.codeqty = items[i].codeqty; - wmsCarrybindCode.membercarry_id = subCarry?.id; - wmsCarrybindCode.membercarry_code = subCarry?.carry_code; - wmsCarrybindCode.unit_id = items[i].unit_id; - wmsCarrybindCode.unit_code = items[i].unit_code; - wmsCarrybindCode.create_id = _userManager.UserId; - wmsCarrybindCode.create_time = DateTime.Now; + WmsCarrybindCode wmsCarrybindCode = new() + { + id = SnowflakeIdHelper.NextId(), + org_id = (subCarry != null && subCarry.org_id != null) ? subCarry.org_id : _userManager.User.OrganizeId, + carrybind_id = input.data["ReturnIdentity"]?.ToString()!, + material_id = items[i].material_id, + material_code = items[i].material_code, + barcode = items[i].barcode, + code_batch = items[i].code_batch, + codeqty = items[i].codeqty, + membercarry_id = subCarry?.id, + membercarry_code = subCarry?.carry_code, + unit_id = items[i].unit_id, + unit_code = items[i].unit_code, + create_id = _userManager.UserId, + create_time = DateTime.Now + }; wmsCarrybindCodes.Add(wmsCarrybindCode); } row = await _db.Insertable(wmsCarrybindCodes).ExecuteCommandAsync(); - isOk = (row > 0); - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + isOk = row > 0; + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } } else { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryLedgerService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryLedgerService.cs index a2c35e74..b15eee4f 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryLedgerService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryLedgerService.cs @@ -36,7 +36,6 @@ namespace Tnb.WarehouseMgr /// /// 载具导入 /// - /// /// private async Task DataImport(VisualDevImportDataInput input) { @@ -44,28 +43,35 @@ namespace Tnb.WarehouseMgr try { List> dics = input.list; - List carrys = new List(); + List carrys = new(); Dictionary? locs = null; List locCodes = new(); List cStdCodes = new(); - WmsCarryH carryH = new WmsCarryH(); + WmsCarryH carryH = new(); //遍历字典,找出需要查询数据库拿的相关字段 - foreach (var d in dics) + foreach (Dictionary d in dics) { - var cStdCode = d["carrystd_id"].ToString() ?? string.Empty; + string cStdCode = d["carrystd_id"].ToString() ?? string.Empty; locCodes.Add(d["location_code"].ToString() ?? string.Empty); cStdCodes.Add(cStdCode); d["create_time"] = DateTime.Now; - d.Remove("modify_time"); + _ = d.Remove("modify_time"); carryH = d.Adapt(); carrys.Add(carryH); } - var carryStdDic = await _db.Queryable().Where(it => cStdCodes.Contains(it.carrystd_code)).ToDictionaryAsync(x => x.carrystd_code, x => x.id); + Dictionary carryStdDic = await _db.Queryable().Where(it => cStdCodes.Contains(it.carrystd_code)).ToDictionaryAsync(x => x.carrystd_code, x => x.id); if (locCodes?.Count > 0) + { locs = await _db.Queryable().Where(it => locCodes.Contains(it.location_code)).ToDictionaryAsync(x => x.location_code, x => x.id); + } + carrys.ForEach(x => { - if (!carryStdDic.Keys.Contains(x.carrystd_id)) throw new AppFriendlyException($"第{carrys.IndexOf(x) + 1}个数据的载具规格有误", 500); + if (!carryStdDic.Keys.Contains(x.carrystd_id)) + { + throw new AppFriendlyException($"第{carrys.IndexOf(x) + 1}个数据的载具规格有误", 500); + } + x.id = SnowflakeIdHelper.NextId(); x.org_id = _userManager.User.OrganizeId; x.status = 1; @@ -73,7 +79,10 @@ namespace Tnb.WarehouseMgr x.carrystd_id = carryStdDic[x.carrystd_id].ToString() ?? throw new AppFriendlyException($"第{carrys.IndexOf(x) + 1}个数据的载具规格有误", 500); x.carry_status = ((int)EnumCarryStatus.空闲).ToString(); if (locs != null && x.location_code != null && x.location_code != string.Empty) + { x.location_id = locs[x.location_code].ToString() ?? throw new AppFriendlyException($"第{carrys.IndexOf(x) + 1}个数据的库位编号有误", 500); + } + x.out_status = ((int)EnumOutStatus.正常).ToString(); x.is_check = 1; x.create_id = _userManager.UserId; @@ -82,13 +91,13 @@ namespace Tnb.WarehouseMgr }); if (carrys.Count > 1000) { - await _db.Fastest().BulkCopyAsync(carrys); + _ = await _db.Fastest().BulkCopyAsync(carrys); } else if (carrys.Count > 400) { _db.Utilities.PageEach(carrys, 100, async pageList => { - await _db.Insertable(pageList).ExecuteCommandAsync(); + _ = await _db.Insertable(pageList).ExecuteCommandAsync(); }); } else diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveInStockService.cs index 9927dad9..9a40cdc6 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveInStockService.cs @@ -65,8 +65,8 @@ namespace Tnb.WarehouseMgr await _db.Ado.BeginTranAsync(); //入库取终点 //出库起点 - var inStockStrategyInput = new InStockStrategyQuery { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString()!, Size = 1 }; - var endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); + InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString()!, Size = 1 }; + List endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); WmsPointH sPoint = null!; WmsPointH ePoint = null!; if (input.data.ContainsKey(nameof(WmsPointH.location_id))) @@ -75,10 +75,14 @@ namespace Tnb.WarehouseMgr } if (endLocations?.Count > 0) { - var carry = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsCarryD.carry_id)].ToString()); - var loc = await _db.Queryable().SingleAsync(it => it.id == endLocations[0].id); - var isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); - if (!isMatch) throw new AppFriendlyException("库位与载具规格不匹配", 500); + WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsCarryD.carry_id)].ToString()); + BasLocation loc = await _db.Queryable().SingleAsync(it => it.id == endLocations[0].id); + bool isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); + if (!isMatch) + { + throw new AppFriendlyException("库位与载具规格不匹配", 500); + } + ePoint = await _db.Queryable().FirstAsync(it => it.location_id == endLocations[0].id); } @@ -88,32 +92,38 @@ namespace Tnb.WarehouseMgr if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + List points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => - { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + if (points.Count <= 2) + { + throw new AppFriendlyException("该路径不存在", 500); + } - WmsPretaskH preTask = new(); - preTask.org_id = _userManager.User.OrganizeId!; - preTask.startlocation_id = sPoint?.location_id!; - preTask.startlocation_code = sPoint?.location_code!; - preTask.endlocation_id = ePoint?.location_id!; - preTask.endlocation_code = ePoint?.location_code!; - preTask.start_floor = sPoint?.floor.ToString(); - preTask.end_floor = ePoint?.floor.ToString(); - preTask.startpoint_id = sPoint?.id!; - preTask.startpoint_code = sPoint?.point_code!; - preTask.endpoint_id = ePoint?.id!; - preTask.endpoint_code = ePoint?.point_code!; - preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); - preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; - preTask.biz_type = WmsWareHouseConst.BIZTYPE_CARRYMOVEINSTOCK_ID; - preTask.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID; + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); + + WmsPretaskH preTask = new() + { + org_id = _userManager.User.OrganizeId!, + startlocation_id = sPoint?.location_id!, + startlocation_code = sPoint?.location_code!, + endlocation_id = ePoint?.location_id!, + endlocation_code = ePoint?.location_code!, + start_floor = sPoint?.floor.ToString(), + end_floor = ePoint?.floor.ToString(), + startpoint_id = sPoint?.id!, + startpoint_code = sPoint?.point_code!, + endpoint_id = ePoint?.id!, + endpoint_code = ePoint?.point_code!, + bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(), + status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID, + biz_type = WmsWareHouseConst.BIZTYPE_CARRYMOVEINSTOCK_ID, + task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID + }; preTask.carry_id = input.data[nameof(preTask.carry_id)]?.ToString()!; preTask.carry_code = input.data[nameof(preTask.carry_code)]?.ToString()!; preTask.area_id = sPoint?.area_id!; @@ -124,31 +134,35 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks, null!); + bool isOk = await _wareHouseService.GenPreTask(preTasks, null!); if (isOk) { - var preTaskUpInput = new GenPreTaskUpInput(); - preTaskUpInput.RquireId = input.data["ReturnIdentity"].ToString()!; - preTaskUpInput.CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!; - preTaskUpInput.CarryStartLocationId = points.FirstOrDefault()!.location_id!; - preTaskUpInput.CarryStartLocationCode = points.FirstOrDefault()!.location_code!; - preTaskUpInput.LocationIds = points.Select(x => x.location_id).ToList()!; + GenPreTaskUpInput preTaskUpInput = new() + { + RquireId = input.data["ReturnIdentity"].ToString()!, + CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!, + CarryStartLocationId = points.FirstOrDefault()!.location_id!, + CarryStartLocationCode = points.FirstOrDefault()!.location_code!, + LocationIds = points.Select(x => x.location_id).ToList()! + }; - WmsHandleH handleH = new(); - handleH.org_id = _userManager.User.OrganizeId; - handleH.startlocation_id = input.data[nameof(WmsPointH.location_id)]?.ToString()!; - handleH.endlocation_id = endLocations![0].id; - handleH.bill_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!; - handleH.biz_type = input.data[nameof(WmsHandleH.biz_type)]?.ToString()!; - handleH.carry_id = input.data[nameof(WmsHandleH.carry_id)]?.ToString()!; - handleH.carry_code = input.data[nameof(WmsHandleH.carry_code)]?.ToString()!; - handleH.require_id = input.data["ReturnIdentity"].ToString(); - handleH.require_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!; - handleH.create_id = _userManager.UserId; - handleH.create_time = DateTime.Now; + WmsHandleH handleH = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = input.data[nameof(WmsPointH.location_id)]?.ToString()!, + endlocation_id = endLocations![0].id, + bill_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!, + biz_type = input.data[nameof(WmsHandleH.biz_type)]?.ToString()!, + carry_id = input.data[nameof(WmsHandleH.carry_id)]?.ToString()!, + carry_code = input.data[nameof(WmsHandleH.carry_code)]?.ToString()!, + require_id = input.data["ReturnIdentity"].ToString(), + require_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!, + create_id = _userManager.UserId, + create_time = DateTime.Now + }; preTaskUpInput.PreTaskRecord = handleH; //根据载具移入Id,回更单据状态 - await _db.Updateable().SetColumns(it => new WmsMoveInstock { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsMoveInstock { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, it => new WmsCarryH { is_lock = 1, location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode }, @@ -174,9 +188,16 @@ namespace Tnb.WarehouseMgr public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); - var row = await _db.Updateable().SetColumns(it => new WmsMoveInstock { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); - if (row < 1) throw Oops.Oh(ErrorCode.COM1001); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + int row = await _db.Updateable().SetColumns(it => new WmsMoveInstock { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); + if (row < 1) + { + throw Oops.Oh(ErrorCode.COM1001); + } } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveOutStockService.cs index 7107f15f..1dd84ca9 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveOutStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveOutStockService.cs @@ -62,11 +62,13 @@ namespace Tnb.WarehouseMgr await _db.Ado.BeginTranAsync(); //判断目标库位是否自动签收 - var loc = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString()); - var carry = await _db.Queryable().FirstAsync(it => it.id == input.data[nameof(WmsMoveOutstock.carry_id)].ToString()); - var isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); - if (!isMatch) throw new AppFriendlyException("该载具无法放置到目标库位", 500); - + BasLocation loc = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString()); + WmsCarryH carry = await _db.Queryable().FirstAsync(it => it.id == input.data[nameof(WmsMoveOutstock.carry_id)].ToString()); + bool isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); + if (!isMatch) + { + throw new AppFriendlyException("该载具无法放置到目标库位", 500); + } VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSCARRYMOOUTSTK_ID, true); await _runService.Create(templateEntity, input); @@ -86,32 +88,38 @@ namespace Tnb.WarehouseMgr if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + List points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + if (points.Count <= 2) { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + throw new AppFriendlyException("该路径不存在", 500); + } - WmsPretaskH preTask = new(); - preTask.org_id = _userManager.User.OrganizeId; - preTask.startlocation_id = sPoint?.location_id!; - preTask.startlocation_code = sPoint?.location_code!; - preTask.endlocation_id = ePoint?.location_id!; - preTask.endlocation_code = ePoint?.location_code!; - preTask.start_floor = sPoint?.floor.ToString(); - preTask.end_floor = ePoint?.floor.ToString(); - preTask.startpoint_id = sPoint?.id!; - preTask.startpoint_code = sPoint?.point_code!; - preTask.endpoint_id = ePoint?.id!; - preTask.endpoint_code = ePoint?.point_code!; - preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); - preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; - preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSMOOUTSTK_ID; - preTask.task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID; + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); + + WmsPretaskH preTask = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = sPoint?.location_id!, + startlocation_code = sPoint?.location_code!, + endlocation_id = ePoint?.location_id!, + endlocation_code = ePoint?.location_code!, + start_floor = sPoint?.floor.ToString(), + end_floor = ePoint?.floor.ToString(), + startpoint_id = sPoint?.id!, + startpoint_code = sPoint?.point_code!, + endpoint_id = ePoint?.id!, + endpoint_code = ePoint?.point_code!, + bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(), + status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID, + biz_type = WmsWareHouseConst.BIZTYPE_WMSMOOUTSTK_ID, + task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID + }; preTask.carry_id = input.data[nameof(preTask.carry_id)]?.ToString()!; preTask.carry_code = input.data[nameof(preTask.carry_code)]?.ToString()!; preTask.area_id = sPoint?.area_id!; @@ -126,19 +134,21 @@ namespace Tnb.WarehouseMgr { preTasks[^1].is_sign = 0; // 修改最后一个元素的是否签收值 } - var isOk = await _wareHouseService.GenPreTask(preTasks, null!); + bool isOk = await _wareHouseService.GenPreTask(preTasks, null!); if (isOk) { - var preTaskUpInput = new GenPreTaskUpInput(); - preTaskUpInput.RquireId = input.data["ReturnIdentity"].ToString()!; - preTaskUpInput.CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!; - preTaskUpInput.CarryStartLocationId = points.FirstOrDefault()!.location_id!; - preTaskUpInput.CarryStartLocationCode = points.FirstOrDefault()!.location_code!; - preTaskUpInput.LocationIds = points.Select(x => x.location_id).ToList()!; - preTaskUpInput.PreTaskRecords = preTasks.Adapt>(); + GenPreTaskUpInput preTaskUpInput = new() + { + RquireId = input.data["ReturnIdentity"].ToString()!, + CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!, + CarryStartLocationId = points.FirstOrDefault()!.location_id!, + CarryStartLocationCode = points.FirstOrDefault()!.location_code!, + LocationIds = points.Select(x => x.location_id).ToList()!, + PreTaskRecords = preTasks.Adapt>() + }; preTaskUpInput.PreTaskRecords.ForEach(x => x.id = SnowflakeIdHelper.NextId()); //根据载具移出Id,回更单据状态 - await _db.Updateable().SetColumns(it => new WmsMoveOutstock { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsMoveOutstock { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, it => new WmsCarryH { is_lock = 1 }, @@ -164,9 +174,16 @@ namespace Tnb.WarehouseMgr } public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); - var isOk = await _db.Updateable().SetColumns(it => new WmsMoveOutstock { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + bool isOk = await _db.Updateable().SetColumns(it => new WmsMoveOutstock { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryQueryService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryQueryService.cs index 9845ee8c..3deb0ac0 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryQueryService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryQueryService.cs @@ -29,11 +29,15 @@ namespace Tnb.WarehouseMgr public async Task MESCarryQuery(MESCarryQueryInput input) { - if (input.IsNull()) throw new ArgumentNullException("input"); - var data = new List(); + if (input.IsNull()) + { + throw new ArgumentNullException("input"); + } + + List data = new(); try { - var carrys = await _db.Queryable() + List carrys = await _db.Queryable() .InnerJoin((a, b) => a.collocation_scheme_id == b.id) .Where((a, b) => a.carry_code.Contains(input.carry_code) || b.bill_name.Contains(input.collocation_scheme_name)) .ToListAsync(); @@ -56,18 +60,26 @@ namespace Tnb.WarehouseMgr //[NonUnify] public async Task MESCarryQueryResult(MESCarryQueryResultInput input) { - if (input.IsNull()) throw new ArgumentNullException("input"); - var data = new CarryQueryOutput(); + if (input.IsNull()) + { + throw new ArgumentNullException("input"); + } + + CarryQueryOutput data = new(); try { - var carry = await _db.Queryable().FirstAsync(a => a.carry_code == input.carry_code && a.status == 1); - if (carry.IsNull()) throw new AppFriendlyException($"编号{input.carry_code},对应载具不存在或被禁用", 500); - var mCarryIdDic = await _db.Queryable().Where(it => it.carry_id == carry.id).ToDictionaryAsync(x => x.membercarry_id, x => x.membercarry_code); + WmsCarryH carry = await _db.Queryable().FirstAsync(a => a.carry_code == input.carry_code && a.status == 1); + if (carry.IsNull()) + { + throw new AppFriendlyException($"编号{input.carry_code},对应载具不存在或被禁用", 500); + } + + Dictionary mCarryIdDic = await _db.Queryable().Where(it => it.carry_id == carry.id).ToDictionaryAsync(x => x.membercarry_id, x => x.membercarry_code); Expression> whereExp = carry.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID && mCarryIdDic.Keys?.Count > 0 ? a => mCarryIdDic.Keys.Contains(a.carry_id) : a => a.carry_id == carry.id; - var carryCodes = await _db.Queryable().InnerJoin((a, b) => a.carry_id == b.id).LeftJoin((a, b, c) => a.carry_id == c.carry_id) + List carryCodes = await _db.Queryable().InnerJoin((a, b) => a.carry_id == b.id).LeftJoin((a, b, c) => a.carry_id == c.carry_id) .Where(whereExp) .Select((a, b, c) => new WmsCarryCode { @@ -78,9 +90,13 @@ namespace Tnb.WarehouseMgr if (carry.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID && mCarryIdDic?.Count > 0) { - if (carryCodes.Count < mCarryIdDic.Keys?.Count) throw new AppFriendlyException("载具条码数据异常,有料箱为空", 500); - var i = 0; - foreach (var (_, v) in mCarryIdDic) + if (carryCodes.Count < mCarryIdDic.Keys?.Count) + { + throw new AppFriendlyException("载具条码数据异常,有料箱为空", 500); + } + + int i = 0; + foreach ((string _, object v) in mCarryIdDic) { carryCodes[i].member_carrycode = v?.ToString() ?? string.Empty; i++; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryService.cs index 923c5e3a..70cfa3ac 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryService.cs @@ -55,8 +55,12 @@ namespace Tnb.WarehouseMgr [HttpGet] public async Task GetCarryInfoById([FromRoute] string carryId) { - var carryOutPut = await _db.Queryable().Where(it => it.id == carryId).Select().FirstAsync(); - if (carryOutPut == null) throw new AppFriendlyException("找不到载具", 500); + CarryInfoOutput carryOutPut = await _db.Queryable().Where(it => it.id == carryId).Select().FirstAsync(); + if (carryOutPut == null) + { + throw new AppFriendlyException("找不到载具", 500); + } + carryOutPut.carryDetails = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); carryOutPut.carryCodes = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); carryOutPut.carryMats = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); @@ -80,15 +84,15 @@ namespace Tnb.WarehouseMgr { - var isOk = false; + bool isOk = false; try { await _db.Ado.BeginTranAsync(); - var oldCarryId = input.data.ContainsKey("carry_id") ? input.data["carry_id"]?.ToString() : ""; - var newCarryId = input.data.ContainsKey("newcarry_id") ? input.data["newcarry_id"]?.ToString() : ""; - var oldCarry = await _db.Queryable().FirstAsync(it => it.id == oldCarryId); - var newCarry = await _db.Queryable().FirstAsync(it => it.id == newCarryId); + string? oldCarryId = input.data.ContainsKey("carry_id") ? input.data["carry_id"]?.ToString() : ""; + string? newCarryId = input.data.ContainsKey("newcarry_id") ? input.data["newcarry_id"]?.ToString() : ""; + WmsCarryH? oldCarry = await _db.Queryable().FirstAsync(it => it.id == oldCarryId); + WmsCarryH? newCarry = await _db.Queryable().FirstAsync(it => it.id == newCarryId); if (oldCarry != null && newCarry != null) { ExChangeCarryInput carryInput = new() { old_carry_id = oldCarry.id, new_carry_id = newCarry.id }; @@ -110,7 +114,7 @@ namespace Tnb.WarehouseMgr newCarry.source_code = oldCarry.source_code; newCarry.create_id = _userManager.UserId; newCarry.create_time = DateTime.Now; - var row = await _db.Updateable(newCarry).ExecuteCommandAsync(); + int row = await _db.Updateable(newCarry).ExecuteCommandAsync(); WmsCarryReplaceH wmsCarryReplaceH = oldCarry.Adapt(); wmsCarryReplaceH.id = SnowflakeIdHelper.NextId(); wmsCarryReplaceH.org_id = _userManager.User.OrganizeId; @@ -125,8 +129,11 @@ namespace Tnb.WarehouseMgr wmsCarryReplaceH.modify_time = null; row = await _db.Insertable(wmsCarryReplaceH).ExecuteCommandAsync(); row = await await UpdateNullCarry(oldCarry); - isOk = (row > 0); - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + isOk = row > 0; + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } } else { @@ -154,7 +161,7 @@ namespace Tnb.WarehouseMgr [NonAction] public async Task> UpdateNullCarry(WmsCarryH carryObj, Func>? updateTask = null) { - var row = 1; + int row = 1; Task resTask = Task.FromResult(row); try { @@ -173,11 +180,11 @@ namespace Tnb.WarehouseMgr resTask = updateTask?.Invoke(carryObj) ?? _db.CopyNew().Updateable(carryObj).ExecuteCommandAsync(); //*****删除对应明细表 //删除载具明细 - await _db.CopyNew().Deleteable().Where(it => it.carry_id == carryObj.id).ExecuteCommandHasChangeAsync(); + _ = await _db.CopyNew().Deleteable().Where(it => it.carry_id == carryObj.id).ExecuteCommandHasChangeAsync(); //删除载具分拣物料明细 - await _db.CopyNew().Deleteable().Where(it => it.carry_id == carryObj.id).ExecuteCommandHasChangeAsync(); + _ = await _db.CopyNew().Deleteable().Where(it => it.carry_id == carryObj.id).ExecuteCommandHasChangeAsync(); //删除载具条码 - await _db.CopyNew().Deleteable().Where(it => it.carry_id == carryObj.id).ExecuteCommandHasChangeAsync(); + _ = await _db.CopyNew().Deleteable().Where(it => it.carry_id == carryObj.id).ExecuteCommandHasChangeAsync(); } catch (Exception ex) { @@ -192,8 +199,8 @@ namespace Tnb.WarehouseMgr private async Task _updateSubCarry(ExChangeCarryInput input) where T : BaseEntity, IWmsCarryEntity, new() { - var row = -1; - var items = await _db.Queryable().Where(it => it.carry_id == input.old_carry_id).ToListAsync(); + int row = -1; + List items = await _db.Queryable().Where(it => it.carry_id == input.old_carry_id).ToListAsync(); if (items?.Count > 0) { List newItems = DeepCopyHelper.DeepCopyList(items); @@ -212,7 +219,7 @@ namespace Tnb.WarehouseMgr row = await _db.Deleteable(items).ExecuteCommandAsync(); } } - return (row > 0); + return row > 0; } /// @@ -221,7 +228,7 @@ namespace Tnb.WarehouseMgr /// /// [HttpPost] - public async Task BarCodePrint(List barCodes) + public new void BarCodePrint(List barCodes) { base.BarCodePrint(barCodes); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryUnbindService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryUnbindService.cs index e68c5c3c..34923f99 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryUnbindService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryUnbindService.cs @@ -40,7 +40,7 @@ namespace Tnb.WarehouseMgr } private async Task CarryUnbind(VisualDevModelDataCrInput input) { - var isOk = false; + bool isOk = false; try { await _db.Ado.BeginTranAsync(); @@ -48,16 +48,20 @@ namespace Tnb.WarehouseMgr VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSCARRYUNBIND_ID, true); await _runService.Create(templateEntity, input); - if (input == null) throw new ArgumentNullException(nameof(input)); - var carryId = input.data.ContainsKey("carry_id") ? input.data["carry_id"]?.ToString() : ""; - var subCarryId = input.data.ContainsKey("membercarry_id") ? input.data["membercarry_id"]?.ToString() : ""; - var carry = await _db.Queryable().FirstAsync(it => it.id == carryId); - var subCarry = await _db.Queryable().FirstAsync(it => it.id == subCarryId); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + string? carryId = input.data.ContainsKey("carry_id") ? input.data["carry_id"]?.ToString() : ""; + string? subCarryId = input.data.ContainsKey("membercarry_id") ? input.data["membercarry_id"]?.ToString() : ""; + WmsCarryH? carry = await _db.Queryable().FirstAsync(it => it.id == carryId); + WmsCarryH? subCarry = await _db.Queryable().FirstAsync(it => it.id == subCarryId); //WmsCarryunbindH wmsCarryUnbindH = carry.Adapt(); if (carry != null && subCarry != null) { - var row = await _db.Deleteable().Where(it => it.carry_id == carryId && it.membercarry_id == subCarryId).ExecuteCommandAsync(); - var items = await _db.Queryable().Where(it => it.carry_id == subCarryId).ToListAsync(); + int row = await _db.Deleteable().Where(it => it.carry_id == carryId && it.membercarry_id == subCarryId).ExecuteCommandAsync(); + List items = await _db.Queryable().Where(it => it.carry_id == subCarryId).ToListAsync(); //更新载具解绑记录条码表 WmsCarryunbindCode wmsCarryUnbindCode = new(); for (int i = 0; i < items.Count; i++) @@ -82,8 +86,11 @@ namespace Tnb.WarehouseMgr row = await _db.Updateable(carry).ExecuteCommandAsync(); subCarry!.carry_status = ((int)EnumCarryStatus.空闲).ToString(); row = await _db.Updateable(subCarry).ExecuteCommandAsync(); - isOk = (row > 0); - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + isOk = row > 0; + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } } else { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs index 7b74d59b..3b02b958 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs @@ -54,33 +54,38 @@ namespace Tnb.WarehouseMgr private async Task Create(VisualDevModelDataCrInput input) { - var row = 1; - if (input == null) throw new ArgumentNullException(nameof(input)); + int row = 1; + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + try { await _db.Ado.BeginTranAsync(); if (input.data?.Count > 0) { - var checkType = input.data[nameof(WmsCheckstockH.checkstock_type)]?.ToString(); + string? checkType = input.data[nameof(WmsCheckstockH.checkstock_type)]?.ToString(); if (!checkType.IsNullOrEmpty()) { - var billStatus = new List + List billStatus = new() { WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID, WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID, }; - var filter = Expressionable.Create() + Expression> filter = Expressionable.Create() .And((a, b) => b.wh_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString()) .And((a, b) => b.is_type == ((int)EnumLocationType.存储库位).ToString()) .And((a, b) => !billStatus.Contains(a.status)) .ToExpression(); - var queryTasks = new List>>(); - - queryTasks.Add(Task.Run(() => FetchDisTasks((a, b) => a.startlocation_id == b.id, filter))); - queryTasks.Add(Task.Run(() => FetchDisTasks((a, b) => a.endlocation_id == b.id, filter))); - var disTasks = await Task.WhenAll(queryTasks); + List>> queryTasks = new() + { + Task.Run(() => FetchDisTasks((a, b) => a.startlocation_id == b.id, filter)), + Task.Run(() => FetchDisTasks((a, b) => a.endlocation_id == b.id, filter)) + }; + List[] disTasks = await Task.WhenAll(queryTasks); if (disTasks?.Length > 0) { throw new AppFriendlyException("该仓库还有未完成的任务,不允许盘点!", 500); @@ -97,10 +102,10 @@ namespace Tnb.WarehouseMgr .Select() .ToListAsync(); carryCodes ??= Enumerable.Empty().ToList(); - var checkStockDs = carryCodes.Adapt>(); + List? checkStockDs = carryCodes.Adapt>(); var prQtyDic = checkStockDs.GroupBy(g => new { g.carry_id, g.material_id, g.code_batch }).ToDictionary(x => x.Key, x => x.Sum(d => d.codeqty)); - foreach (var (k, v) in prQtyDic) + foreach ((object k, decimal v) in prQtyDic) { WmsCheckstockD? checkstockD = checkStockDs?.Find(x => string.Equals(k, $"{x.carry_id}{x.material_id}{x.code_batch}")); if (checkstockD != null) @@ -112,7 +117,7 @@ namespace Tnb.WarehouseMgr details.Add(checkstockD); } } - await _db.Insertable(details).ExecuteCommandAsync(); + _ = await _db.Insertable(details).ExecuteCommandAsync(); break; case EnumCheckType.物料盘点: break; @@ -122,32 +127,36 @@ namespace Tnb.WarehouseMgr //生成预任务信息 if (details.Count > 0 && carryCodes.Count > 0) { - var locTypes = new[] { ((int)EnumLocationType.出库库位).ToString(), ((int)EnumLocationType.出入库位).ToString() }; - var endLocs = await _db.Queryable().Where(it => it.wh_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString() && locTypes.Contains(it.is_type)).ToArrayAsync(); - var randomIndex = new Random().Next(0, endLocs.GetUpperBound(0)); - var carrys = await _db.Queryable().Where(it => carryCodes.Select(x => x.carry_id).Distinct().Contains(it.id)).ToListAsync(); - var curDetails = details.DistinctBy(x => x.carry_id).ToList(); - var curCarryCodes = carryCodes.FindAll(x => curDetails.Select(d => d.carry_id).Contains(x.carry_id)); + string[] locTypes = new[] { ((int)EnumLocationType.出库库位).ToString(), ((int)EnumLocationType.出入库位).ToString() }; + BasLocation[] endLocs = await _db.Queryable().Where(it => it.wh_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString() && locTypes.Contains(it.is_type)).ToArrayAsync(); + int randomIndex = new Random().Next(0, endLocs.GetUpperBound(0)); + List carrys = await _db.Queryable().Where(it => carryCodes.Select(x => x.carry_id).Distinct().Contains(it.id)).ToListAsync(); + List curDetails = details.DistinctBy(x => x.carry_id).ToList(); + List curCarryCodes = carryCodes.FindAll(x => curDetails.Select(d => d.carry_id).Contains(x.carry_id)); if (curCarryCodes.Count > 0) { List preTasks = new(); List locIds = new(); - foreach (var item in carrys) + foreach (WmsCarryH item in carrys) { WmsPointH? sPoint = await _db.Queryable().FirstAsync(it => it.location_id == item.location_id); WmsPointH? ePoint = await _db.Queryable().FirstAsync(it => it.location_id == endLocs[randomIndex].id); if (sPoint != null && ePoint != null) { - var points = await _warehouseService.PathAlgorithms(sPoint.id, ePoint.id); + List points = await _warehouseService.PathAlgorithms(sPoint.id, ePoint.id); + + if (points.Count <= 2) + { + throw new AppFriendlyException("该路径不存在", 500); + } - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); if (points?.Count > 0) { locIds.AddRange(points.Select(x => x.location_id).ToList()!); - var curPreTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + List curPreTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); WmsPretaskH preTask = new() { @@ -182,10 +191,10 @@ namespace Tnb.WarehouseMgr } } List pretaskCodes = new(); - foreach (var pt in preTasks) + foreach (WmsPretaskH pt in preTasks) { - var partCodes = carryCodes.FindAll(x => x.carry_id == pt.carry_id).Distinct().ToList(); - var curPreTaskCodes = partCodes.Adapt>(); + List partCodes = carryCodes.FindAll(x => x.carry_id == pt.carry_id).Distinct().ToList(); + List curPreTaskCodes = partCodes.Adapt>(); curPreTaskCodes.ForEach(x => { x.id = SnowflakeIdHelper.NextId(); @@ -194,13 +203,15 @@ namespace Tnb.WarehouseMgr }); pretaskCodes.AddRange(curPreTaskCodes); } - var isOk = await _warehouseService.GenPreTask(preTasks, pretaskCodes); + bool isOk = await _warehouseService.GenPreTask(preTasks, pretaskCodes); if (isOk) { - await _db.Updateable().SetColumns(it => it.status == ((int)EnumCheckStatus.盘点中).ToString()).ExecuteCommandAsync(); - GenPreTaskUpInput genPreTaskAfterUpInput = new(); - genPreTaskAfterUpInput.CarryIds = preTasks.Select(x => x.carry_id).ToList(); - genPreTaskAfterUpInput.LocationIds = new HashSet(locIds).ToList(); + _ = await _db.Updateable().SetColumns(it => it.status == ((int)EnumCheckStatus.盘点中).ToString()).ExecuteCommandAsync(); + GenPreTaskUpInput genPreTaskAfterUpInput = new() + { + CarryIds = preTasks.Select(x => x.carry_id).ToList(), + LocationIds = new HashSet(locIds).ToList() + }; await _warehouseService.GenInStockTaskHandleAfter(genPreTaskAfterUpInput, it => new WmsCarryH { is_lock = 1 }, it => new BasLocation { is_lock = 1 }); } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCollocationSchemeSevice.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCollocationSchemeSevice.cs index 5da01d2b..ac892e0b 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCollocationSchemeSevice.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCollocationSchemeSevice.cs @@ -57,7 +57,7 @@ namespace Tnb.WarehouseMgr } if (!materialCode.IsNullOrEmpty() && seq > 0) { - var item = await _repository.GetFirstAsync(it => it.material_code == materialCode && it.seq == seq); + WmsCollocationSchemeH item = await _repository.GetFirstAsync(it => it.material_code == materialCode && it.seq == seq); if (item != null) { throw new AppFriendlyException($"物料+顺序【{materialCode}{seq}】,在数据库中已存在", 500); @@ -83,7 +83,11 @@ namespace Tnb.WarehouseMgr //[NonUnify] public async Task MESCollocationSchemeQuery(MESCollocationSchemeQueryInput input) { - if (input.IsNull()) throw new ArgumentNullException("input"); + if (input.IsNull()) + { + throw new ArgumentNullException("input"); + } + SqlSugarPagedList pageData = new(); try { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsDeliveryService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsDeliveryService.cs index c74c9049..37d9f22b 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsDeliveryService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsDeliveryService.cs @@ -75,8 +75,8 @@ namespace Tnb.WarehouseMgr .Where(a => a.id == carryId) .Select((a, b) => new { - carry_code = a.carry_code, - location_code = b.location_code, + a.carry_code, + b.location_code, }) .ToListAsync(); return items; @@ -97,12 +97,15 @@ namespace Tnb.WarehouseMgr { endLocationId = input.data[nameof(WmsDelivery.endlocation_id)]?.ToString()!; } - var locIds = new[] { startLocationId, endLocationId }; - var locs = await _basLocationService.GetLocationInfobyIds(locIds); + string[] locIds = new[] { startLocationId, endLocationId }; + List locs = await _basLocationService.GetLocationInfobyIds(locIds); if (locs?.Count > 0) { - var isStoreLoc = locs.Where(x => !x.IsNullOrEmpty()).Select(x => x.is_type.ParseToInt()).Any(x => x == (int)EnumLocationType.存储库位); - if (isStoreLoc) throw new AppFriendlyException("起始库位不能为存储库位", 500); + bool isStoreLoc = locs.Where(x => !x.IsNullOrEmpty()).Select(x => x.is_type.ParseToInt()).Any(x => x == (int)EnumLocationType.存储库位); + if (isStoreLoc) + { + throw new AppFriendlyException("起始库位不能为存储库位", 500); + } } VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSDELIVERY_ID, true); await _runService.Create(templateEntity, input); @@ -121,35 +124,41 @@ namespace Tnb.WarehouseMgr if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + List points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); Log.Information($"经过的所有点位编码:{Environment.NewLine}{string.Join("\r\n", points.Select(x => x.point_code))}"); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + if (points.Count <= 2) { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + throw new AppFriendlyException("该路径不存在", 500); + } + + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); Log.Information("ePoint?.point_code=" + ePoint?.point_code); - WmsPretaskH preTask = new(); - preTask.org_id = _userManager.User.OrganizeId; - preTask.startlocation_id = sPoint?.location_id!; - preTask.startlocation_code = sPoint?.location_code!; - preTask.startpoint_code = sPoint?.point_code; - preTask.endpoint_code = ePoint?.point_code; - preTask.endlocation_id = ePoint?.location_id!; - preTask.endlocation_code = ePoint?.location_code!; - preTask.start_floor = sPoint?.floor.ToString(); - preTask.end_floor = ePoint?.floor.ToString(); - preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); - preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; - preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSDELIVERY_ID; - preTask.task_type = WmsWareHouseConst.WMS_PRETASK_TRANSFER_TYPE_ID; + WmsPretaskH preTask = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = sPoint?.location_id!, + startlocation_code = sPoint?.location_code!, + startpoint_code = sPoint?.point_code, + endpoint_code = ePoint?.point_code, + endlocation_id = ePoint?.location_id!, + endlocation_code = ePoint?.location_code!, + start_floor = sPoint?.floor.ToString(), + end_floor = ePoint?.floor.ToString(), + bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(), + status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID, + biz_type = WmsWareHouseConst.BIZTYPE_WMSDELIVERY_ID, + task_type = WmsWareHouseConst.WMS_PRETASK_TRANSFER_TYPE_ID + }; preTask.carry_id = input.data[nameof(preTask.carry_id)]?.ToString()!; preTask.carry_code = input.data[nameof(preTask.carry_code)]?.ToString()!; preTask.area_id = sPoint?.area_id!; @@ -160,16 +169,16 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks, null!); + bool isOk = await _wareHouseService.GenPreTask(preTasks, null!); if (isOk) { if (input.data.ContainsKey(nameof(WmsDelivery.startlocation_id)) && input.data.ContainsKey(nameof(WmsDelivery.endlocation_id)) && input.data[nameof(WmsDelivery.startlocation_id)] != null && input.data[nameof(WmsDelivery.endlocation_id)] != null) { //查询库位表 - var location = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsDelivery.startlocation_id)].ToString()); + BasLocation location = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsDelivery.startlocation_id)].ToString()); { //载具加锁,增加库位信息 - await _db.Updateable().SetColumns(it => new WmsCarryH + _ = await _db.Updateable().SetColumns(it => new WmsCarryH { carry_status = ((int)EnumCarryStatus.占用).ToString(), is_lock = 1, @@ -179,10 +188,10 @@ namespace Tnb.WarehouseMgr } //所有库位加锁 - var ids = new[] { input.data[nameof(WmsDelivery.startlocation_id)].ToString(), input.data[nameof(WmsDelivery.endlocation_id)].ToString() }; - await _db.Updateable().SetColumns(it => new BasLocation { is_lock = 1 }).Where(it => ids.Contains(it.id)).ExecuteCommandAsync(); + string?[] ids = new[] { input.data[nameof(WmsDelivery.startlocation_id)].ToString(), input.data[nameof(WmsDelivery.endlocation_id)].ToString() }; + _ = await _db.Updateable().SetColumns(it => new BasLocation { is_lock = 1 }).Where(it => ids.Contains(it.id)).ExecuteCommandAsync(); } - await _db.Updateable().SetColumns(it => new WmsDelivery { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == input.data["ReturnIdentity"].ToString()).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsDelivery { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == input.data["ReturnIdentity"].ToString()).ExecuteCommandAsync(); } } @@ -203,9 +212,16 @@ namespace Tnb.WarehouseMgr } public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); - var isOk = await _db.Updateable().SetColumns(it => new WmsDelivery { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + bool isOk = await _db.Updateable().SetColumns(it => new WmsDelivery { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsDistaskService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsDistaskService.cs index f088232c..0127a490 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsDistaskService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsDistaskService.cs @@ -22,16 +22,16 @@ namespace Tnb.WarehouseMgr { await _db.Ado.BeginTranAsync(); - var disTask = await _db.Queryable().SingleAsync(it => it.id == id); + WmsDistaskH disTask = await _db.Queryable().SingleAsync(it => it.id == id); if (disTask != null) { - var preTask = await _db.Queryable().SingleAsync(it => it.id == disTask.pretask_id); + WmsPretaskH preTask = await _db.Queryable().SingleAsync(it => it.id == disTask.pretask_id); if (preTask != null) { preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; - await _db.Updateable(preTask).UpdateColumns(it => it.status).ExecuteCommandAsync(); + _ = await _db.Updateable(preTask).UpdateColumns(it => it.status).ExecuteCommandAsync(); } - await _db.Deleteable(disTask).ExecuteCommandAsync(); + _ = await _db.Deleteable(disTask).ExecuteCommandAsync(); } await _db.Ado.CommitTranAsync(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs index 46e7c6fd..93815023 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs @@ -67,8 +67,8 @@ namespace Tnb.WarehouseMgr await _db.Ado.BeginTranAsync(); //入库取终点 - var inStockStrategyInput = new InStockStrategyQuery { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString()!, Size = 1 }; - var endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); + InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString()!, Size = 1 }; + List endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); WmsPointH? sPoint = null; WmsPointH? ePoint = null; if (input.data.ContainsKey(nameof(WmsPointH.location_id))) @@ -77,10 +77,14 @@ namespace Tnb.WarehouseMgr } if (endLocations?.Count > 0) { - var carry = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsCarryD.carry_id)].ToString()); - var loc = await _db.Queryable().SingleAsync(it => it.id == endLocations[0].id); - var isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); - if (!isMatch) throw new AppFriendlyException("库位与载具规格不匹配", 500); + WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsCarryD.carry_id)].ToString()); + BasLocation loc = await _db.Queryable().SingleAsync(it => it.id == endLocations[0].id); + bool isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); + if (!isMatch) + { + throw new AppFriendlyException("库位与载具规格不匹配", 500); + } + ePoint = await _db.Queryable().FirstAsync(it => it.location_id == endLocations[0].id); } @@ -90,32 +94,37 @@ namespace Tnb.WarehouseMgr if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); + List points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + if (points.Count <= 2) + { + throw new AppFriendlyException("该路径不存在", 500); + } //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) else { - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); - WmsPretaskH preTask = new(); - preTask.org_id = _userManager.User.OrganizeId; - preTask.startlocation_id = sPoint?.location_id!; - preTask.startlocation_code = sPoint?.location_code!; - preTask.endlocation_id = ePoint?.location_id!; - preTask.endlocation_code = ePoint?.location_code!; - preTask.start_floor = sPoint?.floor.ToString(); - preTask.end_floor = ePoint?.floor.ToString(); - preTask.startpoint_id = sPoint?.id!; - preTask.startpoint_code = sPoint?.point_code!; - preTask.endpoint_id = ePoint?.id!; - preTask.endpoint_code = ePoint?.point_code!; - preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); - preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; - preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSEMPTYINSTOCK_ID; - preTask.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID; + WmsPretaskH preTask = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = sPoint?.location_id!, + startlocation_code = sPoint?.location_code!, + endlocation_id = ePoint?.location_id!, + endlocation_code = ePoint?.location_code!, + start_floor = sPoint?.floor.ToString(), + end_floor = ePoint?.floor.ToString(), + startpoint_id = sPoint?.id!, + startpoint_code = sPoint?.point_code!, + endpoint_id = ePoint?.id!, + endpoint_code = ePoint?.point_code!, + bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(), + status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID, + biz_type = WmsWareHouseConst.BIZTYPE_WMSEMPTYINSTOCK_ID, + task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID + }; preTask.carry_id = input.data[nameof(preTask.carry_id)]?.ToString()!; preTask.carry_code = input.data[nameof(preTask.carry_code)]?.ToString()!; preTask.area_id = sPoint?.area_id!; @@ -126,33 +135,37 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks, null!); + bool isOk = await _wareHouseService.GenPreTask(preTasks, null!); if (isOk) { - var preTaskUpInput = new GenPreTaskUpInput(); - preTaskUpInput.RquireId = input.data["ReturnIdentity"].ToString()!; - preTaskUpInput.CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!; - preTaskUpInput.CarryStartLocationId = points.FirstOrDefault()!.location_id!; - preTaskUpInput.CarryStartLocationCode = points.FirstOrDefault()!.location_code!; - preTaskUpInput.LocationIds = points.Select(x => x.location_id).ToList()!; - preTaskUpInput.PreTaskRecords = preTasks.Adapt>(); + GenPreTaskUpInput preTaskUpInput = new() + { + RquireId = input.data["ReturnIdentity"].ToString()!, + CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!, + CarryStartLocationId = points.FirstOrDefault()!.location_id!, + CarryStartLocationCode = points.FirstOrDefault()!.location_code!, + LocationIds = points.Select(x => x.location_id).ToList()!, + PreTaskRecords = preTasks.Adapt>() + }; preTaskUpInput.PreTaskRecords.ForEach(x => x.id = SnowflakeIdHelper.NextId()); - WmsHandleH handleH = new(); - handleH.org_id = _userManager.User.OrganizeId; - handleH.startlocation_id = input.data[nameof(WmsPointH.location_id)]?.ToString()!; - handleH.endlocation_id = endLocations![0].id; - handleH.bill_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!; - handleH.biz_type = input.data[nameof(WmsHandleH.biz_type)]?.ToString()!; - handleH.carry_id = input.data[nameof(WmsHandleH.carry_id)]?.ToString()!; - handleH.carry_code = input.data[nameof(WmsHandleH.carry_code)]?.ToString()!; - handleH.require_id = input.data["ReturnIdentity"].ToString(); - handleH.require_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!; - handleH.create_id = _userManager.UserId; - handleH.create_time = DateTime.Now; + WmsHandleH handleH = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = input.data[nameof(WmsPointH.location_id)]?.ToString()!, + endlocation_id = endLocations![0].id, + bill_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!, + biz_type = input.data[nameof(WmsHandleH.biz_type)]?.ToString()!, + carry_id = input.data[nameof(WmsHandleH.carry_id)]?.ToString()!, + carry_code = input.data[nameof(WmsHandleH.carry_code)]?.ToString()!, + require_id = input.data["ReturnIdentity"].ToString(), + require_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!, + create_id = _userManager.UserId, + create_time = DateTime.Now + }; preTaskUpInput.PreTaskRecord = handleH; //根据空载具入库Id,回更单据状态 - await _db.Updateable().SetColumns(it => new WmsEmptyInstock { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsEmptyInstock { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, it => new WmsCarryH { is_lock = 1, location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode }, @@ -194,32 +207,38 @@ namespace Tnb.WarehouseMgr [HttpPost] public async Task MesEmptyCarryInStock(MESEmptyCarryInStockInput input) { - var isSuccessful = false; - if (input.IsNull()) throw new ArgumentNullException("input"); + bool isSuccessful = false; + if (input.IsNull()) + { + throw new ArgumentNullException("input"); + } + try { - var carry = await _db.Queryable().SingleAsync(it => it.carry_code == input.carry_code); - var loc = await _db.Queryable().SingleAsync(it => it.location_code == input.location_code); - var emptyInstock = await _db.Queryable().FirstAsync(it => it.carry_code == input.carry_code && it.status == WmsWareHouseConst.BILLSTATUS_ADD_ID); + WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.carry_code == input.carry_code); + BasLocation loc = await _db.Queryable().SingleAsync(it => it.location_code == input.location_code); + WmsEmptyInstock emptyInstock = await _db.Queryable().FirstAsync(it => it.carry_code == input.carry_code && it.status == WmsWareHouseConst.BILLSTATUS_ADD_ID); if (emptyInstock != null) { return isSuccessful; } if (carry != null && loc != null) { - var cols = new List(); - var dic = new Dictionary(); - dic[nameof(WmsEmptyInstock.id)] = SnowflakeIdHelper.NextId(); - dic[nameof(WmsEmptyInstock.org_id)] = input.org_id ?? _userManager.User.OrganizeId; - dic[nameof(WmsEmptyInstock.location_id)] = loc.id; - dic[nameof(WmsEmptyInstock.bill_code)] = await _billRullService.GetBillNumber(WmsWareHouseConst.WMS_EMPTYINSTK_ENCODE); - dic[nameof(WmsEmptyInstock.status)] = WmsWareHouseConst.BILLSTATUS_ADD_ID; - dic[nameof(WmsEmptyInstock.carry_id)] = carry.id; - dic[nameof(WmsEmptyInstock.carry_code)] = input.carry_code!; - dic[nameof(WmsEmptyInstock.biz_type)] = WmsWareHouseConst.BIZTYPE_WMSEMPTYINSTOCK_ID; - dic[nameof(WmsEmptyInstock.create_id)] = input.create_id ?? _userManager.UserId; - dic[nameof(WmsEmptyInstock.create_time)] = DateTime.Now; - dic[nameof(WmsEmptyInstock.warehouse_id)] = input.warehouse_id!; + List cols = new(); + Dictionary dic = new() + { + [nameof(WmsEmptyInstock.id)] = SnowflakeIdHelper.NextId(), + [nameof(WmsEmptyInstock.org_id)] = input.org_id ?? _userManager.User.OrganizeId, + [nameof(WmsEmptyInstock.location_id)] = loc.id, + [nameof(WmsEmptyInstock.bill_code)] = await _billRullService.GetBillNumber(WmsWareHouseConst.WMS_EMPTYINSTK_ENCODE), + [nameof(WmsEmptyInstock.status)] = WmsWareHouseConst.BILLSTATUS_ADD_ID, + [nameof(WmsEmptyInstock.carry_id)] = carry.id, + [nameof(WmsEmptyInstock.carry_code)] = input.carry_code!, + [nameof(WmsEmptyInstock.biz_type)] = WmsWareHouseConst.BIZTYPE_WMSEMPTYINSTOCK_ID, + [nameof(WmsEmptyInstock.create_id)] = input.create_id ?? _userManager.UserId, + [nameof(WmsEmptyInstock.create_time)] = DateTime.Now, + [nameof(WmsEmptyInstock.warehouse_id)] = input.warehouse_id! + }; VisualDevModelDataCrInput visualDevModelDataCrInput = new() { @@ -229,7 +248,7 @@ namespace Tnb.WarehouseMgr isSuccessful = true; } } - catch (Exception ex) + catch (Exception) { await _db.Ado.RollbackTranAsync(); //return await ToApiResult(JNPF.Common.Enums.HttpStatusCode.InternalServerError, ex.Message); @@ -237,11 +256,18 @@ namespace Tnb.WarehouseMgr return isSuccessful; } - public async override Task ModifyAsync(WareHouseUpInput input) + public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); - var isOk = await _db.Updateable().SetColumns(it => new WmsEmptyInstock { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + bool isOk = await _db.Updateable().SetColumns(it => new WmsEmptyInstock { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs index fcbc3b89..3f81c037 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs @@ -71,15 +71,15 @@ namespace Tnb.WarehouseMgr var inStockStrategyInput = new InStockStrategyQuery { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString(), Size = 1 }; var endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput);*/ //判断目标库位是否自动签收 - var loc = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString()); + BasLocation loc = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString()); //出库取起点,获取所有符合输入的载具规格的载具 - var OutStockStrategyInput = new OutStockStrategyQuery + OutStockStrategyQuery OutStockStrategyInput = new() { carrystd_id = input.data[nameof(OutStockStrategyQuery.carrystd_id)].ToString(), warehouse_id = input.data[nameof(OutStockStrategyQuery.warehouse_id)].ToString(), }; - var carrys = await _wareHouseService.OutStockStrategy(OutStockStrategyInput); + List? carrys = await _wareHouseService.OutStockStrategy(OutStockStrategyInput); //var carrys = await _db.Queryable().LeftJoin((a, b) => a.location_id == b.id) // .Where((a, b) => a.carrystd_id == input.data[nameof(WmsEmptyOutstockH.carrystd_id)].ToString() // && a.carry_status == ((int)EnumCarryStatus.空闲).ToString() && a.is_lock == 0 && b.is_lock == 0 && b.is_type == ((int)EnumLocationType.存储库位).ToString()) @@ -87,9 +87,12 @@ namespace Tnb.WarehouseMgr // 判断最终目标库位是否可以放置当前载具 if (carrys?.Count > 0) { - var curCarry = carrys[^carrys.Count]; - var isMatch = await IsCarryAndLocationMatchByCarryStd(curCarry, loc); - if (!isMatch) throw new AppFriendlyException("该载具无法放置到目标库位", 500); + WmsCarryH curCarry = carrys[^carrys.Count]; + bool isMatch = await IsCarryAndLocationMatchByCarryStd(curCarry, loc); + if (!isMatch) + { + throw new AppFriendlyException("该载具无法放置到目标库位", 500); + } VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSEMPTYOUTSTK_ID, true); await _runService.Create(templateEntity, input); @@ -97,7 +100,7 @@ namespace Tnb.WarehouseMgr } - var setQty = await _db.Queryable().FirstAsync(it => it.bill_code == input.data[nameof(WmsEmptyOutstockH.bill_code)].ToString()); + WmsEmptyOutstockH setQty = await _db.Queryable().FirstAsync(it => it.bill_code == input.data[nameof(WmsEmptyOutstockH.bill_code)].ToString()); WmsPointH? sPoint = null; WmsPointH? ePoint = null; if (input.data.ContainsKey(nameof(WmsPointH.location_id))) @@ -112,18 +115,21 @@ namespace Tnb.WarehouseMgr { sPoint = await _db.Queryable().FirstAsync(it => it.location_id == carrys[i].location_id); - var isOk = false; + bool isOk = false; if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); + List points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + if (points.Count <= 2) + { + throw new AppFriendlyException("该路径不存在", 500); + } //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) else { - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); WmsPretaskH preTask = new() { @@ -186,11 +192,11 @@ namespace Tnb.WarehouseMgr create_id = _userManager.UserId, create_time = DateTime.Now }; - await _db.Insertable(wmsEmptyOutstockD) + _ = await _db.Insertable(wmsEmptyOutstockD) .ExecuteCommandAsync(); //根据空载具出库Id,回更单据状态 - await _db.Updateable().SetColumns(it => new WmsEmptyOutstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsEmptyOutstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, it => new WmsCarryH { is_lock = 1 }, it => new BasLocation { is_lock = 1 }); @@ -217,23 +223,30 @@ namespace Tnb.WarehouseMgr return Task.FromResult(true); } - public async override Task ModifyAsync(WareHouseUpInput input) + public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + try { await _db.Ado.BeginTranAsync(); //根据载具更新明细表状态 - var isOk = await _db.Updateable().SetColumns(it => new WmsEmptyOutstockD { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.bill_id == input.requireId && input.carryIds.Contains(it.carry_id)).ExecuteCommandHasChangeAsync(); + bool isOk = await _db.Updateable().SetColumns(it => new WmsEmptyOutstockD { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.bill_id == input.requireId && input.carryIds.Contains(it.carry_id)).ExecuteCommandHasChangeAsync(); - var emptyCarrys = await _db.Queryable().Where(it => it.bill_id == input.requireId).ToListAsync(); + List emptyCarrys = await _db.Queryable().Where(it => it.bill_id == input.requireId).ToListAsync(); // 判断所有明细是否都完成 if (emptyCarrys?.Count > 0 && emptyCarrys.All(x => x.status == WmsWareHouseConst.BILLSTATUS_COMPLETE_ID)) { isOk = await _db.Updateable().SetColumns(it => new WmsEmptyOutstockH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); } - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } await _db.Ado.CommitTranAsync(); } @@ -252,10 +265,14 @@ namespace Tnb.WarehouseMgr [HttpPost] public async Task MESEmptyCarryOutStk(MESEmptyCarryOutStkInput input) { - if (input.IsNull()) throw new ArgumentNullException("input"); + if (input.IsNull()) + { + throw new ArgumentNullException("input"); + } + try { - var location = await _db.Queryable().SingleAsync(it => it.location_code == input.location_code && it.is_type != EnumLocationType.存储库位.ToString()) ?? throw new AppFriendlyException("无此库位或为存储库位", 500); + BasLocation location = await _db.Queryable().SingleAsync(it => it.location_code == input.location_code && it.is_type != EnumLocationType.存储库位.ToString()) ?? throw new AppFriendlyException("无此库位或为存储库位", 500); Dictionary dic = new() { [nameof(WmsEmptyOutstockH.id)] = SnowflakeIdHelper.NextId(), @@ -270,7 +287,7 @@ namespace Tnb.WarehouseMgr [nameof(WmsEmptyOutstockH.create_time)] = DateTime.Now }; - VisualDevModelDataCrInput visualDevModelDataCrInput = new VisualDevModelDataCrInput + VisualDevModelDataCrInput visualDevModelDataCrInput = new() { data = dic, }; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsFeedingService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsFeedingService.cs index a2879510..098f8871 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsFeedingService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsFeedingService.cs @@ -16,7 +16,7 @@ namespace Tnb.WarehouseMgr public class WmsFeedingService : BaseWareHouseService, IWmsFeedingService { private readonly ISqlSugarClient _db; - private static Dictionary dicMaterial = new Dictionary(); + private static Dictionary dicMaterial = new(); public WmsFeedingService(ISqlSugarRepository repository) { _db = repository.AsSugarClient(); @@ -33,15 +33,15 @@ namespace Tnb.WarehouseMgr { dicMaterial = await _db.Queryable().ToDictionaryAsync(x => x.id, x => x.name); } - var carry = await _db.Queryable().SingleAsync(it => it.id == carryId); + WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.id == carryId); List carryMIds = new(); if (carry.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID) { - var carryDs = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); + List carryDs = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); carryMIds = carryDs.Select(x => x.membercarry_id).ToList(); } Expression> whereExp = carryMIds?.Count > 0 ? a => carryMIds.Contains(a.carry_id) : a => a.carry_id == carryId; - var items = await _db.Queryable().Where(whereExp) + List items = await _db.Queryable().Where(whereExp) .Select() .Mapper(it => it.material_name = (it.material_id != null && dicMaterial.ContainsKey(it.material_id)) ? dicMaterial[it.material_id].ToString() : "") .ToListAsync(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockPoliciesService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockPoliciesService.cs index 672ba305..2ba47b1c 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockPoliciesService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockPoliciesService.cs @@ -7,6 +7,6 @@ namespace Tnb.WarehouseMgr /// public class WmsInStockPoliciesService : BaseWareHouseService { - private readonly ISqlSugarClient _db; + private readonly ISqlSugarClient? _db; } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs index c5b62f54..90845eb4 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs @@ -63,8 +63,8 @@ namespace Tnb.WarehouseMgr [HttpGet] public async Task GetInStockDetailsListById([FromRoute] string billId) { - var dic = await _dictionaryDataService.GetDictionaryByTypeId(WmsWareHouseConst.WMS_INSTOCK_D_BILL_STATUS_TYPEID); - var items = await _db.Queryable().LeftJoin((a, b) => a.warehouse_id == b.id) + Dictionary dic = await _dictionaryDataService.GetDictionaryByTypeId(WmsWareHouseConst.WMS_INSTOCK_D_BILL_STATUS_TYPEID); + List items = await _db.Queryable().LeftJoin((a, b) => a.warehouse_id == b.id) .Select((a, b) => new WmsInstockD { warehouse_name = b.whname @@ -88,8 +88,16 @@ namespace Tnb.WarehouseMgr [HttpPost] public async Task BarCodePrint(BarCodePrintInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); - if (input.BillIds == null || input.BillIds.Count == 0) throw new ArgumentException($"parameter {nameof(input.BillIds)} not be null or zero"); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + if (input.BillIds == null || input.BillIds.Count == 0) + { + throw new ArgumentException($"parameter {nameof(input.BillIds)} not be null or zero"); + } + try { await _db.Ado.BeginTranAsync(); @@ -99,37 +107,33 @@ namespace Tnb.WarehouseMgr _dicBillCodes = await _db.Queryable().ToDictionaryAsync(x => x.id, x => x.bill_code); } - var inStockDetails = await _db.Queryable().Where(it => input.BillIds.Contains(it.bill_id)).ToListAsync(); + List inStockDetails = await _db.Queryable().Where(it => input.BillIds.Contains(it.bill_id)).ToListAsync(); if (inStockDetails?.Count > 0) { List wmsTempCodes = new(); for (int i = 0; i < inStockDetails.Count; i++) { - if (inStockDetails[i] is null) continue; - var minPacking = (await _db.Queryable().FirstAsync(it => it.id == inStockDetails[i].material_id))?.minpacking; - var codeNum = 0; + if (inStockDetails[i] is null) + { + continue; + } + + decimal? minPacking = (await _db.Queryable().FirstAsync(it => it.id == inStockDetails[i].material_id))?.minpacking; + int codeNum = 0; if (inStockDetails[i].pr_qty.HasValue && minPacking.HasValue && minPacking.Value > 0) { - var mod = (int)(inStockDetails[i].pr_qty!.Value % minPacking.Value); - codeNum = (int)(mod > 0 ? inStockDetails[i].pr_qty!.Value / minPacking.Value + 1 : inStockDetails[i].pr_qty!.Value / minPacking.Value); + int mod = (int)(inStockDetails[i].pr_qty!.Value % minPacking.Value); + codeNum = (int)(mod > 0 ? (inStockDetails[i].pr_qty!.Value / minPacking.Value) + 1 : inStockDetails[i].pr_qty!.Value / minPacking.Value); if (inStockDetails[i].pr_qty!.Value > minPacking.Value) { for (int j = 0; j < codeNum; j++) { - var index = j + 1; + int index = j + 1; WmsTempCode barCode = await CreateInstock(inStockDetails[i], index); if (minPacking.HasValue) { - if (index < codeNum) - { - barCode.codeqty = minPacking; - } - else - { - if (mod > 0) barCode.codeqty = mod; - else barCode.codeqty = minPacking; - } + barCode.codeqty = index < codeNum ? minPacking : mod > 0 ? mod : minPacking; } wmsTempCodes.Add(barCode); } @@ -147,10 +151,10 @@ namespace Tnb.WarehouseMgr wmsTempCodes.Add(barCode); } } - var row = await _db.Insertable(wmsTempCodes).ExecuteCommandAsync(); + int row = await _db.Insertable(wmsTempCodes).ExecuteCommandAsync(); if (row > 0) { - await _db.Updateable().SetColumns(it => new WmsInstockH { print_status = WmsWareHouseConst.BARCODE_PRINT_STATUS_COMPLETE_ID }).Where(it => input.BillIds.Contains(it.id)).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsInstockH { print_status = WmsWareHouseConst.BARCODE_PRINT_STATUS_COMPLETE_ID }).Where(it => input.BillIds.Contains(it.id)).ExecuteCommandAsync(); } } @@ -164,7 +168,7 @@ namespace Tnb.WarehouseMgr private Task CreateInstock(WmsInstockD detail, int no) { - var code = $"{detail.material_code}{detail.code_batch}{no.ToString().PadLeft(4, '0')}"; + string code = $"{detail.material_code}{detail.code_batch}{no.ToString().PadLeft(4, '0')}"; WmsTempCode barCode = new() { org_id = detail.org_id, @@ -187,7 +191,10 @@ namespace Tnb.WarehouseMgr public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } //更具distaskCode的barcode 更新 instockcode 的 is_end 为 1 try { @@ -195,18 +202,18 @@ namespace Tnb.WarehouseMgr if (input.distaskCodes?.Count > 0) { - var barCodes = input.distaskCodes.Select(x => x.barcode); - await _db.Updateable().SetColumns(it => new WmsInstockCode { is_end = 1 }).Where(it => barCodes.Contains(it.barcode)).ExecuteCommandAsync(); + IEnumerable barCodes = input.distaskCodes.Select(x => x.barcode); + _ = await _db.Updateable().SetColumns(it => new WmsInstockCode { is_end = 1 }).Where(it => barCodes.Contains(it.barcode)).ExecuteCommandAsync(); var instockCodes = await _db.Queryable().Where(it => barCodes.Contains(it.barcode)).Select(it => new { id = it.bill_d_id, barcode_qty = it.codeqty, }).ToListAsync(); - var dic = instockCodes.GroupBy(g => g.id).ToDictionary(x => x.Key, x => x.Select(d => d.barcode_qty).ToList()); - var ids = instockCodes.Select(it => it.id).ToList(); - var instockDetails = await _db.Queryable().Where(it => ids.Contains(it.id)).ToListAsync(); + Dictionary> dic = instockCodes.GroupBy(g => g.id).ToDictionary(x => x.Key, x => x.Select(d => d.barcode_qty).ToList()); + List ids = instockCodes.Select(it => it.id).ToList(); + List instockDetails = await _db.Queryable().Where(it => ids.Contains(it.id)).ToListAsync(); - foreach (var item in instockDetails) + foreach (WmsInstockD item in instockDetails) { if (dic.ContainsKey(item.id)) { @@ -217,18 +224,22 @@ namespace Tnb.WarehouseMgr } } } - await _db.Updateable(instockDetails).ExecuteCommandAsync(); - var instock = await _db.Queryable().SingleAsync(it => it.id == input.requireId); - if (instock.IsNull()) ArgumentNullException.ThrowIfNull(nameof(instock)); + _ = await _db.Updateable(instockDetails).ExecuteCommandAsync(); + WmsInstockH instock = await _db.Queryable().SingleAsync(it => it.id == input.requireId); + if (instock.IsNull()) + { + ArgumentNullException.ThrowIfNull(nameof(instock)); + } + if (instock.sync_status != WmsWareHouseConst.SYNC_STATUS_NONEEDSYNC) { //如果是自动单据,需要回更上层系统 Dictionary pars = new() { { nameof(WmsInstockH.source_id), instock?.source_id ?? string.Empty } }; - var callBackRes = await _prdInstockService.SyncInstock(pars); + dynamic callBackRes = await _prdInstockService.SyncInstock(pars); instock!.sync_status = callBackRes == true ? WmsWareHouseConst.SYNC_STATUS__SYNCCOMPLETE : WmsWareHouseConst.SYNC_STATUS__SYNCFAILED; - await _db.Updateable(instock).UpdateColumns(it => it.sync_status).ExecuteCommandAsync(); + _ = await _db.Updateable(instock).UpdateColumns(it => it.sync_status).ExecuteCommandAsync(); } - var allInstockDetails = await _db.Queryable().Where(it => it.bill_id == input.requireId).ToListAsync(); + List allInstockDetails = await _db.Queryable().Where(it => it.bill_id == input.requireId).ToListAsync(); if (allInstockDetails.All(x => x.line_status == WmsWareHouseConst.BILLSTATUS_COMPLETE_ID)) { instock.status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID; @@ -238,7 +249,7 @@ namespace Tnb.WarehouseMgr //任务没有结束,更新状态为工作中 instock.status = WmsWareHouseConst.BILLSTATUS_ON_ID; } - await _db.Updateable(instock).UpdateColumns(it => it.status).ExecuteCommandAsync(); + _ = await _db.Updateable(instock).UpdateColumns(it => it.status).ExecuteCommandAsync(); } await _db.Ado.CommitTranAsync(); @@ -258,7 +269,7 @@ namespace Tnb.WarehouseMgr [HttpPost] public async Task MESCreateInstock(MESCreateInstockInput input) { - var isSuccessFul = false; + bool isSuccessFul = false; try { await _db.Ado.BeginTranAsync(); @@ -270,15 +281,18 @@ namespace Tnb.WarehouseMgr List instockcodes = input.instockcodes.Adapt>(); //入库取终点 //出库起点 - var inStockStrategyInput = new InStockStrategyQuery { warehouse_id = instock?.warehouse_id!, Size = 1 }; - var endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); + InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = instock?.warehouse_id!, Size = 1 }; + List endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); WmsPointH sPoint = await _db.Queryable().FirstAsync(it => it.location_code == input.instock.location_code); WmsPointH ePoint = await _db.Queryable().FirstAsync(it => it.location_id == endLocations[0].id); - var carry = await _db.Queryable().SingleAsync(it => it.carry_code == input.instock.carry_code); - var loc = await _db.Queryable().FirstAsync(it => it.id == endLocations[0].id); - var isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); - if (!isMatch) throw new AppFriendlyException("库位与载具规格不匹配", 500); + WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.carry_code == input.instock.carry_code); + BasLocation loc = await _db.Queryable().FirstAsync(it => it.id == endLocations[0].id); + bool isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); + if (!isMatch) + { + throw new AppFriendlyException("库位与载具规格不匹配", 500); + } loc = await _db.Queryable().FirstAsync(it => it.location_code == input.instock.location_code && it.is_type != EnumLocationType.存储库位.ToString()); @@ -299,9 +313,9 @@ namespace Tnb.WarehouseMgr instock.print_status = WmsWareHouseConst.PRINT_STATUS_PRINTCOMPLETE;//已打印 instock.status = WmsWareHouseConst.BILLSTATUS_ADD_ID;// 新增 instock.create_time = DateTime.Now; - await _db.Insertable(instock).ExecuteCommandAsync(); + _ = await _db.Insertable(instock).ExecuteCommandAsync(); //明细表 - foreach (var instockd in instockds!) + foreach (WmsInstockD instockd in instockds!) { instockd.id = SnowflakeIdHelper.NextId(); instockd.bill_id = instock.id; @@ -310,19 +324,19 @@ namespace Tnb.WarehouseMgr instock.create_time = instock.create_time; instock.create_id = instock.create_id; } - await _db.Insertable(instockds).ExecuteCommandAsync(); - var items = instockds.Adapt>(); + _ = await _db.Insertable(instockds).ExecuteCommandAsync(); + List items = instockds.Adapt>(); List instockCOdes = new(); //条码表 - foreach (var instockcode in instockcodes!) + foreach (WmsInstockCode instockcode in instockcodes!) { instockcode.id = SnowflakeIdHelper.NextId(); - var materialCode = instockcode.material_code; - var codeBatch = instockcode.code_batch; - var b = items.Find(x => x.material_code == materialCode && x.code_batch == codeBatch); + string materialCode = instockcode.material_code; + string? codeBatch = instockcode.code_batch; + WmsInstockCode? b = items.Find(x => x.material_code == materialCode && x.code_batch == codeBatch); if (b != null) { - var c = DeepCopyHelper.DeepCopy(b); + WmsInstockCode c = DeepCopyHelper.DeepCopy(b); c.id = SnowflakeIdHelper.NextId(); c.bill_d_id = instockds?.Find(x => x.material_code == materialCode && x.code_batch == codeBatch)?.id ?? ""; c.barcode = instockcode.barcode; @@ -333,22 +347,26 @@ namespace Tnb.WarehouseMgr instockCOdes.Add(c); } } - var orgId = _userManager.User.OrganizeId; - await _db.Insertable(instockCOdes).CallEntityMethod(it => it.Create(orgId)).ExecuteCommandAsync(); + string orgId = _userManager.User.OrganizeId; + _ = await _db.Insertable(instockCOdes).CallEntityMethod(it => it.Create(orgId)).ExecuteCommandAsync(); //生成预任务申请 if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + List points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + if (points.Count <= 2) { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + throw new AppFriendlyException("该路径不存在", 500); + } + + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); WmsPretaskH preTask = new() { @@ -376,13 +394,13 @@ namespace Tnb.WarehouseMgr }).ToList(); //生成预任务条码信息 List pretaskCodes = new(); - foreach (var pt in preTasks) + foreach (WmsPretaskH? pt in preTasks) { if (instockCOdes.Count > 0) { - foreach (var jo in instockCOdes) + foreach (WmsInstockCode jo in instockCOdes) { - var ptc = pt.Adapt(); + WmsPretaskCode ptc = pt.Adapt(); ptc.id = SnowflakeIdHelper.NextId(); ptc.bill_id = pt.id; ptc.material_id = jo.material_id; @@ -397,7 +415,7 @@ namespace Tnb.WarehouseMgr } //生成预任务,同时如果包含条码信息同时插入条码记录 - var isOk = await _wareHouseService.GenPreTask(preTasks, pretaskCodes); + bool isOk = await _wareHouseService.GenPreTask(preTasks, pretaskCodes); if (isOk) { @@ -411,10 +429,10 @@ namespace Tnb.WarehouseMgr }; //创建预任务操作记录 - var operBillId = string.Empty; + string operBillId = string.Empty; if (instock != null) { - var handleH = instock.Adapt(); + WmsHandleH handleH = instock.Adapt(); operBillId = handleH.id = SnowflakeIdHelper.NextId(); handleH.startlocation_id = instock.location_id!; handleH.carry_id = instock.carry_id!; @@ -424,7 +442,7 @@ namespace Tnb.WarehouseMgr //创建预任务条码操作记录 if (instockcodes?.Count > 0) { - foreach (var jo in instockcodes) + foreach (WmsInstockCode jo in instockcodes) { WmsHandleCode handleCode = jo.Adapt(); handleCode.id = SnowflakeIdHelper.NextId(); @@ -436,7 +454,7 @@ namespace Tnb.WarehouseMgr } } //生成载具条码记录 - var carryCodes = preTaskUpInput.PreTaskHandleCodes.Adapt>(); + List carryCodes = preTaskUpInput.PreTaskHandleCodes.Adapt>(); carryCodes.ForEach(x => { @@ -445,14 +463,14 @@ namespace Tnb.WarehouseMgr x.carry_id = instock!.carry_id!; x.warehouse_id = instock!.warehouse_id!; }); - await _db.Insertable(carryCodes).ExecuteCommandAsync(); + _ = await _db.Insertable(carryCodes).ExecuteCommandAsync(); await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, it => new WmsCarryH { carry_code = instock!.carry_code!, is_lock = 1, carry_status = ((int)EnumCarryStatus.占用).ToString(), location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode }, it => new BasLocation { is_lock = 1, is_use = ((int)EnumCarryStatus.占用).ToString() }); if (instockCOdes?.Count > 0) { - await _db.Updateable().SetColumns(it => new WmsInstockD { line_status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => instockCOdes.Select(x => x.bill_d_id).Contains(it.id)).ExecuteCommandAsync(); - await _db.Updateable().SetColumns(it => new WmsInstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == instock!.id).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsInstockD { line_status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => instockCOdes.Select(x => x.bill_d_id).Contains(it.id)).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsInstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == instock!.id).ExecuteCommandAsync(); } isSuccessFul = true; } @@ -482,9 +500,17 @@ namespace Tnb.WarehouseMgr [HttpPost] public async Task MesFetchInOutStockInfoByBarCode(MaterialLabelQuery input) { - if (input.IsNull()) new ArgumentException(nameof(input)); - if (input.barcode?.Count < 1) new ArgumentException(nameof(input.barcode)); - var pagedList = await _db.Queryable().InnerJoin((a, b) => a.id == b.bill_id) + if (input.IsNull()) + { + _ = new ArgumentException(nameof(input)); + } + + if (input.barcode?.Count < 1) + { + _ = new ArgumentException(nameof(input.barcode)); + } + + SqlSugarPagedList pagedList = await _db.Queryable().InnerJoin((a, b) => a.id == b.bill_id) .LeftJoin((a, b, c) => b.barcode == c.barcode) .WhereIF(!string.IsNullOrEmpty(input.org_id), (a, b, c) => a.org_id == input.org_id) .Where((a, b, c) => input.barcode.Contains(b.barcode)) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsKittingInStkService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsKittingInStkService.cs index a1ad04ac..6b2cf63a 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsKittingInStkService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsKittingInStkService.cs @@ -67,8 +67,8 @@ namespace Tnb.WarehouseMgr await _db.Ado.BeginTranAsync(); //入库取终点 //出库起点 - var inStockStrategyInput = new InStockStrategyQuery { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString()!, Size = 1 }; - var endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); + InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString()!, Size = 1 }; + List endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); WmsPointH? sPoint = null; WmsPointH? ePoint = null; if (input.data.ContainsKey(nameof(WmsPointH.location_id))) @@ -77,10 +77,14 @@ namespace Tnb.WarehouseMgr } if (endLocations?.Count > 0) { - var carry = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsCarryD.carry_id)].ToString()); - var loc = await _db.Queryable().SingleAsync(it => it.id == endLocations[0].id); - var isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); - if (!isMatch) throw new AppFriendlyException("库位与载具规格不匹配", 500); + WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsCarryD.carry_id)].ToString()); + BasLocation loc = await _db.Queryable().SingleAsync(it => it.id == endLocations[0].id); + bool isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); + if (!isMatch) + { + throw new AppFriendlyException("库位与载具规格不匹配", 500); + } + ePoint = await _db.Queryable().FirstAsync(it => it.location_id == endLocations[0].id); } @@ -89,32 +93,37 @@ namespace Tnb.WarehouseMgr if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); + List points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + if (points.Count <= 2) + { + throw new AppFriendlyException("该路径不存在", 500); + } //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); - WmsPretaskH preTask = new(); - preTask.org_id = _userManager.User.OrganizeId; - preTask.startlocation_id = sPoint?.location_id!; - preTask.startlocation_code = sPoint?.location_code!; - preTask.endlocation_id = ePoint?.location_id!; - preTask.endlocation_code = ePoint?.location_code!; - preTask.start_floor = sPoint?.floor.ToString(); - preTask.end_floor = ePoint?.floor.ToString(); - preTask.startpoint_id = sPoint?.id!; - preTask.startpoint_code = sPoint?.point_code!; - preTask.endpoint_id = ePoint?.id!; - preTask.endpoint_code = ePoint?.point_code!; - preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); - preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; - preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSKITTINGINSTK_ID; - preTask.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID; + WmsPretaskH preTask = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = sPoint?.location_id!, + startlocation_code = sPoint?.location_code!, + endlocation_id = ePoint?.location_id!, + endlocation_code = ePoint?.location_code!, + start_floor = sPoint?.floor.ToString(), + end_floor = ePoint?.floor.ToString(), + startpoint_id = sPoint?.id!, + startpoint_code = sPoint?.point_code!, + endpoint_id = ePoint?.id!, + endpoint_code = ePoint?.point_code!, + bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(), + status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID, + biz_type = WmsWareHouseConst.BIZTYPE_WMSKITTINGINSTK_ID, + task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID + }; preTask.carry_id = input.data[nameof(preTask.carry_id)]?.ToString()!; preTask.carry_code = input.data[nameof(preTask.carry_code)]?.ToString()!; preTask.area_id = sPoint?.area_id!; @@ -137,10 +146,10 @@ namespace Tnb.WarehouseMgr } List pretaskCodes = new(); - foreach (var pt in preTasks) + foreach (WmsPretaskH? pt in preTasks) { - var partCodes = carryCodes.FindAll(x => x.carry_id == pt.carry_id).Distinct().ToList(); - var curPreTaskCodes = partCodes.Adapt>(); + List partCodes = carryCodes.FindAll(x => x.carry_id == pt.carry_id).Distinct().ToList(); + List curPreTaskCodes = partCodes.Adapt>(); curPreTaskCodes.ForEach(x => { x.id = SnowflakeIdHelper.NextId(); @@ -149,33 +158,37 @@ namespace Tnb.WarehouseMgr }); pretaskCodes.AddRange(curPreTaskCodes); } - var isOk = await _wareHouseService.GenPreTask(preTasks, pretaskCodes); + bool isOk = await _wareHouseService.GenPreTask(preTasks, pretaskCodes); if (isOk) { - var preTaskUpInput = new GenPreTaskUpInput(); - preTaskUpInput.RquireId = input.data["ReturnIdentity"].ToString()!; - preTaskUpInput.CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!; - preTaskUpInput.CarryStartLocationId = points.FirstOrDefault()!.location_id!; - preTaskUpInput.CarryStartLocationCode = points.FirstOrDefault()!.location_code!; - preTaskUpInput.LocationIds = points.Select(x => x.location_id).ToList()!; + GenPreTaskUpInput preTaskUpInput = new() + { + RquireId = input.data["ReturnIdentity"].ToString()!, + CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!, + CarryStartLocationId = points.FirstOrDefault()!.location_id!, + CarryStartLocationCode = points.FirstOrDefault()!.location_code!, + LocationIds = points.Select(x => x.location_id).ToList()! + }; - WmsHandleH handleH = new(); - handleH.org_id = _userManager.User.OrganizeId; - handleH.startlocation_id = input.data[nameof(WmsPointH.location_id)]?.ToString()!; - handleH.endlocation_id = endLocations![0].id; - handleH.bill_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!; - handleH.biz_type = input.data[nameof(WmsHandleH.biz_type)]?.ToString()!; - handleH.carry_id = input.data[nameof(WmsHandleH.carry_id)]?.ToString()!; - handleH.carry_code = input.data[nameof(WmsHandleH.carry_code)]?.ToString()!; - handleH.require_id = input.data["ReturnIdentity"].ToString(); - handleH.require_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!; - handleH.create_id = _userManager.UserId; - handleH.create_time = DateTime.Now; + WmsHandleH handleH = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = input.data[nameof(WmsPointH.location_id)]?.ToString()!, + endlocation_id = endLocations![0].id, + bill_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!, + biz_type = input.data[nameof(WmsHandleH.biz_type)]?.ToString()!, + carry_id = input.data[nameof(WmsHandleH.carry_id)]?.ToString()!, + carry_code = input.data[nameof(WmsHandleH.carry_code)]?.ToString()!, + require_id = input.data["ReturnIdentity"].ToString(), + require_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!, + create_id = _userManager.UserId, + create_time = DateTime.Now + }; preTaskUpInput.PreTaskRecord = handleH; //根据齐套入库Id,回更单据状态 - await _db.Updateable().SetColumns(it => new WmsKittingInstock { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); - var status = ((int)EnumCarryStatus.齐套).ToString(); - var carry = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsHandleH.carry_id)].ToString()); + _ = await _db.Updateable().SetColumns(it => new WmsKittingInstock { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); + string status = ((int)EnumCarryStatus.齐套).ToString(); + WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsHandleH.carry_id)].ToString()); if (carry?.out_status != status) { if (carryCodes?.Count > 0) @@ -188,7 +201,7 @@ namespace Tnb.WarehouseMgr x.create_time = DateTime.Now; x.warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString()!; }); - await _db.Insertable(carryCodes).ExecuteCommandAsync(); + _ = await _db.Insertable(carryCodes).ExecuteCommandAsync(); } } await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, @@ -222,32 +235,33 @@ namespace Tnb.WarehouseMgr public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); - var row = await _db.Updateable().SetColumns(it => new WmsKittingInstock { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); - var kittingIn = await _db.Queryable().SingleAsync(it => it.id == input.requireId); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + int row = await _db.Updateable().SetColumns(it => new WmsKittingInstock { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); + WmsKittingInstock kittingIn = await _db.Queryable().SingleAsync(it => it.id == input.requireId); if (kittingIn != null) { - var kittingOut = await _db.Queryable().SingleAsync(it => it.id == kittingIn.source_id); + WmsKittingoutH kittingOut = await _db.Queryable().SingleAsync(it => it.id == kittingIn.source_id); if (kittingOut != null) { - var locaion = await _db.Queryable().SingleAsync(it => it.id == kittingOut.location_id); - if (locaion != null && locaion.is_type.ToEnum() != EnumLocationType.存储库位) - { - kittingOut.status = WmsWareHouseConst.BILLSTATUS_TOBESHIPPED_ID; - - } - else - { - kittingOut.status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID; - } + BasLocation locaion = await _db.Queryable().SingleAsync(it => it.id == kittingOut.location_id); + kittingOut.status = locaion != null && locaion.is_type.ToEnum() != EnumLocationType.存储库位 + ? WmsWareHouseConst.BILLSTATUS_TOBESHIPPED_ID + : WmsWareHouseConst.BILLSTATUS_COMPLETE_ID; kittingOut.carry_id = kittingIn.carry_id; kittingOut.carry_code = kittingIn.carry_code; - await _db.Updateable(kittingOut).UpdateColumns(it => new { it.status, it.carry_id, it.carry_code }).ExecuteCommandAsync(); + _ = await _db.Updateable(kittingOut).UpdateColumns(it => new { it.status, it.carry_id, it.carry_code }).ExecuteCommandAsync(); await Publish(nameof(IWmskittingOutService.KittingOutByIsToBeShipped)); } } - if (row < 1) throw Oops.Oh(ErrorCode.COM1001); + if (row < 1) + { + throw Oops.Oh(ErrorCode.COM1001); + } } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutBaleService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutBaleService.cs index e941f909..96650617 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutBaleService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutBaleService.cs @@ -64,10 +64,13 @@ namespace Tnb.WarehouseMgr { await _db.Ado.BeginTranAsync(); - var carry = await _db.Queryable().FirstAsync(it => it.id == input.data[nameof(WmsOutbale.carry_id)].ToString()); - var loc = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString()); - var isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); - if (!isMatch) throw new AppFriendlyException("该载具无法放置到目标库位", 500); + WmsCarryH carry = await _db.Queryable().FirstAsync(it => it.id == input.data[nameof(WmsOutbale.carry_id)].ToString()); + BasLocation loc = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString()); + bool isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); + if (!isMatch) + { + throw new AppFriendlyException("该载具无法放置到目标库位", 500); + } VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSOUTBALE_ID, true); await _runService.Create(templateEntity, input); @@ -86,32 +89,38 @@ namespace Tnb.WarehouseMgr if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + List points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + if (points.Count <= 2) { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + throw new AppFriendlyException("该路径不存在", 500); + } - WmsPretaskH preTask = new(); - preTask.org_id = _userManager.User.OrganizeId; - preTask.startlocation_id = sPoint?.location_id!; - preTask.startlocation_code = sPoint?.location_code!; - preTask.endlocation_id = ePoint?.location_id!; - preTask.endlocation_code = ePoint?.location_code!; - preTask.start_floor = sPoint?.floor.ToString(); - preTask.end_floor = ePoint?.floor.ToString(); - preTask.startpoint_id = sPoint?.id!; - preTask.startpoint_code = sPoint?.point_code!; - preTask.endpoint_id = ePoint?.id!; - preTask.endpoint_code = ePoint?.point_code!; - preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); - preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; - preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSOUTBALE_ID; - preTask.task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID; + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); + + WmsPretaskH preTask = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = sPoint?.location_id!, + startlocation_code = sPoint?.location_code!, + endlocation_id = ePoint?.location_id!, + endlocation_code = ePoint?.location_code!, + start_floor = sPoint?.floor.ToString(), + end_floor = ePoint?.floor.ToString(), + startpoint_id = sPoint?.id!, + startpoint_code = sPoint?.point_code!, + endpoint_id = ePoint?.id!, + endpoint_code = ePoint?.point_code!, + bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(), + status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID, + biz_type = WmsWareHouseConst.BIZTYPE_WMSOUTBALE_ID, + task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID + }; preTask.carry_id = input.data[nameof(preTask.carry_id)]?.ToString()!; preTask.carry_code = input.data[nameof(preTask.carry_code)]?.ToString()!; preTask.area_id = sPoint?.area_id!; @@ -128,19 +137,21 @@ namespace Tnb.WarehouseMgr { preTasks[^1].is_sign = 0; // 修改最后一个元素的是否签收值 } - var isOk = await _wareHouseService.GenPreTask(preTasks, null!); + bool isOk = await _wareHouseService.GenPreTask(preTasks, null!); if (isOk) { - var preTaskUpInput = new GenPreTaskUpInput(); - preTaskUpInput.RquireId = input.data["ReturnIdentity"].ToString()!; - preTaskUpInput.CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!; - preTaskUpInput.CarryStartLocationId = points.FirstOrDefault()!.location_id!; - preTaskUpInput.CarryStartLocationCode = points.FirstOrDefault()!.location_code!; - preTaskUpInput.LocationIds = points.Select(x => x.location_id).ToList()!; - preTaskUpInput.PreTaskRecords = preTasks.Adapt>(); + GenPreTaskUpInput preTaskUpInput = new() + { + RquireId = input.data["ReturnIdentity"].ToString()!, + CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!, + CarryStartLocationId = points.FirstOrDefault()!.location_id!, + CarryStartLocationCode = points.FirstOrDefault()!.location_code!, + LocationIds = points.Select(x => x.location_id).ToList()!, + PreTaskRecords = preTasks.Adapt>() + }; preTaskUpInput.PreTaskRecords.ForEach(x => x.id = SnowflakeIdHelper.NextId()); //根据载具移出Id,回更单据状态 - await _db.Updateable().SetColumns(it => new WmsOutbale { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsOutbale { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, it => new WmsCarryH { is_lock = 1 }, @@ -166,18 +177,24 @@ namespace Tnb.WarehouseMgr } public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } try { await _db.Ado.BeginTranAsync(); - var isOk = await _db.Updateable().SetColumns(it => new WmsOutbale { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); - var carryId = input.carryIds[^input.carryIds.Count]; - var carry = await _db.Queryable().SingleAsync(it => it.id == carryId); - var row = await _wmsCarryService.UpdateNullCarry(carry).Unwrap(); + bool isOk = await _db.Updateable().SetColumns(it => new WmsOutbale { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); + string carryId = input.carryIds[^input.carryIds.Count]; + WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.id == carryId); + int row = await _wmsCarryService.UpdateNullCarry(carry).Unwrap(); isOk = row > 0; - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } await _db.Ado.CommitTranAsync(); } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs index 95959b54..97a69412 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs @@ -92,10 +92,10 @@ namespace Tnb.WarehouseMgr * 2.1 根据这些库位去查任务执行 目的库位是这些库位的未完成任务数。 A 10 B 9 * 2.2 哪个最少给哪个 */ - var org = await _db.Queryable().FirstAsync(it => it.Id == input.data[nameof(WmsOutstockH.station_id)].ToString()); + OrganizeEntity? org = await _db.Queryable().FirstAsync(it => it.Id == input.data[nameof(WmsOutstockH.station_id)].ToString()); if (!org?.FeedingLocationId.IsNullOrWhiteSpace() ?? false) { - var fLocIds = JArray.Parse(org.FeedingLocationId).Values().ToList(); + List fLocIds = JArray.Parse(org.FeedingLocationId).Values().ToList(); var minTaskNumLocs = await _db.Queryable().Where(it => it.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID && fLocIds.Contains(it.endlocation_id)) .GroupBy(it => it.endlocation_id) .Select(it => new @@ -108,21 +108,21 @@ namespace Tnb.WarehouseMgr .ToListAsync(); if (minTaskNumLocs?.Count > 0) { - var freeLocIds = fLocIds.Except(minTaskNumLocs.Select(x => x.endlocation_id)).ToList(); + List freeLocIds = fLocIds.Except(minTaskNumLocs.Select(x => x.endlocation_id)).ToList(); if (freeLocIds?.Count > 0) { - var rIdx = new Random().Next(0, freeLocIds.Count); + int rIdx = new Random().Next(0, freeLocIds.Count); loc = await _db.Queryable().SingleAsync(it => it.id == freeLocIds[rIdx]); } else { - var firstLocId = minTaskNumLocs.FirstOrDefault().endlocation_id; + string firstLocId = minTaskNumLocs.FirstOrDefault().endlocation_id; loc = await _db.Queryable().SingleAsync(it => it.id == firstLocId); } } else if (minTaskNumLocs?.Count < 1) { - var rIdx = new Random().Next(0, fLocIds.Count); + int rIdx = new Random().Next(0, fLocIds.Count); loc = await _db.Queryable().SingleAsync(it => it.id == fLocIds[rIdx]); } input.data[nameof(WmsOutstockH.location_id)] = loc.id; @@ -130,26 +130,26 @@ namespace Tnb.WarehouseMgr } - var carryIds = new List(); + List carryIds = new(); //tablefield120 出库物料明细 if (input.data.ContainsKey("tablefield120") && input.data["tablefield120"].IsNotEmptyOrNull()) { - var outStockDList = input.data["tablefield120"].ToObject>(); + List outStockDList = input.data["tablefield120"].ToObject>(); if (outStockDList?.Count > 0) { List carryMats = new(); List carryCodes = new(); List carryCodesPart = new(); - foreach (var os in outStockDList) + foreach (WmsOutstockD os in outStockDList) { - var OutStockStrategyInput = new OutStockStrategyQuery + OutStockStrategyQuery OutStockStrategyInput = new() { carry_id = input.data[nameof(OutStockStrategyQuery.carry_id)]?.ToString() ?? string.Empty, warehouse_id = input.data[nameof(WmsOutstockH.warehouse_id)]?.ToString() ?? string.Empty, material_id = os.material_id, code_batch = os.code_batch, }; - var outStkCarrys = await _wareHouseService.OutStockStrategy(OutStockStrategyInput); + List outStkCarrys = await _wareHouseService.OutStockStrategy(OutStockStrategyInput); Expression> whereExp = input.data.ContainsKey(nameof(WmsOutstockH.carry_id)) && input.data[nameof(WmsOutstockH.carry_id)].IsNotEmptyOrNull() ? (a, b) => a.id == input.data[nameof(WmsOutstockH.carry_id)].ToString() : (a, b) => outStkCarrys.Select(x => x.id).Contains(b.carry_id); @@ -163,7 +163,7 @@ namespace Tnb.WarehouseMgr if (carryCodesPart?.Count > 0) { - var codeQty = carryCodesPart.Sum(x => x.codeqty); + decimal codeQty = carryCodesPart.Sum(x => x.codeqty); if (codeQty < os.pr_qty) { throw new AppFriendlyException($"需要出库[{os.pr_qty}],实际库存{codeQty},数量不足", 500); @@ -185,7 +185,7 @@ namespace Tnb.WarehouseMgr } } carryCodes.AddRange(curCarryCodes); - var partCarryMats = curCarryCodes.Adapt>(); + List partCarryMats = curCarryCodes.Adapt>(); for (int i = 0; i < partCarryMats.Count; i++) { partCarryMats[i].need_qty = curCarryCodes[i].codeqty; @@ -199,19 +199,19 @@ namespace Tnb.WarehouseMgr carryMats = carryMats.OrderBy(o => o.create_time).GroupBy(g => new { g.carry_id, g.material_id, g.code_batch }) .Select(x => { - var arr = x.ToArray(); + WmsCarryMat[] arr = x.ToArray(); WmsCarryMat carryMat = arr[^arr.Length]; carryMat.need_qty = x.Sum(d => d.need_qty); return carryMat; }) .ToList(); - await _db.Insertable(carryMats).ExecuteCommandAsync(); - var dic = carryMats.DistinctBy(x => x.carry_id).ToDictionary(x => x.carry_id, x => x.need_qty); - var allOutIds = new List(); - var sortingOutIds = new List(); - foreach (var pair in dic) + _ = await _db.Insertable(carryMats).ExecuteCommandAsync(); + Dictionary dic = carryMats.DistinctBy(x => x.carry_id).ToDictionary(x => x.carry_id, x => x.need_qty); + List allOutIds = new(); + List sortingOutIds = new(); + foreach (KeyValuePair pair in dic) { - var codes = carryCodesPart.FindAll(x => x.carry_id == pair.Key); + List codes = carryCodesPart.FindAll(x => x.carry_id == pair.Key); if (codes?.Count > 0) { if (pair.Value == codes.Sum(d => d.codeqty)) @@ -225,18 +225,18 @@ namespace Tnb.WarehouseMgr } } carryIds = allOutIds.Concat(sortingOutIds).ToList(); - var carryH = new WmsCarryH + WmsCarryH carryH = new() { out_status = ((int)EnumOutStatus.全部出).ToString(), source_id = input.data.ContainsKey(nameof(WmsOutstockH.source_id)) ? input.data[nameof(WmsOutstockH.source_id)]?.ToString() ?? string.Empty : string.Empty, source_code = input.data.ContainsKey(nameof(WmsOutstockH.source_code)) ? input.data[nameof(WmsOutstockH.source_code)]?.ToString() ?? string.Empty : string.Empty, }; - await _db.Updateable(carryH) + _ = await _db.Updateable(carryH) .UpdateColumns(it => new { it.out_status, it.source_id, it.source_code }) .Where(it => allOutIds.Contains(it.id)) .ExecuteCommandAsync(); carryH.out_status = ((int)EnumOutStatus.分拣出).ToString(); - await _db.Updateable(carryH) + _ = await _db.Updateable(carryH) .UpdateColumns(it => new { it.out_status, it.source_id, it.source_code }) .Where(it => sortingOutIds.Contains(it.id)) .ExecuteCommandAsync(); @@ -244,7 +244,7 @@ namespace Tnb.WarehouseMgr - var carrys = await _db.Queryable().Where(it => carryIds.Contains(it.id)).ToListAsync(); + List carrys = await _db.Queryable().Where(it => carryIds.Contains(it.id)).ToListAsync(); if (carrys?.Count > 0) { @@ -254,10 +254,13 @@ namespace Tnb.WarehouseMgr List preTasks = new(); List locIds = new(); - foreach (var carry in carrys) + foreach (WmsCarryH carry in carrys) { - var isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); - if (!isMatch) throw new AppFriendlyException("该载具无法放置到目标库位", 500); + bool isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); + if (!isMatch) + { + throw new AppFriendlyException("该载具无法放置到目标库位", 500); + } WmsPointH sPoint = null!; WmsPointH ePoint = null!; @@ -272,16 +275,20 @@ namespace Tnb.WarehouseMgr if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + List points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); locIds.AddRange(points.Select(x => x.location_id).ToList()!); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); - var curPreTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + if (points.Count <= 2) { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + throw new AppFriendlyException("该路径不存在", 500); + } + + List curPreTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); WmsPretaskH preTask = new() { @@ -321,10 +328,10 @@ namespace Tnb.WarehouseMgr } } List pretaskCodes = new(); - foreach (var pt in preTasks) + foreach (WmsPretaskH pt in preTasks) { - var partCodes = carryCodes.FindAll(x => x.carry_id == pt.carry_id).Distinct().ToList(); - var curPreTaskCodes = partCodes.Adapt>(); + List partCodes = carryCodes.FindAll(x => x.carry_id == pt.carry_id).Distinct().ToList(); + List curPreTaskCodes = partCodes.Adapt>(); curPreTaskCodes.ForEach(x => { x.id = SnowflakeIdHelper.NextId(); @@ -333,24 +340,30 @@ namespace Tnb.WarehouseMgr }); pretaskCodes.AddRange(curPreTaskCodes); } - var isOk = await _wareHouseService.GenPreTask(preTasks, pretaskCodes); + bool isOk = await _wareHouseService.GenPreTask(preTasks, pretaskCodes); if (isOk) { outStockDList.ForEach(x => x.line_status = WmsWareHouseConst.BILLSTATUS_ON_ID); - await _db.Updateable(outStockDList).UpdateColumns(it => it.line_status).ExecuteCommandAsync(); - await _db.Updateable().SetColumns(it => it.status == WmsWareHouseConst.BILLSTATUS_ON_ID).Where(it => it.id == input.data["ReturnIdentity"].ToString()).ExecuteCommandAsync(); + _ = await _db.Updateable(outStockDList).UpdateColumns(it => it.line_status).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => it.status == WmsWareHouseConst.BILLSTATUS_ON_ID).Where(it => it.id == input.data["ReturnIdentity"].ToString()).ExecuteCommandAsync(); - GenPreTaskUpInput genPreTaskAfterUpInput = new(); - genPreTaskAfterUpInput.CarryIds = preTasks.Select(x => x.carry_id).ToList(); - genPreTaskAfterUpInput.LocationIds = new HashSet(locIds).ToList(); + GenPreTaskUpInput genPreTaskAfterUpInput = new() + { + CarryIds = preTasks.Select(x => x.carry_id).ToList(), + LocationIds = new HashSet(locIds).ToList() + }; await _wareHouseService.GenInStockTaskHandleAfter(genPreTaskAfterUpInput, it => new WmsCarryH { is_lock = 1 }, it => new BasLocation { is_lock = 1 }); } } - else throw new AppFriendlyException("库存不足", 500); + else + { + throw new AppFriendlyException("库存不足", 500); + } + } + else + { + throw new AppFriendlyException($"请输入物料明细", 500); } - else throw new AppFriendlyException($"请输入物料明细", 500); - - } await _db.Ado.CommitTranAsync(); @@ -369,7 +382,7 @@ namespace Tnb.WarehouseMgr } - public async Task PrintTest(List barCodes) + public dynamic? PrintTest(List barCodes) { // open port. int nLen, ret, sw; @@ -378,7 +391,7 @@ namespace Tnb.WarehouseMgr IntPtr ver; System.Text.Encoding encAscII = System.Text.Encoding.ASCII; - System.Text.Encoding encUnicode = System.Text.Encoding.Unicode; + _ = System.Text.Encoding.Unicode; // dll version. ver = PPLBUtility.B_Get_DLL_Version(0); @@ -393,8 +406,8 @@ namespace Tnb.WarehouseMgr int len1 = 128, len2 = 128; buf1 = new byte[len1]; buf2 = new byte[len2]; - PPLBUtility.B_EnumUSB(pbuf); - PPLBUtility.B_GetUSBDeviceInfo(1, buf1, out len1, buf2, out len2); + _ = PPLBUtility.B_EnumUSB(pbuf); + _ = PPLBUtility.B_GetUSBDeviceInfo(1, buf1, out len1, buf2, out len2); sw = 1; if (1 == sw) { @@ -406,62 +419,61 @@ namespace Tnb.WarehouseMgr } if (0 != ret) { - strmsg += "Open USB fail!"; } else { strmsg += "Open USB:\r\nDevice name: "; strmsg += encAscII.GetString(buf1, 0, len1); strmsg += "\r\nDevice path: "; - strmsg += encAscII.GetString(buf2, 0, len2); + _ = encAscII.GetString(buf2, 0, len2); //sw = 2; if (2 == sw) { //Immediate Error Report. - PPLBUtility.B_WriteData(1, encAscII.GetBytes("^ee\r\n"), 5);//^ee + _ = PPLBUtility.B_WriteData(1, encAscII.GetBytes("^ee\r\n"), 5);//^ee ret = PPLBUtility.B_ReadData(pbuf, 4, 1000); } } } else { - System.IO.Directory.CreateDirectory(PPLBUtility.szSavePath); + _ = System.IO.Directory.CreateDirectory(PPLBUtility.szSavePath); ret = PPLBUtility.B_CreatePrn(0, PPLBUtility.szSaveFile);// open file. strmsg += "Open "; strmsg += PPLBUtility.szSaveFile; if (0 != ret) { - strmsg += " file fail!"; } else { - strmsg += " file succeed!"; } } if (0 != ret) + { return null; + } // sample setting. //B_Set_DebugDialog(1); //var sznop2 = "测试"; //var sznop1 = "测试2"; - PPLBUtility.B_Set_Originpoint(0, 0); - PPLBUtility.B_Select_Option(2); - PPLBUtility.B_Set_Darkness(8); - PPLBUtility.B_Del_Pcx("*");// delete all picture. + _ = PPLBUtility.B_Set_Originpoint(0, 0); + _ = PPLBUtility.B_Select_Option(2); + _ = PPLBUtility.B_Set_Darkness(8); + _ = PPLBUtility.B_Del_Pcx("*");// delete all picture. //PPLBUtility.B_WriteData(0, encAscII.GetBytes(sznop2), sznop2.Length); //PPLBUtility.B_WriteData(1, encAscII.GetBytes(sznop1), sznop1.Length); //When using standard label, and the printer is Intelli Print mode or Smart Print mode, //When calling this function and giving the correct label information, //the immediate print function will be enabled according to the label length setting. - PPLBUtility.B_Set_LabelForSmartPrint(254 * 3, 30);//label information: length= 3 * 25.4 mm, gap= 3 mm. + _ = PPLBUtility.B_Set_LabelForSmartPrint(254 * 3, 30);//label information: length= 3 * 25.4 mm, gap= 3 mm. //draw box. //PPLBUtility.B_Draw_Box(20, 20, 4, 760, 560); //PPLBUtility.B_Draw_Line('O', 400, 20, 4, 540); //print text, true type text. - PPLBUtility.B_Prn_Text(250, 50, 0, 2, 2, 2, 'N', "PPLB Lib Example"); + _ = PPLBUtility.B_Prn_Text(250, 50, 0, 2, 2, 2, 'N', "PPLB Lib Example"); //PPLBUtility.B_Prn_Text_TrueType(30, 100, 30, "Arial", 1, 400, 0, 0, 0, "AA", "TrueType Font");//save in printer. //PPLBUtility.B_Prn_Text_TrueType_W(30, 160, 20, 20, "Times New Roman", 1, 400, 0, 0, 0, "AB", "TT_W: 多字元測試"); //PPLBUtility.B_Prn_Text_TrueType_Uni(30, 220, 30, "Times New Roman", 1, 400, 0, 0, 0, "AC", Encoding.Unicode.GetBytes("TT_Uni: 多字元測試"), 1);//UTF-16 @@ -470,12 +482,12 @@ namespace Tnb.WarehouseMgr //encUnicode.GetBytes("\x0000", 0, 1, pbuf, 30);//null.//pbuf[30]=0x00,pbuf[31]=0x00; //PPLBUtility.B_Prn_Text_TrueType_UniB(30, 280, 30, "Times New Roman", 1, 400, 0, 0, 0, "AD", pbuf, 0);//Byte Order Mark. - var labelWth = 800; - var barcodeWth = 508; - var x = (labelWth - barcodeWth) / 2; + int labelWth = 800; + int barcodeWth = 508; + _ = (labelWth - barcodeWth) / 2; //barcode. - PPLBUtility.B_Prn_Barcode(150, 100, 0, "E80", 8, 500, 70, 'N', "1234<+10>");//have a counter + _ = PPLBUtility.B_Prn_Barcode(150, 100, 0, "E80", 8, 500, 70, 'N', "1234<+10>");//have a counter //PPLBUtility.B_Bar2d_QR(420, 200, 1, 3, 'M', 'A', 0, 0, 0, "QR CODE"); //picture. @@ -487,7 +499,7 @@ namespace Tnb.WarehouseMgr // DeleteObject(himage); // output. - PPLBUtility.B_Print_Out(1);// copy 2. + _ = PPLBUtility.B_Print_Out(1);// copy 2. // close port. PPLBUtility.B_ClosePrn(); @@ -503,8 +515,8 @@ namespace Tnb.WarehouseMgr [HttpGet] public async Task GetInStockDetailsListById([FromRoute] string billId) { - var dic = await _dictionaryDataService.GetDictionaryByTypeId(WmsWareHouseConst.WMS_INSTOCK_D_BILL_STATUS_TYPEID); - var items = await _db.Queryable().Where(it => it.bill_id == billId).ToListAsync(); + Dictionary dic = await _dictionaryDataService.GetDictionaryByTypeId(WmsWareHouseConst.WMS_INSTOCK_D_BILL_STATUS_TYPEID); + List items = await _db.Queryable().Where(it => it.bill_id == billId).ToListAsync(); _db.ThenMapper(items, it => it.line_status = dic.ContainsKey(it.line_status) ? dic[it.line_status]?.ToString()! : ""); return items; @@ -519,7 +531,7 @@ namespace Tnb.WarehouseMgr //[NonUnify] public async Task MESCreateOutstock(MESCreateOutstockInput input) { - var isSuccessful = true; + bool isSuccessful = true; try { await _db.Ado.BeginTranAsync(); @@ -528,7 +540,7 @@ namespace Tnb.WarehouseMgr //出库申请明细表 List outstockDs = input.outstockDs.Adapt>(); - var location = await _db.Queryable().SingleAsync(it => it.location_code == input.outstock.location_code && it.is_type != EnumLocationType.存储库位.ToString()); + BasLocation location = await _db.Queryable().SingleAsync(it => it.location_code == input.outstock.location_code && it.is_type != EnumLocationType.存储库位.ToString()); //如果数据不全或有误, if (location.IsNull() || outstockDs?.Count < 1) { @@ -547,7 +559,7 @@ namespace Tnb.WarehouseMgr outstock.create_time = DateTime.Now; //明细表 - foreach (var outstockD in outstockDs!) + foreach (WmsOutstockD outstockD in outstockDs!) { outstockD.id = SnowflakeIdHelper.NextId(); outstockD.bill_id = outstock.id; @@ -558,16 +570,16 @@ namespace Tnb.WarehouseMgr } //var loc = await _db.Queryable().SingleAsync(it => it.id == outstock.location_id.ToString()); - var carryIds = new List(); + List? carryIds = new(); //tablefield120 出库物料明细 - var outStockDList = outstockDs.ToObject>(); + List outStockDList = outstockDs.ToObject>(); if (outStockDList?.Count > 0) { List carryMats = new(); List carryCodes = new(); - foreach (var os in outStockDList) + foreach (WmsOutstockD os in outStockDList) { - var whereExp = Expressionable.Create() + Expressionable whereExp = Expressionable.Create() .And((a, b, c) => a.is_lock == 0) .And((a, b, c) => !string.IsNullOrEmpty(a.location_id)) .And((a, b, c) => a.status == (int)EnumCarryStatus.占用) @@ -575,13 +587,13 @@ namespace Tnb.WarehouseMgr .And((a, b, c) => b.material_id == os.material_id) .AndIF(!string.IsNullOrEmpty(os.code_batch), (a, b, c) => b.code_batch == os.code_batch); - var carryCodesPart = await _db.Queryable().InnerJoin((a, b) => a.id == b.carry_id).InnerJoin((a, b, c) => a.location_id == c.id) + List carryCodesPart = await _db.Queryable().InnerJoin((a, b) => a.id == b.carry_id).InnerJoin((a, b, c) => a.location_id == c.id) .Where(whereExp.ToExpression()) .Select() .ToListAsync(); if (carryCodesPart?.Count > 0) { - var codeQty = carryCodes.Sum(x => x.codeqty); + decimal codeQty = carryCodes.Sum(x => x.codeqty); if (codeQty < os.pr_qty) { throw new AppFriendlyException($"需要出库[{os.pr_qty}],实际库存{codeQty},数量不足", 500); @@ -596,14 +608,14 @@ namespace Tnb.WarehouseMgr } else if (os.pr_qty <= carryCodesPart[i].codeqty) { - var tmp = DeepCopyHelper.DeepCopy(carryCodesPart[i]); + WmsCarryCode tmp = DeepCopyHelper.DeepCopy(carryCodesPart[i]); tmp.codeqty = os.pr_qty; curCarryCodes.Add(tmp); break; } } carryCodes.AddRange(curCarryCodes); - var partCarryMats = curCarryCodes.Adapt>(); + List partCarryMats = curCarryCodes.Adapt>(); for (int i = 0; i < partCarryMats.Count; i++) { partCarryMats[i].need_qty = curCarryCodes[i].codeqty; @@ -617,19 +629,19 @@ namespace Tnb.WarehouseMgr carryMats = carryMats.OrderBy(o => o.create_time).GroupBy(g => new { g.carry_id, g.material_id, g.code_batch }) .Select(x => { - var arr = x.ToArray(); + WmsCarryMat[] arr = x.ToArray(); WmsCarryMat carryMat = arr[^arr.Length]; carryMat.need_qty = x.Sum(d => d.need_qty); return carryMat; }) .ToList(); - await _db.Insertable(carryMats).ExecuteCommandAsync(); - var dic = carryMats.DistinctBy(x => x.carry_id).ToDictionary(x => x.carry_id, x => x.need_qty); - var allOutIds = new List(); - var sortingOutIds = new List(); - foreach (var pair in dic) + _ = await _db.Insertable(carryMats).ExecuteCommandAsync(); + Dictionary dic = carryMats.DistinctBy(x => x.carry_id).ToDictionary(x => x.carry_id, x => x.need_qty); + List allOutIds = new(); + List sortingOutIds = new(); + foreach (KeyValuePair pair in dic) { - var codes = carryCodes.FindAll(x => x.carry_id == pair.Key); + List codes = carryCodes.FindAll(x => x.carry_id == pair.Key); if (codes?.Count > 0) { if (pair.Value == codes.Sum(d => d.codeqty)) @@ -645,39 +657,46 @@ namespace Tnb.WarehouseMgr carryIds = allOutIds.Concat(sortingOutIds).ToList(); if (carryIds?.Count > 0) { - var carryId = carryIds[^carryIds.Count]; - var curCurry = await _db.Queryable().SingleAsync(it => it.id == carryId); - var isMatch = await IsCarryAndLocationMatchByCarryStd(curCurry, location); - if (!isMatch) throw new AppFriendlyException("该载具无法放置到目标库位", 500); + string carryId = carryIds[^carryIds.Count]; + WmsCarryH curCurry = await _db.Queryable().SingleAsync(it => it.id == carryId); + bool isMatch = await IsCarryAndLocationMatchByCarryStd(curCurry, location); + if (!isMatch) + { + throw new AppFriendlyException("该载具无法放置到目标库位", 500); + } } - await _db.Insertable(outstock).ExecuteCommandAsync(); - await _db.Insertable(outstockDs).ExecuteCommandAsync(); - await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.全部出).ToString(), source_id = outstock.source_id, source_code = outstock.source_code }).Where(it => allOutIds.Contains(it.id)).ExecuteCommandAsync(); - await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.分拣出).ToString(), source_id = outstock.source_id, source_code = outstock.source_code }).Where(it => sortingOutIds.Contains(it.id)).ExecuteCommandAsync(); + _ = await _db.Insertable(outstock).ExecuteCommandAsync(); + _ = await _db.Insertable(outstockDs).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.全部出).ToString(), source_id = outstock.source_id, source_code = outstock.source_code }).Where(it => allOutIds.Contains(it.id)).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.分拣出).ToString(), source_id = outstock.source_id, source_code = outstock.source_code }).Where(it => sortingOutIds.Contains(it.id)).ExecuteCommandAsync(); } - var carrys = await _db.Queryable().Where(it => carryIds.Contains(it.id)).ToListAsync(); + List carrys = await _db.Queryable().Where(it => carryIds.Contains(it.id)).ToListAsync(); if (carrys?.Count > 0) { List preTasks = new(); List locIds = new(); - foreach (var carry in carrys) + foreach (WmsCarryH carry in carrys) { WmsPointH sPoint = await _db.Queryable().FirstAsync(it => it.location_id == carry.location_id); WmsPointH ePoint = await _db.Queryable().FirstAsync(it => it.location_id == outstock.location_id.ToString()); if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + List points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); locIds.AddRange(points.Select(x => x.location_id).ToList()!); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); - var curPreTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + if (points.Count <= 2) { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + throw new AppFriendlyException("该路径不存在", 500); + } + + List curPreTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); WmsPretaskH preTask = new() { @@ -716,10 +735,10 @@ namespace Tnb.WarehouseMgr } } List pretaskCodes = new(); - foreach (var pt in preTasks) + foreach (WmsPretaskH pt in preTasks) { - var partCodes = carryCodes.FindAll(x => x.carry_id == pt.carry_id).Distinct().ToList(); - var curPreTaskCodes = partCodes.Adapt>(); + List partCodes = carryCodes.FindAll(x => x.carry_id == pt.carry_id).Distinct().ToList(); + List curPreTaskCodes = partCodes.Adapt>(); curPreTaskCodes.ForEach(x => { x.id = SnowflakeIdHelper.NextId(); @@ -728,22 +747,30 @@ namespace Tnb.WarehouseMgr }); pretaskCodes.AddRange(curPreTaskCodes); } - var isOk = await _wareHouseService.GenPreTask(preTasks, pretaskCodes); + bool isOk = await _wareHouseService.GenPreTask(preTasks, pretaskCodes); if (isOk) { outstockDs.ForEach(x => x.line_status = WmsWareHouseConst.BILLSTATUS_ON_ID); - await _db.Updateable(outstockDs).UpdateColumns(it => it.line_status).ExecuteCommandAsync(); - await _db.Updateable().SetColumns(it => new WmsOutstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == outstock.id).ExecuteCommandAsync(); - GenPreTaskUpInput genPreTaskAfterUpInput = new(); - genPreTaskAfterUpInput.CarryIds = preTasks.Select(x => x.carry_id).ToList(); - genPreTaskAfterUpInput.LocationIds = new HashSet(locIds).ToList(); + _ = await _db.Updateable(outstockDs).UpdateColumns(it => it.line_status).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsOutstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == outstock.id).ExecuteCommandAsync(); + GenPreTaskUpInput genPreTaskAfterUpInput = new() + { + CarryIds = preTasks.Select(x => x.carry_id).ToList(), + LocationIds = new HashSet(locIds).ToList() + }; await _wareHouseService.GenInStockTaskHandleAfter(genPreTaskAfterUpInput, it => new WmsCarryH { is_lock = 1 }, it => new BasLocation { is_lock = 1 }); } } - else throw new AppFriendlyException("库存不足", 500); + else + { + throw new AppFriendlyException("库存不足", 500); + } + } + else + { + throw new AppFriendlyException($"请输入物料明细", 500); } - else throw new AppFriendlyException($"请输入物料明细", 500); await _db.Ado.CommitTranAsync(); } @@ -763,29 +790,33 @@ namespace Tnb.WarehouseMgr public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + try { await _db.Ado.BeginTranAsync(); - var carryId = input.carryIds[^input.carryIds.Count]; - var carry = await _db.Queryable().SingleAsync(it => it.id == carryId); + string carryId = input.carryIds[^input.carryIds.Count]; + WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.id == carryId); if (carry != null) { - var otds = await _db.Queryable().Where(it => it.bill_id == input.requireId).ToListAsync(); - var outStatus = carry.out_status.ToEnum(); + List? otds = await _db.Queryable().Where(it => it.bill_id == input.requireId).ToListAsync(); + EnumOutStatus outStatus = carry.out_status.ToEnum(); if (outStatus == EnumOutStatus.全部出) { //当前载具对应的所有条码插入 - var carryCodes = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); - var outStockCodes = carryCodes.Adapt>(); + List carryCodes = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); + List outStockCodes = carryCodes.Adapt>(); outStockCodes.ForEach(x => { - var billDId = otds?.Find(xx => xx.material_id == x.material_id && xx.code_batch == x.code_batch)?.id; + string? billDId = otds?.Find(xx => xx.material_id == x.material_id && xx.code_batch == x.code_batch)?.id; if (billDId.IsNullOrEmpty()) { billDId = otds?.Find(xx => xx.material_id == x.material_id)?.id; @@ -797,47 +828,40 @@ namespace Tnb.WarehouseMgr x.create_id = _userManager.UserId; x.create_time = DateTime.Now; }); - await _db.Insertable(outStockCodes).ExecuteCommandAsync(); + _ = await _db.Insertable(outStockCodes).ExecuteCommandAsync(); - var detailIds = outStockCodes.Select(x => x.bill_d_id).ToList(); - var curOutstockDetails = otds.FindAll(x => detailIds.Contains(x.id)); - var dic = outStockCodes.GroupBy(g => g.bill_d_id).ToDictionary(x => x.Key, x => x.Select(x => x.codeqty).ToList()); - foreach (var osd in curOutstockDetails) + List detailIds = outStockCodes.Select(x => x.bill_d_id).ToList(); + List curOutstockDetails = otds.FindAll(x => detailIds.Contains(x.id)); + Dictionary> dic = outStockCodes.GroupBy(g => g.bill_d_id).ToDictionary(x => x.Key, x => x.Select(x => x.codeqty).ToList()); + foreach (WmsOutstockD osd in curOutstockDetails) { if (dic.ContainsKey(osd.id)) { osd.qty += dic[osd.id].Sum(d => d); - if (osd.qty >= osd.pr_qty) - { - osd.line_status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID; - } - else - { - osd.line_status = WmsWareHouseConst.BILLSTATUS_ON_ID; - } + osd.line_status = osd.qty >= osd.pr_qty ? WmsWareHouseConst.BILLSTATUS_COMPLETE_ID : WmsWareHouseConst.BILLSTATUS_ON_ID; } } - await _db.Updateable(curOutstockDetails).ExecuteCommandAsync(); + _ = await _db.Updateable(curOutstockDetails).ExecuteCommandAsync(); if (otds.All(x => x.line_status == WmsWareHouseConst.BILLSTATUS_COMPLETE_ID)) { - await _db.Updateable().SetColumns(it => new WmsOutstockH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsOutstockH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); //如果是自动单据,需要回更上层系统 } else { //如果没有完成,修改为工作中 - await _db.Updateable().SetColumns(it => new WmsOutstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsOutstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); } - await _wareCarryService.UpdateNullCarry(carry).Unwrap(); + _ = await _wareCarryService.UpdateNullCarry(carry).Unwrap(); } else if (outStatus == EnumOutStatus.分拣出) { if (input.distaskCodes?.Count > 0) { - var osCodes = input.distaskCodes.Adapt>(); + List osCodes = input.distaskCodes.Adapt>(); osCodes.ForEach(x => { - var billDId = otds?.Find(xx => xx.material_id == x.material_id && xx.code_batch == x.code_batch)?.id; + string? billDId = otds?.Find(xx => xx.material_id == x.material_id && xx.code_batch == x.code_batch)?.id; if (billDId.IsNullOrEmpty()) { billDId = otds?.Find(xx => xx.material_id == x.material_id)?.id; @@ -849,12 +873,12 @@ namespace Tnb.WarehouseMgr x.create_id = _userManager.UserId; x.create_time = DateTime.Now; }); - await _db.Insertable(osCodes).ExecuteCommandAsync(); + _ = await _db.Insertable(osCodes).ExecuteCommandAsync(); // 更新主表 - var detailIds = osCodes.Select(x => x.bill_d_id).ToList(); - var curOutstockDetails = otds.FindAll(x => detailIds.Contains(x.id)); - var dic = osCodes.GroupBy(g => g.bill_d_id).ToDictionary(x => x.Key, x => x.Select(x => x.codeqty).ToList()); - foreach (var osd in curOutstockDetails) + List detailIds = osCodes.Select(x => x.bill_d_id).ToList(); + List curOutstockDetails = otds.FindAll(x => detailIds.Contains(x.id)); + Dictionary> dic = osCodes.GroupBy(g => g.bill_d_id).ToDictionary(x => x.Key, x => x.Select(x => x.codeqty).ToList()); + foreach (WmsOutstockD osd in curOutstockDetails) { if (dic.ContainsKey(osd.id)) { @@ -870,23 +894,23 @@ namespace Tnb.WarehouseMgr } } } - await _db.Updateable(curOutstockDetails).ExecuteCommandAsync(); + _ = await _db.Updateable(curOutstockDetails).ExecuteCommandAsync(); if (otds.All(x => x.line_status == WmsWareHouseConst.BILLSTATUS_COMPLETE_ID)) { //如果是自动单据,需要回更上层系统 - await _db.Updateable().SetColumns(it => new WmsOutstockH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsOutstockH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); } else { //如果没有完成,修改为工作中 - await _db.Updateable().SetColumns(it => new WmsOutstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsOutstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); } - var carryCodes = await _db.Queryable().Where(it => input.carryIds.Contains(it.carry_id!)).ToListAsync(); - var dicCodeQty = carryCodes.GroupBy(g => g.barcode).ToDictionary(x => x.Key, x => x.First().codeqty); - var dicUpdate = new Dictionary(); - var delBarcodes = new List(); - foreach (var dtc in input.distaskCodes) + List carryCodes = await _db.Queryable().Where(it => input.carryIds.Contains(it.carry_id!)).ToListAsync(); + Dictionary dicCodeQty = carryCodes.GroupBy(g => g.barcode).ToDictionary(x => x.Key, x => x.First().codeqty); + Dictionary dicUpdate = new(); + List delBarcodes = new(); + foreach (WmsDistaskCode dtc in input.distaskCodes) { if (dicCodeQty.ContainsKey(dtc.barcode)) { @@ -902,36 +926,38 @@ namespace Tnb.WarehouseMgr } if (dicUpdate.Count > 0) { - foreach (var pair in dicUpdate) + foreach (KeyValuePair pair in dicUpdate) { WmsCarryCode? carryCode = carryCodes.Find(x => x.barcode == pair.Key); if (carryCode != null) { carryCode.codeqty = pair.Value; - await _db.Updateable(carryCode).UpdateColumns(it => it.codeqty).ExecuteCommandAsync(); + _ = await _db.Updateable(carryCode).UpdateColumns(it => it.codeqty).ExecuteCommandAsync(); } } } if (delBarcodes.Count > 0) { - await _db.Deleteable().Where(it => delBarcodes.Contains(it.barcode)).ExecuteCommandAsync(); + _ = await _db.Deleteable().Where(it => delBarcodes.Contains(it.barcode)).ExecuteCommandAsync(); } - var row = await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.正常).ToString() }).Where(it => input.carryIds.Contains(it.id)).ExecuteCommandAsync(); - await _db.Deleteable().Where(it => input.carryIds.Contains(it.carry_id)).ExecuteCommandAsync(); + int row = await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.正常).ToString() }).Where(it => input.carryIds.Contains(it.id)).ExecuteCommandAsync(); + _ = await _db.Deleteable().Where(it => input.carryIds.Contains(it.carry_id)).ExecuteCommandAsync(); //载具移入 - var outStockH = await _db.Queryable().SingleAsync(it => it.id == input.requireId); - var visulDevInput = new VisualDevModelDataCrInput(); - visulDevInput.data = new Dictionary + WmsOutstockH outStockH = await _db.Queryable().SingleAsync(it => it.id == input.requireId); + VisualDevModelDataCrInput visulDevInput = new() { - [nameof(InStockStrategyQuery.warehouse_id)] = outStockH.warehouse_id, - [nameof(WmsPointH.location_id)] = outStockH.location_id, - [nameof(WmsCarryD.carry_id)] = input.carryIds.First(), - [nameof(WmsCarryH.carry_code)] = carry.carry_code, - [nameof(WmsHandleH.biz_type)] = input.bizTypeId, - [nameof(WmsHandleH.create_id)] = _userManager.UserId, - [nameof(WmsHandleH.create_time)] = DateTime.Now, - [nameof(WmsMoveInstock.status)] = WmsWareHouseConst.BILLSTATUS_ADD_ID, - [nameof(WmsHandleH.bill_code)] = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_CARRYMOINSTK_ENCODE).GetAwaiter().GetResult(), + data = new Dictionary + { + [nameof(InStockStrategyQuery.warehouse_id)] = outStockH.warehouse_id, + [nameof(WmsPointH.location_id)] = outStockH.location_id, + [nameof(WmsCarryD.carry_id)] = input.carryIds.First(), + [nameof(WmsCarryH.carry_code)] = carry.carry_code, + [nameof(WmsHandleH.biz_type)] = input.bizTypeId, + [nameof(WmsHandleH.create_id)] = _userManager.UserId, + [nameof(WmsHandleH.create_time)] = DateTime.Now, + [nameof(WmsMoveInstock.status)] = WmsWareHouseConst.BILLSTATUS_ADD_ID, + [nameof(WmsHandleH.bill_code)] = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_CARRYMOINSTK_ENCODE).GetAwaiter().GetResult(), + } }; await _wmsCarryMoveInStockService.CarryMoveIn(visulDevInput); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryBindService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryBindService.cs index d7b8e5bc..3f6bf46a 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryBindService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryBindService.cs @@ -42,7 +42,7 @@ namespace Tnb.WarehouseMgr private async Task PDACarryBind(VisualDevModelDataCrInput input) { - var isOk = false; + bool isOk = false; try { await _db.Ado.BeginTranAsync(); @@ -50,11 +50,15 @@ namespace Tnb.WarehouseMgr VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSCARRYBINDPDA_ID, true); await _runService.Create(templateEntity, input); - if (input == null) throw new ArgumentNullException(nameof(input)); - var carryId = input.data.ContainsKey("carry_id") ? input.data["carry_id"]?.ToString() : ""; - var subCarryId = input.data.ContainsKey("membercarry_id") ? input.data["membercarry_id"]?.ToString() : ""; - var carry = await _db.Queryable().SingleAsync(it => it.id == carryId); - var subCarry = await _db.Queryable().SingleAsync(it => it.id == subCarryId); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + string? carryId = input.data.ContainsKey("carry_id") ? input.data["carry_id"]?.ToString() : ""; + string? subCarryId = input.data.ContainsKey("membercarry_id") ? input.data["membercarry_id"]?.ToString() : ""; + WmsCarryH? carry = await _db.Queryable().SingleAsync(it => it.id == carryId); + WmsCarryH? subCarry = await _db.Queryable().SingleAsync(it => it.id == subCarryId); if (carry != null && subCarry != null) { @@ -70,34 +74,39 @@ namespace Tnb.WarehouseMgr create_id = _userManager.UserId, create_time = DateTime.Now }; - var row = await _db.Insertable(wmsCarryD).ExecuteCommandAsync(); + int row = await _db.Insertable(wmsCarryD).ExecuteCommandAsync(); carry!.carry_status = ((int)EnumCarryStatus.占用).ToString(); row = await _db.Updateable(carry).ExecuteCommandAsync(); subCarry.carry_status = ((int)EnumCarryStatus.占用).ToString(); row = await _db.Updateable(subCarry).ExecuteCommandAsync(); - var items = await _db.Queryable().Where(it => it.carry_id == subCarryId).ToListAsync(); + List items = await _db.Queryable().Where(it => it.carry_id == subCarryId).ToListAsync(); //更新载具绑定条码表 for (int i = 0; i < items.Count; i++) { - WmsCarrybindCode wmsCarrybindCode = new(); - wmsCarrybindCode.id = SnowflakeIdHelper.NextId(); - wmsCarrybindCode.org_id = subCarry?.org_id!; - wmsCarrybindCode.carrybind_id = input.data["ReturnIdentity"]?.ToString()!; - wmsCarrybindCode.material_id = items[i].material_id; - wmsCarrybindCode.material_code = items[i].material_code; - wmsCarrybindCode.barcode = items[i].barcode; - wmsCarrybindCode.code_batch = items[i].code_batch; - wmsCarrybindCode.codeqty = items[i].codeqty; - wmsCarrybindCode.membercarry_id = subCarry?.id; - wmsCarrybindCode.membercarry_code = subCarry?.carry_code; - wmsCarrybindCode.unit_id = items[i].unit_id; - wmsCarrybindCode.unit_code = items[i].unit_code; - wmsCarrybindCode.create_id = _userManager.UserId; - wmsCarrybindCode.create_time = DateTime.Now; + WmsCarrybindCode wmsCarrybindCode = new() + { + id = SnowflakeIdHelper.NextId(), + org_id = subCarry?.org_id!, + carrybind_id = input.data["ReturnIdentity"]?.ToString()!, + material_id = items[i].material_id, + material_code = items[i].material_code, + barcode = items[i].barcode, + code_batch = items[i].code_batch, + codeqty = items[i].codeqty, + membercarry_id = subCarry?.id, + membercarry_code = subCarry?.carry_code, + unit_id = items[i].unit_id, + unit_code = items[i].unit_code, + create_id = _userManager.UserId, + create_time = DateTime.Now + }; row = await _db.Insertable(wmsCarrybindCode).ExecuteCommandAsync(); } - isOk = (row > 0); - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + isOk = row > 0; + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } } else { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveInStockService.cs index acc6e8c4..1a1e654a 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveInStockService.cs @@ -164,8 +164,8 @@ namespace Tnb.WarehouseMgr await _db.Ado.BeginTranAsync(); //入库取终点 //出库起点 - var inStockStrategyInput = new InStockStrategyQuery { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString()!, Size = 1 }; - var endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); + InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString()!, Size = 1 }; + List endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); WmsPointH sPoint = null!; WmsPointH ePoint = null!; if (input.data.ContainsKey(nameof(WmsPointH.location_id))) @@ -174,10 +174,14 @@ namespace Tnb.WarehouseMgr } if (endLocations?.Count > 0) { - var carry = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsCarryD.carry_id)].ToString()); - var loc = await _db.Queryable().SingleAsync(it => it.id == endLocations[0].id); - var isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); - if (!isMatch) throw new AppFriendlyException("库位与载具规格不匹配", 500); + WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsCarryD.carry_id)].ToString()); + BasLocation loc = await _db.Queryable().SingleAsync(it => it.id == endLocations[0].id); + bool isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); + if (!isMatch) + { + throw new AppFriendlyException("库位与载具规格不匹配", 500); + } + ePoint = await _db.Queryable().FirstAsync(it => it.location_id == endLocations[0].id); } @@ -188,32 +192,38 @@ namespace Tnb.WarehouseMgr if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + List points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + if (points.Count <= 2) { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + throw new AppFriendlyException("该路径不存在", 500); + } - WmsPretaskH preTask = new(); - preTask.org_id = _userManager.User.OrganizeId!; - preTask.startlocation_id = sPoint?.location_id!; - preTask.startlocation_code = sPoint?.location_code!; - preTask.endlocation_id = ePoint?.location_id!; - preTask.endlocation_code = ePoint?.location_code!; - preTask.start_floor = sPoint?.floor.ToString(); - preTask.end_floor = ePoint?.floor.ToString(); - preTask.startpoint_id = sPoint?.id!; - preTask.startpoint_code = sPoint?.point_code!; - preTask.endpoint_id = ePoint?.id!; - preTask.endpoint_code = ePoint?.point_code!; - preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); - preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; - preTask.biz_type = WmsWareHouseConst.BIZTYPE_CARRYMOVEINSTOCK_ID; - preTask.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID; + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); + + WmsPretaskH preTask = new() + { + org_id = _userManager.User.OrganizeId!, + startlocation_id = sPoint?.location_id!, + startlocation_code = sPoint?.location_code!, + endlocation_id = ePoint?.location_id!, + endlocation_code = ePoint?.location_code!, + start_floor = sPoint?.floor.ToString(), + end_floor = ePoint?.floor.ToString(), + startpoint_id = sPoint?.id!, + startpoint_code = sPoint?.point_code!, + endpoint_id = ePoint?.id!, + endpoint_code = ePoint?.point_code!, + bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(), + status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID, + biz_type = WmsWareHouseConst.BIZTYPE_CARRYMOVEINSTOCK_ID, + task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID + }; preTask.carry_id = input.data[nameof(preTask.carry_id)]?.ToString()!; preTask.carry_code = input.data[nameof(preTask.carry_code)]?.ToString()!; preTask.area_id = sPoint?.area_id!; @@ -224,31 +234,35 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks, null!); + bool isOk = await _wareHouseService.GenPreTask(preTasks, null!); if (isOk) { - var preTaskUpInput = new GenPreTaskUpInput(); - preTaskUpInput.RquireId = input.data["ReturnIdentity"].ToString()!; - preTaskUpInput.CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!; - preTaskUpInput.CarryStartLocationId = points.FirstOrDefault()!.location_id!; - preTaskUpInput.CarryStartLocationCode = points.FirstOrDefault()!.location_code!; - preTaskUpInput.LocationIds = points.Select(x => x.location_id).ToList()!; + GenPreTaskUpInput preTaskUpInput = new() + { + RquireId = input.data["ReturnIdentity"].ToString()!, + CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!, + CarryStartLocationId = points.FirstOrDefault()!.location_id!, + CarryStartLocationCode = points.FirstOrDefault()!.location_code!, + LocationIds = points.Select(x => x.location_id).ToList()! + }; - WmsHandleH handleH = new(); - handleH.org_id = _userManager.User.OrganizeId; - handleH.startlocation_id = input.data[nameof(WmsPointH.location_id)]?.ToString()!; - handleH.endlocation_id = endLocations![0].id; - handleH.bill_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!; - handleH.biz_type = input.data[nameof(WmsHandleH.biz_type)]?.ToString()!; - handleH.carry_id = input.data[nameof(WmsHandleH.carry_id)]?.ToString()!; - handleH.carry_code = input.data[nameof(WmsHandleH.carry_code)]?.ToString()!; - handleH.require_id = input.data["ReturnIdentity"].ToString(); - handleH.require_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!; - handleH.create_id = _userManager.UserId; - handleH.create_time = DateTime.Now; + WmsHandleH handleH = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = input.data[nameof(WmsPointH.location_id)]?.ToString()!, + endlocation_id = endLocations![0].id, + bill_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!, + biz_type = input.data[nameof(WmsHandleH.biz_type)]?.ToString()!, + carry_id = input.data[nameof(WmsHandleH.carry_id)]?.ToString()!, + carry_code = input.data[nameof(WmsHandleH.carry_code)]?.ToString()!, + require_id = input.data["ReturnIdentity"].ToString(), + require_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!, + create_id = _userManager.UserId, + create_time = DateTime.Now + }; preTaskUpInput.PreTaskRecord = handleH; //根据载具移入Id,回更单据状态 - await _db.Updateable().SetColumns(it => new WmsMoveInstock { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsMoveInstock { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, it => new WmsCarryH { is_lock = 1, location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode }, @@ -275,9 +289,16 @@ namespace Tnb.WarehouseMgr public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); - var isOk = await _db.Updateable().SetColumns(it => new WmsMoveInstock { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + bool isOk = await _db.Updateable().SetColumns(it => new WmsMoveInstock { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveOutStockService.cs index c5df2aa5..772b119c 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveOutStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveOutStockService.cs @@ -62,10 +62,13 @@ namespace Tnb.WarehouseMgr { await _db.Ado.BeginTranAsync(); - var carry = await _db.Queryable().FirstAsync(it => it.id == input.data[nameof(WmsMoveOutstock.carry_id)].ToString()); - var loc = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString()); - var isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); - if (!isMatch) throw new AppFriendlyException("该载具无法放置到目标库位", 500); + WmsCarryH carry = await _db.Queryable().FirstAsync(it => it.id == input.data[nameof(WmsMoveOutstock.carry_id)].ToString()); + BasLocation loc = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString()); + bool isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); + if (!isMatch) + { + throw new AppFriendlyException("该载具无法放置到目标库位", 500); + } VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSCARRYMOOUTSTKPDA_ID, true); await _runService.Create(templateEntity, input); @@ -82,33 +85,39 @@ namespace Tnb.WarehouseMgr if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + List points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + if (points.Count <= 2) { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + throw new AppFriendlyException("该路径不存在", 500); + } - WmsPretaskH preTask = new(); - preTask.org_id = _userManager.User.OrganizeId; - preTask.startlocation_id = sPoint?.location_id!; - preTask.startlocation_code = sPoint?.location_code!; - preTask.endlocation_id = ePoint?.location_id!; - preTask.endlocation_code = ePoint?.location_code!; - preTask.start_floor = sPoint?.floor.ToString(); - preTask.end_floor = ePoint?.floor.ToString(); - preTask.startpoint_id = sPoint?.id!; - preTask.startpoint_code = sPoint?.point_code!; - preTask.endpoint_id = ePoint?.id!; - preTask.endpoint_code = ePoint?.point_code!; - preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); - preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; - preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSMOOUTSTK_ID; - preTask.task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID; + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); + + WmsPretaskH preTask = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = sPoint?.location_id!, + startlocation_code = sPoint?.location_code!, + endlocation_id = ePoint?.location_id!, + endlocation_code = ePoint?.location_code!, + start_floor = sPoint?.floor.ToString(), + end_floor = ePoint?.floor.ToString(), + startpoint_id = sPoint?.id!, + startpoint_code = sPoint?.point_code!, + endpoint_id = ePoint?.id!, + endpoint_code = ePoint?.point_code!, + bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(), + status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID, + biz_type = WmsWareHouseConst.BIZTYPE_WMSMOOUTSTK_ID, + task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID + }; preTask.carry_id = input.data[nameof(preTask.carry_id)]?.ToString()!; preTask.carry_code = input.data[nameof(preTask.carry_code)]?.ToString()!; preTask.area_id = sPoint?.area_id!; @@ -124,20 +133,22 @@ namespace Tnb.WarehouseMgr { preTasks[^1].is_sign = 0; // 修改最后一个元素的是否签收值 } - var isOk = await _wareHouseService.GenPreTask(preTasks, null!); + bool isOk = await _wareHouseService.GenPreTask(preTasks, null!); if (isOk) { - var preTaskUpInput = new GenPreTaskUpInput(); - preTaskUpInput.RquireId = input.data["ReturnIdentity"].ToString()!; - preTaskUpInput.CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!; - preTaskUpInput.CarryStartLocationId = points.FirstOrDefault()!.location_id!; - preTaskUpInput.CarryStartLocationCode = points.FirstOrDefault()!.location_code!; - preTaskUpInput.LocationIds = points.Select(x => x.location_id).ToList()!; + GenPreTaskUpInput preTaskUpInput = new() + { + RquireId = input.data["ReturnIdentity"].ToString()!, + CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!, + CarryStartLocationId = points.FirstOrDefault()!.location_id!, + CarryStartLocationCode = points.FirstOrDefault()!.location_code!, + LocationIds = points.Select(x => x.location_id).ToList()!, - preTaskUpInput.PreTaskRecords = preTasks.Adapt>(); + PreTaskRecords = preTasks.Adapt>() + }; preTaskUpInput.PreTaskRecords.ForEach(x => x.id = SnowflakeIdHelper.NextId()); //根据载具移出Id,回更单据状态 - await _db.Updateable().SetColumns(it => new WmsMoveOutstock { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsMoveOutstock { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, it => new WmsCarryH { is_lock = 1, location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode }, @@ -162,9 +173,16 @@ namespace Tnb.WarehouseMgr public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); - var isOk = await _db.Updateable().SetColumns(it => new WmsMoveOutstock { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + bool isOk = await _db.Updateable().SetColumns(it => new WmsMoveOutstock { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryUnbindService .cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryUnbindService .cs index 21564566..9c7c9473 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryUnbindService .cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryUnbindService .cs @@ -40,7 +40,7 @@ namespace Tnb.WarehouseMgr } private async Task PDACarryUnbind(VisualDevModelDataCrInput input) { - var isOk = false; + bool isOk = false; try { await _db.Ado.BeginTranAsync(); @@ -48,15 +48,19 @@ namespace Tnb.WarehouseMgr VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSCARRYUNBINDPDA_ID, true); await _runService.Create(templateEntity, input); - if (input == null) throw new ArgumentNullException(nameof(input)); - var carryId = input.data.ContainsKey("carry_id") ? input.data["carry_id"]?.ToString() : ""; - var subCarryId = input.data.ContainsKey("membercarry_id") ? input.data["membercarry_id"]?.ToString() : ""; - var carry = await _db.Queryable().FirstAsync(it => it.id == carryId); - var subCarry = await _db.Queryable().FirstAsync(it => it.id == subCarryId); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + string? carryId = input.data.ContainsKey("carry_id") ? input.data["carry_id"]?.ToString() : ""; + string? subCarryId = input.data.ContainsKey("membercarry_id") ? input.data["membercarry_id"]?.ToString() : ""; + WmsCarryH? carry = await _db.Queryable().FirstAsync(it => it.id == carryId); + WmsCarryH? subCarry = await _db.Queryable().FirstAsync(it => it.id == subCarryId); if (carry != null && subCarry != null) { - var row = await _db.Deleteable().Where(it => it.carry_id == carryId && it.membercarry_id == subCarryId).ExecuteCommandAsync(); - var items = await _db.Queryable().Where(it => it.carry_id == subCarryId).ToListAsync(); + int row = await _db.Deleteable().Where(it => it.carry_id == carryId && it.membercarry_id == subCarryId).ExecuteCommandAsync(); + List items = await _db.Queryable().Where(it => it.carry_id == subCarryId).ToListAsync(); //更新载具解绑记录 WmsCarryunbindCode wmsCarryUnbindCode = new(); for (int i = 0; i < items.Count; i++) @@ -81,8 +85,11 @@ namespace Tnb.WarehouseMgr row = await _db.Updateable(carry).ExecuteCommandAsync(); subCarry!.carry_status = ((int)EnumCarryStatus.空闲).ToString(); row = await _db.Updateable(subCarry).ExecuteCommandAsync(); - isOk = (row > 0); - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + isOk = row > 0; + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } } else { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDADeliveryService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDADeliveryService.cs index 69f6921e..24414da1 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDADeliveryService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDADeliveryService.cs @@ -68,8 +68,8 @@ namespace Tnb.WarehouseMgr .Where(a => a.id == carryId) .Select((a, b) => new { - carry_code = a.carry_code, - location_code = b.location_code, + a.carry_code, + b.location_code, }) .ToListAsync(); return items; @@ -90,12 +90,15 @@ namespace Tnb.WarehouseMgr { endLocationId = input.data[nameof(WmsDelivery.endlocation_id)]?.ToString()!; } - var locIds = new[] { startLocationId, endLocationId }; - var locs = await _basLocationService?.GetLocationInfobyIds(locIds)!; + string[] locIds = new[] { startLocationId, endLocationId }; + List locs = await _basLocationService?.GetLocationInfobyIds(locIds)!; if (locs?.Count > 0) { - var isStoreLoc = locs.Where(x => !x.IsNullOrEmpty()).Select(x => x.is_type.ParseToInt()).Any(x => x == (int)EnumLocationType.存储库位); - if (isStoreLoc) throw new AppFriendlyException("起始库位不能为存储库位", 500); + bool isStoreLoc = locs.Where(x => !x.IsNullOrEmpty()).Select(x => x.is_type.ParseToInt()).Any(x => x == (int)EnumLocationType.存储库位); + if (isStoreLoc) + { + throw new AppFriendlyException("起始库位不能为存储库位", 500); + } } VisualDevEntity? templateEntity = await _visualDevService?.GetInfoById(ModuleConsts.MODULE_WMSDELIVERYPDA_ID, true)!; await _runService.Create(templateEntity, input); @@ -114,32 +117,38 @@ namespace Tnb.WarehouseMgr if (sPoint != null && ePoint != null) { - var points = await _wareHouseService!.PathAlgorithms(sPoint.id, ePoint.id); + List points = await _wareHouseService!.PathAlgorithms(sPoint.id, ePoint.id); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + if (points.Count <= 2) { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + throw new AppFriendlyException("该路径不存在", 500); + } - WmsPretaskH preTask = new(); - preTask.org_id = _userManager!.User.OrganizeId; - preTask.startlocation_id = sPoint?.location_id!; - preTask.startlocation_code = sPoint?.location_code!; - preTask.endlocation_id = ePoint?.location_id!; - preTask.endlocation_code = ePoint?.location_code!; - preTask.start_floor = sPoint?.floor.ToString(); - preTask.end_floor = ePoint?.floor.ToString(); - preTask.startpoint_id = sPoint?.id!; - preTask.startpoint_code = sPoint?.point_code!; - preTask.endpoint_id = ePoint?.id!; - preTask.endpoint_code = ePoint?.point_code!; - preTask.bill_code = _billRullService!.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); - preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; - preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSDELIVERY_ID; - preTask.task_type = WmsWareHouseConst.WMS_PRETASK_TRANSFER_TYPE_ID; + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); + + WmsPretaskH preTask = new() + { + org_id = _userManager!.User.OrganizeId, + startlocation_id = sPoint?.location_id!, + startlocation_code = sPoint?.location_code!, + endlocation_id = ePoint?.location_id!, + endlocation_code = ePoint?.location_code!, + start_floor = sPoint?.floor.ToString(), + end_floor = ePoint?.floor.ToString(), + startpoint_id = sPoint?.id!, + startpoint_code = sPoint?.point_code!, + endpoint_id = ePoint?.id!, + endpoint_code = ePoint?.point_code!, + bill_code = _billRullService!.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(), + status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID, + biz_type = WmsWareHouseConst.BIZTYPE_WMSDELIVERY_ID, + task_type = WmsWareHouseConst.WMS_PRETASK_TRANSFER_TYPE_ID + }; preTask.carry_id = input.data[nameof(preTask.carry_id)]?.ToString()!; preTask.carry_code = input.data[nameof(preTask.carry_code)]?.ToString()!; preTask.area_id = sPoint?.area_id!; @@ -150,16 +159,16 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks, null!); + bool isOk = await _wareHouseService.GenPreTask(preTasks, null!); if (isOk) { if (input.data.ContainsKey(nameof(WmsDelivery.startlocation_id)) && input.data.ContainsKey(nameof(WmsDelivery.endlocation_id)) && input.data[nameof(WmsDelivery.endlocation_id)] != null && input.data[nameof(WmsDelivery.endlocation_id)] != null) { //查询库位表 - var location = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsDelivery.startlocation_id)].ToString()); + BasLocation location = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsDelivery.startlocation_id)].ToString()); { //载具加锁,增加库位信息 - await _db.Updateable().SetColumns(it => new WmsCarryH + _ = await _db.Updateable().SetColumns(it => new WmsCarryH { carry_status = ((int)EnumCarryStatus.占用).ToString(), is_lock = 1, @@ -169,8 +178,8 @@ namespace Tnb.WarehouseMgr } //所有库位加锁 - var ids = new[] { input.data[nameof(WmsDelivery.startlocation_id)].ToString(), input.data[nameof(WmsDelivery.endlocation_id)].ToString() }; - await _db.Updateable().SetColumns(it => new BasLocation { is_lock = 1 }).Where(it => ids.Contains(it.id)).ExecuteCommandAsync(); + string?[] ids = new[] { input.data[nameof(WmsDelivery.startlocation_id)].ToString(), input.data[nameof(WmsDelivery.endlocation_id)].ToString() }; + _ = await _db.Updateable().SetColumns(it => new BasLocation { is_lock = 1 }).Where(it => ids.Contains(it.id)).ExecuteCommandAsync(); } } } @@ -191,9 +200,16 @@ namespace Tnb.WarehouseMgr } public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); - var row = await _db.Updateable().SetColumns(it => new WmsDelivery { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); - if (row < 1) throw Oops.Oh(ErrorCode.COM1001); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + int row = await _db.Updateable().SetColumns(it => new WmsDelivery { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); + if (row < 1) + { + throw Oops.Oh(ErrorCode.COM1001); + } } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyInstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyInstockService.cs index ecce2711..e25d08b3 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyInstockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyInstockService.cs @@ -63,8 +63,8 @@ namespace Tnb.WarehouseMgr await _db.Ado.BeginTranAsync(); //入库取终点 //出库起点 - var inStockStrategyInput = new InStockStrategyQuery { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString()!, Size = 1 }; - var endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); + InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString()!, Size = 1 }; + List endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); WmsPointH sPoint = null!; WmsPointH ePoint = null!; if (input.data.ContainsKey(nameof(WmsPointH.location_id))) @@ -73,10 +73,14 @@ namespace Tnb.WarehouseMgr } if (endLocations?.Count > 0) { - var carry = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsCarryD.carry_id)].ToString()); - var loc = await _db.Queryable().SingleAsync(it => it.id == endLocations[0].id); - var isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); - if (!isMatch) throw new AppFriendlyException("库位与载具规格不匹配", 500); + WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsCarryD.carry_id)].ToString()); + BasLocation loc = await _db.Queryable().SingleAsync(it => it.id == endLocations[0].id); + bool isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); + if (!isMatch) + { + throw new AppFriendlyException("库位与载具规格不匹配", 500); + } + ePoint = await _db.Queryable().FirstAsync(it => it.location_id == endLocations[0].id); } @@ -85,32 +89,38 @@ namespace Tnb.WarehouseMgr if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + List points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + if (points.Count <= 2) { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + throw new AppFriendlyException("该路径不存在", 500); + } - WmsPretaskH preTask = new(); - preTask.org_id = _userManager.User.OrganizeId; - preTask.startlocation_id = sPoint?.location_id!; - preTask.startlocation_code = sPoint?.location_code!; - preTask.endlocation_id = ePoint?.location_id!; - preTask.endlocation_code = ePoint?.location_code!; - preTask.start_floor = sPoint?.floor.ToString(); - preTask.end_floor = ePoint?.floor.ToString(); - preTask.startpoint_id = sPoint?.id!; - preTask.startpoint_code = sPoint?.point_code!; - preTask.endpoint_id = ePoint?.id!; - preTask.endpoint_code = ePoint?.point_code!; - preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); - preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; - preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSEMPTYINSTOCK_ID; - preTask.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID; + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); + + WmsPretaskH preTask = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = sPoint?.location_id!, + startlocation_code = sPoint?.location_code!, + endlocation_id = ePoint?.location_id!, + endlocation_code = ePoint?.location_code!, + start_floor = sPoint?.floor.ToString(), + end_floor = ePoint?.floor.ToString(), + startpoint_id = sPoint?.id!, + startpoint_code = sPoint?.point_code!, + endpoint_id = ePoint?.id!, + endpoint_code = ePoint?.point_code!, + bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(), + status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID, + biz_type = WmsWareHouseConst.BIZTYPE_WMSEMPTYINSTOCK_ID, + task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID + }; preTask.carry_id = input.data[nameof(preTask.carry_id)]?.ToString()!; preTask.carry_code = input.data[nameof(preTask.carry_code)]?.ToString()!; preTask.area_id = sPoint?.area_id!; @@ -121,32 +131,36 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks, null!); + bool isOk = await _wareHouseService.GenPreTask(preTasks, null!); if (isOk) { - var preTaskUpInput = new GenPreTaskUpInput(); - preTaskUpInput.RquireId = input.data["ReturnIdentity"].ToString()!; - preTaskUpInput.CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!; - preTaskUpInput.CarryStartLocationId = points.FirstOrDefault()!.location_id!; - preTaskUpInput.CarryStartLocationCode = points.FirstOrDefault()!.location_code!; - preTaskUpInput.LocationIds = points.Select(x => x.location_id).ToList()!; - preTaskUpInput.PreTaskRecords = preTasks.Adapt>(); + GenPreTaskUpInput preTaskUpInput = new() + { + RquireId = input.data["ReturnIdentity"].ToString()!, + CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!, + CarryStartLocationId = points.FirstOrDefault()!.location_id!, + CarryStartLocationCode = points.FirstOrDefault()!.location_code!, + LocationIds = points.Select(x => x.location_id).ToList()!, + PreTaskRecords = preTasks.Adapt>() + }; preTaskUpInput.PreTaskRecords.ForEach(x => x.id = SnowflakeIdHelper.NextId()); - WmsHandleH handleH = new(); - handleH.org_id = _userManager.User.OrganizeId; - handleH.startlocation_id = input.data[nameof(WmsPointH.location_id)]?.ToString()!; - handleH.endlocation_id = endLocations![0].id; - handleH.bill_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!; - handleH.biz_type = input.data[nameof(WmsHandleH.biz_type)]?.ToString()!; - handleH.carry_id = input.data[nameof(WmsHandleH.carry_id)]?.ToString()!; - handleH.carry_code = input.data[nameof(WmsHandleH.carry_code)]?.ToString()!; - handleH.require_id = input.data["ReturnIdentity"].ToString(); - handleH.require_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!; - handleH.create_id = _userManager.UserId; - handleH.create_time = DateTime.Now; + WmsHandleH handleH = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = input.data[nameof(WmsPointH.location_id)]?.ToString()!, + endlocation_id = endLocations![0].id, + bill_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!, + biz_type = input.data[nameof(WmsHandleH.biz_type)]?.ToString()!, + carry_id = input.data[nameof(WmsHandleH.carry_id)]?.ToString()!, + carry_code = input.data[nameof(WmsHandleH.carry_code)]?.ToString()!, + require_id = input.data["ReturnIdentity"].ToString(), + require_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!, + create_id = _userManager.UserId, + create_time = DateTime.Now + }; preTaskUpInput.PreTaskRecord = handleH; //根据空载具入库Id,回更单据状态 - await _db.Updateable().SetColumns(it => new WmsEmptyInstock { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsEmptyInstock { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, it => new WmsCarryH { is_lock = 1, location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode }, it => new BasLocation { is_lock = 1 }); @@ -171,9 +185,16 @@ namespace Tnb.WarehouseMgr public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); - var isOk = await _db.Updateable().SetColumns(it => new WmsEmptyInstock { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + bool isOk = await _db.Updateable().SetColumns(it => new WmsEmptyInstock { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs index 51381f57..5317bcc1 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs @@ -67,11 +67,11 @@ namespace Tnb.WarehouseMgr await _runService.Create(templateEntity, input); //判断目标库位是否自动签收 - var loc = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString()); + BasLocation loc = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString()); //出库取起点,获取所有符合输入的载具规格的载具 - var setQty = await _db.Queryable().FirstAsync(it => it.bill_code == input.data[nameof(WmsEmptyOutstockH.bill_code)].ToString()); - var carrys = await _db.Queryable().LeftJoin((a, b) => a.location_id == b.id) + WmsEmptyOutstockH setQty = await _db.Queryable().FirstAsync(it => it.bill_code == input.data[nameof(WmsEmptyOutstockH.bill_code)].ToString()); + List? carrys = await _db.Queryable().LeftJoin((a, b) => a.location_id == b.id) .Where((a, b) => a.carrystd_id == input.data[nameof(WmsEmptyOutstockH.carrystd_id)].ToString() && a.carry_status == ((int)EnumCarryStatus.空闲).ToString() && a.is_lock == 0 && b.is_lock == 0 && b.is_type == ((int)EnumLocationType.存储库位).ToString()) .ToListAsync(); @@ -83,26 +83,32 @@ namespace Tnb.WarehouseMgr ePoint = await _db.Queryable().FirstAsync(it => it.location_id == input.data[nameof(WmsPointH.location_id)].ToString()); } int i = 0; - var isOk = false; + bool isOk = false; //根据每个载具的起始库位做路径运算 for (i = 0; i < setQty.qty; i++) { if (carrys?.Count > 0) + { sPoint = await _db.Queryable().FirstAsync(it => it.location_id == carrys[i].location_id); + } if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + List? points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + if (points.Count <= 2) { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + throw new AppFriendlyException("该路径不存在", 500); + } + + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); //生成预任务 WmsPretaskH preTask = new() { @@ -165,7 +171,7 @@ namespace Tnb.WarehouseMgr create_id = _userManager.UserId, create_time = DateTime.Now }; - await _db.Insertable(wmsEmptyOutstockD) + _ = await _db.Insertable(wmsEmptyOutstockD) .ExecuteCommandAsync(); //生成操作记录表 @@ -185,7 +191,7 @@ namespace Tnb.WarehouseMgr }; preTaskUpInput.PreTaskRecord = handleH; //根据空载具出库Id,回更单据状态 - await _db.Updateable().SetColumns(it => new WmsEmptyOutstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsEmptyOutstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, it => new WmsCarryH { is_lock = 1, location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode }, @@ -213,20 +219,27 @@ namespace Tnb.WarehouseMgr public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } //根据载具更新明细表状态 try { await _db.Ado.BeginTranAsync(); - var isOk = await _db.Updateable().SetColumns(it => new WmsEmptyOutstockD { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.bill_id == input.requireId && input.carryIds.Contains(it.carry_id)).ExecuteCommandHasChangeAsync(); + bool isOk = await _db.Updateable().SetColumns(it => new WmsEmptyOutstockD { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.bill_id == input.requireId && input.carryIds.Contains(it.carry_id)).ExecuteCommandHasChangeAsync(); - var emptyCarrys = await _db.Queryable().Where(it => it.bill_id == input.requireId).ToListAsync(); + List emptyCarrys = await _db.Queryable().Where(it => it.bill_id == input.requireId).ToListAsync(); // 判断所有明细是否都完成 if (emptyCarrys?.Count > 0 && emptyCarrys.All(x => x.status == WmsWareHouseConst.BILLSTATUS_COMPLETE_ID)) { - await _db.Updateable().SetColumns(it => new WmsEmptyOutstockH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsEmptyOutstockH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); } - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } + await _db.Ado.CommitTranAsync(); } catch (Exception) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAExceptionCancelService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAExceptionCancelService.cs index 0c64a0ca..93e3db72 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAExceptionCancelService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAExceptionCancelService.cs @@ -49,25 +49,25 @@ namespace Tnb.WarehouseMgr if (input.data.ContainsKey(nameof(WmsDistaskH.bill_code))) { //更新任务执行状态 已取消 - await _db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID }).Where(it => it.bill_code == input.data[nameof(WmsDistaskH.bill_code)].ToString()).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID }).Where(it => it.bill_code == input.data[nameof(WmsDistaskH.bill_code)].ToString()).ExecuteCommandAsync(); } if (input.data.ContainsKey(nameof(WmsDistaskH.pretask_id))) { //预任务取消 - await _db.Updateable().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID }).Where(it => it.id == input.data[nameof(WmsDistaskH.pretask_id)].ToString()).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID }).Where(it => it.id == input.data[nameof(WmsDistaskH.pretask_id)].ToString()).ExecuteCommandAsync(); } if (input.data.ContainsKey(nameof(WmsDistaskH.carry_id))) { //载具解锁 - await _db.Updateable().SetColumns(it => new WmsCarryH { is_lock = 0 }).Where(it => it.id == input.data[nameof(WmsDistaskH.carry_id)].ToString()).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsCarryH { is_lock = 0 }).Where(it => it.id == input.data[nameof(WmsDistaskH.carry_id)].ToString()).ExecuteCommandAsync(); } if (input.data.ContainsKey(nameof(WmsDistaskH.startlocation_id)) && input.data.ContainsKey(nameof(WmsDistaskH.endlocation_id))) { //所有库位解锁 - var ids = new[] { input.data[nameof(WmsDistaskH.startlocation_id)]?.ToString(), input.data[nameof(WmsDistaskH.endlocation_id)]?.ToString() }; - await _db.Updateable().SetColumns(it => new BasLocation { is_lock = 0 }).Where(it => ids.Contains(it.id)).ExecuteCommandAsync(); + string?[] ids = new[] { input.data[nameof(WmsDistaskH.startlocation_id)]?.ToString(), input.data[nameof(WmsDistaskH.endlocation_id)]?.ToString() }; + _ = await _db.Updateable().SetColumns(it => new BasLocation { is_lock = 0 }).Where(it => ids.Contains(it.id)).ExecuteCommandAsync(); } await _db.Ado.CommitTranAsync(); } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAExceptionCompleteService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAExceptionCompleteService.cs index 6a260a36..d9b388c1 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAExceptionCompleteService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAExceptionCompleteService.cs @@ -45,7 +45,7 @@ namespace Tnb.WarehouseMgr try { await _db.Ado.BeginTranAsync(); - var taskCompleUpInput = new TaskCompleUpInput(); + TaskCompleUpInput taskCompleUpInput = new(); List list = new(); if (input.data.ContainsKey(nameof(WmsDistaskH.id))) { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAExceptionReexcuteService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAExceptionReexcuteService.cs index 5fa02e04..474d9258 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAExceptionReexcuteService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAExceptionReexcuteService.cs @@ -44,7 +44,7 @@ namespace Tnb.WarehouseMgr try { await _db.Ado.BeginTranAsync(); - var items = await _db.Queryable().FirstAsync(it => it.id == input.data[nameof(WmsDistaskH.id)].ToString()); + WmsDistaskH items = await _db.Queryable().FirstAsync(it => it.id == input.data[nameof(WmsDistaskH.id)].ToString()); //items.agreement //获取任务的协议,进行重新下发 await _db.Ado.CommitTranAsync(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAFeedingService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAFeedingService.cs index 95adfc5b..9d9a9b58 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAFeedingService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAFeedingService.cs @@ -57,7 +57,7 @@ namespace Tnb.WarehouseMgr private async Task WmsPDAFeedingRecord(VisualDevModelDataCrInput input) { - var isOk = false; + bool isOk = false; try { await _db.Ado.BeginTranAsync(); @@ -65,12 +65,12 @@ namespace Tnb.WarehouseMgr VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSFEEDINGRECORDPDA_ID, true); await _runService.Create(templateEntity, input); - var carryId = input.data.ContainsKey("carry_id") ? input.data["carry_id"]?.ToString() : ""; - var feedBoxCode = input.data.ContainsKey("feedbox_code") ? input.data["feedbox_code"]?.ToString() : ""; - var carry = await _db.Queryable().SingleAsync(it => it.id == carryId); - var feedBox = await _db.Queryable().SingleAsync(it => it.feedbox_code == feedBoxCode); - var carryMaterial = await _db.Queryable().FirstAsync(it => it.carry_id == carryId); - var carryCodes = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); + string? carryId = input.data.ContainsKey("carry_id") ? input.data["carry_id"]?.ToString() : ""; + string? feedBoxCode = input.data.ContainsKey("feedbox_code") ? input.data["feedbox_code"]?.ToString() : ""; + WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.id == carryId); + WmsFeedbox? feedBox = await _db.Queryable().SingleAsync(it => it.feedbox_code == feedBoxCode); + WmsCarryMat? carryMaterial = await _db.Queryable().FirstAsync(it => it.carry_id == carryId); + List carryCodes = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); if (carryMaterial != null && feedBox != null && carry != null) { //更新投料箱 @@ -80,7 +80,7 @@ namespace Tnb.WarehouseMgr feedBox.batch = carryMaterial?.code_batch!; feedBox.modify_id = _userManager.UserId; feedBox.modify_time = DateTime.Now; - var row = await _db.Updateable(feedBox) + int row = await _db.Updateable(feedBox) .UpdateColumns(it => new { it.material_id, @@ -92,8 +92,11 @@ namespace Tnb.WarehouseMgr }).ExecuteCommandAsync(); //更新载具 row = await _carryService.UpdateNullCarry(carry).Unwrap(); - isOk = (row > 0); - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + isOk = row > 0; + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } } else { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs index 560da974..b3071f86 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs @@ -75,8 +75,8 @@ namespace Tnb.WarehouseMgr } //入库取终点 //出库起点 - var inStockStrategyInput = new InStockStrategyQuery { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString()!, Size = 1 }; - var endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); + InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString()!, Size = 1 }; + List endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); WmsPointH sPoint = null!; WmsPointH ePoint = null!; if (input.data.ContainsKey(nameof(WmsHandleH.startlocation_id))) @@ -85,24 +85,32 @@ namespace Tnb.WarehouseMgr } if (endLocations?.Count > 0) { - var carry = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsCarryD.carry_id)].ToString()); - var loc = await _db.Queryable().SingleAsync(it => it.id == endLocations[0].id); - var isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); - if (!isMatch) throw new AppFriendlyException("库位与载具规格不匹配", 500); + WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsCarryD.carry_id)].ToString()); + BasLocation loc = await _db.Queryable().SingleAsync(it => it.id == endLocations[0].id); + bool isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); + if (!isMatch) + { + throw new AppFriendlyException("库位与载具规格不匹配", 500); + } + ePoint = await _db.Queryable().FirstAsync(it => it.location_id == endLocations[0].id); } if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + List? points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) - if (points?.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); + if (points?.Count <= 2) + { + throw new AppFriendlyException("该路径不存在", 500); + } + if (points?.Count > 0) { - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); WmsPretaskH preTask = new() { @@ -137,13 +145,13 @@ namespace Tnb.WarehouseMgr }).ToList(); //生成预任务条码信息 List pretaskCodes = new(); - foreach (var pt in preTasks) + foreach (WmsPretaskH? pt in preTasks) { if (jArr?.Children().Count() > 0) { - foreach (var jo in jArr.Children()) + foreach (JToken jo in jArr.Children()) { - var ptc = pt.Adapt(); + WmsPretaskCode ptc = pt.Adapt(); ptc.id = SnowflakeIdHelper.NextId(); ptc.bill_id = pt.id; ptc.material_id = jo.Value(nameof(WmsPretaskCode.material_id))!; @@ -158,25 +166,27 @@ namespace Tnb.WarehouseMgr } //生成预任务,同时如果包含条码信息同时插入条码记录 - var isOk = await _wareHouseService.GenPreTask(preTasks, pretaskCodes); + bool isOk = await _wareHouseService.GenPreTask(preTasks, pretaskCodes); if (isOk) { - var requireIdField = "require_id"; + string requireIdField = "require_id"; - var preTaskUpInput = new GenPreTaskUpInput(); - preTaskUpInput.RquireId = input.data[nameof(WmsHandleH.require_id)].ToString()!; - preTaskUpInput.CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!; - preTaskUpInput.CarryStartLocationId = points.FirstOrDefault()!.location_id!; - preTaskUpInput.CarryStartLocationCode = points.FirstOrDefault()!.location_code!; - preTaskUpInput.LocationIds = points.Select(x => x.location_id).ToList()!; + GenPreTaskUpInput preTaskUpInput = new() + { + RquireId = input.data[nameof(WmsHandleH.require_id)].ToString()!, + CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!, + CarryStartLocationId = points.FirstOrDefault()!.location_id!, + CarryStartLocationCode = points.FirstOrDefault()!.location_code!, + LocationIds = points.Select(x => x.location_id).ToList()! + }; if (input.data.ContainsKey(requireIdField) && input.data[requireIdField].IsNotEmptyOrNull()) { //创建预任务操作记录 - var operBillId = string.Empty; - var instockH = await _db.Queryable().FirstAsync(it => it.id == input.data[requireIdField].ToString()); + string operBillId = string.Empty; + WmsInstockH instockH = await _db.Queryable().FirstAsync(it => it.id == input.data[requireIdField].ToString()); if (instockH != null) { - var handleH = instockH.Adapt(); + WmsHandleH handleH = instockH.Adapt(); operBillId = handleH.id = SnowflakeIdHelper.NextId(); handleH.startlocation_id = input.data[nameof(WmsHandleH.startlocation_id)]?.ToString()!; handleH.carry_id = input.data[nameof(WmsHandleH.carry_id)]?.ToString()!; @@ -187,25 +197,27 @@ namespace Tnb.WarehouseMgr jArr = JArray.Parse(input.data["tablefield115"].ToString()!); if (jArr?.Children().Count() > 0) { - foreach (var jo in jArr.Children()) + foreach (JToken jo in jArr.Children()) { - var materialId = jo.Value(nameof(WmsHandleCode.material_id)); - WmsHandleCode handleCode = new(); - handleCode.org_id = _userManager.User.OrganizeId; - handleCode.bill_id = operBillId; - handleCode.material_id = materialId!; - handleCode.material_code = jo.Value(nameof(WmsHandleCode.material_code))!; - handleCode.barcode = jo.Value(nameof(WmsHandleCode.barcode))!; - handleCode.code_batch = jo.Value(nameof(WmsHandleCode.code_batch)); - handleCode.codeqty = jo.Value(nameof(WmsHandleCode.codeqty)); - handleCode.unit_id = _db.Queryable().Single(it => it.id == materialId).unit_id; - handleCode.create_id = _userManager.UserId; - handleCode.create_time = DateTime.Now; + string? materialId = jo.Value(nameof(WmsHandleCode.material_id)); + WmsHandleCode handleCode = new() + { + org_id = _userManager.User.OrganizeId, + bill_id = operBillId, + material_id = materialId!, + material_code = jo.Value(nameof(WmsHandleCode.material_code))!, + barcode = jo.Value(nameof(WmsHandleCode.barcode))!, + code_batch = jo.Value(nameof(WmsHandleCode.code_batch)), + codeqty = jo.Value(nameof(WmsHandleCode.codeqty)), + unit_id = _db.Queryable().Single(it => it.id == materialId).unit_id, + create_id = _userManager.UserId, + create_time = DateTime.Now + }; preTaskUpInput.PreTaskHandleCodes.Add(handleCode); } } //生成载具条码记录 - var carryCodes = preTaskUpInput.PreTaskHandleCodes.Adapt>(); + List carryCodes = preTaskUpInput.PreTaskHandleCodes.Adapt>(); carryCodes.ForEach(x => { @@ -215,25 +227,25 @@ namespace Tnb.WarehouseMgr x.warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString(); }); //生成入库申请条码 - var instockDetails = await _db.Queryable() + List instockDetails = await _db.Queryable() .Where(b => b.bill_id == input.data[requireIdField].ToString()) .ToListAsync(); - var items = instockDetails.Adapt>(); + List items = instockDetails.Adapt>(); //items.ForEach(it => it.org_id = _userManager.User.OrganizeId); List instockCOdes = new(); jArr = JArray.Parse(input.data["tablefield115"].ToString()!); if (jArr?.Children().Count() > 0) { - foreach (var jo in jArr.Children()) + foreach (JToken jo in jArr.Children()) { - var materialCode = jo.Value(nameof(WmsInstockCode.material_code)); - var codeBatch = jo.Value(nameof(WmsInstockCode.code_batch)); - var b = items.Find(x => x.material_code == materialCode && x.code_batch == codeBatch); + string? materialCode = jo.Value(nameof(WmsInstockCode.material_code)); + string? codeBatch = jo.Value(nameof(WmsInstockCode.code_batch)); + WmsInstockCode? b = items.Find(x => x.material_code == materialCode && x.code_batch == codeBatch); if (b != null) { - var c = DeepCopyHelper.DeepCopy(b); + WmsInstockCode c = DeepCopyHelper.DeepCopy(b); c.id = SnowflakeIdHelper.NextId(); c.bill_d_id = b.id; c.barcode = jo.Value(nameof(WmsInstockCode.barcode))!; @@ -242,18 +254,18 @@ namespace Tnb.WarehouseMgr } } } - var orgId = _userManager.User.OrganizeId; - await _db.Insertable(carryCodes).ExecuteCommandAsync(); - await _db.Insertable(instockCOdes).CallEntityMethod(it => it.Create(orgId)).ExecuteCommandAsync(); + string orgId = _userManager.User.OrganizeId; + _ = await _db.Insertable(carryCodes).ExecuteCommandAsync(); + _ = await _db.Insertable(instockCOdes).CallEntityMethod(it => it.Create(orgId)).ExecuteCommandAsync(); // 更新临时条码表 状态is_end - await _db.Updateable().SetColumns(it => new WmsTempCode { is_end = 1 }).Where(it => instockCOdes.Select(x => x.barcode).Contains(it.barcode)).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsTempCode { is_end = 1 }).Where(it => instockCOdes.Select(x => x.barcode).Contains(it.barcode)).ExecuteCommandAsync(); await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, it => new WmsCarryH { carry_code = input.data[nameof(WmsCarryH.carry_code)].ToString()!, is_lock = 1, carry_status = ((int)EnumCarryStatus.占用).ToString(), location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode, source_id = input.data[nameof(WmsOutstockH.source_id)].ToString(), source_code = input.data[nameof(WmsOutstockH.source_code)].ToString() }, it => new BasLocation { is_lock = 1, is_use = ((int)EnumCarryStatus.占用).ToString() }); if (instockCOdes?.Count > 0) { - await _db.Updateable().SetColumns(it => new WmsInstockD { line_status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => instockCOdes.Select(x => x.bill_d_id).Contains(it.id)).ExecuteCommandAsync(); - await _db.Updateable().SetColumns(it => new WmsInstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == input.data[nameof(WmsHandleH.require_id)].ToString()).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsInstockD { line_status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => instockCOdes.Select(x => x.bill_d_id).Contains(it.id)).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsInstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == input.data[nameof(WmsHandleH.require_id)].ToString()).ExecuteCommandAsync(); } } } @@ -276,7 +288,10 @@ namespace Tnb.WarehouseMgr public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException("input"); + if (input == null) + { + throw new ArgumentNullException("input"); + } //更具distaskCode的barcode 更新 instockcode 的 is_end 为 1 try { @@ -284,18 +299,18 @@ namespace Tnb.WarehouseMgr if (input.distaskCodes?.Count > 0) { - var barCodes = input.distaskCodes.Select(x => x.barcode); - await _db.Updateable().SetColumns(it => new WmsInstockCode { is_end = 1 }).Where(it => barCodes.Contains(it.barcode)).ExecuteCommandAsync(); + IEnumerable barCodes = input.distaskCodes.Select(x => x.barcode); + _ = await _db.Updateable().SetColumns(it => new WmsInstockCode { is_end = 1 }).Where(it => barCodes.Contains(it.barcode)).ExecuteCommandAsync(); var instockCodes = await _db.Queryable().Where(it => barCodes.Contains(it.barcode)).Select(it => new { id = it.bill_d_id, barcode_qty = it.codeqty, }).ToListAsync(); - var dic = instockCodes.GroupBy(g => g.id).ToDictionary(x => x.Key, x => x.Select(d => d.barcode_qty).ToList()); - var ids = instockCodes.Select(it => it.id).ToList(); - var instockDetails = await _db.Queryable().Where(it => ids.Contains(it.id)).ToListAsync(); + Dictionary> dic = instockCodes.GroupBy(g => g.id).ToDictionary(x => x.Key, x => x.Select(d => d.barcode_qty).ToList()); + List ids = instockCodes.Select(it => it.id).ToList(); + List instockDetails = await _db.Queryable().Where(it => ids.Contains(it.id)).ToListAsync(); - foreach (var item in instockDetails) + foreach (WmsInstockD item in instockDetails) { if (dic.ContainsKey(item.id)) { @@ -306,11 +321,11 @@ namespace Tnb.WarehouseMgr } } } - await _db.Updateable(instockDetails).ExecuteCommandAsync(); - var allInstockDetails = await _db.Queryable().Where(it => it.bill_id == input.requireId).ToListAsync(); + _ = await _db.Updateable(instockDetails).ExecuteCommandAsync(); + List allInstockDetails = await _db.Queryable().Where(it => it.bill_id == input.requireId).ToListAsync(); if (allInstockDetails.All(x => x.line_status == WmsWareHouseConst.BILLSTATUS_COMPLETE_ID)) { - await _db.Updateable().SetColumns(it => new WmsInstockH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsInstockH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); //如果是自动单据,需要回更上层系统 } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInbaleService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInbaleService.cs index 48aa70fa..9f5ff757 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInbaleService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInbaleService.cs @@ -64,9 +64,9 @@ namespace Tnb.WarehouseMgr //VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSINBALEINSTKPDA_ID, true); //await _runService.Create(templateEntity, input); //入库取终点 //出库起点 - var inStockStrategyInput = new InStockStrategyQuery { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString()!, Size = 1 }; - var inbaleItem = await _db.Queryable().SingleAsync(it => it.bill_code == input.data[nameof(WmsInbale.bill_code)].ToString()); - var endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); + InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString()!, Size = 1 }; + WmsInbale inbaleItem = await _db.Queryable().SingleAsync(it => it.bill_code == input.data[nameof(WmsInbale.bill_code)].ToString()); + List endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); WmsPointH? sPoint = null; WmsPointH? ePoint = null; if (input.data.ContainsKey(nameof(WmsPointH.location_id))) @@ -75,41 +75,51 @@ namespace Tnb.WarehouseMgr } if (endLocations?.Count > 0) { - var carry = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsCarryD.carry_id)].ToString()); - var loc = await _db.Queryable().SingleAsync(it => it.id == endLocations[0].id); - var isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); - if (!isMatch) throw new AppFriendlyException("库位与载具规格不匹配", 500); + WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsCarryD.carry_id)].ToString()); + BasLocation loc = await _db.Queryable().SingleAsync(it => it.id == endLocations[0].id); + bool isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); + if (!isMatch) + { + throw new AppFriendlyException("库位与载具规格不匹配", 500); + } + ePoint = await _db.Queryable().FirstAsync(it => it.location_id == endLocations[0].id); } if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + List points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + if (points.Count <= 2) { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + throw new AppFriendlyException("该路径不存在", 500); + } - WmsPretaskH preTask = new(); - preTask.org_id = _userManager.User.OrganizeId; - preTask.startlocation_id = sPoint?.location_id!; - preTask.startlocation_code = sPoint?.location_code!; - preTask.endlocation_id = ePoint?.location_id!; - preTask.endlocation_code = ePoint?.location_code!; - preTask.start_floor = sPoint?.floor.ToString(); - preTask.end_floor = ePoint?.floor.ToString(); - preTask.startpoint_id = sPoint?.id!; - preTask.startpoint_code = sPoint?.point_code!; - preTask.endpoint_id = ePoint?.id!; - preTask.endpoint_code = ePoint?.point_code!; - preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); - preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; - preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSINBALE_ID; - preTask.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID; + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); + + WmsPretaskH preTask = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = sPoint?.location_id!, + startlocation_code = sPoint?.location_code!, + endlocation_id = ePoint?.location_id!, + endlocation_code = ePoint?.location_code!, + start_floor = sPoint?.floor.ToString(), + end_floor = ePoint?.floor.ToString(), + startpoint_id = sPoint?.id!, + startpoint_code = sPoint?.point_code!, + endpoint_id = ePoint?.id!, + endpoint_code = ePoint?.point_code!, + bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(), + status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID, + biz_type = WmsWareHouseConst.BIZTYPE_WMSINBALE_ID, + task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID + }; preTask.carry_id = input.data[nameof(preTask.carry_id)]?.ToString()!; preTask.carry_code = input.data[nameof(preTask.carry_code)]?.ToString()!; preTask.area_id = sPoint?.area_id!; @@ -120,33 +130,37 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks, null!); + bool isOk = await _wareHouseService.GenPreTask(preTasks, null!); if (isOk) { - var preTaskUpInput = new GenPreTaskUpInput(); - preTaskUpInput.RquireId = inbaleItem.id; - preTaskUpInput.CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!; - preTaskUpInput.CarryStartLocationId = points.FirstOrDefault()!.location_id!; - preTaskUpInput.CarryStartLocationCode = points.FirstOrDefault()!.location_code!; - preTaskUpInput.LocationIds = points.Select(x => x.location_id).ToList()!; + GenPreTaskUpInput preTaskUpInput = new() + { + RquireId = inbaleItem.id, + CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!, + CarryStartLocationId = points.FirstOrDefault()!.location_id!, + CarryStartLocationCode = points.FirstOrDefault()!.location_code!, + LocationIds = points.Select(x => x.location_id).ToList()! + }; - WmsHandleH handleH = new(); - handleH.org_id = _userManager.User.OrganizeId; - handleH.startlocation_id = input.data[nameof(WmsPointH.location_id)]?.ToString()!; - handleH.endlocation_id = endLocations![0].id!; - handleH.bill_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!; - handleH.biz_type = input.data[nameof(WmsHandleH.biz_type)]?.ToString()!; - handleH.carry_id = input.data[nameof(WmsHandleH.carry_id)]?.ToString()!; - handleH.carry_code = input.data[nameof(WmsHandleH.carry_code)]?.ToString()!; - handleH.require_id = inbaleItem.id; - handleH.require_code = inbaleItem.bill_code; - handleH.create_id = _userManager.UserId; - handleH.create_time = DateTime.Now; + WmsHandleH handleH = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = input.data[nameof(WmsPointH.location_id)]?.ToString()!, + endlocation_id = endLocations![0].id!, + bill_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!, + biz_type = input.data[nameof(WmsHandleH.biz_type)]?.ToString()!, + carry_id = input.data[nameof(WmsHandleH.carry_id)]?.ToString()!, + carry_code = input.data[nameof(WmsHandleH.carry_code)]?.ToString()!, + require_id = inbaleItem.id, + require_code = inbaleItem.bill_code, + create_id = _userManager.UserId, + create_time = DateTime.Now + }; preTaskUpInput.PreTaskRecord = handleH; //根据载具移入Id,回更单据状态 - await _db.Updateable().SetColumns(it => new WmsInbale { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsInbale { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); - var baleNum = input.data[nameof(WmsCarryH.bale_num)]?.ToString(); + string? baleNum = input.data[nameof(WmsCarryH.bale_num)]?.ToString(); await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, it => new WmsCarryH { is_lock = 1, location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode, carry_status = ((int)EnumCarryStatus.寄存).ToString(), bale_num = baleNum }, it => new BasLocation { is_lock = 1 }); @@ -171,9 +185,16 @@ namespace Tnb.WarehouseMgr public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); - var row = await _db.Updateable().SetColumns(it => new WmsInbale { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); - if (row < 1) throw Oops.Oh(ErrorCode.COM1001); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + int row = await _db.Updateable().SetColumns(it => new WmsInbale { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); + if (row < 1) + { + throw Oops.Oh(ErrorCode.COM1001); + } } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAOutBaleServiceService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAOutBaleServiceService.cs index f5503d9b..c0bac3be 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAOutBaleServiceService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAOutBaleServiceService.cs @@ -64,7 +64,7 @@ namespace Tnb.WarehouseMgr VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSOUTBALEPDA_ID, true); await _runService.Create(templateEntity, input); //出库取起点 - var carry = await _db.Queryable().FirstAsync(it => it.id == input.data[nameof(WmsOutbale.carry_id)].ToString()); + WmsCarryH carry = await _db.Queryable().FirstAsync(it => it.id == input.data[nameof(WmsOutbale.carry_id)].ToString()); WmsPointH? sPoint = null; WmsPointH? ePoint = null; if (input.data.ContainsKey(nameof(WmsPointH.location_id))) @@ -78,33 +78,39 @@ namespace Tnb.WarehouseMgr if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + List points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + if (points.Count <= 2) { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + throw new AppFriendlyException("该路径不存在", 500); + } - WmsPretaskH preTask = new(); - preTask.org_id = _userManager.User.OrganizeId; - preTask.startlocation_id = sPoint?.location_id!; - preTask.startlocation_code = sPoint?.location_code!; - preTask.endlocation_id = ePoint?.location_id!; - preTask.endlocation_code = ePoint?.location_code!; - preTask.start_floor = sPoint?.floor.ToString(); - preTask.end_floor = ePoint?.floor.ToString(); - preTask.startpoint_id = sPoint?.id!; - preTask.startpoint_code = sPoint?.point_code!; - preTask.endpoint_id = ePoint?.id!; - preTask.endpoint_code = ePoint?.point_code!; - preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); - preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; - preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSOUTBALE_ID; - preTask.task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID; + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); + + WmsPretaskH preTask = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = sPoint?.location_id!, + startlocation_code = sPoint?.location_code!, + endlocation_id = ePoint?.location_id!, + endlocation_code = ePoint?.location_code!, + start_floor = sPoint?.floor.ToString(), + end_floor = ePoint?.floor.ToString(), + startpoint_id = sPoint?.id!, + startpoint_code = sPoint?.point_code!, + endpoint_id = ePoint?.id!, + endpoint_code = ePoint?.point_code!, + bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(), + status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID, + biz_type = WmsWareHouseConst.BIZTYPE_WMSOUTBALE_ID, + task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID + }; preTask.carry_id = input.data[nameof(preTask.carry_id)]?.ToString()!; preTask.carry_code = input.data[nameof(preTask.carry_code)]?.ToString()!; preTask.area_id = sPoint?.area_id!; @@ -116,25 +122,27 @@ namespace Tnb.WarehouseMgr return preTask; }).ToList(); //判断目标库位是否自动签收 - var loc = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString()); + BasLocation loc = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString()); if (loc.is_sign == 0) { preTasks[^1].is_sign = 0; // 修改最后一个元素的是否签收值 } - var isOk = await _wareHouseService.GenPreTask(preTasks, null!); + bool isOk = await _wareHouseService.GenPreTask(preTasks, null!); if (isOk) { - var preTaskUpInput = new GenPreTaskUpInput(); - preTaskUpInput.RquireId = input.data["ReturnIdentity"].ToString()!; - preTaskUpInput.CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!; - preTaskUpInput.CarryStartLocationId = points.FirstOrDefault()!.location_id!; - preTaskUpInput.CarryStartLocationCode = points.FirstOrDefault()!.location_code!; - preTaskUpInput.LocationIds = points.Select(x => x.location_id).ToList()!; + GenPreTaskUpInput preTaskUpInput = new() + { + RquireId = input.data["ReturnIdentity"].ToString()!, + CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!, + CarryStartLocationId = points.FirstOrDefault()!.location_id!, + CarryStartLocationCode = points.FirstOrDefault()!.location_code!, + LocationIds = points.Select(x => x.location_id).ToList()!, - preTaskUpInput.PreTaskRecords = preTasks.Adapt>(); + PreTaskRecords = preTasks.Adapt>() + }; preTaskUpInput.PreTaskRecords.ForEach(x => x.id = SnowflakeIdHelper.NextId()); //根据寄存出库Id,回更单据状态 - await _db.Updateable().SetColumns(it => new WmsOutbale { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsOutbale { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, it => new WmsCarryH { is_lock = 1, location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode }, @@ -161,9 +169,16 @@ namespace Tnb.WarehouseMgr public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); - var isOk = await _db.Updateable().SetColumns(it => new WmsOutbale { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + bool isOk = await _db.Updateable().SetColumns(it => new WmsOutbale { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs index 06855e5c..62966689 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs @@ -57,15 +57,30 @@ namespace Tnb.WarehouseMgr try { await _db.Ado.BeginTranAsync(); - var item = input.data.Adapt(); - if (item.codeqty == 0) throw new AppFriendlyException("请输入入库数量", 500); - var carryCode = item.barcode; - var carry = await _db.Queryable().FirstAsync(it => it.carry_code == carryCode); - if (carry == null) throw new AppFriendlyException("载具有误", 500); - var mat = await _db.Queryable().FirstAsync(it => it.code == item.material_code); - if (mat == null) throw new AppFriendlyException("物料有误", 500); - var loc = await _db.Queryable().FirstAsync(it => it.location_code == item.extras); - if (loc == null) throw new AppFriendlyException("库位有误", 500); + WmsInstockCode item = input.data.Adapt(); + if (item.codeqty == 0) + { + throw new AppFriendlyException("请输入入库数量", 500); + } + + string carryCode = item.barcode; + WmsCarryH carry = await _db.Queryable().FirstAsync(it => it.carry_code == carryCode); + if (carry == null) + { + throw new AppFriendlyException("载具有误", 500); + } + + BasMaterial mat = await _db.Queryable().FirstAsync(it => it.code == item.material_code); + if (mat == null) + { + throw new AppFriendlyException("物料有误", 500); + } + + BasLocation loc = await _db.Queryable().FirstAsync(it => it.location_code == item.extras); + if (loc == null) + { + throw new AppFriendlyException("库位有误", 500); + } WmsInstockH instock = new() { @@ -123,65 +138,74 @@ namespace Tnb.WarehouseMgr create_time = DateTime.Now, }; - await _db.Insertable(instock).ExecuteCommandAsync(); - await _db.Insertable(instockD).ExecuteCommandAsync(); - await _db.Insertable(instockCode).ExecuteCommandAsync(); + _ = await _db.Insertable(instock).ExecuteCommandAsync(); + _ = await _db.Insertable(instockD).ExecuteCommandAsync(); + _ = await _db.Insertable(instockCode).ExecuteCommandAsync(); - var inStockStrategyInput = new InStockStrategyQuery { warehouse_id = "26103372441637", Size = 1 }; - var endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); + InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = "26103372441637", Size = 1 }; + List endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); WmsPointH sPoint = new(); WmsPointH ePoint = new(); if (endLocations?.Count > 0) { - var eloc = await _db.Queryable().SingleAsync(it => it.id == endLocations[0].id); - var isMatch = await IsCarryAndLocationMatchByCarryStd(carry, eloc); - if (!isMatch) throw new AppFriendlyException("库位与载具规格不匹配", 500); + BasLocation eloc = await _db.Queryable().SingleAsync(it => it.id == endLocations[0].id); + bool isMatch = await IsCarryAndLocationMatchByCarryStd(carry, eloc); + if (!isMatch) + { + throw new AppFriendlyException("库位与载具规格不匹配", 500); + } + ePoint = await _db.Queryable().FirstAsync(it => it.location_id == endLocations[0].id); } sPoint = await _db.Queryable().FirstAsync(it => it.location_id == loc.id); if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); + List points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + if (points.Count <= 2) + { + throw new AppFriendlyException("该路径不存在", 500); + } //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); - WmsPretaskH preTask = new(); - preTask.org_id = _userManager.User.OrganizeId!; - preTask.startlocation_id = sPoint?.location_id!; - preTask.startlocation_code = sPoint?.location_code!; - preTask.endlocation_id = ePoint?.location_id!; - preTask.endlocation_code = ePoint?.location_code!; - preTask.start_floor = sPoint?.floor.ToString(); - preTask.end_floor = ePoint?.floor.ToString(); - preTask.startpoint_id = sPoint?.id!; - preTask.startpoint_code = sPoint?.point_code!; - preTask.endpoint_id = ePoint?.id!; - preTask.endpoint_code = ePoint?.point_code!; - preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); - preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; - preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSINSTOCK_ID; - preTask.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID; - preTask.carry_id = carry.id; - preTask.carry_code = carry.carry_code; - preTask.area_id = sPoint?.area_id!; - preTask.area_code = it.Key; - preTask.require_id = instock.id; - preTask.require_code = instock.bill_code; - preTask.create_id = _userManager.UserId; - preTask.create_time = DateTime.Now; + WmsPretaskH preTask = new() + { + org_id = _userManager.User.OrganizeId!, + startlocation_id = sPoint?.location_id!, + startlocation_code = sPoint?.location_code!, + endlocation_id = ePoint?.location_id!, + endlocation_code = ePoint?.location_code!, + start_floor = sPoint?.floor.ToString(), + end_floor = ePoint?.floor.ToString(), + startpoint_id = sPoint?.id!, + startpoint_code = sPoint?.point_code!, + endpoint_id = ePoint?.id!, + endpoint_code = ePoint?.point_code!, + bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(), + status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID, + biz_type = WmsWareHouseConst.BIZTYPE_WMSINSTOCK_ID, + task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID, + carry_id = carry.id, + carry_code = carry.carry_code, + area_id = sPoint?.area_id!, + area_code = it.Key, + require_id = instock.id, + require_code = instock.bill_code, + create_id = _userManager.UserId, + create_time = DateTime.Now + }; return preTask; }).ToList(); List pretaskCodes = new(); - foreach (var pt in preTasks) + foreach (WmsPretaskH? pt in preTasks) { WmsPretaskCode ptc = pt.Adapt(); ptc.id = SnowflakeIdHelper.NextId(); @@ -194,30 +218,34 @@ namespace Tnb.WarehouseMgr ptc.code_batch = instockCode.code_batch; pretaskCodes.Add(ptc); } - var isOk = await _wareHouseService.GenPreTask(preTasks, pretaskCodes); + bool isOk = await _wareHouseService.GenPreTask(preTasks, pretaskCodes); if (isOk) { - var preTaskUpInput = new GenPreTaskUpInput(); - preTaskUpInput.RquireId = instock.id; - preTaskUpInput.CarryId = carry.id; - preTaskUpInput.CarryStartLocationId = points.FirstOrDefault()!.location_id!; - preTaskUpInput.CarryStartLocationCode = points.FirstOrDefault()!.location_code!; - preTaskUpInput.LocationIds = points.Select(x => x.location_id).ToList()!; + GenPreTaskUpInput preTaskUpInput = new() + { + RquireId = instock.id, + CarryId = carry.id, + CarryStartLocationId = points.FirstOrDefault()!.location_id!, + CarryStartLocationCode = points.FirstOrDefault()!.location_code!, + LocationIds = points.Select(x => x.location_id).ToList()! + }; //生成操作记录 - WmsHandleH handleH = new(); - handleH.org_id = _userManager.User.OrganizeId; - handleH.startlocation_id = loc.id; - handleH.endlocation_id = endLocations![0].id; - handleH.bill_code = instock.bill_code; - handleH.biz_type = instock.biz_type; - handleH.carry_id = carry.id; - handleH.carry_code = carry.carry_code; - handleH.require_id = instock.id; - handleH.require_code = instock.bill_code; - handleH.create_id = _userManager.UserId; - handleH.create_time = DateTime.Now; + WmsHandleH handleH = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = loc.id, + endlocation_id = endLocations![0].id, + bill_code = instock.bill_code, + biz_type = instock.biz_type, + carry_id = carry.id, + carry_code = carry.carry_code, + require_id = instock.id, + require_code = instock.bill_code, + create_id = _userManager.UserId, + create_time = DateTime.Now + }; preTaskUpInput.PreTaskRecord = handleH; //生成操作记录条码表 @@ -239,14 +267,14 @@ namespace Tnb.WarehouseMgr wmsCarryCode.location_code = loc.location_code; wmsCarryCode.warehouse_id = instock.warehouse_id; } - await _db.Insertable(wmsCarryCode).ExecuteCommandAsync(); + _ = await _db.Insertable(wmsCarryCode).ExecuteCommandAsync(); //回更状态 await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, it => new WmsCarryH { carry_code = instock!.carry_code!, is_lock = 1, carry_status = ((int)EnumCarryStatus.占用).ToString(), location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode }, it => new BasLocation { is_lock = 1, is_use = ((int)EnumCarryStatus.占用).ToString() }); - await _db.Updateable().SetColumns(it => new WmsInstockD { line_status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => instockCode.bill_d_id == it.id).ExecuteCommandAsync(); - await _db.Updateable().SetColumns(it => new WmsInstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == instock!.id).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsInstockD { line_status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => instockCode.bill_d_id == it.id).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsInstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == instock!.id).ExecuteCommandAsync(); } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDATransferService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDATransferService.cs index 271fc586..93af33c6 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDATransferService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDATransferService.cs @@ -79,32 +79,38 @@ namespace Tnb.WarehouseMgr if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + List points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + if (points.Count <= 2) { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + throw new AppFriendlyException("该路径不存在", 500); + } - WmsPretaskH preTask = new(); - preTask.org_id = _userManager.User.OrganizeId; - preTask.startlocation_id = sPoint?.location_id!; - preTask.startlocation_code = sPoint?.location_code!; - preTask.endlocation_id = ePoint?.location_id!; - preTask.endlocation_code = ePoint?.location_code!; - preTask.start_floor = sPoint?.floor.ToString(); - preTask.end_floor = ePoint?.floor.ToString(); - preTask.startpoint_id = sPoint?.id!; - preTask.startpoint_code = sPoint?.point_code!; - preTask.endpoint_id = ePoint?.id!; - preTask.endpoint_code = ePoint?.point_code!; - preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); - preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; - preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSTRANSFER_ID; - preTask.task_type = WmsWareHouseConst.WMS_PRETASK_TRANSFER_TYPE_ID; + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); + + WmsPretaskH preTask = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = sPoint?.location_id!, + startlocation_code = sPoint?.location_code!, + endlocation_id = ePoint?.location_id!, + endlocation_code = ePoint?.location_code!, + start_floor = sPoint?.floor.ToString(), + end_floor = ePoint?.floor.ToString(), + startpoint_id = sPoint?.id!, + startpoint_code = sPoint?.point_code!, + endpoint_id = ePoint?.id!, + endpoint_code = ePoint?.point_code!, + bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(), + status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID, + biz_type = WmsWareHouseConst.BIZTYPE_WMSTRANSFER_ID, + task_type = WmsWareHouseConst.WMS_PRETASK_TRANSFER_TYPE_ID + }; preTask.carry_id = input.data[nameof(preTask.carry_id)]?.ToString()!; preTask.carry_code = input.data[nameof(preTask.carry_code)]?.ToString()!; preTask.area_id = sPoint?.area_id!; @@ -115,14 +121,14 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks, null!); + bool isOk = await _wareHouseService.GenPreTask(preTasks, null!); if (isOk) { //查询库位表 - var location = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsTransfer.startlocation_id)].ToString()); + BasLocation location = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsTransfer.startlocation_id)].ToString()); { //载具加锁,增加库位信息 - await _db.Updateable().SetColumns(it => new WmsCarryH + _ = await _db.Updateable().SetColumns(it => new WmsCarryH { carry_status = ((int)EnumCarryStatus.占用).ToString(), is_lock = 1, @@ -132,8 +138,8 @@ namespace Tnb.WarehouseMgr } //所有库位加锁 - var ids = new[] { input.data[nameof(WmsTransfer.startlocation_id)].ToString(), input.data[nameof(WmsTransfer.endlocation_id)].ToString() }; - await _db.Updateable().SetColumns(it => new BasLocation { is_lock = 1 }).Where(it => ids.Contains(it.id)).ExecuteCommandAsync(); + string?[] ids = new[] { input.data[nameof(WmsTransfer.startlocation_id)].ToString(), input.data[nameof(WmsTransfer.endlocation_id)].ToString() }; + _ = await _db.Updateable().SetColumns(it => new BasLocation { is_lock = 1 }).Where(it => ids.Contains(it.id)).ExecuteCommandAsync(); } } @@ -155,9 +161,16 @@ namespace Tnb.WarehouseMgr public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); - var isOk = await _db.Updateable().SetColumns(it => new WmsTransfer { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + bool isOk = await _db.Updateable().SetColumns(it => new WmsTransfer { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPointService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPointService.cs index 25f71638..f6ba4c77 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPointService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPointService.cs @@ -29,46 +29,62 @@ namespace Tnb.WarehouseMgr private async Task DataImport(VisualDevImportDataInput input) { int row = 0; - var errorlist = new List>(); - VisualDevImportDataOutput result = new VisualDevImportDataOutput(); + List> errorlist = new(); + VisualDevImportDataOutput result = new(); try { List> dics = input.list; - List points = new List(); - WmsPointH pt = new WmsPointH(); - List aCodes = new List(); - List lCodes = new List(); + List points = new(); + WmsPointH pt = new(); + List aCodes = new(); + List lCodes = new(); //遍历字典,找出需要查询数据库拿的相关字段 - foreach (var d in dics) + foreach (Dictionary d in dics) { if (d.Select(x => x.Value.ToString()).ToList().Find(v => v != "" && v != string.Empty && v != null) == null) { continue; } - d.ContainsKey("location_code"); - var pCode = d["point_code"]?.ToString() ?? string.Empty; - var pName = d["point_name"]?.ToString() ?? string.Empty; - var aCode = d["area_code"]?.ToString() ?? string.Empty; - var lCode = d["location_code"]?.ToString() ?? string.Empty; - var floor = d["floor"]?.ToString() ?? string.Empty; - if (pCode == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据点位编号不可为空", 500); - if (pName == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据点位名称不可为空", 500); - if (floor == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据楼层不可为空", 500); + _ = d.ContainsKey("location_code"); + string pCode = d["point_code"]?.ToString() ?? string.Empty; + string pName = d["point_name"]?.ToString() ?? string.Empty; + string aCode = d["area_code"]?.ToString() ?? string.Empty; + string lCode = d["location_code"]?.ToString() ?? string.Empty; + string floor = d["floor"]?.ToString() ?? string.Empty; + if (pCode == string.Empty) + { + throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据点位编号不可为空", 500); + } + + if (pName == string.Empty) + { + throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据点位名称不可为空", 500); + } + + if (floor == string.Empty) + { + throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据楼层不可为空", 500); + } + aCodes.Add(aCode); lCodes.Add(lCode); d["create_time"] = DateTime.Now; - d.Remove("modify_time"); + _ = d.Remove("modify_time"); pt = d.Adapt(); points.Add(pt); } - var aDic = await _db.Queryable().Where(it => aCodes.FindAll(x => x.ToString().IsNotEmptyOrNull() && x.ToString() != "").Contains(it.code)).ToDictionaryAsync(x => x.code, x => x.id); - var lDic = await _db.Queryable().Where(it => lCodes.FindAll(x => x.ToString().IsNotEmptyOrNull() && x.ToString() != "").Contains(it.location_code)).ToDictionaryAsync(x => x.location_code, x => x.id); - var orgId = _userManager.User.OrganizeId; - var userId = _userManager.UserId; - foreach (var p in points) + Dictionary aDic = await _db.Queryable().Where(it => aCodes.FindAll(x => x.ToString().IsNotEmptyOrNull() && x.ToString() != "").Contains(it.code)).ToDictionaryAsync(x => x.code, x => x.id); + Dictionary lDic = await _db.Queryable().Where(it => lCodes.FindAll(x => x.ToString().IsNotEmptyOrNull() && x.ToString() != "").Contains(it.location_code)).ToDictionaryAsync(x => x.location_code, x => x.id); + string orgId = _userManager.User.OrganizeId; + string userId = _userManager.UserId; + foreach (WmsPointH p in points) { - if (!aDic.ContainsKey(p.area_code)) throw new AppFriendlyException($"第{points.IndexOf(p) + 1}个数据的管理区编号有误", 500); + if (!aDic.ContainsKey(p.area_code)) + { + throw new AppFriendlyException($"第{points.IndexOf(p) + 1}个数据的管理区编号有误", 500); + } + p.id = SnowflakeIdHelper.NextId(); p.org_id = orgId; p.is_lock = 0; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsRobotCallbackService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsRobotCallbackService.cs index 2aa5e33d..be22c451 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsRobotCallbackService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsRobotCallbackService.cs @@ -56,8 +56,8 @@ namespace Tnb.WarehouseMgr [HttpPost] public async Task RobotCallback(RobotCallBackInput input) { - var carry = await _db.Queryable().SingleAsync(it => it.id == input.carry_id); - var subCarry = await _db.Queryable().SingleAsync(it => it.id == input.membercarry_id); + WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.id == input.carry_id); + WmsCarryH subCarry = await _db.Queryable().SingleAsync(it => it.id == input.membercarry_id); if (carry != null && subCarry != null) { VisualDevModelDataCrInput visualDevModelCrInput = new() { data = new Dictionary() }; @@ -75,12 +75,12 @@ namespace Tnb.WarehouseMgr carry.collocation_scheme_id = subCarry.collocation_scheme_id; carry.collocation_scheme_code = subCarry.collocation_scheme_code; carry.carry_status = ((int)EnumCarryStatus.齐套).ToString(); - await _db.Updateable(carry).UpdateColumns(it => new { it.collocation_scheme_id, it.collocation_scheme_code, it.carry_status }).ExecuteCommandAsync(); + _ = await _db.Updateable(carry).UpdateColumns(it => new { it.collocation_scheme_id, it.collocation_scheme_code, it.carry_status }).ExecuteCommandAsync(); if (input.isLast) { - var kittingout = await _db.Queryable().FirstAsync(it => it.collocation_scheme_id == carry.collocation_scheme_id && it.status == WmsWareHouseConst.BILLSTATUS_CALLED_ID); + WmsKittingoutH kittingout = await _db.Queryable().FirstAsync(it => it.collocation_scheme_id == carry.collocation_scheme_id && it.status == WmsWareHouseConst.BILLSTATUS_CALLED_ID); if (kittingout != null) { @@ -88,24 +88,26 @@ namespace Tnb.WarehouseMgr await Publish(nameof(IWmskittingOutService.KittingOutByIsToBeShipped)); - visualDevModelCrInput.data = new Dictionary(); - visualDevModelCrInput.data[nameof(InStockStrategyQuery.warehouse_id)] = kittingout.warehouse_id; - visualDevModelCrInput.data[nameof(WmsKittingInstock.carry_id)] = input.carry_id; - visualDevModelCrInput.data[nameof(WmsKittingInstock.carry_code)] = input.carry_code; - visualDevModelCrInput.data[nameof(WmsKittingInstock.collocation_scheme_id)] = carry!.collocation_scheme_id!; - visualDevModelCrInput.data[nameof(WmsKittingInstock.collocation_scheme_code)] = carry!.collocation_scheme_code!; - visualDevModelCrInput.data[nameof(WmsKittingInstock.seq)] = kittingout.seq; - visualDevModelCrInput.data[nameof(WmsKittingInstock.biz_type)] = WmsWareHouseConst.BIZTYPE_WMSKITTINGINSTK_ID; - visualDevModelCrInput.data[nameof(WmsKittingInstock.status)] = WmsWareHouseConst.BILLSTATUS_ADD_ID; - visualDevModelCrInput.data[nameof(WmsKittingInstock.create_id)] = _userManager.UserId; - visualDevModelCrInput.data[nameof(WmsKittingInstock.create_time)] = DateTime.Now; - visualDevModelCrInput.data[nameof(WmsKittingInstock.location_id)] = carry!.location_id!; - visualDevModelCrInput.data[nameof(WmsKittingInstock.bill_code)] = _billRullService.GetBillNumber("WmsKittingInStk").GetAwaiter().GetResult(); - visualDevModelCrInput.data[nameof(WmsKittingInstock.source_id)] = kittingout.id; - visualDevModelCrInput.data[nameof(WmsKittingInstock.source_code)] = kittingout.bill_code; + visualDevModelCrInput.data = new Dictionary + { + [nameof(InStockStrategyQuery.warehouse_id)] = kittingout.warehouse_id, + [nameof(WmsKittingInstock.carry_id)] = input.carry_id, + [nameof(WmsKittingInstock.carry_code)] = input.carry_code, + [nameof(WmsKittingInstock.collocation_scheme_id)] = carry!.collocation_scheme_id!, + [nameof(WmsKittingInstock.collocation_scheme_code)] = carry!.collocation_scheme_code!, + [nameof(WmsKittingInstock.seq)] = kittingout.seq, + [nameof(WmsKittingInstock.biz_type)] = WmsWareHouseConst.BIZTYPE_WMSKITTINGINSTK_ID, + [nameof(WmsKittingInstock.status)] = WmsWareHouseConst.BILLSTATUS_ADD_ID, + [nameof(WmsKittingInstock.create_id)] = _userManager.UserId, + [nameof(WmsKittingInstock.create_time)] = DateTime.Now, + [nameof(WmsKittingInstock.location_id)] = carry!.location_id!, + [nameof(WmsKittingInstock.bill_code)] = _billRullService.GetBillNumber("WmsKittingInStk").GetAwaiter().GetResult(), + [nameof(WmsKittingInstock.source_id)] = kittingout.id, + [nameof(WmsKittingInstock.source_code)] = kittingout.bill_code + }; - var location = await _db.Queryable().SingleAsync(it => it.id == kittingout.location_id); + BasLocation? location = await _db.Queryable().SingleAsync(it => it.id == kittingout.location_id); if (kittingout.location_id.IsNullOrWhiteSpace() || (location != null && location.is_type.ToEnum() == EnumLocationType.存储库位)) { //入库 @@ -116,18 +118,18 @@ namespace Tnb.WarehouseMgr if (location != null && location.is_use == ((int)EnumCarryStatus.空闲).ToString() && location.is_lock == 0) { //出库 - var sPoint = await _db.Queryable().FirstAsync(it => it.location_id == carry.location_id); - var ePoint = await _db.Queryable().FirstAsync(it => it.location_id == kittingout.location_id); + WmsPointH sPoint = await _db.Queryable().FirstAsync(it => it.location_id == carry.location_id); + WmsPointH ePoint = await _db.Queryable().FirstAsync(it => it.location_id == kittingout.location_id); if (sPoint != null && ePoint != null) { var kittingOutObj = new { requireId = kittingout.id, requireCode = kittingout.bill_code }; - var preTasks = await _genPreTask(sPoint, ePoint, carry, kittingOutObj); - var carryCodes = await _db.Queryable().Where(it => it.carry_id == carry.id).ToListAsync(); + List preTasks = await _genPreTask(sPoint, ePoint, carry, kittingOutObj); + List carryCodes = await _db.Queryable().Where(it => it.carry_id == carry.id).ToListAsync(); List pretaskCodes = new(); - foreach (var pt in preTasks) + foreach (WmsPretaskH pt in preTasks) { - var partCodes = carryCodes.FindAll(x => x.carry_id == pt.carry_id).Distinct().ToList(); - var curPreTaskCodes = partCodes.Adapt>(); + List partCodes = carryCodes.FindAll(x => x.carry_id == pt.carry_id).Distinct().ToList(); + List curPreTaskCodes = partCodes.Adapt>(); curPreTaskCodes.ForEach(x => { x.id = SnowflakeIdHelper.NextId(); @@ -136,12 +138,14 @@ namespace Tnb.WarehouseMgr }); pretaskCodes.AddRange(curPreTaskCodes); } - await _warehouseService.GenPreTask(preTasks, pretaskCodes); + _ = await _warehouseService.GenPreTask(preTasks, pretaskCodes); kittingout.status = WmsWareHouseConst.BILLSTATUS_ON_ID; - await _db.Updateable(kittingout).UpdateColumns(it => it.status).ExecuteCommandAsync(); - GenPreTaskUpInput genPreTaskAfterUpInput = new(); - genPreTaskAfterUpInput.CarryIds = preTasks.Select(x => x.carry_id).ToList(); - genPreTaskAfterUpInput.LocationIds = new List { carry.location_id! }; + _ = await _db.Updateable(kittingout).UpdateColumns(it => it.status).ExecuteCommandAsync(); + GenPreTaskUpInput genPreTaskAfterUpInput = new() + { + CarryIds = preTasks.Select(x => x.carry_id).ToList(), + LocationIds = new List { carry.location_id! } + }; await _warehouseService.GenInStockTaskHandleAfter(genPreTaskAfterUpInput, it => new WmsCarryH { is_lock = 1 }, it => new BasLocation { is_lock = 1 }); await InvokeGenPretaskExcute(); @@ -161,36 +165,42 @@ namespace Tnb.WarehouseMgr private async Task> _genPreTask(WmsPointH sPoint, WmsPointH ePoint, WmsCarryH carry, dynamic KittingOutObj) { List preTasks = new(); - var points = await _warehouseService.PathAlgorithms(sPoint.id, ePoint.id); + List points = await _warehouseService.PathAlgorithms(sPoint.id, ePoint.id); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); + if (points.Count <= 2) + { + throw new AppFriendlyException("该路径不存在", 500); + } + if (points?.Count > 0) { preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); - WmsPretaskH preTask = new(); - preTask.org_id = _userManager.User.OrganizeId; - preTask.startlocation_id = sPoint?.location_id!; - preTask.startlocation_code = sPoint?.location_code!; - preTask.endlocation_id = ePoint?.location_id!; - preTask.endlocation_code = ePoint?.location_code!; - preTask.start_floor = sPoint?.floor.ToString(); - preTask.end_floor = ePoint?.floor.ToString(); - preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); - preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; - preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSKITTINGOUTSTK_ID; - preTask.task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID; - preTask.carry_id = carry.id!; - preTask.carry_code = carry.carry_code!; - preTask.area_id = sPoint?.area_id!; - preTask.area_code = it.Key; - preTask.require_id = KittingOutObj.requireId; - preTask.require_code = KittingOutObj.requireCode; - preTask.create_id = _userManager.UserId; - preTask.create_time = DateTime.Now; + WmsPretaskH preTask = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = sPoint?.location_id!, + startlocation_code = sPoint?.location_code!, + endlocation_id = ePoint?.location_id!, + endlocation_code = ePoint?.location_code!, + start_floor = sPoint?.floor.ToString(), + end_floor = ePoint?.floor.ToString(), + bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(), + status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID, + biz_type = WmsWareHouseConst.BIZTYPE_WMSKITTINGOUTSTK_ID, + task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID, + carry_id = carry.id!, + carry_code = carry.carry_code!, + area_id = sPoint?.area_id!, + area_code = it.Key, + require_id = KittingOutObj.requireId, + require_code = KittingOutObj.requireCode, + create_id = _userManager.UserId, + create_time = DateTime.Now + }; return preTask; }).ToList(); } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsRouteMgrService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsRouteMgrService.cs index 5e76dee1..9ae0da86 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsRouteMgrService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsRouteMgrService.cs @@ -41,8 +41,8 @@ namespace Tnb.WarehouseMgr { if (input.data.ContainsKey(nameof(WmsRoad.startpoint_id)) && input.data.ContainsKey(nameof(WmsRoad.endpoint_id))) { - var startPointId = input.data[nameof(WmsRoad.startpoint_id)].ToString(); - var endPointId = input.data[nameof(WmsRoad.endpoint_id)].ToString(); + string? startPointId = input.data[nameof(WmsRoad.startpoint_id)].ToString(); + string? endPointId = input.data[nameof(WmsRoad.endpoint_id)].ToString(); if (string.Equals(startPointId, endPointId, StringComparison.OrdinalIgnoreCase)) { throw new AppFriendlyException("起始点位不能等于终止点位", 500); @@ -56,45 +56,59 @@ namespace Tnb.WarehouseMgr private async Task DataImport(VisualDevImportDataInput input) { int row = 0; - var errorlist = new List>(); - VisualDevImportDataOutput result = new VisualDevImportDataOutput(); + List> errorlist = new(); + VisualDevImportDataOutput result = new(); try { List> dics = input.list; - List roads = new List(); - List pointCodes = new List(); + List roads = new(); + List pointCodes = new(); List locCodes = new(); - WmsRoad road = new WmsRoad(); + WmsRoad road = new(); //遍历字典,找出需要查询数据库拿的相关字段 - foreach (var d in dics) + foreach (Dictionary d in dics) { if (d.Select(x => x.Value.ToString()).ToList().Find(v => v != "" && v != string.Empty && v != null) == null) { continue; } - var sCode = d["startpoint_code"]?.ToString() ?? string.Empty; - var eCode = d["endpoint_code"]?.ToString() ?? string.Empty; - var dis = d["distance"]?.ToString() ?? string.Empty; + string sCode = d["startpoint_code"]?.ToString() ?? string.Empty; + string eCode = d["endpoint_code"]?.ToString() ?? string.Empty; + string dis = d["distance"]?.ToString() ?? string.Empty; if (sCode == eCode) + { throw new AppFriendlyException("起始点位不能等于终止点位", 500); + } + if (dis.IsEmpty()) + { throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据距离不可为空", 500); + } + pointCodes.Add(sCode); pointCodes.Add(eCode); d["create_time"] = DateTime.Now; - d.Remove("modify_time"); + _ = d.Remove("modify_time"); road = d.Adapt(); roads.Add(road); } - var points = await _db.Queryable().Where(it => pointCodes.FindAll(x => x.ToString().IsNotEmptyOrNull() && x.ToString() != "").Contains(it.point_code)).ToDictionaryAsync(x => x.point_code, x => x.id); + Dictionary points = await _db.Queryable().Where(it => pointCodes.FindAll(x => x.ToString().IsNotEmptyOrNull() && x.ToString() != "").Contains(it.point_code)).ToDictionaryAsync(x => x.point_code, x => x.id); if (!points.IsNullOrEmpty()) { - var orgId = _userManager.User.OrganizeId; - var userId = _userManager.UserId; - foreach (var r in roads) + string orgId = _userManager.User.OrganizeId; + string userId = _userManager.UserId; + foreach (WmsRoad r in roads) { - if (!points.ContainsKey(r.startpoint_code)) throw new AppFriendlyException($"第{roads.IndexOf(r) + 1}个数据的起始点位编号有误", 500); - if (!points.ContainsKey(r.endpoint_code)) throw new AppFriendlyException($"第{roads.IndexOf(r) + 1}个数据的终止点位编号有误", 500); + if (!points.ContainsKey(r.startpoint_code)) + { + throw new AppFriendlyException($"第{roads.IndexOf(r) + 1}个数据的起始点位编号有误", 500); + } + + if (!points.ContainsKey(r.endpoint_code)) + { + throw new AppFriendlyException($"第{roads.IndexOf(r) + 1}个数据的终止点位编号有误", 500); + } + r.id = SnowflakeIdHelper.NextId(); r.org_id = orgId; r.startpoint_id = points[r.startpoint_code]?.ToString() ?? throw new AppFriendlyException($"第{roads.IndexOf(r) + 1}个数据的起始点位编号有误", 500); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs index 4e681733..fa338adb 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs @@ -89,48 +89,48 @@ namespace Tnb.WarehouseMgr { if (_userManager.User.IsNull()) { - var curUser = await GetUserIdentity(); + System.Security.Claims.ClaimsPrincipal curUser = await GetUserIdentity(); await SetUserEntity(_userManager, curUser); } - var curDb = _db.CopyNew(); + SqlSugarClient curDb = _db.CopyNew(); try { await curDb.Ado.BeginTranAsync(); string firstLocationId = "27010980724501", secondLocationId = "27010987857941"; - var endLocation = await curDb.Queryable().FirstAsync(it => it.id == secondLocationId); + BasLocation endLocation = await curDb.Queryable().FirstAsync(it => it.id == secondLocationId); - var setSortings = await curDb.Queryable() + List setSortings = await curDb.Queryable() .Where(a => a.status == WmsWareHouseConst.BILLSTATUS_ADD_ID) .Select() .OrderBy(a => a.seq) .ToListAsync(); - var items = await curDb.Queryable().Where(it => it.status == WmsWareHouseConst.BILLSTATUS_ON_ID).ToListAsync(); - var onFlag = items?.Count > 0; + List items = await curDb.Queryable().Where(it => it.status == WmsWareHouseConst.BILLSTATUS_ON_ID).ToListAsync(); + bool onFlag = items?.Count > 0; if (setSortings?.Count > 0 && !onFlag) { - var singleSorting = setSortings[0]; + WmsSetsortingH singleSorting = setSortings[0]; - var setSortingDList = await curDb.Queryable().Where(it => it.bill_id == singleSorting.id).ToListAsync(); + List setSortingDList = await curDb.Queryable().Where(it => it.bill_id == singleSorting.id).ToListAsync(); if (setSortingDList?.Count > 0) { List carryMats = new(); List carryCodes = new(); List carryIds = new(); - foreach (var os in setSortingDList) + foreach (WmsSetsortingD os in setSortingDList) { - var OutStockStrategyInput = new OutStockStrategyQuery + OutStockStrategyQuery OutStockStrategyInput = new() { material_id = os.material_id, warehouse_id = os.warehouse_id, code_batch = os.code_batch, }; - var outStkCarrys = await _wareHouseService.OutStockStrategy(OutStockStrategyInput); - var carryCodesPart = await curDb.Queryable().InnerJoin((a, b) => a.id == b.carry_id).InnerJoin((a, b, c) => a.location_id == c.id) + List outStkCarrys = await _wareHouseService.OutStockStrategy(OutStockStrategyInput); + List carryCodesPart = await curDb.Queryable().InnerJoin((a, b) => a.id == b.carry_id).InnerJoin((a, b, c) => a.location_id == c.id) .Where((a, b) => outStkCarrys.Select(x => x.id).Contains(b.carry_id)) .Select() .ToListAsync(); @@ -139,7 +139,7 @@ namespace Tnb.WarehouseMgr if (carryCodesPart?.Count > 0) { carryCodes.AddRange(carryCodesPart); - var codeQty = carryCodes.Sum(x => x.codeqty); + decimal codeQty = carryCodes.Sum(x => x.codeqty); if (codeQty < os.pr_qty) { throw new AppFriendlyException($"需要出库[{os.pr_qty}],实际库存{codeQty},数量不足", 500); @@ -160,7 +160,7 @@ namespace Tnb.WarehouseMgr break; } } - var partCarryMats = curCarryCodes.Adapt>(); + List partCarryMats = curCarryCodes.Adapt>(); for (int i = 0; i < partCarryMats.Count; i++) { partCarryMats[i].need_qty = curCarryCodes[i].codeqty; @@ -175,17 +175,17 @@ namespace Tnb.WarehouseMgr carryMats = carryMats.OrderBy(o => o.create_time).GroupBy(g => new { g.carry_id, g.material_id, g.code_batch }) .Select(x => { - var arr = x.ToArray(); + WmsCarryMat[] arr = x.ToArray(); WmsCarryMat carryMat = arr[^arr.Length]; carryMat.need_qty = arr.Sum(d => d.need_qty); return carryMat; }) .ToList(); - await curDb.Insertable(carryMats).ExecuteCommandAsync(); + _ = await curDb.Insertable(carryMats).ExecuteCommandAsync(); carryIds = carryMats.Select(x => x.carry_id).Distinct().ToList(); - await curDb.Updateable() + _ = await curDb.Updateable() .SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.全部出).ToString(), @@ -201,24 +201,27 @@ namespace Tnb.WarehouseMgr //天益项目不需要 //await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.分拣出).ToString() }).Where(it => sortingOutIds.Contains(it.id)).ExecuteCommandAsync(); } - var carrys = await curDb.Queryable().Where(it => carryIds.Contains(it.id)).ToArrayAsync(); + WmsCarryH[] carrys = await curDb.Queryable().Where(it => carryIds.Contains(it.id)).ToArrayAsync(); if (carrys?.Length > 0) { if (setSortings?.Count > 0) { - var curCarry = carrys[^carrys.Length]; - var isMatch = await IsCarryAndLocationMatchByCarryStd(curCarry, endLocation); - if (!isMatch) throw new AppFriendlyException("库位与载具规格不匹配", 500); + WmsCarryH curCarry = carrys[^carrys.Length]; + bool isMatch = await IsCarryAndLocationMatchByCarryStd(curCarry, endLocation); + if (!isMatch) + { + throw new AppFriendlyException("库位与载具规格不匹配", 500); + } } List preTasks = new(); List locIds = new(); - var mid = 6; + int mid = 6; if (carrys.Length > mid) { - var leftCarrys = carrys[..mid]; - var rightCarrys = carrys[mid..]; + WmsCarryH[] leftCarrys = carrys[..mid]; + WmsCarryH[] rightCarrys = carrys[mid..]; await InnerGenPreTask(leftCarrys, locIds, firstLocationId, singleSorting.id, singleSorting.bill_code, preTasks, endLocation); await InnerGenPreTask(rightCarrys, locIds, secondLocationId, singleSorting.id, singleSorting.bill_code, preTasks, endLocation); } @@ -227,10 +230,10 @@ namespace Tnb.WarehouseMgr await InnerGenPreTask(carrys, locIds, firstLocationId, singleSorting.id, singleSorting.bill_code, preTasks, endLocation); } List pretaskCodes = new(); - foreach (var pt in preTasks) + foreach (WmsPretaskH pt in preTasks) { - var partCodes = carryCodes.FindAll(x => x.carry_id == pt.carry_id).Distinct().ToList(); - var curPreTaskCodes = partCodes.Adapt>(); + List partCodes = carryCodes.FindAll(x => x.carry_id == pt.carry_id).Distinct().ToList(); + List curPreTaskCodes = partCodes.Adapt>(); curPreTaskCodes.ForEach(x => { x.id = SnowflakeIdHelper.NextId(); @@ -239,11 +242,13 @@ namespace Tnb.WarehouseMgr }); pretaskCodes.AddRange(curPreTaskCodes); } - await _wareHouseService.GenPreTask(preTasks, pretaskCodes); - await curDb.Updateable().SetColumns(it => new WmsSetsortingH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == singleSorting.id).ExecuteCommandAsync(); - GenPreTaskUpInput genPreTaskAfterUpInput = new(); - genPreTaskAfterUpInput.CarryIds = preTasks.Select(x => x.carry_id).ToList(); - genPreTaskAfterUpInput.LocationIds = new HashSet(locIds).ToList(); + _ = await _wareHouseService.GenPreTask(preTasks, pretaskCodes); + _ = await curDb.Updateable().SetColumns(it => new WmsSetsortingH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == singleSorting.id).ExecuteCommandAsync(); + GenPreTaskUpInput genPreTaskAfterUpInput = new() + { + CarryIds = preTasks.Select(x => x.carry_id).ToList(), + LocationIds = new HashSet(locIds).ToList() + }; await _wareHouseService.GenInStockTaskHandleAfter(genPreTaskAfterUpInput, it => new WmsCarryH { is_lock = 1, carry_status = ((int)EnumCarryStatus.齐套分拣).ToString() }, it => new BasLocation { is_use = ((int)EnumCarryStatus.齐套分拣).ToString(), is_lock = 1 }); } @@ -265,7 +270,7 @@ namespace Tnb.WarehouseMgr RequestMethod = App.HttpContext?.Request?.Method, userIdentity = await GetUserIdentity(_userManager.ToKen), }; - var timedTaskEx = ex.ToTimedTaskException(ei); + TimedTaskException timedTaskEx = ex.ToTimedTaskException(ei); //cts?.Cancel(); throw timedTaskEx; } @@ -279,14 +284,14 @@ namespace Tnb.WarehouseMgr private async Task InnerGenPreTask(WmsCarryH[] carrys, List locIds, string eLocationId, string requireId, string requireCode, List preTasks, BasLocation endLocation) { - foreach (var carry in carrys) + foreach (WmsCarryH carry in carrys) { WmsPointH sPoint = await _db.Queryable().FirstAsync(it => it.location_id == carry.location_id); WmsPointH ePoint = await _db.Queryable().FirstAsync(it => it.location_id == eLocationId); if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + List? points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); if (points?.Count > 0) { locIds.AddRange(points.Select(x => x.location_id).ToList()!); @@ -294,11 +299,15 @@ namespace Tnb.WarehouseMgr //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); - var curPreTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + if (points.Count <= 2) { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + throw new AppFriendlyException("该路径不存在", 500); + } + + List curPreTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); WmsPretaskH preTask = new() { @@ -340,20 +349,23 @@ namespace Tnb.WarehouseMgr public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } //根据载具更新明细表状态 try { await _db.Ado.BeginTranAsync(); - var carryId = input.carryIds[^input.carryIds.Count]; - var ssds = await _db.Queryable().Where(it => it.bill_id == input.requireId).ToListAsync(); - var carryCodes = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); + string carryId = input.carryIds[^input.carryIds.Count]; + List? ssds = await _db.Queryable().Where(it => it.bill_id == input.requireId).ToListAsync(); + List carryCodes = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); - var sortingCoees = carryCodes.Adapt>(); + List sortingCoees = carryCodes.Adapt>(); sortingCoees.ForEach(x => { - var billDId = ssds?.Find(xx => xx.material_id == x.material_id && xx.code_batch == x.code_batch)?.id; + string? billDId = ssds?.Find(xx => xx.material_id == x.material_id && xx.code_batch == x.code_batch)?.id; if (billDId.IsNullOrEmpty()) { billDId = ssds?.Find(xx => xx.material_id == x.material_id)?.id; @@ -365,43 +377,36 @@ namespace Tnb.WarehouseMgr x.create_id = _userManager.UserId; x.create_time = DateTime.Now; }); - await _db.Insertable(sortingCoees).ExecuteCommandAsync(); - var detailIds = sortingCoees.Select(x => x.bill_d_id).ToList(); - var curSortingDetails = ssds.FindAll(x => detailIds.Contains(x.id)); - var dic = sortingCoees.GroupBy(g => g.bill_d_id).ToDictionary(x => x.Key, x => x.Select(x => x.codeqty).ToList()); - foreach (var osd in curSortingDetails) + _ = await _db.Insertable(sortingCoees).ExecuteCommandAsync(); + List detailIds = sortingCoees.Select(x => x.bill_d_id).ToList(); + List curSortingDetails = ssds.FindAll(x => detailIds.Contains(x.id)); + Dictionary> dic = sortingCoees.GroupBy(g => g.bill_d_id).ToDictionary(x => x.Key, x => x.Select(x => x.codeqty).ToList()); + foreach (WmsSetsortingD osd in curSortingDetails) { if (dic.ContainsKey(osd.id)) { osd.qty += dic[osd.id].Sum(d => d); - if (osd.qty >= osd.pr_qty) - { - osd.line_status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID; - } - else - { - osd.line_status = WmsWareHouseConst.BILLSTATUS_ON_ID; - } + osd.line_status = osd.qty >= osd.pr_qty ? WmsWareHouseConst.BILLSTATUS_COMPLETE_ID : WmsWareHouseConst.BILLSTATUS_ON_ID; } } - await _db.Updateable(curSortingDetails).ExecuteCommandAsync(); + _ = await _db.Updateable(curSortingDetails).ExecuteCommandAsync(); if (curSortingDetails.All(it => it.line_status == WmsWareHouseConst.BILLSTATUS_COMPLETE_ID)) { - await _db.Updateable().SetColumns(it => new WmsSetsortingH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsSetsortingH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); } - var carry = await _db.Queryable().SingleAsync(it => it.id == carryId); + WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.id == carryId); if (carry != null) { if (carry.location_id?.IsNotEmptyOrNull() ?? false) { - await _db.Updateable().SetColumns(it => new BasLocation { is_use = ((int)EnumCarryStatus.空闲).ToString() }).Where(it => it.id == carry.location_id).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new BasLocation { is_use = ((int)EnumCarryStatus.空闲).ToString() }).Where(it => it.id == carry.location_id).ExecuteCommandAsync(); } carry.out_status = ((int)EnumOutStatus.正常).ToString(); carry.carry_status = ((int)EnumCarryStatus.齐套).ToString(); carry.location_id = null; carry.location_code = null; - await _db.Updateable(carry).UpdateColumns(it => new { it.out_status, it.carry_status, it.location_id, it.location_code }).ExecuteCommandAsync(); - await _db.Deleteable().Where(it => it.carry_id == carryId).ExecuteCommandAsync(); + _ = await _db.Updateable(carry).UpdateColumns(it => new { it.out_status, it.carry_status, it.location_id, it.location_code }).ExecuteCommandAsync(); + _ = await _db.Deleteable().Where(it => it.carry_id == carryId).ExecuteCommandAsync(); } await _db.Ado.CommitTranAsync(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsSignForDeliveryService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsSignForDeliveryService.cs index fccf6a02..c24b1456 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsSignForDeliveryService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsSignForDeliveryService.cs @@ -41,7 +41,7 @@ namespace Tnb.WarehouseMgr [HttpGet] public async Task GetDisTasksByCarryId([FromRoute] string carryId) { - var item = await _db.Queryable().FirstAsync(it => it.carry_id == carryId && it.status == WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID && it.is_sign == 0); + WmsDistaskH item = await _db.Queryable().FirstAsync(it => it.carry_id == carryId && it.status == WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID && it.is_sign == 0); return item; } /// @@ -58,22 +58,16 @@ namespace Tnb.WarehouseMgr try { await _db.Ado.BeginTranAsync(); - WmsCarryH? carry = null; - if (!input.carryId.IsNullOrWhiteSpace()) - { - carry = await _db.Queryable().SingleAsync(it => it.id == input.carryId); - } - else - { - carry = await _db.Queryable().SingleAsync(it => it.carry_code == input.carry_code); - } + WmsCarryH? carry = !input.carryId.IsNullOrWhiteSpace() + ? await _db.Queryable().SingleAsync(it => it.id == input.carryId) + : await _db.Queryable().SingleAsync(it => it.carry_code == input.carry_code); if (carry != null) { if (carry?.location_id?.IsNotEmptyOrNull() ?? false) { - var loc = await _db.Queryable().SingleAsync(it => it.id == carry.location_id); + BasLocation loc = await _db.Queryable().SingleAsync(it => it.id == carry.location_id); loc.is_use = ((int)EnumCarryStatus.空闲).ToString(); - await _db.Updateable(loc).UpdateColumns(it => it.is_use).ExecuteCommandAsync(); + _ = await _db.Updateable(loc).UpdateColumns(it => it.is_use).ExecuteCommandAsync(); } WmsDistaskH? disTask = null; if (!input.disTaskId.IsNullOrEmpty()) @@ -103,7 +97,7 @@ namespace Tnb.WarehouseMgr await DoUpdate(upInput); //回更业务 } disTask.is_sign = 1; - await _db.Updateable(disTask).UpdateColumns(it => it.is_sign).ExecuteCommandAsync(); + _ = await _db.Updateable(disTask).UpdateColumns(it => it.is_sign).ExecuteCommandAsync(); } } await _db.Ado.CommitTranAsync(); @@ -122,10 +116,18 @@ namespace Tnb.WarehouseMgr [HttpPost] public async Task MESCarrySign(MESCarrySignInput input) { - var isSuccessFul = false; - if (input.IsNull()) throw new ArgumentNullException("input"); - var signInput = input.Adapt(); - if (signInput.carryId.IsNotEmptyOrNull()) signInput.carryId = ""; + if (input.IsNull()) + { + throw new ArgumentNullException("input"); + } + + SignForDeliveryInput signInput = input.Adapt(); + if (signInput.carryId.IsNotEmptyOrNull()) + { + signInput.carryId = ""; + } + + bool isSuccessFul; try { await SignForDelivery(signInput); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsStockReportService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsStockReportService.cs index b96ebaa3..df16f071 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsStockReportService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsStockReportService.cs @@ -29,7 +29,7 @@ namespace Tnb.WarehouseMgr private async Task GetListAsync(VisualDevModelListQueryInput input) { - var items = await _db.Queryable().InnerJoin((a, b) => a.material_id == b.id) + List items = await _db.Queryable().InnerJoin((a, b) => a.material_id == b.id) .InnerJoin((a, b, c) => b.id == c.material_id) .InnerJoin((a, b, c, d) => a.carry_id == d.id) .InnerJoin((a, b, c, d, e) => d.location_id == e.id) @@ -42,27 +42,29 @@ namespace Tnb.WarehouseMgr create_id = a.create_id, }, true) .ToListAsync(); - var carryCodes = await _db.Queryable().ToListAsync(); + List carryCodes = await _db.Queryable().ToListAsync(); var storeMap = items.DistinctBy(x => new { x.warehouse_id, x.material_id }).ToDictionary(x => new { x.warehouse_id, x.material_id }, x => x); - var result = items.GroupBy(g => new { g.warehouse_id, g.material_id }).Select(itGroup => + IEnumerable result = items.GroupBy(g => new { g.warehouse_id, g.material_id }).Select(itGroup => { - storeMap.TryGetValue(itGroup.Key, out var report); - WmsStockReportH stockReport = new(); - stockReport.material_code = report?.material_code ?? ""; - stockReport.mater_name = report?.mater_name ?? ""; - stockReport.existing_stock_qty = itGroup.Sum(d => d.codeqty); - stockReport.max_stock = report?.max_stock ?? 0; - stockReport.safe_stock = report?.safe_stock ?? 0; - stockReport.min_stock = report?.min_stock ?? 0; - stockReport.storage_valid_day = items.Find(t => t.material_id == itGroup.Key.material_id)?.storage_valid_day; - stockReport.early_warn_day = items.Find(t => t.material_id == itGroup.Key.material_id)?.early_warn_day; - stockReport.create_id = _userManager.UserId; - stockReport.create_time = DateTime.Now; + _ = storeMap.TryGetValue(itGroup.Key, out WmsStockReportH? report); + WmsStockReportH stockReport = new() + { + material_code = report?.material_code ?? "", + mater_name = report?.mater_name ?? "", + existing_stock_qty = itGroup.Sum(d => d.codeqty), + max_stock = report?.max_stock ?? 0, + safe_stock = report?.safe_stock ?? 0, + min_stock = report?.min_stock ?? 0, + storage_valid_day = items.Find(t => t.material_id == itGroup.Key.material_id)?.storage_valid_day, + early_warn_day = items.Find(t => t.material_id == itGroup.Key.material_id)?.early_warn_day, + create_id = _userManager.UserId, + create_time = DateTime.Now + }; if (stockReport.storage_valid_day.HasValue) { decimal expired_warning_qty = 0; - foreach (var item in itGroup) + foreach (WmsStockReportH? item in itGroup) { if (DateTime.Now.Subtract(item.create_time.Value).TotalDays >= (item.storage_valid_day - item.early_warn_day)) { @@ -71,7 +73,7 @@ namespace Tnb.WarehouseMgr } stockReport.expired_warning_qty = expired_warning_qty; } - var curCarryCodes = carryCodes.FindAll(x => x.warehouse_id == itGroup.Key.warehouse_id && x.material_id == itGroup.Key.material_id); + List curCarryCodes = carryCodes.FindAll(x => x.warehouse_id == itGroup.Key.warehouse_id && x.material_id == itGroup.Key.material_id); stockReport.Details = curCarryCodes.Adapt>(); stockReport.Details.ForEach(x => { @@ -82,7 +84,7 @@ namespace Tnb.WarehouseMgr }); - var pages = result.Skip((input.currentPage - 1) * input.pageSize).Take(input.pageSize).ToList(); + List pages = result.Skip((input.currentPage - 1) * input.pageSize).Take(input.pageSize).ToList(); SqlSugarPagedList pagedList = new() { list = pages, diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferService.cs index ee047edd..b808943c 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferService.cs @@ -78,33 +78,38 @@ namespace Tnb.WarehouseMgr } if (sPoint != null && ePoint != null) { - var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + List points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); - - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + if (points.Count <= 2) { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + throw new AppFriendlyException("该路径不存在", 500); + } - WmsPretaskH preTask = new(); - preTask.org_id = _userManager.User.OrganizeId; - preTask.startlocation_id = sPoint?.location_id!; - preTask.startlocation_code = sPoint?.location_code!; - preTask.endlocation_id = ePoint?.location_id!; - preTask.endlocation_code = ePoint?.location_code!; - preTask.start_floor = sPoint?.floor.ToString(); - preTask.end_floor = ePoint?.floor.ToString(); - preTask.startpoint_id = sPoint?.id!; - preTask.startpoint_code = sPoint?.point_code!; - preTask.endpoint_id = ePoint?.id!; - preTask.endpoint_code = ePoint?.point_code!; - preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); - preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; - preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSTRANSFER_ID; - preTask.task_type = WmsWareHouseConst.WMS_PRETASK_TRANSFER_TYPE_ID; + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); + + WmsPretaskH preTask = new() + { + org_id = _userManager.User.OrganizeId, + startlocation_id = sPoint?.location_id!, + startlocation_code = sPoint?.location_code!, + endlocation_id = ePoint?.location_id!, + endlocation_code = ePoint?.location_code!, + start_floor = sPoint?.floor.ToString(), + end_floor = ePoint?.floor.ToString(), + startpoint_id = sPoint?.id!, + startpoint_code = sPoint?.point_code!, + endpoint_id = ePoint?.id!, + endpoint_code = ePoint?.point_code!, + bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(), + status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID, + biz_type = WmsWareHouseConst.BIZTYPE_WMSTRANSFER_ID, + task_type = WmsWareHouseConst.WMS_PRETASK_TRANSFER_TYPE_ID + }; preTask.carry_id = input.data[nameof(preTask.carry_id)]?.ToString()!; preTask.carry_code = input.data[nameof(preTask.carry_code)]?.ToString()!; preTask.area_id = sPoint?.area_id!; @@ -115,14 +120,14 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks, null!); + bool isOk = await _wareHouseService.GenPreTask(preTasks, null!); if (isOk) { //查询库位表 - var location = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsTransfer.startlocation_id)].ToString()); + BasLocation location = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsTransfer.startlocation_id)].ToString()); { //载具加锁,增加库位信息 - await _db.Updateable().SetColumns(it => new WmsCarryH + _ = await _db.Updateable().SetColumns(it => new WmsCarryH { carry_status = ((int)EnumCarryStatus.占用).ToString(), is_lock = 1, @@ -132,9 +137,9 @@ namespace Tnb.WarehouseMgr } //所有库位加锁 - var ids = new[] { input.data[nameof(WmsTransfer.startlocation_id)].ToString(), input.data[nameof(WmsTransfer.endlocation_id)].ToString() }; - await _db.Updateable().SetColumns(it => new BasLocation { is_lock = 1 }).Where(it => ids.Contains(it.id)).ExecuteCommandAsync(); - await _db.Updateable().SetColumns(it => new WmsTransfer { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == input.data["ReturnIdentity"].ToString()).ExecuteCommandAsync(); + string?[] ids = new[] { input.data[nameof(WmsTransfer.startlocation_id)].ToString(), input.data[nameof(WmsTransfer.endlocation_id)].ToString() }; + _ = await _db.Updateable().SetColumns(it => new BasLocation { is_lock = 1 }).Where(it => ids.Contains(it.id)).ExecuteCommandAsync(); + _ = await _db.Updateable().SetColumns(it => new WmsTransfer { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == input.data["ReturnIdentity"].ToString()).ExecuteCommandAsync(); } @@ -158,9 +163,16 @@ namespace Tnb.WarehouseMgr public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); - var isOk = await _db.Updateable().SetColumns(it => new WmsTransfer { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + bool isOk = await _db.Updateable().SetColumns(it => new WmsTransfer { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs index f9f506d2..4345e405 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs @@ -68,48 +68,48 @@ namespace Tnb.WarehouseMgr //{ // ct?.ThrowIfCancellationRequested(); //} - var curDb = _db.CopyNew(); + SqlSugarClient curDb = _db.CopyNew(); try { await curDb.Ado.BeginTranAsync(); - var kittingOuts = await curDb.Queryable() + List kittingOuts = await curDb.Queryable() .Where(a => a.status == WmsWareHouseConst.BILLSTATUS_ADD_ID) .OrderBy(a => a.seq) .ToListAsync(); // 是否有已呼叫的齐套出库任务 // var set = true ; 如果有 把set修改为false - var items = await curDb.Queryable().Where(it => it.status == WmsWareHouseConst.BILLSTATUS_CALLED_ID).ToListAsync(); - var isCalled = items?.Count > 0; + List items = await curDb.Queryable().Where(it => it.status == WmsWareHouseConst.BILLSTATUS_CALLED_ID).ToListAsync(); + bool isCalled = items?.Count > 0; if (kittingOuts?.Count > 0) { - foreach (var ko in kittingOuts) + foreach (WmsKittingoutH ko in kittingOuts) { //a.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID Expression> whereExp = (ko.carry_id != null) ? a => a.id == ko.carry_id : a => a.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID; - var carrys = await curDb.Queryable() + List carrys = await curDb.Queryable() .InnerJoin((a, b) => a.collocation_scheme_id == b.id) .Where(whereExp.And(a => a.collocation_scheme_id == ko.collocation_scheme_id && a.is_lock == 0)) .OrderBy((a, b) => b.seq) .ToListAsync(); if (carrys?.Count > 0) { - var firstCarry = carrys.FirstOrDefault(); + WmsCarryH? firstCarry = carrys.FirstOrDefault(); GenPreTaskUpInput genPreTaskInput = new() { CarryId = firstCarry?.id }; await _warehouseService.GenInStockTaskHandleAfter(genPreTaskInput, it => new WmsCarryH { is_lock = 1, out_status = EnumOutStatus.全部出.ToString() }, null!); ko.status = WmsWareHouseConst.BILLSTATUS_TOBESHIPPED_ID; ko.carry_id = firstCarry?.id; ko.carry_code = firstCarry?.carry_code; - await _db.Updateable(ko).UpdateColumns(it => new { it.status, it.carry_id, it.carry_code }).ExecuteCommandAsync(); + _ = await _db.Updateable(ko).UpdateColumns(it => new { it.status, it.carry_id, it.carry_code }).ExecuteCommandAsync(); _ = KittingOutByIsToBeShipped(); if (firstCarry != null) { firstCarry.source_id = ko.source_id; firstCarry.source_code = ko.source_code; - await _db.Updateable(firstCarry).UpdateColumns(it => new { it.source_id, it.source_code }).ExecuteCommandAsync(); + _ = await _db.Updateable(firstCarry).UpdateColumns(it => new { it.source_id, it.source_code }).ExecuteCommandAsync(); } } else @@ -117,7 +117,7 @@ namespace Tnb.WarehouseMgr //if(false) 跳出 插入完一次齐套分拣 set 改为false if (!isCalled) { - var setSortingH = ko.Adapt(); + WmsSetsortingH setSortingH = ko.Adapt(); setSortingH.warehouse_id = WmsWareHouseConst.WAREHOUSE_ZC_ID; setSortingH.id = SnowflakeIdHelper.NextId(); setSortingH.kittingout_id = ko.id; @@ -125,10 +125,10 @@ namespace Tnb.WarehouseMgr setSortingH.org_id = _userManager.User.OrganizeId; setSortingH.create_id = _userManager.UserId; setSortingH.create_time = DateTime.Now; - await curDb.Insertable(setSortingH).ExecuteCommandAsync(); + _ = await curDb.Insertable(setSortingH).ExecuteCommandAsync(); - var kittingOutDetails = await curDb.Queryable().Where(it => it.bill_id == ko.id).ToListAsync(); - var setSortDetails = kittingOutDetails.Adapt>(); + List kittingOutDetails = await curDb.Queryable().Where(it => it.bill_id == ko.id).ToListAsync(); + List setSortDetails = kittingOutDetails.Adapt>(); setSortDetails.ForEach(x => { x.id = SnowflakeIdHelper.NextId(); @@ -138,9 +138,9 @@ namespace Tnb.WarehouseMgr x.create_id = _userManager.UserId; x.create_time = DateTime.Now; }); - await curDb.Insertable(setSortDetails).ExecuteCommandAsync(); + _ = await curDb.Insertable(setSortDetails).ExecuteCommandAsync(); ko.status = WmsWareHouseConst.BILLSTATUS_CALLED_ID; - await curDb.Updateable(ko).UpdateColumns(it => it.status).ExecuteCommandAsync(); + _ = await curDb.Updateable(ko).UpdateColumns(it => it.status).ExecuteCommandAsync(); isCalled = true; //await Publish(nameof(IWmsSetSortingService.PackSortingByAdd)); } @@ -161,7 +161,7 @@ namespace Tnb.WarehouseMgr RequestMethod = App.HttpContext?.Request?.Method, userIdentity = await GetUserIdentity(_userManager.ToKen), }; - var timedTaskEx = ex.ToTimedTaskException(ei); + TimedTaskException timedTaskEx = ex.ToTimedTaskException(ei); //cts?.Cancel(); throw timedTaskEx; } @@ -176,24 +176,24 @@ namespace Tnb.WarehouseMgr { //if (UserManager.AsscessToken.IsNullOrWhiteSpace()) return; //var curUser = await GetUserIdentity(); - var curDb = _db.CopyNew(); + SqlSugarClient curDb = _db.CopyNew(); try { - var kittingOuts = await curDb.Queryable() + List kittingOuts = await curDb.Queryable() .Where(a => a.status == WmsWareHouseConst.BILLSTATUS_TOBESHIPPED_ID) .OrderBy(a => a.seq) .ToListAsync(); if (kittingOuts?.Count > 0) { - var grpList = kittingOuts.GroupBy(g => g.location_id).ToList(); - foreach (var koGrp in grpList) + List> grpList = kittingOuts.GroupBy(g => g.location_id).ToList(); + foreach (IGrouping? koGrp in grpList) { - var locs = await curDb.Queryable().Where(it => it.id == koGrp.Key && it.is_use == ((int)EnumCarryStatus.空闲).ToString() && it.is_lock == 0).ToListAsync(); + List locs = await curDb.Queryable().Where(it => it.id == koGrp.Key && it.is_use == ((int)EnumCarryStatus.空闲).ToString() && it.is_lock == 0).ToListAsync(); if (locs?.Count > 0) { - var arr = koGrp.ToArray(); - var ko = arr[^arr.Length]; - var carry = await curDb.Queryable().SingleAsync(it => it.id == ko.carry_id); + WmsKittingoutH[] arr = koGrp.ToArray(); + WmsKittingoutH ko = arr[^arr.Length]; + WmsCarryH carry = await curDb.Queryable().SingleAsync(it => it.id == ko.carry_id); if (carry != null) { @@ -202,15 +202,19 @@ namespace Tnb.WarehouseMgr if (sPoint != null && ePoint != null) { //判断目标库位是否自动签收 - var loc = await curDb.Queryable().SingleAsync(it => it.id == ePoint.location_id); - var points = await _warehouseService.PathAlgorithms(sPoint.id, ePoint.id); - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); + BasLocation loc = await curDb.Queryable().SingleAsync(it => it.id == ePoint.location_id); + List points = await _warehouseService.PathAlgorithms(sPoint.id, ePoint.id); + if (points.Count <= 2) + { + throw new AppFriendlyException("该路径不存在", 500); + } + if (points?.Count > 0) { - var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + List preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => { - var sPoint = it.FirstOrDefault(); - var ePoint = it.LastOrDefault(); + WmsPointH? sPoint = it.FirstOrDefault(); + WmsPointH? ePoint = it.LastOrDefault(); WmsPretaskH preTask = new() { @@ -246,12 +250,12 @@ namespace Tnb.WarehouseMgr { preTasks[^1].is_sign = 0; // 修改最后一个元素的是否签收值 } - await _warehouseService.GenPreTask(preTasks, null!); - var subCarrys = await curDb.Queryable().Where(it => it.carry_id == ko.carry_id).ToListAsync(); - var carryIds = subCarrys.Select(x => x.carry_id).Concat(new[] { ko.carry_id }).Distinct().ToList(); + _ = await _warehouseService.GenPreTask(preTasks, null!); + List subCarrys = await curDb.Queryable().Where(it => it.carry_id == ko.carry_id).ToListAsync(); + List carryIds = subCarrys.Select(x => x.carry_id).Concat(new[] { ko.carry_id }).Distinct().ToList(); GenPreTaskUpInput genPreTaskInput = new() { CarryIds = carryIds!, LocationIds = new List { carry.location_id!, ko.location_id! } }; await _warehouseService.GenInStockTaskHandleAfter(genPreTaskInput, it => new WmsCarryH { is_lock = 1, carry_status = ((int)EnumCarryStatus.齐套).ToString() }, it => new BasLocation { is_lock = 1 }); - await curDb.Updateable().SetColumns(it => it.status == WmsWareHouseConst.BILLSTATUS_ON_ID).Where(it => it.id == ko.id).ExecuteCommandAsync(); + _ = await curDb.Updateable().SetColumns(it => it.status == WmsWareHouseConst.BILLSTATUS_ON_ID).Where(it => it.id == ko.id).ExecuteCommandAsync(); } } } @@ -271,7 +275,7 @@ namespace Tnb.WarehouseMgr RequestMethod = App.HttpContext?.Request?.Method, userIdentity = await GetUserIdentity(_userManager.ToKen), }; - var timedTaskEx = ex.ToTimedTaskException(ei); + TimedTaskException timedTaskEx = ex.ToTimedTaskException(ei); //cts?.Cancel(); throw timedTaskEx; @@ -285,29 +289,33 @@ namespace Tnb.WarehouseMgr public override async Task ModifyAsync(WareHouseUpInput input) { - if (input == null) throw new ArgumentNullException(nameof(input)); + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + try { await _db.Ado.BeginTranAsync(); - var carryId = input.carryIds[^input.carryIds.Count]; - var carry = await _db.Queryable().SingleAsync(it => it.id == carryId); - var kods = await _db.Queryable().Where(it => it.bill_id == input.requireId).ToListAsync(); + string carryId = input.carryIds[^input.carryIds.Count]; + WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.id == carryId); + List? kods = await _db.Queryable().Where(it => it.bill_id == input.requireId).ToListAsync(); //载具为料架时,取所有料箱的条码 List mCarryIds = new(); if (carry.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID) { - var carryDs = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); + List carryDs = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); mCarryIds = carryDs.Select(x => x.membercarry_id).ToList(); } //当前载具对应的所有条码插入 Expression> whereExp = mCarryIds?.Count > 0 ? a => mCarryIds.Contains(a.carry_id) : a => a.carry_id == carryId; - var carryCodes = await _db.Queryable().Where(whereExp).ToListAsync(); - var kittingoutCodes = carryCodes.Adapt>(); + List carryCodes = await _db.Queryable().Where(whereExp).ToListAsync(); + List kittingoutCodes = carryCodes.Adapt>(); kittingoutCodes.ForEach(x => { - var billDId = kods?.Find(xx => xx.material_id == x.material_id && xx.code_batch == x.code_batch)?.id; + string? billDId = kods?.Find(xx => xx.material_id == x.material_id && xx.code_batch == x.code_batch)?.id; if (billDId.IsNullOrEmpty()) { billDId = kods?.Find(xx => xx.material_id == x.material_id)?.id; @@ -319,27 +327,20 @@ namespace Tnb.WarehouseMgr x.create_id = _userManager.UserId; x.create_time = DateTime.Now; }); - var row = await _db.Insertable(kittingoutCodes).ExecuteCommandAsync(); - var detailIds = kittingoutCodes.Select(x => x.bill_d_id).ToList(); - var curKittingoutDetails = kods.FindAll(x => detailIds.Contains(x.id)); - var dic = kittingoutCodes.GroupBy(g => g.bill_d_id).ToDictionary(x => x.Key, x => x.Select(x => x.codeqty).ToList()); - foreach (var kod in curKittingoutDetails) + int row = await _db.Insertable(kittingoutCodes).ExecuteCommandAsync(); + List detailIds = kittingoutCodes.Select(x => x.bill_d_id).ToList(); + List curKittingoutDetails = kods.FindAll(x => detailIds.Contains(x.id)); + Dictionary> dic = kittingoutCodes.GroupBy(g => g.bill_d_id).ToDictionary(x => x.Key, x => x.Select(x => x.codeqty).ToList()); + foreach (WmsKittingoutD kod in curKittingoutDetails) { if (dic.ContainsKey(kod.id)) { kod.qty += dic[kod.id].Sum(d => d); - if (kod.qty >= kod.pr_qty) - { - kod.line_status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID; - } - else - { - kod.line_status = WmsWareHouseConst.BILLSTATUS_ON_ID; - } + kod.line_status = kod.qty >= kod.pr_qty ? WmsWareHouseConst.BILLSTATUS_COMPLETE_ID : WmsWareHouseConst.BILLSTATUS_ON_ID; } } - await _db.Updateable(curKittingoutDetails).ExecuteCommandAsync(); - var isOk = await _db.Updateable().SetColumns(it => new WmsKittingoutH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); + _ = await _db.Updateable(curKittingoutDetails).ExecuteCommandAsync(); + bool isOk = await _db.Updateable().SetColumns(it => new WmsKittingoutH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); //if (carry != null) //{ // row = await _carryService.UpdateNullCarry(carry); @@ -348,18 +349,22 @@ namespace Tnb.WarehouseMgr //判断当前载具是否为料架,如果是料架 清空所有料架/料箱数据, if (carry.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID && mCarryIds?.Count > 0) { - var carrys = await _db.Queryable().Where(it => mCarryIds.Contains(it.id)).ToListAsync(); + List carrys = await _db.Queryable().Where(it => mCarryIds.Contains(it.id)).ToListAsync(); carrys.Add(carry); if (carrys?.Count > 0) { await _db.Ado.BeginTranAsync(); - var tasks = new List>>(); - Func>? upateNullCarryFunc = carryIt => Task.Run(() => _db.CopyNew().Updateable(carryIt).ExecuteCommandAsync()); - foreach (var carryIt in carrys) + List>> tasks = new(); + Task upateNullCarryFunc(WmsCarryH carryIt) + { + return Task.Run(() => _db.CopyNew().Updateable(carryIt).ExecuteCommandAsync()); + } + + foreach (WmsCarryH carryIt in carrys) { tasks.Add(_carryService.UpdateNullCarry(carryIt, upateNullCarryFunc)); } - var all = await Task.WhenAll(tasks.Select(t => t.Unwrap())); + int[] all = await Task.WhenAll(tasks.Select(t => t.Unwrap())); if (all.All(x => x > 0)) { isOk = all?.Length > 0; @@ -367,7 +372,10 @@ namespace Tnb.WarehouseMgr await _db.Ado.CommitTranAsync(); } } - if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } await _db.Ado.CommitTranAsync(); } @@ -385,18 +393,22 @@ namespace Tnb.WarehouseMgr [HttpPost] public async Task MESKittingOutStk(List input) { - var isSuccessFul = false; - if (input.IsNull()) throw new ArgumentNullException(nameof(input)); + bool isSuccessFul = false; + if (input.IsNull()) + { + throw new ArgumentNullException(nameof(input)); + } + try { await _db.Ado.BeginTranAsync(); List kittingOutDs = new(); - var kittingOuts = input.Adapt>(); - var ids = input.Select(x => x.location_code).ToArray(); + List kittingOuts = input.Adapt>(); + string[] ids = input.Select(x => x.location_code).ToArray(); for (int i = 0; i < kittingOuts.Count; i++) { - var x = kittingOuts[i]; + WmsKittingoutH x = kittingOuts[i]; x.id = SnowflakeIdHelper.NextId(); x.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_KITTINGOUTSTK_ENCODE).GetAwaiter().GetResult(); x.bill_date = DateTime.Now; @@ -404,7 +416,7 @@ namespace Tnb.WarehouseMgr x.status = WmsWareHouseConst.BILLSTATUS_ADD_ID; x.biz_type = WmsWareHouseConst.BIZTYPE_WMSKITTINGOUTSTK_ID; x.location_id = ids[i]; - var d = input[i]?.wmsKittingoutDs?.Adapt>(); + List? d = input[i]?.wmsKittingoutDs?.Adapt>(); d?.ForEach(it => { it.id = SnowflakeIdHelper.NextId(); @@ -419,8 +431,8 @@ namespace Tnb.WarehouseMgr } } - await _db.Insertable(kittingOuts).ExecuteCommandAsync(); - await _db.Insertable(kittingOutDs).ExecuteCommandAsync(); + _ = await _db.Insertable(kittingOuts).ExecuteCommandAsync(); + _ = await _db.Insertable(kittingOutDs).ExecuteCommandAsync(); await _db.Ado.CommitTranAsync(); await KittingOutByAdd();