Files
tnb.server/EquipMgr/Tnb.EquipMgr/EquSpotInsRecordService.cs

241 lines
11 KiB
C#

using JNPF.Common.Core.Manager;
using JNPF.Common.Dtos.VisualDev;
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 JNPF.VisualDev;
using JNPF.VisualDev.Entitys;
using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
using JNPF.VisualDev.Interfaces;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using SqlSugar;
using Tnb.BasicData.Entities;
using Tnb.BasicData.Entities.Dto;
using Tnb.EquipMgr.Entities;
using Tnb.EquipMgr.Entities.Dto;
using Tnb.EquipMgr.Interfaces;
namespace Tnb.EquipMgr
{
/// <summary>
/// 点巡检执行管理
/// </summary>
[ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 700)]
[Route("api/[area]/[controller]/[action]")]
[OverideVisualDev(ModuleId)]
public class EquSpotInsRecordService : IOverideVisualDevService, IEquSpotInsRecordService, IDynamicApiController, ITransient
{
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
private const string ModuleId = "26123080740885";
private readonly ISqlSugarRepository<EqpSpotInsRecordH> _repository;
private readonly IVisualDevService _visualDevService;
private readonly IRunService _runService;
private readonly IUserManager _userManager;
public EquSpotInsRecordService(ISqlSugarRepository<EqpSpotInsRecordH> repository,
IRunService runService,
IUserManager userManager,
IVisualDevService visualDevService)
{
_repository = repository;
_visualDevService = visualDevService;
_runService = runService;
_userManager = userManager;
// OverideFuncs.UpdateAsync = ExecuteSpotIns;
OverideFuncs.GetListAsync = GetList;
}
private async Task<object> GetList(VisualDevModelListQueryInput input)
{
var db = _repository.AsSugarClient();
Dictionary<string, object>? queryJson = (input==null || string.IsNullOrEmpty(input.queryJson)) ? new Dictionary<string, object>() : input.queryJson.ToObject<Dictionary<string, object>>();
string equioInfo = queryJson.ContainsKey("query_info") ? (queryJson["query_info"].ToString() ?? "") : "";
string status = queryJson.ContainsKey("status") ? (queryJson["status"].ToString() ?? "") : "";
var list = await db.Queryable<EqpSpotInsRecordH, EqpEquipment, UserEntity,UserEntity>((a, b, c,d) => new object[]
{
JoinType.Left, a.equip_id == b.id,
JoinType.Left, a.spot_record_user_id == c.Id,
JoinType.Left, a.repeat_user_id == d.Id,
})
.WhereIF(!string.IsNullOrEmpty(status),(a,b,c)=>a.status==status)
.WhereIF(!string.IsNullOrEmpty(equioInfo),(a,b,c)=>b.code.Contains(equioInfo)|| b.name.Contains(equioInfo))
.Select((a, b, c,d) => new EqpSpotInsRecordListOutput
{
id = a.id,
equip_id = b.code+"/"+b.name,
equip_id_id = a.equip_id,
status = a.status,
result = a.result=="1" ? "合格" : "不合格",
repeat_result = a.repeat_result=="1" ? "合格" : "不合格",
date_create_time = a.create_time,
date_spot_record_date_time = a.spot_record_date_time,
date_repeat_time = a.repeat_time,
spot_record_user_id = c.RealName,
spot_record_user_id_id = a.spot_record_user_id,
repeat_user_id = d.RealName,
repeat_user_id_id = a.repeat_user_id,
})
.OrderByDescending(a=>a.create_time)
.Mapper(a =>
{
a.status = a.status=="1" ? "待执行" : a.status=="2" ? "待复核" : "已完成";
a.create_time = a.date_create_time == null ? "" : a.date_create_time.Value.ToString("yyyy-MM-dd HH:mm:ss");
a.spot_record_date_time = a.date_spot_record_date_time == null ? "" : a.date_spot_record_date_time.Value.ToString("yyyy-MM-dd HH:mm:ss");
a.repeat_time = a.date_repeat_time == null ? "" : a.date_repeat_time.Value.ToString("yyyy-MM-dd HH:mm:ss");
})
.ToPagedListAsync((input?.currentPage ?? 1), (input?.pageSize ?? 50));
return PageResult<EqpSpotInsRecordListOutput>.SqlSugarPageResult(list);
}
/// <summary>
/// 执行点巡检
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<dynamic> ExecuteSpotIns(SpotInsRecordExecuteInput input)
{
DbResult<bool> result = await _repository.AsSugarClient().Ado.UseTranAsync(async () =>
{
EqpSpotInsRecordH eqpSpotInsRecordH = _repository.GetSingle(x=>x.id==input.id);
string status = "";
if (eqpSpotInsRecordH.is_repeat == "1")
{
status = SpotInsRecordExecutionStatus.TOBECHECK;
}
else
{
status = SpotInsRecordExecutionStatus.COMPLETED;
}
await _repository.UpdateAsync(x => new EqpSpotInsRecordH()
{
result = input.result,
attachment = input.attachment,
result_remark = input.result_remark,
status = status,
spot_record_date_time = DateTime.Now,
spot_record_user_id = _userManager.UserId
}, x => x.id == input.id);
if(input!=null && input.details!=null)
{
foreach (var item in input.details)
{
await _repository.AsSugarClient().Updateable<EqpSpotInsRecordD>().
SetColumns(x=>x.result==item["result"])
.SetColumnsIF(item["judge_type"]=="1",x=>x.real_value==Convert.ToDouble(item["real_value"]))
.Where(x=>x.id==item["id"])
.ExecuteCommandAsync();
}
}
});
if(!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008);
return result.IsSuccess ? "执行成功" : result.ErrorMessage;
}
/// <summary>
/// 获取点巡检复核信息
/// </summary>
/// <param name="dic"></param>
/// <returns></returns>
[HttpPost]
public async Task<SpotInsRecordRepeatOutput> GetSpotInsRecordRepeatInfo(Dictionary<string, string> dic)
{
string id = dic["id"];
EqpSpotInsRecordH eqpSpotInsRecordH = await _repository.GetSingleAsync(x => x.id == id);
List<EqpSpotInsRecordD> eqpSpotInsRecordDs = await _repository.AsSugarClient().Queryable<EqpSpotInsRecordD>()
.Where(x => x.spot_ins_record_id == id).ToListAsync();
SpotInsRecordRepeatOutput output = new SpotInsRecordRepeatOutput()
{
model = eqpSpotInsRecordH,
details = eqpSpotInsRecordDs,
};
return output;
}
/// <summary>
/// 复核点巡检
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task RepeatSpotIns(SpotInsRecordRepeatInput input)
{
await _repository.UpdateAsync(x => new EqpSpotInsRecordH()
{
repeat_result = input.repeat_result,
repeat_remark = input.repeat_remark,
repeat_user_id = _userManager.UserId,
repeat_time = DateTime.Now,
status = SpotInsRecordExecutionStatus.COMPLETED
}, x => x.id == input.id);
}
[HttpPost]
public async Task<dynamic> GetSpotInsRecordList(EquipQueryInput input)
{
var db = _repository.AsSugarClient();
Dictionary<string, string>? queryJson = new Dictionary<string, string>();
if (!string.IsNullOrEmpty(input.queryJson))
{
queryJson = JsonConvert.DeserializeObject<Dictionary<string, string>>(input.queryJson);
}
var result = await db.Queryable<EqpSpotInsRecordH>()
.LeftJoin<UserEntity>((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==null ? null : 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==null ? null : 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==null ? null :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<EquipSpotInsRecordQueryOutput>.SqlSugarPageResult(result);
}
/// <summary>
/// 根据id获取点巡检相关信息
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<dynamic> GetEqpSpotInsRecordInfoById(Dictionary<string,string> dic)
{
string id = dic.ContainsKey("id") ? dic["id"] : "";
if (string.IsNullOrEmpty(id)) return null;
var db = _repository.AsSugarClient();
return await db.Queryable<EqpSpotInsRecordH>()
.LeftJoin<EqpEquipment>((a, b) => a.equip_id==b.id)
.Where((a, b) => a.id == id)
.Select((a, b) => new
{
id = a.id,
equip_id = a.equip_id,
equip_code = b.code,
equip_name = b.name,
create_time = a.create_time==null ? "" : a.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss"),
result_remark = a.result_remark,
result = a.result,
status = a.status,
}).FirstAsync();
}
}
}