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