异常开始结束带代码提交

This commit is contained in:
DEVICE8\12494
2023-05-21 21:03:45 +08:00
parent 23dd5a7604
commit 709ef585b2
34 changed files with 1066 additions and 33 deletions

View File

@@ -37,8 +37,8 @@ namespace Tnb.EquipMgr
protected async Task Relevance<TSrc, TDest>(TSrc input, string mColumnName, string name, Expression<Func<TDest, bool>> deleleExp) where TDest : BaseEntity<string>, new()
where TSrc : BaseMoldMaintainInput
{
await _db.Deleteable<TDest>().Where(deleleExp).ExecuteCommandAsync();
if (input == null) throw new ArgumentNullException(nameof(input));
await _db.Deleteable<TDest>().Where(deleleExp).ExecuteCommandAsync();
var entities = new List<TDest>();
if (input.ids?.Count > 0)
{
@@ -46,7 +46,7 @@ namespace Tnb.EquipMgr
{
var pk = id;
TDest entity = new();
entity.PropertySetValue(mColumnName, input.item_group_id);
entity.PropertySetValue(mColumnName, input.id);
entity.PropertySetValue(name, pk);
entities.Add(entity);
}

View File

@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Aspose.Cells.Drawing;
using JNPF.ClayObject.Extensions;
using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using Tnb.EquipMgr.Entities;
using Tnb.EquipMgr.Interfaces;
namespace Tnb.EquipMgr
{
/// <summary>
/// 模具库房服务
/// </summary>
[ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 700)]
[Route("api/[area]/[controller]/[action]")]
public class ToolMoldHouseService : IToolMoldHouseService, IDynamicApiController, ITransient
{
private readonly ISqlSugarClient _db;
public ToolMoldHouseService(ISqlSugarRepository<ToolWarehouse> repository)
{
_db = repository.AsSugarClient();
}
public async Task<Dictionary<string, object>> GetHouseDictionary()
{
return await _db.Queryable<ToolWarehouse>().ToDictionaryAsync(x => x.id, x => x.whcode);
}
}
}

View File

@@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Aspose.Cells.Drawing;
using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using Tnb.EquipMgr.Entities;
using Tnb.EquipMgr.Interfaces;
namespace Tnb.EquipMgr
{
/// <summary>
/// 模具库位服务
/// </summary>
[ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 700)]
[Route("api/[area]/[controller]/[action]")]
public class ToolMoldLocationService : IToolMoldLocationService, IDynamicApiController, ITransient
{
private readonly ISqlSugarClient _db;
public ToolMoldLocationService(ISqlSugarRepository<ToolLocation> repository)
{
_db = repository.AsSugarClient();
}
public async Task<Dictionary<string, object>> GetLocationDictionary()
{
return await _db.Queryable<ToolLocation>().ToDictionaryAsync(x => x.id, x => x.location_code);
}
}
}

View File

