diff --git a/BasicData/Tnb.BasicData/BasMbomService.cs b/BasicData/Tnb.BasicData/BasMbomService.cs index 6736f838..cee2b86b 100644 --- a/BasicData/Tnb.BasicData/BasMbomService.cs +++ b/BasicData/Tnb.BasicData/BasMbomService.cs @@ -131,6 +131,55 @@ namespace Tnb.BasicData mbomDataOutput.processes = mbomProcessOutDtos; return mbomDataOutput; } + + /// + /// 复制生产bom + /// + /// 物料id id + [HttpPost] + public async Task Copy(Dictionary parameters) + { + string id = parameters["id"]; + var db = _repository.AsSugarClient(); + BasMbom basMbom = await _repository.GetByIdAsync(id); + + List mbomProcesses = await db.Queryable().Where(x => x.mbom_id == id).ToListAsync(); + List mbomInputs = await db.Queryable().Where(x => x.mbom_id == id).ToListAsync(); + List mbomOutputs = await db.Queryable().Where(x => x.mbom_id == id).ToListAsync(); + + string newId = SnowflakeIdHelper.NextId(); + basMbom.id = newId; + basMbom.version += "_复制的请修改"; + + DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => + { + _ = await _repository.InsertAsync(basMbom); + foreach (BasMbomProcess item in mbomProcesses) + { + item.id = SnowflakeIdHelper.NextId(); + item.mbom_id = newId; + } + + foreach (BasMbomInput item in mbomInputs) + { + item.id = SnowflakeIdHelper.NextId(); + item.mbom_id = newId; + } + + foreach (BasMbomOutput item in mbomOutputs) + { + item.id = SnowflakeIdHelper.NextId(); + item.mbom_id = newId; + } + + if(mbomProcesses!=null && mbomProcesses.Count>0) _ = await db.Insertable(mbomProcesses).ExecuteCommandAsync(); + if(mbomInputs!=null && mbomInputs.Count>0) _ = await db.Insertable(mbomInputs).ExecuteCommandAsync(); + if(mbomOutputs!=null && mbomOutputs.Count>0) _ = await db.Insertable(mbomOutputs).ExecuteCommandAsync(); + + }); + + return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : result.IsSuccess ? "复制成功" : result.ErrorMessage; + } ///