From 0d7e49695cfd1cb22e45b389c5fddd4e4dbfa394 Mon Sep 17 00:00:00 2001 From: zhoukeda <1315948824@qq.com> Date: Mon, 5 Jun 2023 17:23:19 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=95=B0=E9=87=87=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=88=B7=E9=80=89=20=E5=B7=A5=E8=89=BA=E6=A0=87?= =?UTF-8?q?=E5=87=86=E6=A8=A1=E6=9D=BF=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dto/EquipDaqQueryOutput.cs | 16 +++ .../Tnb.EquipMgr.Entities/Entity/EqpDaq.cs | 87 ++++++++++++++ .../Tnb.EquipMgr.Interfaces/IEqpDaqService.cs | 12 ++ EquipMgr/Tnb.EquipMgr/EqpDaqService.cs | 63 +++++++++++ EquipMgr/Tnb.EquipMgr/EqpEquipScrapService.cs | 2 + .../EqpTechnologyParameterService.cs | 3 +- .../Entity/PerProcessParamType.cs | 67 +++++++++++ .../Entity/PerProcessStandardsH.cs | 107 ++++++++++++++++++ .../IPerProcessParamService.cs | 2 + .../IPerProcessStandardsService.cs | 13 +++ PerMgr/Tnb.PerMgr/PerProcessParamService.cs | 6 + .../Tnb.PerMgr/PerProcessStandardsService.cs | 94 +++++++++++++++ 12 files changed, 471 insertions(+), 1 deletion(-) create mode 100644 EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipDaqQueryOutput.cs create mode 100644 EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpDaq.cs create mode 100644 EquipMgr/Tnb.EquipMgr.Interfaces/IEqpDaqService.cs create mode 100644 EquipMgr/Tnb.EquipMgr/EqpDaqService.cs create mode 100644 PerMgr/Tnb.PerMgr.Entities/Entity/PerProcessParamType.cs create mode 100644 PerMgr/Tnb.PerMgr.Entities/Entity/PerProcessStandardsH.cs create mode 100644 PerMgr/Tnb.PerMgr.Interfaces/IPerProcessStandardsService.cs create mode 100644 PerMgr/Tnb.PerMgr/PerProcessStandardsService.cs diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipDaqQueryOutput.cs b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipDaqQueryOutput.cs new file mode 100644 index 00000000..2f30d374 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipDaqQueryOutput.cs @@ -0,0 +1,16 @@ +namespace Tnb.EquipMgr.Entities.Dto +{ + public class EquipDaqQueryOutput + { + public string id { get; set; } + public string data_source { get; set; } + public string create_id { get; set; } + public string create_time { get; set; } + public string data_type { get; set; } + public string enabled { get; set; } + public string equip_id { get; set; } + public string label_name { get; set; } + public string label_point { get; set; } + public string remark { get; set; } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpDaq.cs b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpDaq.cs new file mode 100644 index 00000000..d387f251 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpDaq.cs @@ -0,0 +1,87 @@ +using JNPF.Common.Contracts; +using JNPF.Common.Security; +using SqlSugar; + +namespace Tnb.EquipMgr.Entities; + +/// +/// 数据采集项目 +/// +[SugarTable("eqp_daq")] +public partial class EqpDaq : BaseEntity +{ + public EqpDaq() + { + id = SnowflakeIdHelper.NextId(); + } + /// + /// 数据源 + /// + public string data_source { get; set; } = string.Empty; + + /// + /// 标签名称 + /// + public string? label_name { get; set; } + + /// + /// 标签点位 + /// + public string? label_point { get; set; } + + /// + /// 数据类型 + /// + public string? data_type { get; set; } + + /// + /// 是否启用 + /// + public int? enabled { get; set; } + + /// + /// 备注 + /// + public string? remark { 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 equip_id { get; set; } = string.Empty; + + /// + /// 流程任务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/IEqpDaqService.cs b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpDaqService.cs new file mode 100644 index 00000000..9000f256 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpDaqService.cs @@ -0,0 +1,12 @@ +using Tnb.EquipMgr.Entities.Dto; +namespace Tnb.EquipMgr.Interfaces +{ + public interface IEqpDaqService + { + /// + /// 根据设备id获取数采项目 + /// + /// + public Task GetEquipDaqList(EquipQueryInput input); + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EqpDaqService.cs b/EquipMgr/Tnb.EquipMgr/EqpDaqService.cs new file mode 100644 index 00000000..044bec62 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr/EqpDaqService.cs @@ -0,0 +1,63 @@ +using JNPF.Common.Core.Manager; +using JNPF.Common.Filter; +using JNPF.DependencyInjection; +using JNPF.DynamicApiController; +using JNPF.Systems.Entitys.Permission; +using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; +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]")] + public class EqpDaqService : IEqpDaqService, IDynamicApiController, ITransient + { + private readonly ISqlSugarRepository _repository; + private readonly IUserManager _userManager; + + public EqpDaqService(ISqlSugarRepository repository, IUserManager userManager) + { + _userManager = userManager; + _repository = repository; + } + + [HttpPost] + public async Task GetEquipDaqList(EquipQueryInput input) + { + var db = _repository.AsSugarClient(); + Dictionary queryJson = new Dictionary(); + if (!string.IsNullOrEmpty(input.queryJson)) + { + queryJson = JsonConvert.DeserializeObject>(input.queryJson); + } + var result = await db.Queryable() + .LeftJoin((a,b)=>a.create_id==b.Id) + .Where(a=>a.equip_id==input.equip_id) + .WhereIF(queryJson.ContainsKey("data_source"),a=>a.data_source==queryJson["data_source"]) + .WhereIF(queryJson.ContainsKey("label_name"),a=>a.label_name.Contains(queryJson["label_name"])) + .WhereIF(queryJson.ContainsKey("label_point"),a=>a.label_point.Contains(queryJson["label_point"])) + .Select((a,b) => new EquipDaqQueryOutput + { + id = a.id, + data_source = a.data_source, + create_id = b.RealName, + create_time = a.create_time.Value.ToString("yyyy-MM-dd HH:mm"), + data_type = a.data_type, + enabled = a.enabled==1 ? "是" : "否", + equip_id = a.equip_id, + label_name = a.label_name, + label_point = a.label_point, + remark = a.remark + }).ToPagedListAsync(input.currentPage, input.pageSize); + + return PageResult.SqlSugarPageResult(result); + } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EqpEquipScrapService.cs b/EquipMgr/Tnb.EquipMgr/EqpEquipScrapService.cs index 0959a242..6df470f2 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpEquipScrapService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpEquipScrapService.cs @@ -1,6 +1,7 @@ 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; @@ -41,6 +42,7 @@ namespace Tnb.EquipMgr var db = _repository.AsSugarClient(); DbResult result = await db.Ado.UseTranAsync(async () => { + eqpEquipScrap.id = SnowflakeIdHelper.NextId(); eqpEquipScrap.create_id = _userManager.UserId; eqpEquipScrap.create_time = DateTime.Now; diff --git a/EquipMgr/Tnb.EquipMgr/EqpTechnologyParameterService.cs b/EquipMgr/Tnb.EquipMgr/EqpTechnologyParameterService.cs index b36da391..d392a776 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpTechnologyParameterService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpTechnologyParameterService.cs @@ -11,7 +11,8 @@ using Tnb.EquipMgr.Interfaces; namespace Tnb.EquipMgr { - /// 设备备品备件 + /// + /// 设备技术参数 /// [ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 700)] [Route("api/[area]/[controller]/[action]")] diff --git a/PerMgr/Tnb.PerMgr.Entities/Entity/PerProcessParamType.cs b/PerMgr/Tnb.PerMgr.Entities/Entity/PerProcessParamType.cs new file mode 100644 index 00000000..5c7410c0 --- /dev/null +++ b/PerMgr/Tnb.PerMgr.Entities/Entity/PerProcessParamType.cs @@ -0,0 +1,67 @@ +using JNPF.Common.Contracts; +using JNPF.Common.Security; +using SqlSugar; + +namespace Tnb.PerMgr.Entities; + +/// +/// 工艺参数类型 +/// +[SugarTable("per_process_param_type")] +public partial class PerProcessParamType : BaseEntity +{ + public PerProcessParamType() + { + id = SnowflakeIdHelper.NextId(); + } + /// + /// 名称 + /// + public string name { get; set; } = string.Empty; + + /// + /// 设备类型id + /// + public string equip_type_id { get; set; } = string.Empty; + + /// + /// 排序 + /// + public long ordinal { get; set; } + + /// + /// 创建用户 + /// + public string? create_id { get; set; } + + /// + /// 修改用户 + /// + public string? modify_id { get; set; } + + /// + /// 所属组织 + /// + public string? org_id { get; set; } + + /// + /// 修改时间 + /// + public DateTime? modify_time { get; set; } + + /// + /// 创建时间 + /// + public DateTime? create_time { 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/PerMgr/Tnb.PerMgr.Entities/Entity/PerProcessStandardsH.cs b/PerMgr/Tnb.PerMgr.Entities/Entity/PerProcessStandardsH.cs new file mode 100644 index 00000000..feee5438 --- /dev/null +++ b/PerMgr/Tnb.PerMgr.Entities/Entity/PerProcessStandardsH.cs @@ -0,0 +1,107 @@ +using JNPF.Common.Contracts; +using JNPF.Common.Security; +using SqlSugar; + +namespace Tnb.PerMgr.Entities; + +/// +/// 工艺标准 +/// +[SugarTable("per_process_standards_h")] +public partial class PerProcessStandardsH : BaseEntity +{ + public PerProcessStandardsH() + { + id = SnowflakeIdHelper.NextId(); + } + /// + /// 工艺类型 + /// + public string process_type { get; set; } = string.Empty; + + /// + /// 编号 + /// + public string code { get; set; } = string.Empty; + + /// + /// 工艺文件名 + /// + public string? file_name { get; set; } + + /// + /// 是否启用 + /// + public int? enabled { get; set; } + + /// + /// 产出物料id + /// + public string? output_material_id { get; set; } + + /// + /// 设备id + /// + public string equip_id { get; set; } = string.Empty; + + /// + /// 模具id + /// + public string? molds_id { get; set; } + + /// + /// 工序id + /// + public string? process_id { get; set; } + + /// + /// 投入物料id + /// + public string? input_material_id { get; set; } + + /// + /// 版本号 + /// + public string version { get; set; } = string.Empty; + + /// + /// 创建用户 + /// + 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; } + + /// + /// 备注 + /// + public string? remark { get; set; } + + /// + /// 流程任务Id + /// + public string? f_flowtaskid { get; set; } + + /// + /// 流程引擎Id + /// + public string? f_flowid { get; set; } + +} diff --git a/PerMgr/Tnb.PerMgr.Interfaces/IPerProcessParamService.cs b/PerMgr/Tnb.PerMgr.Interfaces/IPerProcessParamService.cs index d7cff95c..a4d98d0b 100644 --- a/PerMgr/Tnb.PerMgr.Interfaces/IPerProcessParamService.cs +++ b/PerMgr/Tnb.PerMgr.Interfaces/IPerProcessParamService.cs @@ -1,3 +1,4 @@ +using Microsoft.AspNetCore.Mvc; using Tnb.PerMgr.Entities.Dto; namespace Tnb.PerMgr.Interfaces @@ -10,5 +11,6 @@ namespace Tnb.PerMgr.Interfaces /// /// public Task GetProcessParamInfo(Dictionary dic); + } } \ No newline at end of file diff --git a/PerMgr/Tnb.PerMgr.Interfaces/IPerProcessStandardsService.cs b/PerMgr/Tnb.PerMgr.Interfaces/IPerProcessStandardsService.cs new file mode 100644 index 00000000..6014b32c --- /dev/null +++ b/PerMgr/Tnb.PerMgr.Interfaces/IPerProcessStandardsService.cs @@ -0,0 +1,13 @@ +using Microsoft.AspNetCore.Mvc; + +namespace Tnb.PerMgr.Interfaces +{ + public interface IPerProcessStandardsService + { + /// + /// 导出模板 + /// + /// + public Task ExportTemplate(); + } +} \ No newline at end of file diff --git a/PerMgr/Tnb.PerMgr/PerProcessParamService.cs b/PerMgr/Tnb.PerMgr/PerProcessParamService.cs index e73bd08e..c0959d67 100644 --- a/PerMgr/Tnb.PerMgr/PerProcessParamService.cs +++ b/PerMgr/Tnb.PerMgr/PerProcessParamService.cs @@ -1,7 +1,12 @@ using JNPF.Common.Core.Manager; using JNPF.DependencyInjection; using JNPF.DynamicApiController; +using JNPF.FriendlyException; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using NPOI.SS.UserModel; +using NPOI.SS.Util; +using NPOI.XSSF.UserModel; using SqlSugar; using Tnb.PerMgr.Entities; using Tnb.PerMgr.Entities.Dto; @@ -41,5 +46,6 @@ namespace Tnb.PerMgr }).SingleAsync(); return result; } + } } \ No newline at end of file diff --git a/PerMgr/Tnb.PerMgr/PerProcessStandardsService.cs b/PerMgr/Tnb.PerMgr/PerProcessStandardsService.cs new file mode 100644 index 00000000..72ea3b0d --- /dev/null +++ b/PerMgr/Tnb.PerMgr/PerProcessStandardsService.cs @@ -0,0 +1,94 @@ +using JNPF; +using JNPF.Common.Core.Manager; +using JNPF.Common.Enums; +using JNPF.Common.Helper; +using JNPF.Common.Security; +using JNPF.DependencyInjection; +using JNPF.DynamicApiController; +using JNPF.FriendlyException; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using NPOI.SS.UserModel; +using NPOI.SS.Util; +using NPOI.XSSF.UserModel; +using SqlSugar; +using Tnb.PerMgr.Entities; +using Tnb.PerMgr.Entities.Dto; +using Tnb.PerMgr.Interfaces; + +namespace Tnb.PerMgr +{ + /// + /// 工艺标准 + /// + [ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 700)] + [Route("api/[area]/[controller]/[action]")] + public class PerProcessStandardsService : IPerProcessStandardsService, IDynamicApiController, ITransient + { + private readonly ISqlSugarRepository _repository; + private readonly IUserManager _userManager; + + public PerProcessStandardsService(ISqlSugarRepository repository, IUserManager userManager) + { + _userManager = userManager; + _repository = repository; + } + + [AllowAnonymous] + [HttpGet] + public async Task ExportTemplate() + { + try + { + var db = _repository.AsSugarClient(); + string[] perProcessParamTypes = await db.Queryable().OrderBy(x => x.ordinal).Select(x=>x.name).ToArrayAsync(); + string[] perProcessParams = await db.Queryable().OrderBy(x => x.ordinal).Select(x=>x.name).ToArrayAsync(); + + + XSSFWorkbook workbook = new XSSFWorkbook(); + NPOI.SS.UserModel.ISheet sheet = workbook.CreateSheet("BOM详情"); + + IRow row1 = sheet.CreateRow(0); + string[] titles = new[] { "工艺参数类型", "工艺参数", "设定值" }; + + for (int i = 0; i < titles.Length; i++) + { + ICell cell1 = row1.CreateCell(i); + cell1.SetCellValue(titles[i]); + sheet.SetColumnWidth(i,15 * 256); + } + + int rowIndex = 1; + + // var column = sheet.GetColumn(0); + // 设置下拉项 + var validationHelper = sheet.GetDataValidationHelper(); + var constraint = validationHelper.CreateExplicitListConstraint(perProcessParamTypes); + var region = new CellRangeAddressList(1, 1000, 0, 0); + var validation = validationHelper.CreateValidation(constraint, region); + sheet.AddValidationData(validation); + + var constraint2 = validationHelper.CreateExplicitListConstraint(perProcessParams); + var region2 = new CellRangeAddressList(1, 1000, 1, 1); + var validation2 = validationHelper.CreateValidation(constraint2, region2); + sheet.AddValidationData(validation2); + + + MemoryStream ms = new MemoryStream(); + + workbook.Write(ms); + MemoryStream ms2 = new MemoryStream(ms.ToArray()); + ms2.Position = 0; + FileStreamResult fileStreamResult = new FileStreamResult(ms2, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = "template.xlsx" }; + return fileStreamResult; + } + catch (Exception e) + { + Console.WriteLine(e); + throw Oops.Bah("导出失败"); + } + + } + } +} \ No newline at end of file