diff --git a/BasicData/Tnb.BasicData.Entitys/Dto/BasProcess/ProcessStationInput.cs b/BasicData/Tnb.BasicData.Entitys/Dto/BasProcess/ProcessStationInput.cs new file mode 100644 index 00000000..99f90029 --- /dev/null +++ b/BasicData/Tnb.BasicData.Entitys/Dto/BasProcess/ProcessStationInput.cs @@ -0,0 +1,15 @@ +namespace Tnb.BasicData.Entities.Dto +{ + public class ProcessStationInput + { + /// + /// 工序id + /// + public string process_id { get; set; } + + /// + /// 工位id集合 + /// + public List stationIds { get; set; } + } +} \ No newline at end of file diff --git a/BasicData/Tnb.BasicData.Entitys/Entity/BasMaterialUnit.cs b/BasicData/Tnb.BasicData.Entitys/Entity/BasMaterialUnit.cs index b87ceec5..80ba5b29 100644 --- a/BasicData/Tnb.BasicData.Entitys/Entity/BasMaterialUnit.cs +++ b/BasicData/Tnb.BasicData.Entitys/Entity/BasMaterialUnit.cs @@ -7,100 +7,38 @@ namespace Tnb.BasicData.Entities ///物料单位 /// [SugarTable("bas_material_unit")] - public class BasMaterialUnit : BaseEntity + public class BasMaterialUnit : BaseEntity { - public BasMaterialUnit(){ + public BasMaterialUnit() + { + } + /// + /// Desc:辅助单位 + /// Default: + /// Nullable:False + /// + public string auxiliary_unit_id { get; set; } - } + /// + /// Desc:关联物料id + /// Default: + /// Nullable:False + /// + public string material_id { get; set; } - /// - /// Desc:物料ID,BAS_MATERIAL.ID - /// Default: - /// Nullable:False - /// - [SugarColumn(ColumnName="material_id")] - public string MaterialId {get;set;} - - /// - /// Desc:单位ID,BAS_UNIT.ID - /// Default: - /// Nullable:False - /// - [SugarColumn(ColumnName="unit_id")] - public string UnitId {get;set;} - - /// - /// Desc:比例 - /// Default: - /// Nullable:False - /// - [SugarColumn(ColumnName="relation_qty")] - public decimal RelationQty {get;set;} - - /// - /// Desc:创建时间 - /// Default: - /// Nullable:False - /// - [SugarColumn(ColumnName="create_time")] - public DateTime CreateTime {get;set;} - - /// - /// Desc:修改时间 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="modify_time")] - public DateTime? ModifyTime {get;set;} - - /// - /// Desc:扩展字段 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="extras")] - public string Extras {get;set;} - - /// - /// Desc:所属组织ID - /// Default:NULL::character varying - /// Nullable:True - /// - [SugarColumn(ColumnName="org_id")] - public string OrgId {get;set;} - - /// - /// Desc:条码 - /// Default:NULL::character varying - /// Nullable:True - /// - [SugarColumn(ColumnName="bar_code")] - public string BarCode {get;set;} - - /// - /// Desc:时间戳(用于并发控制) - /// Default:NULL::character varying - /// Nullable:True - /// - [SugarColumn(ColumnName="timestamp")] - public string Timestamp {get;set;} - - /// - /// Desc:创建用户 - /// Default:NULL::character varying - /// Nullable:True - /// - [SugarColumn(ColumnName="create_id")] - public string CreateId {get;set;} - - /// - /// Desc:修改用户 - /// Default:NULL::character varying - /// Nullable:True - /// - [SugarColumn(ColumnName="modify_id")] - public string ModifyId {get;set;} + /// + /// Desc:主单位数量 + /// Default:NULL::character varying + /// Nullable:True + /// + public string number_of_primary_unit { get; set; } + /// + /// Desc:辅助单位数量 + /// Default:NULL::character varying + /// Nullable:True + /// + public string number_of_auxiliary_unit { get; set; } } } \ No newline at end of file diff --git a/BasicData/Tnb.BasicData.Entitys/Entity/BasProcess.cs b/BasicData/Tnb.BasicData.Entitys/Entity/BasProcess.cs new file mode 100644 index 00000000..18f24cd1 --- /dev/null +++ b/BasicData/Tnb.BasicData.Entitys/Entity/BasProcess.cs @@ -0,0 +1,212 @@ +using SqlSugar; +using Tnb.Common.Contracts; + +namespace Tnb.BasicData.Entities +{ + /// + ///工序资料 + /// + [SugarTable("bas_process")] + public class BasProcess : BaseEntity + { + public BasProcess() + { + } + + /// + /// Desc:创建时间 + /// Default: + /// Nullable:True + /// + public DateTime? create_time { get; set; } + + /// + /// Desc:修改时间 + /// Default: + /// Nullable:True + /// + public DateTime? modify_time { get; set; } + + /// + /// Desc:所属组织ID + /// Default:NULL::character varying + /// Nullable:True + /// + public string org_id { get; set; } + + /// + /// Desc:工序代码 + /// Default:NULL::character varying + /// Nullable:True + /// + public string process_code { get; set; } + + /// + /// Desc:工序名称 + /// Default:NULL::character varying + /// Nullable:True + /// + public string process_name { get; set; } + + /// + /// Desc:数据收集方式 + /// Default:NULL::character varying + /// Nullable:True + /// + public string process_collection { get; set; } + + /// + /// Desc:工序类型 + /// Default:NULL::character varying + /// Nullable:True + /// + public string process_type { get; set; } + + /// + /// Desc:工序属性 + /// Default:NULL::character varying + /// Nullable:True + /// + public string process_attribute { get; set; } + + /// + /// Desc:必过工序 + /// Default:NULL::character varying + /// Nullable:True + /// + public string must_pass { get; set; } + + /// + /// Desc:处理时间 + /// Default:NULL::character varying + /// Nullable:True + /// + public string process_time { get; set; } + + /// + /// Desc:时间单位 + /// Default:NULL::character varying + /// Nullable:True + /// + public string time_unit { get; set; } + + /// + /// Desc:备注 + /// Default:NULL::character varying + /// Nullable:True + /// + public string remark { get; set; } + + /// + /// Desc:时间戳(用于并发控制) + /// Default:NULL::character varying + /// Nullable:True + /// + public string timestamp { get; set; } + + /// + /// Desc:创建用户 + /// Default:NULL::character varying + /// Nullable:True + /// + public string create_id { get; set; } + + /// + /// Desc:修改用户 + /// Default:NULL::character varying + /// Nullable:True + /// + public string modify_id { get; set; } + + /// + /// Desc:扩展字段 + /// Default:NULL::character varying + /// Nullable:True + /// + public string extras { get; set; } + + /// + /// Desc:状态 + /// Default:NULL::character varying + /// Nullable:True + /// + public string status { get; set; } + + /// + /// Desc:单次扫码 + /// Default:NULL::character varying + /// Nullable:True + /// + public string single_scan_type { get; set; } + + /// + /// Desc:工位 + /// Default:NULL::character varying + /// Nullable:True + /// + public string station { get; set; } + + /// + /// Desc:一码到底 + /// Default:NULL::character varying + /// Nullable:True + /// + public string only_scan_type { get; set; } + + /// + /// Desc:次品项列表 + /// Default:NULL::character varying + /// Nullable:True + /// + public string defective_items { get; set; } + + /// + /// Desc:用料追溯关系 + /// Default:NULL::character varying + /// Nullable:True + /// + public string material_traced_back_relationship { get; set; } + + /// + /// Desc:不合格品投产 + /// Default:NULL::character varying + /// Nullable:True + /// + public string defective_products_put_into_production { get; set; } + + /// + /// Desc:报告模板 + /// Default:NULL::character varying + /// Nullable:True + /// + public string report_template { get; set; } + + /// + /// Desc:生产描述 + /// Default:NULL::character varying + /// Nullable:True + /// + public string descrip { get; set; } + + /// + /// Desc:附件 + /// Default:NULL::character varying + /// Nullable:True + /// + public string attachment { get; set; } + + /// + /// Desc:扩展字段2 + /// Default:NULL::character varying + /// Nullable:True + /// + public string extras2 { get; set; } + + /// + /// Desc:扩展字段3 + /// Default:NULL::character varying + /// Nullable:True + /// + public string extras3 { get; set; } + } +} \ No newline at end of file diff --git a/BasicData/Tnb.BasicData.Entitys/Entity/BasProcessStation.cs b/BasicData/Tnb.BasicData.Entitys/Entity/BasProcessStation.cs new file mode 100644 index 00000000..f283e661 --- /dev/null +++ b/BasicData/Tnb.BasicData.Entitys/Entity/BasProcessStation.cs @@ -0,0 +1,109 @@ +using SqlSugar; +using Tnb.Common.Contracts; + + +namespace Tnb.BasicData.Entities +{ + /// + ///工序与工位的关联信息 + /// + [SugarTable("bas_process_station")] + public class BasProcessStation : BaseEntity + { + public BasProcessStation() + { + } + + /// + /// Desc:主键 + /// Default: + /// Nullable:False + /// + [SugarColumn(IsPrimaryKey = true)] + public string id { get; set; } + + /// + /// Desc:工序ID,BAS_PROCESS.ID + /// Default: + /// Nullable:False + /// + public string process_id { get; set; } + + // /// + // /// Desc:工序代码 + // /// Default: + // /// Nullable:False + // /// + // public string process_code { get; set; } + + /// + /// Desc:工位ID,BAS_STATION.ID + /// Default: + /// Nullable:False + /// + public string station_id { get; set; } + + // /// + // /// Desc:工位代码 + // /// Default: + // /// Nullable:False + // /// + // public string station_code { get; set; } + + /// + /// Desc:创建时间 + /// Default: + /// Nullable:False + /// + public DateTime create_time { get; set; } + + /// + /// Desc:修改时间 + /// Default: + /// Nullable:True + /// + public DateTime? modify_time { get; set; } + + /// + /// Desc:扩展字段 + /// Default: + /// Nullable:True + /// + public string extras { get; set; } + + /// + /// Desc:所属组织ID + /// Default:NULL::character varying + /// Nullable:True + /// + public string org_id { get; set; } + + /// + /// Desc:备注 + /// Default:NULL::character varying + /// Nullable:True + /// + public string remark { get; set; } + + /// + /// Desc:时间戳(用于并发控制) + /// Default:NULL::character varying + /// Nullable:True + /// + public string timestamp { get; set; } + + /// + /// Desc:创建用户 + /// Default:NULL::character varying + /// Nullable:True + /// + public string create_id { get; set; } + + /// + /// Desc:修改用户 + /// Default:NULL::character varying + /// Nullable:True + /// + public string modify_id { get; set; } + } +} \ No newline at end of file diff --git a/BasicData/Tnb.BasicData.Interfaces/IBasProcessService.cs b/BasicData/Tnb.BasicData.Interfaces/IBasProcessService.cs new file mode 100644 index 00000000..e4c7c880 --- /dev/null +++ b/BasicData/Tnb.BasicData.Interfaces/IBasProcessService.cs @@ -0,0 +1,17 @@ +using JNPF.Common.Dtos.VisualDev; +using JNPF.VisualDev; +using Tnb.BasicData.Entities.Dto; + +namespace Tnb.BasicData.Interfaces +{ + public interface IBasProcessService + { + OverideVisualDevFunc OverideFuncs { get; } + + /// + /// 重写新增 + /// + /// + public Task Create(VisualDevModelDataCrInput visualDevModelDataCrInput); + } +} \ No newline at end of file diff --git a/BasicData/Tnb.BasicData.Interfaces/Tnb.BasicData.Interfaces.csproj b/BasicData/Tnb.BasicData.Interfaces/Tnb.BasicData.Interfaces.csproj index baafef62..bc331b03 100644 --- a/BasicData/Tnb.BasicData.Interfaces/Tnb.BasicData.Interfaces.csproj +++ b/BasicData/Tnb.BasicData.Interfaces/Tnb.BasicData.Interfaces.csproj @@ -9,6 +9,7 @@ + diff --git a/BasicData/Tnb.BasicData/BasMaterialService.cs b/BasicData/Tnb.BasicData/BasMaterialService.cs index f855644e..c382baab 100644 --- a/BasicData/Tnb.BasicData/BasMaterialService.cs +++ b/BasicData/Tnb.BasicData/BasMaterialService.cs @@ -1,4 +1,5 @@ using JNPF.Common.Core.Manager; +using JNPF.Common.Security; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.Systems.Interfaces.System; @@ -28,62 +29,36 @@ namespace Tnb.BasicData _dictionaryDataService = dictionaryDataService; } - // [HttpPost] - // public async Task> GetEbomVersionAndRouteName(Dictionary parameters) - // { - // string materialId = parameters["materialId"]; - // var db = _repository.AsSugarClient(); - // var dic = await _dictionaryDataService.GetDicByKey(DicTypeKey.MeasurementUnit); - // // var momDbLink = await _repository.AsSugarClient().Queryable().FirstAsync(x => x.FullName == DbName.TNBMON); - // // if (momDbLink != null) - // // { - // // db = _dbManager.ChangeDataBase(momDbLink); - // // } - // - // var ebom = await db.Queryable() - // .LeftJoin((a,b)=>a.route_id==b.id) - // .Where((a,b) => a.material_id == materialId) - // .Select((a,b)=>new - // { - // a.id, - // a.version, - // b.name, - // }).SingleAsync(); - // return new Dictionary() - // { - // ["version"] = ebom?.version, - // ["routeName"] = ebom?.name, - // ["routeId"] = ebom?.id - // }; - // } - - // [HttpPost] - // public async Task> GetMaterialUnits(Dictionary parameters) - // { - // string materialId = parameters["materialId"]; - // var db = _repository.AsSugarClient(); - // - // var type = await db.Queryable().Where(x => x.EnCode == DictConst.MeasurementUnit) - // .SingleAsync(); - // string typeId = type?.Id; - // var queryable1 = db.Queryable() - // .LeftJoin((a,b)=>a.unit_id==b.EnCode && b.DictionaryTypeId==typeId) - // .Where((a,b) => a.Id == materialId) - // .Select((a,b)=> new ElementSelectDto - // { - // value = b.EnCode, - // label = b.FullName, - // }); - // var queryable2 = db.Queryable() - // .LeftJoin((a,b)=>a.pickunit_id==b.EnCode && b.DictionaryTypeId==typeId) - // .Where((a,b) => a.Id == materialId) - // .Select((a,b)=> new ElementSelectDto - // { - // value = b.EnCode, - // label = b.FullName, - // }); - // List data = await db.Union(queryable1, queryable2).ToListAsync(); - // return data; - // } + /// + /// 复制物料 + /// + /// 物料id id + [HttpPost] + public async Task Copy(Dictionary parameters) + { + string id = parameters["id"]; + BasMaterial basMaterial = await _repository.GetByIdAsync(id); + + List materialUnits = await _repository.AsSugarClient().Queryable().Where(x => x.material_id == id).ToListAsync(); + + string newId = SnowflakeIdHelper.NextId(); + basMaterial.id = newId; + basMaterial.code += "_复制的请修改"; + basMaterial.name += "_复制的请修改"; + + DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => + { + await _repository.InsertAsync(basMaterial); + foreach (BasMaterialUnit basMaterialUnit in materialUnits) + { + basMaterialUnit.id = SnowflakeIdHelper.NextId(); + basMaterialUnit.material_id = newId; + } + + await _repository.AsSugarClient().Insertable(materialUnits).ExecuteCommandAsync(); + }); + + return result.IsSuccess ? "复制成功" : result.ErrorMessage; + } } } \ No newline at end of file diff --git a/BasicData/Tnb.BasicData/BasProcessService.cs b/BasicData/Tnb.BasicData/BasProcessService.cs new file mode 100644 index 00000000..c0076e36 --- /dev/null +++ b/BasicData/Tnb.BasicData/BasProcessService.cs @@ -0,0 +1,90 @@ +using JNPF.Common.Core.Manager; +using JNPF.Common.Dtos.VisualDev; +using JNPF.Common.Security; +using JNPF.DependencyInjection; +using JNPF.DynamicApiController; +using JNPF.Systems.Entitys.System; +using JNPF.Systems.Interfaces.System; +using JNPF.VisualDev; +using JNPF.VisualDev.Entitys; +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.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; + } + + + /// + /// 保存工序工位关联表 + /// + /// 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; + } + } +} \ No newline at end of file diff --git a/visualdev/Tnb.VisualDev/RunService.cs b/visualdev/Tnb.VisualDev/RunService.cs index 2e54bcbd..98f035c2 100644 --- a/visualdev/Tnb.VisualDev/RunService.cs +++ b/visualdev/Tnb.VisualDev/RunService.cs @@ -722,7 +722,15 @@ public class RunService : IRunService, ITransient dictionarySql.Clear(); tableField.Add("ReturnIdentity", mainId); dictionarySql.Add("MainTableReturnIdentity", new List>() { tableField }); + } + + //modify by zhoukeda 20230428 雪花id返回至传入参数中 开始 + if (templateInfo.FormModel.primaryKeyPolicy.Equals(1)) + { + dataInput.data.Add("ReturnIdentity", mainId); } + //modify by zhoukeda 20230428 雪花id返回至传入参数中 结束 + // 拼接副表 sql if (templateInfo.AuxiliaryTableFieldsModelList.Any())