@@ -80,7 +80,7 @@ namespace Tnb.EquipMgr
/// <returns></returns>
[HttpPost]
public async Task RelevanceMaintianGroupAndItem(MoldMaintainGroupItemInput input) =>
await Relevance<MoldMaintainGroupItemInput, ToolMoldMaintainGroupItem>(input, nameof(ToolMoldMaintainGroupItem.item_group_id), nameof(ToolMoldMaintainGroupItem.item_id), it => it.item_group_id == input.item_group_id);
await Relevance<MoldMaintainGroupItemInput, ToolMoldMaintainGroupItem>(input, nameof(ToolMoldMaintainGroupItem.item_group_id), nameof(ToolMoldMaintainGroupItem.item_id), it => it.item_group_id == input.id);
/// <summary>
/// 关联项目组与模具
@@ -89,7 +89,7 @@ namespace Tnb.EquipMgr
/// <returns></returns>
[HttpPost]
public async Task RelevanceMaintianGroupAndMold(MoldMaintainGroupItemRelationInput input) =>
await Relevance<MoldMaintainGroupItemRelationInput, ToolMoldMaintainGroupRelation>(input, nameof(ToolMoldMaintainGroupRelation.item_group_id), nameof(ToolMoldMaintainGroupRelation.mold_id), it => it.item_group_id == input.item_group_id);
await Relevance<MoldMaintainGroupItemRelationInput, ToolMoldMaintainGroupRelation>(input, nameof(ToolMoldMaintainGroupRelation.item_group_id), nameof(ToolMoldMaintainGroupRelation.mold_id), it => it.item_group_id == input.id);
/// <summary>
/// 删除项目组与模具检查项信息
/// </summary>
@@ -101,11 +101,11 @@ namespace Tnb.EquipMgr
if (input.table_name == "item")
{
await Delete<ToolMoldMaintainGroupItem>(it => it.item_group_id == input.item_group_id && input.ids.Contains(it.item_id));
await Delete<ToolMoldMaintainGroupItem>(it => it.item_group_id == input.id && input.ids.Contains(it.item_id));
}
else
{
await Delete<ToolMoldMaintainGroupRelation>(it => it.item_group_id == input.item_group_id && input.ids.Contains(it.mold_id));
await Delete<ToolMoldMaintainGroupRelation>(it => it.item_group_id == input.id && input.ids.Contains(it.mold_id));
}
}

View File

@@ -5,13 +5,16 @@ using System.Text;
using System.Threading.Tasks;
using Aspose.Cells.Drawing;
using JNPF.Common.Dtos.VisualDev;
using JNPF.Common.Extension;
using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
using JNPF.Logging;
using JNPF.VisualDev;
using JNPF.VisualDev.Entitys;
using JNPF.VisualDev.Interfaces;
using Mapster;
using Microsoft.AspNetCore.Mvc;
using Spire.Pdf.Widget;
using SqlSugar;
using Tnb.BasicData;
using Tnb.EquipMgr.Entities;
@@ -29,12 +32,29 @@ namespace Tnb.EquipMgr
private readonly ISqlSugarClient _db;
private readonly IRunService _runService;
private readonly IVisualDevService _visualDevService;
private readonly IToolMoldHouseService _moldHouseService;
private readonly IToolMoldLocationService _moldLocationService;
private readonly IToolMoldsService _moldService;
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
public ToolMoldMaintainPlanService(ISqlSugarRepository<ToolMoldMaintainPlan> repository, IRunService runService, IVisualDevService visualDevService) : base(repository.AsSugarClient())
private static Dictionary<string, object> _dicHouse = new Dictionary<string, object>();
private static Dictionary<string, object> _dicLocation = new Dictionary<string, object>();
public ToolMoldMaintainPlanService(
ISqlSugarRepository<ToolMoldMaintainPlan> repository,
IRunService runService,
IVisualDevService visualDevService,
IToolMoldHouseService moldHouseService,
IToolMoldLocationService moldLocationService,
IToolMoldsService moldService
) : base(repository.AsSugarClient())
{
_db = repository.AsSugarClient();
_runService = runService;
_visualDevService = visualDevService;
_moldHouseService = moldHouseService;
_moldLocationService = moldLocationService;
_moldService = moldService;
OverideFuncs.CreateAsync = Create;
}
@@ -54,20 +74,46 @@ namespace Tnb.EquipMgr
}
return await Task.FromResult("ok");
}
/// <summary>
/// 根据规则id获取匹配的模具列表
/// </summary>
/// <param name="planId">计划Id</param>
/// <returns></returns>
[HttpGet]
public async Task<dynamic> GetMoldListByPlanId(RelevanceMoldFromPlanInput input)
public async Task<dynamic> GetMoldListByPlanId([FromRoute] string planId)
{
var list = await _db.Queryable<ToolMoldMaintainPlanRelation>().Where(it => it.maintain_plan_id == input.item_group_id).ToListAsync();
var result = new List<MaintainPlanMoldLstOutput>();
if (_dicHouse.Count < 1)
{
_dicHouse = await _moldHouseService.GetHouseDictionary();
}
if (_dicLocation.Count < 1)
{
_dicLocation = await _moldLocationService.GetLocationDictionary();
}
var list = await _db.Queryable<ToolMoldMaintainPlanRelation>().Where(it => it.maintain_plan_id == planId).ToListAsync();
if (list?.Count > 0)
{
var ids = list.Select(it => it.mold_id).Distinct().ToList();
if (ids?.Count > 0)
{
var items = await _moldService.GetListByIds(ids);
_db.ThenMapper(items, it =>
{
if (!it.warehosue_id!.IsNullOrEmpty())
{
it.whcode = _dicHouse.ContainsKey(it.warehosue_id!) ? _dicHouse[it.warehosue_id!].ToString()! : "";
}
if (!it.location_id!.IsNullOrEmpty())
{
it.location_code = _dicLocation.ContainsKey(it.location_id!) ? _dicLocation[it.location_id!].ToString()! : "";
}
});
result = items.Adapt<List<MaintainPlanMoldLstOutput>>();
}
}
return null;
return result;
}
/// <summary>
@@ -76,15 +122,15 @@ namespace Tnb.EquipMgr
/// <returns></returns>
[HttpPost]
public async Task RelevanceMoldFromPlan(RelevanceMoldFromPlanInput input) =>
await Relevance<RelevanceMoldFromPlanInput, ToolMoldMaintainPlanRelation>(input, nameof(ToolMoldMaintainPlanRelation.maintain_plan_id), nameof(ToolMoldMaintainPlanRelation.mold_id), it => it.maintain_plan_id == input.item_group_id);
await Relevance<RelevanceMoldFromPlanInput, ToolMoldMaintainPlanRelation>(input, nameof(ToolMoldMaintainPlanRelation.maintain_plan_id), nameof(ToolMoldMaintainPlanRelation.mold_id), it => it.maintain_plan_id == input.id);
/// <summary>
/// 删除计划与模具关联关系
/// </summary>
/// <param name="input"></param>
/// <param name="input">输入参数</param>
/// <returns></returns>
[HttpPost]
public async Task DeleteMold(RelevanceMoldFromPlanInput input) =>
await Delete<ToolMoldMaintainPlanRelation>(it => it.maintain_plan_id == input.item_group_id && input.ids.Contains(it.mold_id));
await Delete<ToolMoldMaintainPlanRelation>(it => it.maintain_plan_id == input.id && input.ids.Contains(it.mold_id));
}
}

