/// <summary> /// 物理删除工序需求信息 /// </summary> /// <param name="ids"></param> /// <returns></returns> public async Task <OperationResult> Delete(params Guid[] ids) { ids.CheckNotNull("ids"); foreach (var id in ids) { int count1 = PlanEquipmentRequirementInfoRepository.Entities.Where(m => m.ProductionProcessRequirement.Id == id).Count(); if (count1 > 0) { return(new OperationResult(OperationResultType.Error, "工序需求数据关联设备需求信息,不能被删除。")); } int count2 = PlanMaterialRequirementInfoRepository.Entities.Where(m => m.ProductionProcessRequirement.Id == id).Count(); if (count2 > 0) { return(new OperationResult(OperationResultType.Error, "工序需求数据关联物料需求信息,不能被删除。")); } } PlanProductionProcessRequirementInfoRepository.UnitOfWork.BeginTransaction(); var result = await PlanProductionProcessRequirementInfoRepository.DeleteAsync(ids); PlanProductionProcessRequirementInfoRepository.UnitOfWork.Commit(); return(result); }
/// <summary> /// 增加工序需求 /// </summary> /// <param name="inputDtos"></param> /// <returns></returns> public async Task <OperationResult> Add(params PlanProductionProcessRequirementInfoInputDto[] inputDtos) { inputDtos.CheckNotNull("inputDtos"); foreach (var dtoData in inputDtos) { dtoData.ProductionSchedule = PlanProductionScheduleInfoRepository.TrackEntities.Where(m => m.Id == dtoData.ProductionSchedule_Id).FirstOrDefault(); if (Equals(dtoData.ProductionSchedule, null)) { return(new OperationResult(OperationResultType.Error, "对应的生产计划不存在,无法保存!")); } dtoData.ProductionProcess = ProductionProcessInfoRepository.TrackEntities.Where(m => m.Id == dtoData.ProductionProcess_Id).FirstOrDefault(); if (Equals(dtoData.ProductionProcess, null)) { return(new OperationResult(OperationResultType.Error, "对应的工序不存在,无法保存!")); } } PlanProductionProcessRequirementInfoRepository.UnitOfWork.BeginTransaction(); var result = await PlanProductionProcessRequirementInfoRepository.InsertAsync(inputDtos); PlanProductionProcessRequirementInfoRepository.UnitOfWork.Commit(); return(result); }
/// <summary> /// 增加工单 /// </summary> /// <param name="inputDtos"></param> /// <returns></returns> public async Task <OperationResult> AddWorkList(params PlanProductionScheduleInfoInputDto[] inputDtos) { inputDtos.CheckNotNull("inputDtos"); var result1 = new OperationResult(); var result2 = new OperationResult(); var result3 = new OperationResult(); PlanProductionScheduleInfoRepository.UnitOfWork.BeginTransaction(); foreach (var dtoData in inputDtos) { dtoData.OrderItem = PlanOrderItemInfoRepository.TrackEntities.Where(m => m.Id == dtoData.OrderItem_Id).FirstOrDefault(); if (Equals(dtoData.OrderItem, null)) { return(new OperationResult(OperationResultType.Error, "对应的订单明细不存在,不能生成工单。")); } dtoData.ProductionRule = ProductionRuleInfoRepository.TrackEntities.Where(m => m.Id == dtoData.ProductionRule_Id).FirstOrDefault(); if (Equals(dtoData.ProductionRule, null)) { return(new OperationResult(OperationResultType.Error, "对应的配方不存在,不能生成工单。")); } if (dtoData.ScheduleStatus != 1) { return(new OperationResult(OperationResultType.Error, "只有生产计划状态为未开始的才能生成工单。")); } int count1 = ProductionRuleItemInfoRepository.Entities.Where(m => m.ProductionRule.Id == dtoData.ProductionRule.Id).Count(); if (count1 > 0) { var ruleitemlist = ProductionRuleItemInfoRepository.TrackEntities.Where(m => m.ProductionRule.Id == dtoData.ProductionRule.Id).OrderBy(m => m.ProductionProcessOrder).ToList(); PlanProductionProcessRequirementInfoInputDto[] processRequires = new PlanProductionProcessRequirementInfoInputDto[count1]; for (int i = 0; i < count1; i++) { PlanProductionProcessRequirementInfoInputDto info = new PlanProductionProcessRequirementInfoInputDto(); info.Id = CombHelper.NewComb(); info.ProductionProcess_Id = ruleitemlist[i].ProductionProcess.Id; info.ProductionSchedule_Id = dtoData.Id; info.ProductionProcess = ruleitemlist[i].ProductionProcess; info.ProductionProcessOrder = ruleitemlist[i].ProductionProcessOrder; if (i == 0) { info.StartTime = dtoData.StartTime; } else { info.StartTime = processRequires[i - 1].EndTime.AddSeconds(10); } info.EndTime = info.StartTime.AddSeconds(double.Parse(ruleitemlist[i].Duration.ToString())); info.ProductionSchedule = PlanProductionScheduleInfoRepository.TrackEntities.Where(m => m.Id == dtoData.Id).FirstOrDefault(); info.Duration = ruleitemlist[i].Duration; info.DurationUnit = ruleitemlist[i].DurationUnit; info.Remark = ruleitemlist[i].Remark; info.CreatedTime = dtoData.CreatedTime; info.CreatorUserId = dtoData.CreatorUserId; info.LastUpdatedTime = dtoData.LastUpdatedTime; info.LastUpdatorUserId = dtoData.LastUpdatorUserId; processRequires[i] = info; } // PlanProductionProcessRequirementInfoRepository.UnitOfWork.BeginTransaction(); result1 = await PlanProductionProcessRequirementInfoRepository.InsertAsync(processRequires); // PlanProductionProcessRequirementInfoRepository.UnitOfWork.Commit(); } int count2 = ProManufacturingBOMBillItemInfoRepository.Entities.Where(m => m.ProManufacturingBill.ProductionRule.Id == dtoData.ProductionRule.Id).Count(); if (count2 > 0) { PlanMaterialRequirementInfoInputDto[] materialRequires = new PlanMaterialRequirementInfoInputDto[count2]; var bomlist = ProManufacturingBOMBillItemInfoRepository.TrackEntities.Where(m => m.ProManufacturingBill.ProductionRule.Id == dtoData.ProductionRule.Id).ToList(); ProManufacturingBOMBillItemInfoInputDto[] bomRequires = new ProManufacturingBOMBillItemInfoInputDto[count2]; for (int i1 = 0; i1 < count2; i1++) { PlanMaterialRequirementInfoInputDto info1 = new PlanMaterialRequirementInfoInputDto(); info1.Id = CombHelper.NewComb(); info1.Material = bomlist[i1].Material; var id = bomlist[i1].ProductionProcess.Id; info1.ProductionProcessRequirement = PlanProductionProcessRequirementInfoRepository.TrackEntities.Where(m => m.ProductionProcess.Id == id && m.ProductionSchedule.Id == dtoData.Id).FirstOrDefault(); info1.RequireQuantity = bomlist[i1].Quantity * dtoData.Quantity; info1.Remark = bomlist[i1].Remark; info1.CreatedTime = dtoData.CreatedTime; info1.CreatorUserId = dtoData.CreatorUserId; info1.LastUpdatedTime = dtoData.LastUpdatedTime; info1.LastUpdatorUserId = dtoData.LastUpdatorUserId; materialRequires[i1] = info1; } // PlanMaterialRequirementInfoRepository.UnitOfWork.BeginTransaction(); result2 = await PlanMaterialRequirementInfoRepository.InsertAsync(materialRequires); // PlanMaterialRequirementInfoRepository.UnitOfWork.Commit(); } int count3 = ProManufacturingBORBillItemInfoRepository.Entities.Where(m => m.ProManufacturingBill.ProductionRule.Id == dtoData.ProductionRule.Id).Count(); if (count3 > 0) { PlanEquipmentRequirementInfoInputDto[] equipmentRequires = new PlanEquipmentRequirementInfoInputDto[count3]; var borlist = ProManufacturingBORBillItemInfoRepository.TrackEntities.Where(m => m.ProManufacturingBill.ProductionRule.Id == dtoData.ProductionRule.Id).ToList(); ProManufacturingBORBillItemInfoInputDto[] borRequires = new ProManufacturingBORBillItemInfoInputDto[count3]; for (int i2 = 0; i2 < count3; i2++) { PlanEquipmentRequirementInfoInputDto info2 = new PlanEquipmentRequirementInfoInputDto(); info2.Id = CombHelper.NewComb(); info2.Equipment = borlist[i2].Equipment; var id = borlist[i2].ProductionProcess.Id; info2.ProductionProcessRequirement = PlanProductionProcessRequirementInfoRepository.TrackEntities.Where(m => m.ProductionProcess.Id == id && m.ProductionSchedule.Id == dtoData.Id).FirstOrDefault(); info2.RequireQuantity = borlist[i2].Quantity; info2.Remark = borlist[i2].Remark; info2.CreatedTime = dtoData.CreatedTime; info2.CreatorUserId = dtoData.CreatorUserId; info2.LastUpdatedTime = dtoData.LastUpdatedTime; info2.LastUpdatorUserId = dtoData.LastUpdatorUserId; equipmentRequires[i2] = info2; } // PlanEquipmentRequirementInfoRepository.UnitOfWork.BeginTransaction(); result3 = await PlanEquipmentRequirementInfoRepository.InsertAsync(equipmentRequires); // PlanEquipmentRequirementInfoRepository.UnitOfWork.Commit(); } if (result1.Successed && result2.Successed && result1.Successed) { dtoData.ScheduleStatus = 2; } } // PlanProductionScheduleInfoRepository.UnitOfWork.BeginTransaction(); var result = await PlanProductionScheduleInfoRepository.UpdateAsync(inputDtos); PlanProductionScheduleInfoRepository.UnitOfWork.Commit(); return(result); }
/// <summary> /// 检查实体是否存在 /// </summary> /// <param name="predicate"></param> /// <param name="id"></param> /// <returns></returns> public bool CheckExists(Expression <Func <PlanProductionProcessRequirementInfo, bool> > predicate, Guid id) { return(PlanProductionProcessRequirementInfoRepository.CheckExists(predicate, id)); }