From dd049ceeed2b73af076096af5a0b42363b2ccf13 Mon Sep 17 00:00:00 2001 From: zhoukeda <1315948824@qq.com> Date: Tue, 11 Jul 2023 14:39:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=87=E4=BB=B6=E9=A2=86=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Consts/CodeTemplateConst.cs | 5 + .../Entity/EqpSparePartsInstockD.cs | 52 +++++++ .../Entity/EqpSparePartsInstockH.cs | 82 +++++++++++ .../Entity/EqpSparePartsRequisitionD.cs | 47 ++++++ .../Entity/EqpSparePartsRequisitionH.cs | 87 ++++++++++++ .../IEqpSparePartsRequisitionHService.cs | 10 ++ .../EqpSparePartsRequisitionHService.cs | 134 ++++++++++++++++++ 7 files changed, 417 insertions(+) create mode 100644 EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSparePartsInstockD.cs create mode 100644 EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSparePartsInstockH.cs create mode 100644 EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSparePartsRequisitionD.cs create mode 100644 EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSparePartsRequisitionH.cs create mode 100644 EquipMgr/Tnb.EquipMgr.Interfaces/IEqpSparePartsRequisitionHService.cs create mode 100644 EquipMgr/Tnb.EquipMgr/EqpSparePartsRequisitionHService.cs diff --git a/BasicData/Tnb.BasicData.Entities/Consts/CodeTemplateConst.cs b/BasicData/Tnb.BasicData.Entities/Consts/CodeTemplateConst.cs index a62d9c12..96890e79 100644 --- a/BasicData/Tnb.BasicData.Entities/Consts/CodeTemplateConst.cs +++ b/BasicData/Tnb.BasicData.Entities/Consts/CodeTemplateConst.cs @@ -19,5 +19,10 @@ namespace Tnb.BasicData /// 生产任务单号单据模板编码 /// public const string PRDMOTASK_CODE = "ProductionPlanAndSchedule"; + + /// + /// 备件领用 + /// + public const string SPAREPARTSREQUISITION_CODE = "SparePartsRequisition"; } } \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSparePartsInstockD.cs b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSparePartsInstockD.cs new file mode 100644 index 00000000..9797a1a9 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSparePartsInstockD.cs @@ -0,0 +1,52 @@ +using JNPF.Common.Contracts; +using JNPF.Common.Security; +using SqlSugar; + +namespace Tnb.EquipMgr.Entities; + +/// +/// 备件入库子表 +/// +[SugarTable("eqp_spare_parts_instock_d")] +public partial class EqpSparePartsInstockD : BaseEntity +{ + public EqpSparePartsInstockD() + { + id = SnowflakeIdHelper.NextId(); + } + /// + /// 备件入库单id + /// + public string? instock_id { get; set; } + + /// + /// 备件id + /// + public string? spare_parts_id { get; set; } + + /// + /// 入库数量 + /// + public int quantity { get; set; } + + /// + /// 库位id + /// + public string? location_id { get; set; } + + /// + /// 质保开始时间 + /// + public DateTime? warranty_start_time { get; set; } + + /// + /// 质保结束时间 + /// + public DateTime? warranty_end_time { get; set; } + + /// + /// 已领数量 + /// + public int use_quantity { get; set; } + +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSparePartsInstockH.cs b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSparePartsInstockH.cs new file mode 100644 index 00000000..46754943 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSparePartsInstockH.cs @@ -0,0 +1,82 @@ +using JNPF.Common.Contracts; +using JNPF.Common.Security; +using SqlSugar; + +namespace Tnb.EquipMgr.Entities; + +/// +/// 备件入库 +/// +[SugarTable("eqp_spare_parts_instock_h")] +public partial class EqpSparePartsInstockH : BaseEntity +{ + public EqpSparePartsInstockH() + { + id = SnowflakeIdHelper.NextId(); + } + /// + /// 入库单编号 + /// + public string? code { get; set; } + + /// + /// 入库时间 + /// + public string? instock_time { get; set; } + + /// + /// 入库人员 + /// + public string? instock_id { get; set; } + + /// + /// 库位号 + /// + public string? location_id { get; set; } + + /// + /// 备件id + /// + public string? spare_parts_id { get; set; } + + /// + /// 描述 + /// + public string? descrip { get; set; } + + /// + /// 创建用户 + /// + public string? create_id { get; set; } + + /// + /// 创建时间 + /// + public DateTime? create_time { get; set; } + + /// + /// 修改用户 + /// + public string? modify_id { get; set; } + + /// + /// 修改时间 + /// + public DateTime? modify_time { get; set; } + + /// + /// 所属组织 + /// + public string? org_id { get; set; } + + /// + /// 流程任务Id + /// + public string? f_flowtaskid { get; set; } + + /// + /// 流程引擎Id + /// + public string? f_flowid { get; set; } + +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSparePartsRequisitionD.cs b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSparePartsRequisitionD.cs new file mode 100644 index 00000000..e3fef537 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSparePartsRequisitionD.cs @@ -0,0 +1,47 @@ +using JNPF.Common.Contracts; +using JNPF.Common.Security; +using SqlSugar; + +namespace Tnb.EquipMgr.Entities; + +/// +/// 备件领用子表 +/// +[SugarTable("eqp_spare_parts_requisition_d")] +public partial class EqpSparePartsRequisitionD : BaseEntity +{ + public EqpSparePartsRequisitionD() + { + id = SnowflakeIdHelper.NextId(); + } + /// + /// 备件id + /// + public string spare_parts_id { get; set; } = string.Empty; + + /// + /// 批号 + /// + public string? batch { get; set; } + + /// + /// 数量 + /// + public int quantity { get; set; } + + /// + /// 备件领用主表id + /// + public string spare_parts_requisition_id { get; set; } = string.Empty; + + /// + /// 设备id + /// + public string? equip_id { get; set; } + + /// + /// 备件入库id + /// + public string? instock_detail_id { get; set; } + +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSparePartsRequisitionH.cs b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSparePartsRequisitionH.cs new file mode 100644 index 00000000..2eac0c08 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSparePartsRequisitionH.cs @@ -0,0 +1,87 @@ +using JNPF.Common.Contracts; +using JNPF.Common.Security; +using SqlSugar; + +namespace Tnb.EquipMgr.Entities; + +/// +/// 备件领用主表 +/// +[SugarTable("eqp_spare_parts_requisition_h")] +public partial class EqpSparePartsRequisitionH : BaseEntity +{ + public EqpSparePartsRequisitionH() + { + id = SnowflakeIdHelper.NextId(); + } + /// + /// 领用单编号 + /// + public string? code { get; set; } + + /// + /// 作用设备id + /// + public string? equip_id { get; set; } + + /// + /// 使用部门 + /// + public string? department { get; set; } + + /// + /// 领用目的 + /// + public string? requisition_purpose { get; set; } + + /// + /// 库位号 + /// + public string? location_id { get; set; } + + /// + /// 备件id + /// + public string? spare_parts_id { get; set; } + + /// + /// 领用人 + /// + public string? recipient_id { get; set; } + + /// + /// 创建用户 + /// + public string? create_id { get; set; } + + /// + /// 创建时间 + /// + public DateTime? create_time { get; set; } + + /// + /// 修改用户 + /// + public string? modify_id { get; set; } + + /// + /// 修改时间 + /// + public DateTime? modify_time { get; set; } + + /// + /// 所属组织 + /// + public string? org_id { get; set; } + + /// + /// 流程任务Id + /// + public string? f_flowtaskid { get; set; } + + /// + /// 流程引擎Id + /// + public string? f_flowid { get; set; } + +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpSparePartsRequisitionHService.cs b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpSparePartsRequisitionHService.cs new file mode 100644 index 00000000..85b1bb7a --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpSparePartsRequisitionHService.cs @@ -0,0 +1,10 @@ +namespace Tnb.EquipMgr.Interfaces +{ + /// + /// 备品备件领用服务 + /// + public interface IEqpSparePartsRequisitionHService + { + + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EqpSparePartsRequisitionHService.cs b/EquipMgr/Tnb.EquipMgr/EqpSparePartsRequisitionHService.cs new file mode 100644 index 00000000..66a40260 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr/EqpSparePartsRequisitionHService.cs @@ -0,0 +1,134 @@ +using JNPF.Common.Core.Manager; +using JNPF.Common.Dtos.VisualDev; +using JNPF.Common.Enums; +using JNPF.Common.Security; +using JNPF.DependencyInjection; +using JNPF.DynamicApiController; +using JNPF.FriendlyException; +using JNPF.Systems.Interfaces.System; +using JNPF.VisualDev; +using JNPF.VisualDev.Entitys; +using JNPF.VisualDev.Interfaces; +using Microsoft.AspNetCore.Mvc; +using Microsoft.ClearScript.Util.Web; +using SqlSugar; +using Tnb.EquipMgr.Entities; +using Tnb.EquipMgr.Entities.Dto; +using Tnb.EquipMgr.Interfaces; + +namespace Tnb.EquipMgr +{ + /// + /// 备品备件领用服务 + /// + [ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 700)] + [Route("api/[area]/[controller]/[action]")] + [OverideVisualDev(ModuleId)] + public class EqpSparePartsRequisitionHService : IEqpSparePartsRequisitionHService, IOverideVisualDevService,IDynamicApiController, ITransient + { + private const string ModuleId = "27338205223957"; + private readonly ISqlSugarRepository _repository; + private readonly IVisualDevService _visualDevService; + private readonly IRunService _runService; + private readonly IUserManager _userManager; + private readonly IBillRullService _billRuleService; + + public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); + + public EqpSparePartsRequisitionHService(ISqlSugarRepository repository, + IRunService runService, + IVisualDevService visualDevService, + IBillRullService billRuleService, + IUserManager userManager) + { + _repository = repository; + _visualDevService = visualDevService; + _runService = runService; + _userManager = userManager; + _billRuleService = billRuleService; + OverideFuncs.CreateAsync = Create; + } + + private async Task Create(VisualDevModelDataCrInput input) + { + var 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() + { + code = code, + equip_id = input.data.ContainsKey("equip_id") ? input.data["equip_id"].ToString() : "", + department = input.data.ContainsKey("department") ? input.data["department"].ToString() : "", + recipient_id = input.data.ContainsKey("recipient_id") ? input.data["recipient_id"].ToString() : "", + requisition_purpose = input.data.ContainsKey("requisition_purpose") ? input.data["requisition_purpose"].ToString() : "", + create_id = _userManager.UserId, + create_time = DateTime.Now, + org_id = _userManager.GetUserInfo().Result.organizeId, + }; + + await db.Insertable(eqpSparePartsRequisitionH).ExecuteCommandAsync(); + + if (input.data.TryGetValue("tablefield120", out var value)) + { + var details = value.ToObject>>(); + List eqpSparePartsList = new List(); + List eqpSparePartsRequisitionDs = new List(){}; + foreach (var 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"] : ""; + int quantity = Convert.ToInt32(detail.ContainsKey("quantity") ? detail["quantity"] : ""); + + eqpSparePartsRequisitionDs.Add(new EqpSparePartsRequisitionD + { + instock_detail_id = instockDetailId, + spare_parts_id = sparePartsId, + quantity = quantity, + equip_id = eqpSparePartsRequisitionH.equip_id, + spare_parts_requisition_id = eqpSparePartsRequisitionH.id, + }); + + if (await db.Queryable() + .AnyAsync(x => x.id == instockDetailId && (x.quantity - x.use_quantity - quantity) >= 0)) + { + eqpSparePartsList.Add(new EqpEquipSpareParts + { + equip_id = input.data["equip_id"]?.ToString() ?? "", + spare_parts_id = sparePartsId, + create_id = _userManager.UserId, + create_time = DateTime.Now, + org_id = _userManager.GetUserInfo().Result.organizeId + }); + + await db.Updateable() + .SetColumns(x => x.use_quantity == x.use_quantity + quantity) + .Where(x => x.id == instockDetailId).ExecuteCommandAsync(); + } + else + { + throw new Exception("库存不够"); + } + + } + + if (eqpSparePartsRequisitionDs.Count > 0) + { + await db.Insertable(eqpSparePartsRequisitionDs).ExecuteCommandAsync(); + } + + if (eqpSparePartsList.Count > 0) + { + await db.Insertable(eqpSparePartsList).ExecuteCommandAsync(); + } + } + + }); + + if (!result.IsSuccess) throw Oops.Bah(result.ErrorMessage); + return result.IsSuccess ? "保存成功" : result.ErrorMessage; + } + } +} \ No newline at end of file