View File

@@ -0,0 +1,101 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Aspose.Cells.Drawing;
using JNPF.Common.Enums;
using JNPF.Common.Extension;
using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
using JNPF.FriendlyException;
using JNPF.VisualDev;
using JNPF.VisualDev.Entitys;
using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
using JNPF.VisualDev.Interfaces;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging.Abstractions;
using SqlSugar;
using Tnb.BasicData;
using Tnb.EquipMgr.Entities;
using Tnb.EquipMgr.Entities.Dto;
using Tnb.EquipMgr.Entities.Enums;
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 ToolMoldMaintainTaskService : IOverideVisualDevService, IToolMoldMaintainTaskService, IDynamicApiController, ITransient
{
private const string ModuleId = "26189001337381";
private readonly ISqlSugarClient _db;
private readonly IRunService _runService;
private readonly IVisualDevService _visualDevService;
private static Dictionary<string, (string code, string name)> _dicMold = new Dictionary<string, (string code, string name)>();
public ToolMoldMaintainTaskService(
ISqlSugarRepository<ToolMoldMaintainTask> repository,
IRunService runService,
IVisualDevService visualDevService
)
{
_db = repository.AsSugarClient();
_runService = runService;
_visualDevService = visualDevService;
OverideFuncs.GetListAsync = GetList;
}
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
private async Task<dynamic> GetList(VisualDevModelListQueryInput input)
{
if (_dicMold.Count < 1)
{
var items = await _db.Queryable<ToolMolds>().ToListAsync();
_dicMold = items?.ToDictionary(x => x.id, x => (x.mold_code, x.mold_name))!;
}
VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true);
var data = await _runService.GetListResult(templateEntity, input);
if (data?.list.Count > 0)
{
foreach (var row in data.list)
{
var pair = row[nameof(ToolMoldMaintainTask.mold_id)];
if (pair.IsNotEmptyOrNull())
{
var multi = _dicMold[pair.ToString()!];
row[nameof(ToolMoldMaintainTask.mold_id)] = $"{multi.code}/{multi.name}";
}
}
}
return data!;
}
public async Task Create(ToolMoldMaintainTask entity)
{
var row = await _db.Insertable(entity).ExecuteCommandAsync();
if (row < 1) throw Oops.Oh(ErrorCode.COM1000);
}
/// <summary>
/// 修改任务单状态
/// </summary>
/// <param name="input">输入参数</param>
/// <returns></returns>
[HttpPost]
public async Task UpdateStatus(MaintainStatusUpInput input)
{
DateTime? beginTiem = DateTime.Now;
DateTime? endTime = null;
if (input.status.ToEnum<MaintainStatus>() == MaintainStatus.YWC)
{
endTime = DateTime.Now;
}
var row = await _db.Updateable<ToolMoldMaintainTask>().SetColumns(it => new ToolMoldMaintainTask { status = input.status, modify_strat_time = beginTiem, modify_end_time = endTime })
.Where(it => input.ids.Contains(it.id)).ExecuteCommandAsync();
if (row < 1) throw Oops.Oh(ErrorCode.COM1001);
}
}
}

