diff --git a/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs b/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs index eecc7bef..11e85654 100644 --- a/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs +++ b/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs @@ -11,6 +11,10 @@ public static class DictConst /// 区域类型-工位Code /// public const string RegionCategoryStationCode = "workstation"; + /// + /// 备品备件类型 + /// + public const string SparePartsType = "SparePartsType"; #endregion diff --git a/BasicData/Tnb.BasicData/BasMaterialService.cs b/BasicData/Tnb.BasicData/BasMaterialService.cs index 20179695..831b10d5 100644 --- a/BasicData/Tnb.BasicData/BasMaterialService.cs +++ b/BasicData/Tnb.BasicData/BasMaterialService.cs @@ -90,8 +90,8 @@ namespace Tnb.BasicData BasEbomH ebom = await db.Queryable().Where(x => x.id == queryInput.ebom_id).SingleAsync(); ids.Add(ebom.material_id); var result = await db.Queryable() - .LeftJoin((a, b) => a.unit_id == b.EnCode) - .LeftJoin((a, b, c) => b.DictionaryTypeId == c.Id && c.EnCode == DictConst.MeasurementUnit && c.DeleteMark == null) + .LeftJoin((a, b) => b.EnCode == DictConst.MeasurementUnit && b.DeleteMark == null) + .LeftJoin((a, b, c) => c.DictionaryTypeId == b.Id && a.unit_id == c.EnCode) .WhereIF(!string.IsNullOrEmpty(queryInput.material_info), (a, b, c) => a.code.Contains(queryInput.material_info) || a.name.Contains(queryInput.material_info)) .WhereIF(!string.IsNullOrEmpty(queryInput.ebom_id), (a, b, c) => ids.Contains(a.id)) .Select((a, b, c) => new MaterialSelectOutput() @@ -101,7 +101,7 @@ namespace Tnb.BasicData name = a.name, descrip = a.descrip, unit_id = a.unit_id, - unit_name = b.FullName, + unit_name = c.FullName, }).ToPagedListAsync(queryInput.currentPage, queryInput.pageSize); return PageResult.SqlSugarPageResult(result); @@ -110,8 +110,8 @@ namespace Tnb.BasicData else { var result = await db.Queryable() - .LeftJoin((a, b) => a.unit_id == b.EnCode) - .LeftJoin((a, b, c) => b.DictionaryTypeId == c.Id && c.EnCode == DictConst.MeasurementUnit && c.DeleteMark == null) + .LeftJoin((a, b) => b.EnCode == DictConst.MeasurementUnit && b.DeleteMark == null) + .LeftJoin((a, b, c) => c.DictionaryTypeId == b.Id && a.unit_id == c.EnCode) .WhereIF(!string.IsNullOrEmpty(queryInput.material_info), (a, b, c) => a.code.Contains(queryInput.material_info) || a.name.Contains(queryInput.material_info)) .Select((a, b, c) => new MaterialSelectOutput() { @@ -120,7 +120,7 @@ namespace Tnb.BasicData name = a.name, descrip = a.descrip, unit_id = a.unit_id, - unit_name = b.FullName, + unit_name = c.FullName, }).ToPagedListAsync(queryInput.currentPage, queryInput.pageSize); return PageResult.SqlSugarPageResult(result); diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipFileQueryOutput.cs b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipFileQueryOutput.cs new file mode 100644 index 00000000..2b280b55 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipFileQueryOutput.cs @@ -0,0 +1,14 @@ +namespace Tnb.EquipMgr.Entities.Dto +{ + public class EquipFileQueryOutput + { + public string id { get; set; } + public string attachment { get; set; } + public string create_id { get; set; } + public string create_id_id { get; set; } + public string create_time { get; set; } + public string equip_id { get; set; } + public string equip_id_id { get; set; } + public string file_name { get; set; } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipMaintainRecordQueryOutput.cs b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipMaintainRecordQueryOutput.cs new file mode 100644 index 00000000..a8978a55 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipMaintainRecordQueryOutput.cs @@ -0,0 +1,21 @@ +namespace Tnb.EquipMgr.Entities.Dto +{ + public class EquipMaintainRecordQueryOutput + { + public string id { get; set; } + public string attachment { get; set; } + public string create_time { get; set; } + public string equip_id { get; set; } + public string equip_id_id { get; set; } + public string execute_time { get; set; } + public string execute_user_id { get; set; } + public string repeat_remark { get; set; } + public string repeat_result { get; set; } + public string repeat_time { get; set; } + public string repeat_user_id { get; set; } + public string result { get; set; } + public string result_remark { get; set; } + public string maintain_tem_equip_id { get; set; } + public string status { get; set; } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipQueryInput.cs b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipQueryInput.cs new file mode 100644 index 00000000..80af62d9 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipQueryInput.cs @@ -0,0 +1,19 @@ +namespace Tnb.EquipMgr.Entities.Dto +{ + public class EquipQueryInput + { + public string equip_id { get; set; } + + /// + /// 当前页码:pageIndex. + /// + public virtual int currentPage { get; set; } = 1; + + /// + /// 每页行数. + /// + public virtual int pageSize { get; set; } = 50; + + public string queryJson { get; set; } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipRepairRecordQueryOutput.cs b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipRepairRecordQueryOutput.cs new file mode 100644 index 00000000..ba539654 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipRepairRecordQueryOutput.cs @@ -0,0 +1,16 @@ +namespace Tnb.EquipMgr.Entities.Dto +{ + public class EquipRepairRecordQueryOutput + { + public string id { get; set; } + public string code { get; set; } + public string name { get; set; } + public string equip_id { get; set; } + public string apply_user_id { get; set; } + public string is_ugent { get; set; } + public string description { get; set; } + public string complete_time { get; set; } + public string repairer_id { get; set; } + public string repair_description { get; set; } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipSparePartsInput.cs b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipSparePartsInput.cs new file mode 100644 index 00000000..69b222b3 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipSparePartsInput.cs @@ -0,0 +1,9 @@ +namespace Tnb.EquipMgr.Entities.Dto +{ + public class EquipSparePartsInput + { + public string equip_id { get; set; } + + public List spare_parts_ids { get; set; } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipSparePartsQueryOutput.cs b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipSparePartsQueryOutput.cs new file mode 100644 index 00000000..2e35315d --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipSparePartsQueryOutput.cs @@ -0,0 +1,13 @@ +namespace Tnb.EquipMgr.Entities.Dto +{ + public class EquipSparePartsQueryOutput + { + public string id { get; set; } + public string type_code { get; set; } + public string type_name { get; set; } + public string code { get; set; } + public string name { get; set; } + public string specification { get; set; } + + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipSpotInsRecordQueryOutput.cs b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipSpotInsRecordQueryOutput.cs new file mode 100644 index 00000000..b0162c36 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipSpotInsRecordQueryOutput.cs @@ -0,0 +1,20 @@ +namespace Tnb.EquipMgr.Entities.Dto +{ + public class EquipSpotInsRecordQueryOutput + { + public string id { get; set; } + public string attachment { get; set; } + public string create_time { get; set; } + public string equip_id { get; set; } + public string repeat_remark { get; set; } + public string repeat_result { get; set; } + public string repeat_time { get; set; } + public string repeat_user_id { get; set; } + public string result { get; set; } + public string result_remark { get; set; } + public string spot_ins_tem_equip_id { get; set; } + public string spot_record_date_time { get; set; } + public string spot_record_user_id { get; set; } + public string status { get; set; } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipTechnologyParameterQueryOutput.cs b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipTechnologyParameterQueryOutput.cs new file mode 100644 index 00000000..d1e91278 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipTechnologyParameterQueryOutput.cs @@ -0,0 +1,10 @@ +namespace Tnb.EquipMgr.Entities.Dto +{ + public class EquipTechnologyParameterQueryOutput + { + public string id { get; set; } + public string name { get; set; } + public string definition { get; set; } + public string remark { get; set; } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Dto/SubEquipQueryOutput.cs b/EquipMgr/Tnb.EquipMgr.Entities/Dto/SubEquipQueryOutput.cs new file mode 100644 index 00000000..32200413 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Dto/SubEquipQueryOutput.cs @@ -0,0 +1,18 @@ +namespace Tnb.EquipMgr.Entities.Dto +{ + public class SubEquipQueryOutput + { + public string code { get; set; } + public string create_id { get; set; } + public string create_id_id { get; set; } + public string create_time { get; set; } + public string equip_id { get; set; } + public string equip_id_id { get; set; } + public string id { get; set; } + public string modify_id { get; set; } + public string modify_time { get; set; } + public string name { get; set; } + public string org_id { get; set; } + public string specification { get; set; } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpEquipSpareParts.cs b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpEquipSpareParts.cs new file mode 100644 index 00000000..64136645 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpEquipSpareParts.cs @@ -0,0 +1,52 @@ +using JNPF.Common.Contracts; +using JNPF.Common.Security; +using SqlSugar; + +namespace Tnb.EquipMgr.Entities; + +/// +/// 设备备品备件关联表 +/// +[SugarTable("eqp_equip_spare_parts")] +public partial class EqpEquipSpareParts : BaseEntity +{ + public EqpEquipSpareParts() + { + id = SnowflakeIdHelper.NextId(); + } + /// + /// 设备id + /// + public string equip_id { get; set; } = string.Empty; + + /// + /// 备品备件id + /// + public string spare_parts_id { 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; } + +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSpEquipCheckRecord.cs b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSpEquipCheckRecord.cs new file mode 100644 index 00000000..e568daed --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSpEquipCheckRecord.cs @@ -0,0 +1,127 @@ +using JNPF.Common.Contracts; +using JNPF.Common.Security; +using SqlSugar; + +namespace Tnb.EquipMgr.Entities; + +/// +/// 特种设备检验登记记录表 +/// +[SugarTable("eqp_sp_equip_check_record")] +public partial class EqpSpEquipCheckRecord : BaseEntity +{ + public EqpSpEquipCheckRecord() + { + id = SnowflakeIdHelper.NextId(); + } + /// + /// 创建时间 + /// + public DateTime? create_time { get; set; } + + /// + /// 创建用户 + /// + public string? create_id { get; set; } + + /// + /// 修改时间 + /// + public DateTime? modify_time { get; set; } + + /// + /// 修改用户 + /// + public string? modify_id { get; set; } + + /// + /// 设备id + /// + public string? equip_id { get; set; } + + /// + /// 证书编号 + /// + public string? license_code { get; set; } + + /// + /// 经办人id + /// + public string? oper_user_id { get; set; } + + /// + /// 送检时间 + /// + public DateTime? send_time { get; set; } + + /// + /// 领证时间 + /// + public DateTime? get_time { get; set; } + + /// + /// 检验结果 + /// + public int? check_result { get; set; } + + /// + /// 提前预警时间 + /// + public int? warm_time { get; set; } + + /// + /// 提前预警时间单位 + /// + public string? warn_unit { get; set; } + + /// + /// 有效开始时间 + /// + public DateTime? start_time { get; set; } + + /// + /// 有效结束时间 + /// + public DateTime? end_time { get; set; } + + /// + /// 下次检验时间 + /// + public DateTime? next_check_time { get; set; } + + /// + /// 备注 + /// + public string? remark { get; set; } + + /// + /// 状态 0 待检验 1 已检验 + /// + public string status { get; set; } + + /// + /// 证书名称 + /// + public string? license_name { get; set; } + + /// + /// 证书附件 + /// + public string? attachment { get; set; } + + /// + /// 流程任务Id + /// + public string? f_flowtaskid { get; set; } + + /// + /// 流程引擎Id + /// + public string? f_flowid { get; set; } + + /// + /// 所属组织 + /// + public string? org_id { get; set; } + +} diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSpareParts.cs b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSpareParts.cs new file mode 100644 index 00000000..264d8ea1 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSpareParts.cs @@ -0,0 +1,67 @@ +using JNPF.Common.Contracts; +using JNPF.Common.Security; +using SqlSugar; + +namespace Tnb.EquipMgr.Entities; + +/// +/// 备品备件 +/// +[SugarTable("eqp_spare_parts")] +public partial class EqpSpareParts : BaseEntity +{ + public EqpSpareParts() + { + id = SnowflakeIdHelper.NextId(); + } + /// + /// 类型id + /// + public string type_id { get; set; } = string.Empty; + + /// + /// 编码 + /// + public string code { get; set; } = string.Empty; + + /// + /// 名称 + /// + public string name { get; set; } = string.Empty; + + /// + /// 规格型号 + /// + public string? specification { 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; } + + /// + /// 备注 + /// + public string? remark { get; set; } + +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSubEquip.cs b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSubEquip.cs new file mode 100644 index 00000000..6d4ee06f --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpSubEquip.cs @@ -0,0 +1,62 @@ +using JNPF.Common.Contracts; +using JNPF.Common.Security; +using SqlSugar; + +namespace Tnb.EquipMgr.Entities; + +/// +/// 设备子设备关联表 +/// +[SugarTable("eqp_sub_equip")] +public partial class EqpSubEquip : BaseEntity +{ + public EqpSubEquip() + { + id = SnowflakeIdHelper.NextId(); + } + /// + /// 编码 + /// + public string code { get; set; } = string.Empty; + + /// + /// 名称 + /// + public string name { get; set; } = string.Empty; + + /// + /// 规格型号 + /// + public string? specification { 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; + +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpTechnologyParameter.cs b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpTechnologyParameter.cs new file mode 100644 index 00000000..18494867 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpTechnologyParameter.cs @@ -0,0 +1,62 @@ +using JNPF.Common.Contracts; +using JNPF.Common.Security; +using SqlSugar; + +namespace Tnb.EquipMgr.Entities; + +/// +/// 设备技术参数 +/// +[SugarTable("eqp_technology_parameter")] +public partial class EqpTechnologyParameter : BaseEntity +{ + public EqpTechnologyParameter() + { + id = SnowflakeIdHelper.NextId(); + } + /// + /// 名称 + /// + public string name { get; set; } = string.Empty; + + /// + /// 定义 + /// + public string definition { get; set; } = string.Empty; + + /// + /// 备注 + /// + 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; + +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpEquipFileService.cs b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpEquipFileService.cs index 6f685177..3d47193f 100644 --- a/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpEquipFileService.cs +++ b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpEquipFileService.cs @@ -11,5 +11,11 @@ namespace Tnb.EquipMgr.Interfaces ///// ///// //public Task Upload(string equip_id,IFormFile file); + + /// + /// 根据设备id获取设备附件 + /// + /// + public Task GetEquipFileList(EquipQueryInput input); } } \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpEquipSparePartsService.cs b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpEquipSparePartsService.cs new file mode 100644 index 00000000..38a1bcb0 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpEquipSparePartsService.cs @@ -0,0 +1,20 @@ +using Tnb.EquipMgr.Entities.Dto; + +namespace Tnb.EquipMgr.Interfaces +{ + public interface IEqpEquipSparePartsService + { + /// + /// 新增备品备件 + /// + /// + /// + public Task AddEquipSpareParts(EquipSparePartsInput input); + + /// + /// 根据设备id获取备品备件 + /// + /// + public Task GetEquipSparePartsList(EquipQueryInput input); + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpMaintainRecordService.cs b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpMaintainRecordService.cs index 387129b3..3ca7ee5a 100644 --- a/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpMaintainRecordService.cs +++ b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpMaintainRecordService.cs @@ -25,6 +25,12 @@ namespace Tnb.EquipMgr.Interfaces /// /// public Task RepeatMaintain(MaintainRecordRepeatInput input); + + /// + /// 根据设备id获取设备保养记录 + /// + /// + public Task GetMaintainRecordList(EquipQueryInput input); } } \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpRepairApplyService.cs b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpRepairApplyService.cs index eee44398..f23044b1 100644 --- a/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpRepairApplyService.cs +++ b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpRepairApplyService.cs @@ -53,5 +53,11 @@ namespace Tnb.EquipMgr.Interfaces /// /// public Task GetRepairApplyDetail(Dictionary dic); + + /// + /// 根据设备id获取维修记录 + /// + /// + public Task GetRepairRecordList(EquipQueryInput input); } } \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpSpEquipCheckRecordService.cs b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpSpEquipCheckRecordService.cs new file mode 100644 index 00000000..2028c41f --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpSpEquipCheckRecordService.cs @@ -0,0 +1,9 @@ +using Tnb.EquipMgr.Entities; + +namespace Tnb.EquipMgr.Interfaces +{ + public interface IEqpSpEquipCheckRecordService + { + public Task Register(EqpSpEquipCheckRecord entity); + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpSubEquipService.cs b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpSubEquipService.cs new file mode 100644 index 00000000..45b03060 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpSubEquipService.cs @@ -0,0 +1,13 @@ +using Tnb.EquipMgr.Entities.Dto; + +namespace Tnb.EquipMgr.Interfaces +{ + public interface IEqpSubEquipService + { + /// + /// 根据设备id获取子设备 + /// + /// + public Task GetSubEquipList(EquipQueryInput input); + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpTechnologyParameterService.cs b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpTechnologyParameterService.cs new file mode 100644 index 00000000..2c5212c7 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpTechnologyParameterService.cs @@ -0,0 +1,12 @@ +using Tnb.EquipMgr.Entities.Dto; +namespace Tnb.EquipMgr.Interfaces +{ + public interface IEqpTechnologyParameterService + { + /// + /// 根据设备id获取技术参数 + /// + /// + public Task GetEquipTechnologyParameterList(EquipQueryInput input); + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Interfaces/IEquSpotInsRecordService.cs b/EquipMgr/Tnb.EquipMgr.Interfaces/IEquSpotInsRecordService.cs index b639f300..43c849fc 100644 --- a/EquipMgr/Tnb.EquipMgr.Interfaces/IEquSpotInsRecordService.cs +++ b/EquipMgr/Tnb.EquipMgr.Interfaces/IEquSpotInsRecordService.cs @@ -25,6 +25,12 @@ namespace Tnb.EquipMgr.Interfaces /// /// public Task RepeatSpotIns(SpotInsRecordRepeatInput input); + + /// + /// 根据设备id获取点巡检记录 + /// + /// + public Task GetSpotInsRecordList(EquipQueryInput input); } } \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EqpEquipFileService.cs b/EquipMgr/Tnb.EquipMgr/EqpEquipFileService.cs index 3367ffc3..adc74cac 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpEquipFileService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpEquipFileService.cs @@ -1,12 +1,14 @@ using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Enums; +using JNPF.Common.Filter; using JNPF.Common.Models; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.Logging; using JNPF.Systems.Common; +using JNPF.Systems.Entitys.Permission; using JNPF.Systems.Interfaces.Common; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; @@ -56,7 +58,8 @@ namespace Tnb.EquipMgr equip_id = equip_id, create_id = _userManager.UserId, create_time = DateTime.Now, - attachment = JsonConvert.SerializeObject(attachment) + attachment = JsonConvert.SerializeObject(attachment), + org_id = _userManager.GetUserInfo().Result.organizeId, }; await _repository.InsertAsync(eqpEquipFile); @@ -71,5 +74,35 @@ namespace Tnb.EquipMgr return msg; } + + [HttpPost] + public async Task GetEquipFileList(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) + .LeftJoin((a, b,c) => a.modify_id == c.Id) + .LeftJoin((a, b,c,d) => a.equip_id == d.id) + .Where((a,b,c,d)=>a.equip_id==input.equip_id) + .WhereIF(queryJson.ContainsKey("file_name"),(a,b,c,d)=>a.file_name.Contains(queryJson["file_name"])) + .Select((a, b, c,d) => new EquipFileQueryOutput + { + id = a.id, + attachment = a.attachment, + create_id = b.RealName, + create_id_id = a.create_id, + create_time = a.create_time.Value.ToString("yyyy-MM-dd"), + equip_id=d.name, + equip_id_id= a.equip_id, + file_name=a.file_name, + }).ToPagedListAsync(input.currentPage, input.pageSize); + + return PageResult.SqlSugarPageResult(result); + } } } \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EqpEquipSparePartsService.cs b/EquipMgr/Tnb.EquipMgr/EqpEquipSparePartsService.cs new file mode 100644 index 00000000..59dc823d --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr/EqpEquipSparePartsService.cs @@ -0,0 +1,85 @@ +using JNPF.Common.Core.Manager; +using JNPF.Common.Filter; +using JNPF.Common.Security; +using JNPF.DependencyInjection; +using JNPF.DynamicApiController; +using JNPF.Systems.Entitys.Permission; +using JNPF.Systems.Entitys.System; +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 EqpEquipSparePartsService : IEqpEquipSparePartsService, IDynamicApiController, ITransient + { + private readonly ISqlSugarRepository _repository; + private readonly IUserManager _userManager; + + public EqpEquipSparePartsService(ISqlSugarRepository repository, IUserManager userManager) + { + _userManager = userManager; + _repository = repository; + } + + [HttpPost] + public async Task AddEquipSpareParts(EquipSparePartsInput input) + { + List oldList = await _repository.GetListAsync(x => x.equip_id == input.equip_id); + List list = new List(); + string orgId = _userManager.GetUserInfo().Result.organizeId; + foreach (var 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(), + equip_id = input.equip_id, + spare_parts_id = spare_parts_id, + create_id = _userManager.UserId, + create_time = DateTime.Now, + org_id = orgId, + }); + } + + await _repository.InsertRangeAsync(list); + } + + [HttpPost] + public async Task GetEquipSparePartsList(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.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) + .Where((a,b,c,d)=>a.equip_id==input.equip_id) + .WhereIF(queryJson.ContainsKey("code"),(a,b,c,d)=>b.code.Contains(queryJson["code"])) + .WhereIF(queryJson.ContainsKey("name"),(a,b,c,d)=>b.name.Contains(queryJson["name"])) + .Select((a, b, c,d) => new EquipSparePartsQueryOutput + { + id = a.id, + type_code = d.EnCode, + type_name = d.FullName, + code = b.code, + name = b.name, + specification = b.specification + }).ToPagedListAsync(input.currentPage, input.pageSize); + + return PageResult.SqlSugarPageResult(result); + } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EqpRepairApplyService.cs b/EquipMgr/Tnb.EquipMgr/EqpRepairApplyService.cs index 79cc078a..18f17524 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpRepairApplyService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpRepairApplyService.cs @@ -1,10 +1,13 @@ using JNPF.Common.Core.Manager; using JNPF.Common.Enums; +using JNPF.Common.Filter; using JNPF.Common.Security; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; +using JNPF.Systems.Entitys.Permission; using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; using SqlSugar; using Tnb.EquipMgr.Entities; using Tnb.EquipMgr.Entities.Dto; @@ -129,5 +132,35 @@ namespace Tnb.EquipMgr eqpRepairOutApply = eqpRepairOutApply, }; } + + [HttpPost] + public async Task GetRepairRecordList(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.apply_user_id==b.Id) + .LeftJoin((a,b,c)=>a.repairer_id==c.Id) + .Where(a=>a.equip_id==input.equip_id) + .Select((a,b,c) => new EquipRepairRecordQueryOutput + { + id = a.id, + equip_id = a.equip_id, + code = a.code, + name = a.name, + apply_user_id =b.RealName, + is_ugent = a.is_ugent==1 ? "是" : "否", + description = a.description, + repair_description = a.repair_description, + complete_time = a.complete_time.Value.ToString("yyyy-MM-dd HH:mm"), + repairer_id = c.RealName + }).ToPagedListAsync(input.currentPage, input.pageSize); + + return PageResult.SqlSugarPageResult(result); + } } } \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EqpRepairOutApplyService.cs b/EquipMgr/Tnb.EquipMgr/EqpRepairOutApplyService.cs index 3d6f461a..400d3677 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpRepairOutApplyService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpRepairOutApplyService.cs @@ -100,7 +100,6 @@ namespace Tnb.EquipMgr if(!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); - //todo 退回流程 if (result.IsSuccess) { if (string.IsNullOrEmpty(input.id)) diff --git a/EquipMgr/Tnb.EquipMgr/EqpSpEquipCheckRecordService.cs b/EquipMgr/Tnb.EquipMgr/EqpSpEquipCheckRecordService.cs new file mode 100644 index 00000000..415dbcea --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr/EqpSpEquipCheckRecordService.cs @@ -0,0 +1,56 @@ +using JNPF.Common.Core.Manager; +using JNPF.Common.Enums; +using JNPF.Common.Security; +using JNPF.DependencyInjection; +using JNPF.DynamicApiController; +using JNPF.FriendlyException; +using Microsoft.AspNetCore.Mvc; +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 EqpSpEquipCheckRecordService : IEqpSpEquipCheckRecordService, IDynamicApiController, ITransient + { + private readonly ISqlSugarRepository _repository; + private readonly IUserManager _userManager; + + public EqpSpEquipCheckRecordService(ISqlSugarRepository repository, + IUserManager userManager) + { + _repository = repository; + _userManager = userManager; + } + + [HttpPost] + public async Task Register(EqpSpEquipCheckRecord entity) + { + if (await _repository.IsAnyAsync(x => x.equip_id == entity.equip_id)) + { + throw Oops.Bah("该设备已存在检验计划"); + } + + if (entity.warn_unit == "1")//月 + { + entity.next_check_time = entity.end_time.Value.AddMonths(-entity.warm_time.Value); + }else if (entity.warn_unit == "2")//天 + { + entity.next_check_time = entity.end_time.Value.AddDays(-entity.warm_time.Value); + } + + entity.id = SnowflakeIdHelper.NextId(); + entity.create_time = DateTime.Now; + entity.create_id = _userManager.UserId; + entity.org_id = _userManager.GetUserInfo().Result.organizeId; + await _repository.InsertAsync(entity); + + } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EqpSubEquipService.cs b/EquipMgr/Tnb.EquipMgr/EqpSubEquipService.cs new file mode 100644 index 00000000..f7059e63 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr/EqpSubEquipService.cs @@ -0,0 +1,67 @@ +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 EqpSubEquipService : IEqpSubEquipService, IDynamicApiController, ITransient + { + private readonly ISqlSugarRepository _repository; + private readonly IUserManager _userManager; + + public EqpSubEquipService(ISqlSugarRepository repository, + IUserManager userManager) + { + _repository = repository; + _userManager = userManager; + } + + [HttpPost] + public async Task GetSubEquipList(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) + .LeftJoin((a, b,c) => a.modify_id == c.Id) + .LeftJoin((a, b,c,d) => a.equip_id == d.id) + .Where((a,b,c,d)=>a.equip_id==input.equip_id) + .WhereIF(queryJson.ContainsKey("code"),(a,b,c,d)=>a.code.Contains(queryJson["code"])) + .WhereIF(queryJson.ContainsKey("name"),(a,b,c,d)=>a.name.Contains(queryJson["name"])) + .Select((a, b, c,d) => new SubEquipQueryOutput + { + id = a.id, + create_id = b.RealName, + create_id_id = a.create_id, + create_time = a.create_time.Value.ToString("yyyy-MM-dd"), + equip_id=d.name, + equip_id_id= a.equip_id, + code = a.code, + modify_id = c.RealName, + modify_time = a.modify_time.Value.ToString("yyyy-MM-dd"), + name = a.name, + org_id = a.org_id, + specification = a.specification, + }).ToPagedListAsync(input.currentPage, input.pageSize); + + return PageResult.SqlSugarPageResult(result); + } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EqpTechnologyParameterService.cs b/EquipMgr/Tnb.EquipMgr/EqpTechnologyParameterService.cs new file mode 100644 index 00000000..b36da391 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr/EqpTechnologyParameterService.cs @@ -0,0 +1,52 @@ +using JNPF.Common.Core.Manager; +using JNPF.Common.Filter; +using JNPF.DependencyInjection; +using JNPF.DynamicApiController; +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 EqpTechnologyParameterService : IEqpTechnologyParameterService, IDynamicApiController, ITransient + { + private readonly ISqlSugarRepository _repository; + private readonly IUserManager _userManager; + + public EqpTechnologyParameterService(ISqlSugarRepository repository, IUserManager userManager) + { + _userManager = userManager; + _repository = repository; + } + + [HttpPost] + public async Task GetEquipTechnologyParameterList(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() + .Where(a=>a.equip_id==input.equip_id) + .WhereIF(queryJson.ContainsKey("name"),a=>a.name.Contains(queryJson["name"])) + .Select(a => new EquipTechnologyParameterQueryOutput + { + id = a.id, + name = a.name, + definition = a.definition, + remark = a.remark + }).ToPagedListAsync(input.currentPage, input.pageSize); + + return PageResult.SqlSugarPageResult(result); + } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EquMaintainRecordService.cs b/EquipMgr/Tnb.EquipMgr/EquMaintainRecordService.cs index 0d526d9b..62c6dc6f 100644 --- a/EquipMgr/Tnb.EquipMgr/EquMaintainRecordService.cs +++ b/EquipMgr/Tnb.EquipMgr/EquMaintainRecordService.cs @@ -1,9 +1,11 @@ using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Enums; +using JNPF.Common.Filter; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; +using JNPF.Systems.Entitys.Permission; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Interfaces; @@ -142,5 +144,41 @@ namespace Tnb.EquipMgr if(!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); return result.IsSuccess ? "复核成功" : result.ErrorMessage; } + + [HttpPost] + public async Task GetMaintainRecordList(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.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) + .Where(a=>a.equip_id==input.equip_id) + .Select((a,b,c,d) => new EquipMaintainRecordQueryOutput + { + id = a.id, + attachment = a.attachment, + create_time = a.create_time.Value.ToString("yyyy-MM-dd HH:mm"), + equip_id = b.code, + equip_id_id = a.equip_id, + repeat_remark = a.repeat_remark, + repeat_result = a.repeat_result=="1"?"合格":"不合格", + repeat_time = a.repeat_time.Value.ToString("yyyy-MM-dd HH:mm"), + repeat_user_id = d.RealName, + result = a.result=="1"?"合格":"不合格", + result_remark = a.result_remark, + maintain_tem_equip_id = a.maintain_tem_equip_id, + execute_time = a.execute_time.Value.ToString("yyyy-MM-dd HH:mm"), + execute_user_id = c.RealName, + status = SqlFunc.IF(a.status.Equals("1")).Return("待执行").ElseIF(a.status.Equals("2")).Return("待复核").ElseIF(a.status.Equals("3")).Return("已完成").End("") + }).ToPagedListAsync(input.currentPage, input.pageSize); + + return PageResult.SqlSugarPageResult(result); + } } } \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EquSpotInsRecordService.cs b/EquipMgr/Tnb.EquipMgr/EquSpotInsRecordService.cs index cf3a76aa..f3b10465 100644 --- a/EquipMgr/Tnb.EquipMgr/EquSpotInsRecordService.cs +++ b/EquipMgr/Tnb.EquipMgr/EquSpotInsRecordService.cs @@ -1,9 +1,11 @@ using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Enums; +using JNPF.Common.Filter; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; +using JNPF.Systems.Entitys.Permission; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Interfaces; @@ -126,5 +128,38 @@ namespace Tnb.EquipMgr status = SpotInsRecordExecutionStatus.COMPLETED }, x => x.id == input.id); } + + [HttpPost] + public async Task GetSpotInsRecordList(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.repeat_user_id==b.Id) + .Where(a=>a.equip_id==input.equip_id) + .Select((a,b) => new EquipSpotInsRecordQueryOutput + { + id = a.id, + attachment = a.attachment, + create_time = a.create_time.Value.ToString("yyyy-MM-dd HH:mm"), + equip_id = a.equip_id, + repeat_remark = a.repeat_remark, + repeat_result = a.repeat_result=="1"?"合格":"不合格", + repeat_time = a.repeat_time.Value.ToString("yyyy-MM-dd HH:mm"), + repeat_user_id = b.RealName, + result = a.result=="1"?"合格":"不合格", + result_remark = a.result_remark, + spot_ins_tem_equip_id = a.spot_ins_tem_equip_id, + spot_record_date_time = a.spot_record_date_time.Value.ToString("yyyy-MM-dd HH:mm"), + spot_record_user_id = a.spot_record_user_id, + status = SqlFunc.IF(a.status.Equals("1")).Return("待执行").ElseIF(a.status.Equals("2")).Return("待复核").ElseIF(a.status.Equals("3")).Return("已完成").End("") + }).ToPagedListAsync(input.currentPage, input.pageSize); + + return PageResult.SqlSugarPageResult(result); + } } } \ No newline at end of file diff --git a/common/Tnb.Common/Extension/StringExtensions.cs b/common/Tnb.Common/Extension/StringExtensions.cs index a11cbfd1..99ac6dfc 100644 --- a/common/Tnb.Common/Extension/StringExtensions.cs +++ b/common/Tnb.Common/Extension/StringExtensions.cs @@ -345,7 +345,7 @@ public static class StringExtensions /// 指示指定的字符串是 null 或者 System.String.Empty 字符串. /// [DebuggerStepThrough] - public static bool IsNullOrEmpty(this string value) + public static bool IsNullOrEmpty(this string? value) { return string.IsNullOrEmpty(value); } @@ -363,7 +363,7 @@ public static class StringExtensions /// 指示指定的字符串是 null、空或者仅由空白字符组成. /// [DebuggerStepThrough] - public static bool IsMissing(this string value) + public static bool IsMissing(this string? value) { return string.IsNullOrWhiteSpace(value); } diff --git a/message/Tnb.Message.Entitys/Entity/MessageAccountEntity.cs b/message/Tnb.Message.Entitys/Entity/MessageAccountEntity.cs index 76ae9532..39416b8f 100644 --- a/message/Tnb.Message.Entitys/Entity/MessageAccountEntity.cs +++ b/message/Tnb.Message.Entitys/Entity/MessageAccountEntity.cs @@ -180,9 +180,10 @@ public class MessageAccountEntity : CLDEntityBase [SugarColumn(ColumnName = "F_DESCRIPTION")] public string? Description { get; set; } - /// - /// 租户id. - /// - [SugarColumn(ColumnName = "F_TENANTID")] - public string? TenantId { get; set; } + // modified by PhilPan 基类包含此属性 + ///// + ///// 租户id. + ///// + //[SugarColumn(ColumnName = "F_TENANTID")] + //public string? TenantId { get; set; } } diff --git a/message/Tnb.Message.Entitys/Entity/MessageDataTypeEntity.cs b/message/Tnb.Message.Entitys/Entity/MessageDataTypeEntity.cs index d9ce70d2..b632cbf0 100644 --- a/message/Tnb.Message.Entitys/Entity/MessageDataTypeEntity.cs +++ b/message/Tnb.Message.Entitys/Entity/MessageDataTypeEntity.cs @@ -30,9 +30,10 @@ public class MessageDataTypeEntity : CLDEntityBase [SugarColumn(ColumnName = "F_ENCODE")] public string? EnCode { get; set; } - /// - /// 租户id. - /// - [SugarColumn(ColumnName = "F_TENANTID")] - public string? TenantId { get; set; } + // modified by PhilPan 基类包含此属性 + ///// + ///// 租户id. + ///// + //[SugarColumn(ColumnName = "F_TENANTID")] + //public string? TenantId { get; set; } } diff --git a/message/Tnb.Message.Entitys/Entity/MessageMonitorEntity.cs b/message/Tnb.Message.Entitys/Entity/MessageMonitorEntity.cs index fe099cce..ed4aa312 100644 --- a/message/Tnb.Message.Entitys/Entity/MessageMonitorEntity.cs +++ b/message/Tnb.Message.Entitys/Entity/MessageMonitorEntity.cs @@ -72,9 +72,10 @@ public class MessageMonitorEntity : CLDEntityBase [SugarColumn(ColumnName = "F_CONTENT")] public string? Content { get; set; } - /// - /// 租户id. - /// - [SugarColumn(ColumnName = "F_TENANTID")] - public string? TenantId { get; set; } + // modified by PhilPan 基类包含此属性 + ///// + ///// 租户id. + ///// + //[SugarColumn(ColumnName = "F_TENANTID")] + //public string? TenantId { get; set; } } diff --git a/message/Tnb.Message.Entitys/Entity/MessageSendEntity.cs b/message/Tnb.Message.Entitys/Entity/MessageSendEntity.cs index 58cf89c7..15f1fc97 100644 --- a/message/Tnb.Message.Entitys/Entity/MessageSendEntity.cs +++ b/message/Tnb.Message.Entitys/Entity/MessageSendEntity.cs @@ -54,9 +54,10 @@ public class MessageSendEntity : CLDEntityBase [SugarColumn(ColumnName = "F_USEDID")] public string? UsedId { get; set; } - /// - /// 租户id. - /// - [SugarColumn(ColumnName = "F_TENANTID")] - public string? TenantId { get; set; } + // modified by PhilPan 基类包含此属性 + ///// + ///// 租户id. + ///// + //[SugarColumn(ColumnName = "F_TENANTID")] + //public string? TenantId { get; set; } } diff --git a/message/Tnb.Message.Entitys/Entity/MessageSendRecordEntity.cs b/message/Tnb.Message.Entitys/Entity/MessageSendRecordEntity.cs index fc6ba0c1..6a2cdd84 100644 --- a/message/Tnb.Message.Entitys/Entity/MessageSendRecordEntity.cs +++ b/message/Tnb.Message.Entitys/Entity/MessageSendRecordEntity.cs @@ -30,9 +30,10 @@ public class MessageSendRecordEntity : CLDEntityBase [SugarColumn(ColumnName = "F_USEDID")] public string? UsedId { get; set; } - /// - /// 租户id. - /// - [SugarColumn(ColumnName = "F_TENANTID")] - public string? TenantId { get; set; } + // modified by PhilPan 基类包含此属性 + ///// + ///// 租户id. + ///// + //[SugarColumn(ColumnName = "F_TENANTID")] + //public string? TenantId { get; set; } } diff --git a/message/Tnb.Message.Entitys/Entity/MessageSendTemplateEntity.cs b/message/Tnb.Message.Entitys/Entity/MessageSendTemplateEntity.cs index 0445a120..fa34cd6b 100644 --- a/message/Tnb.Message.Entitys/Entity/MessageSendTemplateEntity.cs +++ b/message/Tnb.Message.Entitys/Entity/MessageSendTemplateEntity.cs @@ -48,9 +48,10 @@ public class MessageSendTemplateEntity : CLDEntityBase [SugarColumn(ColumnName = "F_DESCRIPTION")] public string? Description { get; set; } - /// - /// 租户id. - /// - [SugarColumn(ColumnName = "F_TENANTID")] - public string? TenantId { get; set; } + // modified by PhilPan 基类包含此属性 + ///// + ///// 租户id. + ///// + //[SugarColumn(ColumnName = "F_TENANTID")] + //public string? TenantId { get; set; } } diff --git a/message/Tnb.Message.Entitys/Entity/MessageShortLinkEntity.cs b/message/Tnb.Message.Entitys/Entity/MessageShortLinkEntity.cs index e2e27120..ff7d9060 100644 --- a/message/Tnb.Message.Entitys/Entity/MessageShortLinkEntity.cs +++ b/message/Tnb.Message.Entitys/Entity/MessageShortLinkEntity.cs @@ -66,9 +66,10 @@ public class MessageShortLinkEntity : CLDEntityBase [SugarColumn(ColumnName = "F_USERID")] public string? UserId { get; set; } - /// - /// 租户id. - /// - [SugarColumn(ColumnName = "F_TENANTID")] - public string? TenantId { get; set; } + // modified by PhilPan 基类包含此属性 + ///// + ///// 租户id. + ///// + //[SugarColumn(ColumnName = "F_TENANTID")] + //public string? TenantId { get; set; } } diff --git a/message/Tnb.Message.Entitys/Entity/MessageSmsFieldEntity.cs b/message/Tnb.Message.Entitys/Entity/MessageSmsFieldEntity.cs index e252eb92..ad432df4 100644 --- a/message/Tnb.Message.Entitys/Entity/MessageSmsFieldEntity.cs +++ b/message/Tnb.Message.Entitys/Entity/MessageSmsFieldEntity.cs @@ -36,9 +36,10 @@ public class MessageSmsFieldEntity : CLDEntityBase [SugarColumn(ColumnName = "F_Field")] public string? Field { get; set; } - /// - /// 租户id. - /// - [SugarColumn(ColumnName = "F_TENANTID")] - public string? TenantId { get; set; } + // modified by PhilPan 基类包含此属性 + ///// + ///// 租户id. + ///// + //[SugarColumn(ColumnName = "F_TENANTID")] + //public string? TenantId { get; set; } } diff --git a/message/Tnb.Message.Entitys/Entity/MessageTemplateEntity.cs b/message/Tnb.Message.Entitys/Entity/MessageTemplateEntity.cs index c9280752..08ca9030 100644 --- a/message/Tnb.Message.Entitys/Entity/MessageTemplateEntity.cs +++ b/message/Tnb.Message.Entitys/Entity/MessageTemplateEntity.cs @@ -84,9 +84,10 @@ public class MessageTemplateEntity : CLDEntityBase [SugarColumn(ColumnName = "F_DESCRIPTION")] public string? Description { get; set; } - /// - /// 租户id. - /// - [SugarColumn(ColumnName = "F_TENANTID")] - public string? TenantId { get; set; } + // modified by PhilPan 基类包含此属性 + ///// + ///// 租户id. + ///// + //[SugarColumn(ColumnName = "F_TENANTID")] + //public string? TenantId { get; set; } } diff --git a/message/Tnb.Message.Entitys/Entity/MessageTemplateParamEntity.cs b/message/Tnb.Message.Entitys/Entity/MessageTemplateParamEntity.cs index 9e322df1..47baf4ac 100644 --- a/message/Tnb.Message.Entitys/Entity/MessageTemplateParamEntity.cs +++ b/message/Tnb.Message.Entitys/Entity/MessageTemplateParamEntity.cs @@ -30,9 +30,10 @@ public class MessageTemplateParamEntity : CLDEntityBase [SugarColumn(ColumnName = "F_FIELD")] public string? Field { get; set; } - /// - /// 租户id. - /// - [SugarColumn(ColumnName = "F_TENANTID")] - public string? TenantId { get; set; } + // modified by PhilPan 基类包含此属性 + ///// + ///// 租户id. + ///// + //[SugarColumn(ColumnName = "F_TENANTID")] + //public string? TenantId { get; set; } } diff --git a/message/Tnb.Message.Entitys/Entity/MessageWechatUserEntity.cs b/message/Tnb.Message.Entitys/Entity/MessageWechatUserEntity.cs index e8ca56d9..c9fe39b4 100644 --- a/message/Tnb.Message.Entitys/Entity/MessageWechatUserEntity.cs +++ b/message/Tnb.Message.Entitys/Entity/MessageWechatUserEntity.cs @@ -36,9 +36,10 @@ public class MessageWechatUserEntity : CLDEntityBase [SugarColumn(ColumnName = "F_CLOSEMARK")] public int? CloseMark { get; set; } - /// - /// 租户id. - /// - [SugarColumn(ColumnName = "F_TENANTID")] - public string? TenantId { get; set; } + // modified by PhilPan 基类包含此属性 + ///// + ///// 租户id. + ///// + //[SugarColumn(ColumnName = "F_TENANTID")] + //public string? TenantId { get; set; } } diff --git a/message/Tnb.Message.Entitys/Entity/UserDeviceEntity.cs b/message/Tnb.Message.Entitys/Entity/UserDeviceEntity.cs index 8f2da925..1b988883 100644 --- a/message/Tnb.Message.Entitys/Entity/UserDeviceEntity.cs +++ b/message/Tnb.Message.Entitys/Entity/UserDeviceEntity.cs @@ -24,9 +24,10 @@ public class UserDeviceEntity : CLDEntityBase [SugarColumn(ColumnName = "F_USERID")] public string? UserId { get; set; } - /// - /// 租户id. - /// - [SugarColumn(ColumnName = "F_TENANTID")] - public string? TenantId { get; set; } + // modified by PhilPan 基类包含此属性 + ///// + ///// 租户id. + ///// + //[SugarColumn(ColumnName = "F_TENANTID")] + //public string? TenantId { get; set; } } diff --git a/system/Tnb.Systems.Entitys/Entity/Permission/SocialsUsersEntity.cs b/system/Tnb.Systems.Entitys/Entity/Permission/SocialsUsersEntity.cs index 2286a94a..4b7ec1f0 100644 --- a/system/Tnb.Systems.Entitys/Entity/Permission/SocialsUsersEntity.cs +++ b/system/Tnb.Systems.Entitys/Entity/Permission/SocialsUsersEntity.cs @@ -34,11 +34,12 @@ public class SocialsUsersEntity : CEntityBase [SugarColumn(ColumnName = "F_SocialName")] public string SocialName { get; set; } - /// - /// 租户id. - /// - [SugarColumn(ColumnName = "F_TenantId")] - public string TenantId { get; set; } + // modified by PhilPan 基类包含此属性 + ///// + ///// 租户id. + ///// + //[SugarColumn(ColumnName = "F_TenantId")] + //public string TenantId { get; set; } /// /// 备注. diff --git a/system/Tnb.Systems.Entitys/Entity/Permission/TenantSocialsEntity.cs b/system/Tnb.Systems.Entitys/Entity/Permission/TenantSocialsEntity.cs index d76a58b2..d1001d35 100644 --- a/system/Tnb.Systems.Entitys/Entity/Permission/TenantSocialsEntity.cs +++ b/system/Tnb.Systems.Entitys/Entity/Permission/TenantSocialsEntity.cs @@ -46,11 +46,12 @@ public class TenantSocialsEntity : CEntityBase [SugarColumn(ColumnName = "F_SocialName")] public string SocialName { get; set; } - /// - /// 租户id. - /// - [SugarColumn(ColumnName = "F_TenantId")] - public string TenantId { get; set; } + // modified by PhilPan 基类包含此属性 + ///// + ///// 租户id. + ///// + //[SugarColumn(ColumnName = "F_TenantId")] + //public string TenantId { get; set; } /// /// 备注. diff --git a/system/Tnb.Systems.Entitys/Entity/Permission/UserOldPasswordEntity.cs b/system/Tnb.Systems.Entitys/Entity/Permission/UserOldPasswordEntity.cs index bf474a97..f5645d23 100644 --- a/system/Tnb.Systems.Entitys/Entity/Permission/UserOldPasswordEntity.cs +++ b/system/Tnb.Systems.Entitys/Entity/Permission/UserOldPasswordEntity.cs @@ -39,9 +39,10 @@ public class UserOldPasswordEntity : EntityBase [SugarColumn(ColumnName = "F_CreatorTime")] public DateTime CreatorTime { get; set; } - /// - /// 租户ID. - /// - [SugarColumn(ColumnName = "F_TenantId")] - public string TenantId { get; set; } + // modified by PhilPan 基类包含此属性 + ///// + ///// 租户ID. + ///// + //[SugarColumn(ColumnName = "F_TenantId")] + //public string TenantId { get; set; } } diff --git a/taskschedule/Tnb.TaskScheduler/Listener/GenerateSpEquipCheckPlanTimeWorker.cs b/taskschedule/Tnb.TaskScheduler/Listener/GenerateSpEquipCheckPlanTimeWorker.cs new file mode 100644 index 00000000..cb606392 --- /dev/null +++ b/taskschedule/Tnb.TaskScheduler/Listener/GenerateSpEquipCheckPlanTimeWorker.cs @@ -0,0 +1,93 @@ +using JNPF.Common.Security; +using JNPF.Logging; +using SqlSugar; +using Tnb.EquipMgr.Entities; + +namespace JNPF.TaskScheduler.Listener +{ + /// + /// 生成特种设备检验计划 + /// + public class GenerateSpEquipCheckPlanTimeWorker : ISpareTimeWorker + { + private ISqlSugarRepository _repository => App.GetService>(); + + [SpareTime("0 0 0 * * ?", "生成特种设备检验计划", ExecuteType = SpareTimeExecuteTypes.Serial,StartNow = false)] + public void GenerateSpotInspectionPlan(SpareTimer timer, long count) + { + Log.Information("----------------------开始生成特种设备检验计划----------------------"); + + try + { + var db = _repository.AsSugarClient(); + + List ids = _repository.GetList(x => x.status == "0").Select(x => x.equip_id).Distinct() + .ToList(); + + List list = db.Queryable().GroupBy(x=>new + { + x.equip_id, + }).Where(x => x.status == "1" && !ids.Contains(x.equip_id))//排除有未检验的 + .Select(x=>new + { + equip_id = x.equip_id, + create_time = SqlFunc.AggregateMax(x.create_time), + + }) + .MergeTable() + .LeftJoin((x,y)=>x.equip_id==y.equip_id && x.create_time.Value.ToString("yyyy-MM-dd")==y.create_time.Value.ToString("yyyy-MM-dd")) + .Select((x,y)=>y) + .ToList(); + + List insertList = new List(); + if (list != null && list.Count > 0) + { + foreach (var item in list) + { + if (item.end_time != null && item.warn_unit!=null) + { + if (item.warn_unit == "1") + { + if (item.end_time.Value.AddMonths(-item.warm_time.Value).ToString("yyyy-MM-dd") == + DateTime.Now.ToString("yyyy-MM-dd")) + { + insertList.Add(new EqpSpEquipCheckRecord() + { + id = SnowflakeIdHelper.NextId(), + equip_id = item.equip_id, + status = "0" + }); + } + + }else if (item.warn_unit == "2") + { + if (item.end_time.Value.AddDays(-item.warm_time.Value).ToString("yyyy-MM-dd") == + DateTime.Now.ToString("yyyy-MM-dd")) + { + insertList.Add(new EqpSpEquipCheckRecord() + { + id = SnowflakeIdHelper.NextId(), + equip_id = item.equip_id, + status = "0" + }); + } + } + + } + + } + + _repository.InsertRange(insertList); + } + } + catch (Exception e) + { + Console.WriteLine(e.Message); + Log.Error(e.Message); + } + + + Log.Information("----------------------结束生成特种设备检验计划----------------------"); + } + } +} \ No newline at end of file diff --git a/taskschedule/Tnb.TaskScheduler/TimeTaskService.cs b/taskschedule/Tnb.TaskScheduler/TimeTaskService.cs index 427d0056..4deb9035 100644 --- a/taskschedule/Tnb.TaskScheduler/TimeTaskService.cs +++ b/taskschedule/Tnb.TaskScheduler/TimeTaskService.cs @@ -16,6 +16,7 @@ using JNPF.Schedule; using JNPF.Systems.Interfaces.System; using JNPF.TaskScheduler.Entitys; using JNPF.TaskScheduler.Entitys.Dto.TaskScheduler; +using JNPF.TaskScheduler.Entitys.Enum; using JNPF.TaskScheduler.Entitys.Model; using JNPF.TaskScheduler.Interfaces.TaskScheduler; using JNPF.TimeCrontab; @@ -412,40 +413,42 @@ public class TimeTaskService : ITimeTaskService, IDynamicApiController, ITransie /// private async Task> GetTaskMethods() { - //var taskMethods = await _cacheManager.GetAsync>(CommonConst.CACHEKEYTIMERJOB); - //if (taskMethods != null) return taskMethods; + // var taskMethods = await _cacheManager.GetAsync>(CommonConst.CACHEKEYTIMERJOB); + // if (taskMethods != null) return taskMethods; - //// 获取所有本地任务方法,必须有spareTimeAttribute特性 - //taskMethods = App.EffectiveTypes - // .Where(u => u.IsClass && !u.IsInterface && !u.IsAbstract && typeof(ISpareTimeWorker).IsAssignableFrom(u)) - // .SelectMany(u => u.GetMethods(BindingFlags.Public | BindingFlags.Instance) - // .Where(m => m.IsDefined(typeof(SpareTimeAttribute), false) && - // m.GetParameters().Length == 2 && - // m.GetParameters()[0].ParameterType == typeof(SpareTimer) && - // m.GetParameters()[1].ParameterType == typeof(long) && m.ReturnType == typeof(void)) - // .Select(m => - // { - // // 默认获取第一条任务特性 - // var spareTimeAttribute = m.GetCustomAttribute(); - // return new TaskMethodInfo - // { - // id = $"{m.DeclaringType.Name}/{m.Name}", - // fullName = spareTimeAttribute.WorkerName, - // RequestUrl = $"{m.DeclaringType.Name}/{m.Name}", - // cron = spareTimeAttribute.CronExpression, - // DoOnce = spareTimeAttribute.DoOnce, - // ExecuteType = spareTimeAttribute.ExecuteType, - // Interval = (int)spareTimeAttribute.Interval / 1000, - // StartNow = spareTimeAttribute.StartNow, - // RequestType = RequestTypeEnum.BuiltIn, - // Remark = spareTimeAttribute.Description, - // TimerType = string.IsNullOrEmpty(spareTimeAttribute.CronExpression) ? SpareTimeTypes.Interval : SpareTimeTypes.Cron, - // MethodName = m.Name, - // DeclaringType = m.DeclaringType - // }; - // })).ToList(); - //await _cacheManager.SetAsync(CommonConst.CACHEKEYTIMERJOB, taskMethods); - //return taskMethods; + List taskMethods = null; + + // 获取所有本地任务方法,必须有spareTimeAttribute特性 + taskMethods = App.EffectiveTypes + .Where(u => u.IsClass && !u.IsInterface && !u.IsAbstract && typeof(ISpareTimeWorker).IsAssignableFrom(u)) + .SelectMany(u => u.GetMethods(BindingFlags.Public | BindingFlags.Instance) + .Where(m => m.GetCustomAttributes(typeof(SpareTimeAttribute), false).ToString().Contains("SpareTime") && + m.GetParameters().Length == 2 && + m.GetParameters()[0].ParameterType == typeof(SpareTimer) && + m.GetParameters()[1].ParameterType == typeof(long) && m.ReturnType == typeof(void)) + .Select(m => + { + // 默认获取第一条任务特性 + var spareTimeAttribute = m.GetCustomAttribute(); + return new TaskMethodInfo + { + id = $"{m.DeclaringType.Name}/{m.Name}", + fullName = spareTimeAttribute.WorkerName, + RequestUrl = $"{m.DeclaringType.Name}/{m.Name}", + cron = spareTimeAttribute.CronExpression, + DoOnce = spareTimeAttribute.DoOnce, + ExecuteType = spareTimeAttribute.ExecuteType, + Interval = (int)spareTimeAttribute.Interval / 1000, + StartNow = spareTimeAttribute.StartNow, + RequestType = RequestTypeEnum.BuiltIn, + Remark = spareTimeAttribute.Description, + TimerType = string.IsNullOrEmpty(spareTimeAttribute.CronExpression) ? SpareTimeTypes.Interval : SpareTimeTypes.Cron, + MethodName = m.Name, + DeclaringType = m.DeclaringType + }; + })).ToList(); + await _cacheManager.SetAsync(CommonConst.CACHEKEYTIMERJOB, taskMethods); + return taskMethods; return new List(); } diff --git a/visualdev/Tnb.VisualDev.Engine/Model/IndexGridFieldModel.cs b/visualdev/Tnb.VisualDev.Engine/Model/IndexGridFieldModel.cs index bba29120..6e642b69 100644 --- a/visualdev/Tnb.VisualDev.Engine/Model/IndexGridFieldModel.cs +++ b/visualdev/Tnb.VisualDev.Engine/Model/IndexGridFieldModel.cs @@ -8,10 +8,11 @@ namespace JNPF.VisualDev.Engine; [SuppressSniffer] public class IndexGridFieldModel : IndexEachConfigBase { - /// - /// 对齐. - /// - public string align { get; set; } + // modified by PhilPan 基类包含此属性 + ///// + ///// 对齐. + ///// + //public string align { get; set; } /// /// 固定. diff --git a/visualdev/Tnb.VisualDev.Engine/Model/IndexSearchFieldModel.cs b/visualdev/Tnb.VisualDev.Engine/Model/IndexSearchFieldModel.cs index e5fd5eb2..ed53d852 100644 --- a/visualdev/Tnb.VisualDev.Engine/Model/IndexSearchFieldModel.cs +++ b/visualdev/Tnb.VisualDev.Engine/Model/IndexSearchFieldModel.cs @@ -14,10 +14,11 @@ public class IndexSearchFieldModel : IndexEachConfigBase /// public string value { get; set; } - /// - /// 查询类型. - /// - public int? searchType { get; set; } + // modified by PhilPan 基类包含此属性 + ///// + ///// 查询类型. + ///// + //public int? searchType { get; set; } } /// diff --git a/visualdev/Tnb.VisualDev.Entitys/Entity/VisualDevShortLinkEntity.cs b/visualdev/Tnb.VisualDev.Entitys/Entity/VisualDevShortLinkEntity.cs index c4869e3b..49f08e05 100644 --- a/visualdev/Tnb.VisualDev.Entitys/Entity/VisualDevShortLinkEntity.cs +++ b/visualdev/Tnb.VisualDev.Entitys/Entity/VisualDevShortLinkEntity.cs @@ -93,9 +93,10 @@ public class VisualDevShortLinkEntity : CLDEntityBase [SugarColumn(ColumnName = "F_UserId")] public string UserId { get; set; } - /// - /// 租户id. - /// - [SugarColumn(ColumnName = "F_TenantId")] - public string TenantId { get; set; } + // modified by PhilPan 基类包含此属性 + ///// + ///// 租户id. + ///// + //[SugarColumn(ColumnName = "F_TenantId")] + //public string TenantId { get; set; } } \ No newline at end of file