using Aop.Api.Domain; using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Security; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.Systems.Entitys.Permission; using JNPF.Systems.Entitys.System; using JNPF.Systems.Interfaces.System; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Entitys.Dto.VisualDevModelData; using JNPF.VisualDev.Interfaces; using Mapster; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using SqlSugar; using Tnb.BasicData.Entities; using Tnb.BasicData.Entities.Dto; using Tnb.BasicData.Entitys.Dto.BasProcess; using Tnb.BasicData.Interfaces; namespace Tnb.BasicData { /// /// 工序定义 /// [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 1102)] [Route("api/[area]/[controller]/[action]")] [OverideVisualDev(ModelId)] public class BasProcessService : IOverideVisualDevService, IDynamicApiController, ITransient { public const string ModelId = "25483283228965"; private readonly ISqlSugarRepository _repository; private readonly DataBaseManager _dbManager; private readonly IUserManager _userManager; private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public BasProcessService( ISqlSugarRepository repository, IUserManager userManager, IRunService runService, IVisualDevService visualDevService, DataBaseManager dbManager) { _repository = repository; _userManager = userManager; _dbManager = dbManager; _runService = runService; _visualDevService = visualDevService; OverideFuncs.CreateAsync = Create; OverideFuncs.GetListAsync = GetList; } /// /// 在线开发-获取工序列表 /// added by ly on 20230428 /// /// /// private async Task GetList(VisualDevModelListQueryInput input) { var result = new List(); var db = _repository.AsSugarClient(); var organize = await db.Queryable().FirstAsync(it => it.EnCode == input.station_code && it.Category == DictConst.RegionCategoryStationCode); if (organize != null) { var processIds = await db.Queryable().Where(it => it.station_id == organize.Id).Select(it => it.process_id).ToListAsync(); if (processIds?.Count > 0) { result = await db.Queryable().Where(it => processIds.Contains(it.id)).Select(it => new ProcessListOutput { id = it.id, process_code = it.process_code, process_name = it.process_name, process_collection = it.process_collection, status = it.status, station = it.station, must_pass = it.must_pass, defective_products_put_into_production = it.defective_products_put_into_production, single_scan_type = it.single_scan_type, only_scan_type = it.only_scan_type, material_traced_back_relationship = it.material_traced_back_relationship, report_template = it.report_template, descrip = it.descrip, org_id = it.org_id, create_id = it.create_id, modify_id = it.modify_id, modify_time = it.modify_time, }).ToListAsync(); } } return result; } /// /// 保存工序工位关联表 /// /// process_id 工序id /// stationIds 工位id集合 [HttpPost] public async Task Create(VisualDevModelDataCrInput visualDevModelDataCrInput) { DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModelId, true); await _runService.Create(templateEntity, visualDevModelDataCrInput); string processId = visualDevModelDataCrInput.data["ReturnIdentity"].ToString(); List list = new List(); foreach (var item in (JArray)visualDevModelDataCrInput.data["station"]) { string processStationId = SnowflakeIdHelper.NextId(); list.Add(new BasProcessStation() { id = processStationId, org_id = _userManager.GetUserInfo().Result.organizeId, process_id = processId, station_id = item.Last().ToString(), create_id = _userManager.UserId, create_time = DateTime.Now, }); } await _repository.AsSugarClient().Insertable(list).ExecuteCommandAsync(); }); return result.IsSuccess ? "保存成功" : result.ErrorMessage; } } }