View File

@@ -34,6 +34,33 @@ namespace Tnb.EquipMgr
_userManager = userManager;
_repository = repository;
}
/// <summary>
/// 获取模具列表
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
[HttpGet]
public async Task<List<ToolMolds>> GetListByIds(List<string> ids)
{
return await _repository.AsSugarClient().Queryable<ToolMolds>().Where(it => ids.Contains(it.id)).ToListAsync();
}
/// <summary>
/// 根据设备id 获取匹配的模具列表
/// </summary>
/// <param name="eqpId">设备Id</param>
/// <returns></returns>
[HttpGet]
public async Task<List<ToolMolds>> GetListByEqpId([FromRoute] string eqpId)
{
var db = _repository.AsSugarClient();
var result = await db.Queryable<ToolMolds>().InnerJoin<ToolMoldsEquipment>((a, b) => a.id == b.mold_id)
.Where((a, b) => b.equipment_id == eqpId)
.Select((a, b) => a)
.ToListAsync();
return result;
}
/// <summary>
/// 根据模具id获取设备集合
/// </summary>
@@ -51,11 +78,12 @@ namespace Tnb.EquipMgr
.Select((a, b) => new EquipmentListOutput
{
id = a.id,
eqp_code=a.code,
eqp_name=a.name
eqp_code = a.code,
eqp_name = a.name
}).ToListAsync();
return list;
}
/// <summary>
/// 增加模具设备绑定
/// </summary>
@@ -65,9 +93,9 @@ namespace Tnb.EquipMgr
[HttpPost]
public async Task<dynamic> SaveData(ToolMoldInput ToolMoldInput)
{
DbResult<bool> result = await _repository.AsSugarClient().Ado.UseTranAsync(async () =>
DbResult<bool> result = await _repository.AsSugarClient().Ado.UseTranAsync(async () =>
{
var his= await _repository.AsSugarClient().Queryable<ToolMoldsEquipment>().ToListAsync();
var his = await _repository.AsSugarClient().Queryable<ToolMoldsEquipment>().ToListAsync();
var list = new List<ToolMoldsEquipment>();
foreach (var equip in ToolMoldInput.equipid)
{
@@ -104,5 +132,10 @@ namespace Tnb.EquipMgr
if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008);
return result.IsSuccess ? "操作成功" : result.ErrorMessage;
}
public Task<ToolMolds> GetListById(string moldId)
{
return _repository.GetFirstAsync(it => it.id == moldId);
}
}
}