244 lines
11 KiB
C#
244 lines
11 KiB
C#
using Aop.Api.Domain;
|
|
using Aspose.Cells.Drawing;
|
|
using JNPF.Common.Core.Manager;
|
|
using JNPF.Common.Dtos.VisualDev;
|
|
using JNPF.Common.Filter;
|
|
using JNPF.Common.Security;
|
|
using JNPF.DependencyInjection;
|
|
using JNPF.DynamicApiController;
|
|
using JNPF.Extras.CollectiveOAuth.Models;
|
|
using JNPF.FriendlyException;
|
|
using JNPF.Logging;
|
|
using JNPF.Systems.Entitys.Permission;
|
|
using JNPF.VisualDev;
|
|
using JNPF.VisualDev.Entitys;
|
|
using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
|
|
using JNPF.VisualDev.Interfaces;
|
|
using Mapster;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Senparc.NeuChar.ApiHandlers;
|
|
using SqlSugar;
|
|
using Tnb.BasicData;
|
|
using Tnb.EquipMgr.Entities;
|
|
using Tnb.EquipMgr.Entities.Dto;
|
|
using Tnb.EquipMgr.Interfaces;
|
|
using Tnb.BasicData.Entities;
|
|
|
|
namespace Tnb.EquipMgr
|
|
{
|
|
/// <summary>
|
|
/// 设备管理
|
|
/// </summary>
|
|
[ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 700)]
|
|
[Route("api/[area]/[controller]/[action]")]
|
|
[OverideVisualDev(ModuleId)]
|
|
|
|
public class EquipmentService : IOverideVisualDevService, IEquipmentService, IDynamicApiController, ITransient
|
|
{
|
|
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
|
|
private const string ModuleId = "26012367560469";
|
|
private readonly ISqlSugarRepository<EqpEquipment> _repository;
|
|
private readonly IVisualDevService _visualDevService;
|
|
private readonly IRunService _runService;
|
|
private readonly IUserManager _userManager;
|
|
|
|
public EquipmentService(ISqlSugarRepository<EqpEquipment> repository,
|
|
IVisualDevService visualDevService,
|
|
IUserManager userManager,
|
|
IRunService runService
|
|
)
|
|
{
|
|
_repository = repository;
|
|
_visualDevService = visualDevService;
|
|
_runService = runService;
|
|
_userManager = userManager;
|
|
OverideFuncs.CreateAsync = Create;
|
|
OverideFuncs.UpdateAsync = Update;
|
|
}
|
|
/// <summary>
|
|
/// 在线开发-获取设备列表
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
private async Task<dynamic> GetList(VisualDevModelListQueryInput input)
|
|
{
|
|
var dic = new Dictionary<string, string>
|
|
{
|
|
{ "Qualified","合格"},
|
|
{ "Unqualified","不合格"},
|
|
};
|
|
|
|
var pagedList = await _repository.AsQueryable()
|
|
//.Where(it => it.station_code == input.station_code || string.IsNullOrEmpty(input.station_code))
|
|
.Select(it => new EquipmentListOutput
|
|
{
|
|
id = it.id,
|
|
eqp_code = it.code,
|
|
eqp_name = it.name,
|
|
eqp_type_code = SqlFunc.Subqueryable<EqpEquipType>().Where(x=>x.id == it.equip_type_id).Select(x=>x.code),
|
|
//accept_status = it.accept_status,
|
|
//supplier_code = it.supplier_code,
|
|
install_date = it.install_date,
|
|
//use_department_code = it.use_department_code,
|
|
remark = it.remark,
|
|
})
|
|
//.Mapper(it => it.accept_status = dic.ContainsKey(it.accept_status) ? dic[it.accept_status] : "")
|
|
.ToPagedListAsync(input.currentPage, input.pageSize);
|
|
return pagedList;
|
|
}
|
|
|
|
private async Task<dynamic> Create(VisualDevModelDataCrInput visualDevModelDataCrInput)
|
|
{
|
|
string qrcode = visualDevModelDataCrInput.data.ContainsKey("qrcode") ? visualDevModelDataCrInput.data["qrcode"]?.ToString() : "";
|
|
if (!string.IsNullOrEmpty(qrcode) && await _repository.AsSugarClient().Queryable<BasQrcode>().AnyAsync(x => x.code == qrcode))
|
|
{
|
|
throw Oops.Bah("二维码总表中已存在该二维码");
|
|
}
|
|
else
|
|
{
|
|
VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true);
|
|
await _runService.Create(templateEntity, visualDevModelDataCrInput);
|
|
|
|
string equipId = visualDevModelDataCrInput.data["ReturnIdentity"].ToString() ?? "";
|
|
|
|
if (!string.IsNullOrEmpty(qrcode))
|
|
{
|
|
BasQrcode basQrcode = new BasQrcode()
|
|
{
|
|
code = visualDevModelDataCrInput.data["qrcode"].ToString(),
|
|
source_id = equipId,
|
|
source_name = "EQP_EQUIPMENT",
|
|
create_id = _userManager.UserId,
|
|
create_time = DateTime.Now,
|
|
org_id = _userManager.GetUserInfo().Result.organizeId,
|
|
};
|
|
await _repository.AsSugarClient().Insertable<BasQrcode>(basQrcode).ExecuteCommandAsync();
|
|
}
|
|
}
|
|
return await Task.FromResult(true);
|
|
}
|
|
|
|
private async Task<dynamic> Update(string id,VisualDevModelDataUpInput visualDevModelDataUpInput)
|
|
{
|
|
string qrcode = visualDevModelDataUpInput.data.ContainsKey("qrcode") ? visualDevModelDataUpInput.data["qrcode"]?.ToString() : "";
|
|
if (!string.IsNullOrEmpty(qrcode) && await _repository.AsSugarClient().Queryable<BasQrcode>().AnyAsync(x => x.code == visualDevModelDataUpInput.data["qrcode"] && x.source_id!=id))
|
|
{
|
|
throw Oops.Bah("二维码总表中已存在该二维码");
|
|
}
|
|
else
|
|
{
|
|
VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true);
|
|
await _runService.Update(id,templateEntity, visualDevModelDataUpInput);
|
|
|
|
if (!string.IsNullOrEmpty(qrcode))
|
|
{
|
|
if (await _repository.AsSugarClient().Queryable<BasQrcode>().AnyAsync(x => x.source_id == id))
|
|
{
|
|
await _repository.AsSugarClient().Updateable<BasQrcode>()
|
|
.SetColumns(x => x.code == visualDevModelDataUpInput.data["qrcode"].ToString()).Where(x => x.source_id == id)
|
|
.ExecuteCommandAsync();
|
|
}
|
|
else
|
|
{
|
|
BasQrcode basQrcode = new BasQrcode()
|
|
{
|
|
code = visualDevModelDataUpInput.data["qrcode"].ToString(),
|
|
source_id = id,
|
|
source_name = "EQP_EQUIPMENT",
|
|
create_id = _userManager.UserId,
|
|
create_time = DateTime.Now,
|
|
org_id = _userManager.GetUserInfo().Result.organizeId,
|
|
};
|
|
await _repository.AsSugarClient().Insertable<BasQrcode>(basQrcode).ExecuteCommandAsync();
|
|
}
|
|
}
|
|
}
|
|
return await Task.FromResult(true);
|
|
}
|
|
|
|
[HttpPost]
|
|
public async Task<EqpEquipment> GetEntityById(Dictionary<string,string> dic)
|
|
{
|
|
string id = dic["id"];
|
|
return await _repository.GetSingleAsync(x => x.id == id);
|
|
}
|
|
|
|
[HttpPost]
|
|
public async Task<dynamic> GetListByTypeId(Dictionary<string, string> dic)
|
|
{
|
|
string typeIds = dic["typeIds"];
|
|
string[] typeIdArr = typeIds.Split(",");
|
|
return await _repository.AsSugarClient().Queryable<EqpEquipment>().Where(x => typeIdArr.Contains(x.equip_type_id))
|
|
.ToListAsync();
|
|
}
|
|
|
|
[HttpPost]
|
|
public async Task<dynamic> GetWorklineAndEquipTree(Dictionary<string,string> dic)
|
|
{
|
|
string equipTypes = dic.ContainsKey("equipTypes") ? dic["equipTypes"] : "";
|
|
var db = _repository.AsSugarClient();
|
|
var queryable1 = db.Queryable<OrganizeEntity>()
|
|
.Where((a) => a.DeleteMark == null && a.Category==DictConst.RegionCategoryWorkshopCode)
|
|
.Select((a) => new WorklineAndEquipTreeOutput()
|
|
{
|
|
id = a.Id,
|
|
title = a.EnCode+"/"+a.FullName,
|
|
parentId = "0",
|
|
hasChildren = SqlFunc.Subqueryable<OrganizeEntity>().Where(b=>b.ParentId==a.Id && b.DeleteMark==null && b.Category==DictConst.RegionCategoryWorklineCode).Any(),
|
|
num = SqlFunc.Subqueryable<OrganizeEntity>().Where(b=>b.ParentId==a.Id && b.DeleteMark==null && b.Category==DictConst.RegionCategoryWorklineCode).Count(),
|
|
isLeaf = false,
|
|
children = SqlFunc.Subqueryable<OrganizeEntity>().Where(b=>b.ParentId==a.Id && b.DeleteMark==null && b.Category==DictConst.RegionCategoryWorklineCode).ToList(b=>new WorklineAndEquipTreeOutput()
|
|
{
|
|
id = b.Id,
|
|
title = b.EnCode+"/"+b.FullName,
|
|
parentId = b.ParentId,
|
|
hasChildren = false,
|
|
num = 0,
|
|
isLeaf = true,
|
|
})
|
|
});
|
|
|
|
List<WorklineAndEquipTreeOutput> list2 = new List<WorklineAndEquipTreeOutput>();
|
|
if (!string.IsNullOrEmpty(equipTypes))
|
|
{
|
|
string[] equipTypeArr = equipTypes.Split(",");
|
|
list2 = await db.Queryable<EqpEquipType>()
|
|
.Where((a) => equipTypeArr.Contains(a.code))
|
|
.Select((a) => new WorklineAndEquipTreeOutput()
|
|
{
|
|
id = a.id,
|
|
title = a.name,
|
|
parentId = "0",
|
|
hasChildren = SqlFunc.Subqueryable<EqpEquipment>().Where(b=>b.equip_type_id==a.id).Any(),
|
|
num = SqlFunc.Subqueryable<EqpEquipment>().Where(b=>b.equip_type_id==a.id).Count(),
|
|
isLeaf = false,
|
|
children = SqlFunc.Subqueryable<EqpEquipment>().Where(b=>b.equip_type_id==a.id).ToList(b=>new WorklineAndEquipTreeOutput()
|
|
{
|
|
id = b.id,
|
|
title = b.code+"/"+b.name,
|
|
parentId = b.equip_type_id,
|
|
hasChildren = false,
|
|
num = 0,
|
|
isLeaf = true,
|
|
})
|
|
}).ToListAsync();
|
|
|
|
}
|
|
|
|
// var list = await db.UnionAll(queryable1, queryable2).ToListAsync();
|
|
var list1 = await queryable1.ToListAsync();
|
|
list1.AddRange(list2);
|
|
return new AuthResponse(200, "", new Dictionary<string,object>()
|
|
{
|
|
["list"] = list1,
|
|
});
|
|
}
|
|
|
|
[HttpPost]
|
|
public async Task<EqpEquipment> GetEntityByQrcode(Dictionary<string, string> dic)
|
|
{
|
|
string qrcode = dic["qrcode"];
|
|
return await _repository.GetSingleAsync(x => x.qrcode == qrcode);
|
|
}
|
|
}
|
|
} |