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())