/// <summary> /// 物理删除工序材料需求信息 /// </summary> /// <param name="ids"></param> /// <returns></returns> public async Task <OperationResult> Delete(params Guid[] ids) { ids.CheckNotNull("ids"); PlanMaterialRequirementInfoRepository.UnitOfWork.BeginTransaction(); var result = await PlanMaterialRequirementInfoRepository.DeleteAsync(ids); PlanMaterialRequirementInfoRepository.UnitOfWork.Commit(); return(result); }
///// <summary> ///// 逻辑删除工序材料需求信息 ///// </summary> ///// <param name="enterinfo"></param> ///// <returns></returns> //public async Task<OperationResult> LogicDelete(params PlanMaterialRequirementInfo[] enterinfos) //{ // enterinfos.CheckNotNull("enterinfos"); // int count = 0; // try // { // PlanMaterialRequirementInfoRepository.UnitOfWork.BeginTransaction(); // count = await PlanMaterialRequirementInfoRepository.RecycleAsync(enterinfos); // PlanMaterialRequirementInfoRepository.UnitOfWork.Commit(); // } // catch (DataException dataException) // { // return new OperationResult(OperationResultType.Error, dataException.Message); // } // catch (OSharpException osharpException) // { // return new OperationResult(OperationResultType.Error, osharpException.Message); // } // List<string> names = new List<string>(); // foreach (var data in enterinfos) // { // names.Add(data.Id.ToString()); // } // return count > 0 // ? new OperationResult(OperationResultType.Success, // names.Count > 0 // ? "信息“{0}”逻辑删除成功".FormatWith(names.ExpandAndToString()) // : "{0}个信息逻辑删除成功".FormatWith(count)) // : new OperationResult(OperationResultType.NoChanged); //} ///// <summary> ///// 逻辑还原工序材料需求信息 ///// </summary> ///// <param name="enterinfo"></param> ///// <returns></returns> //public async Task<OperationResult> LogicRestore(params PlanMaterialRequirementInfo[] enterinfos) //{ // enterinfos.CheckNotNull("enterinfos"); // int count = 0; // try // { // PlanMaterialRequirementInfoRepository.UnitOfWork.BeginTransaction(); // count = await PlanMaterialRequirementInfoRepository.RestoreAsync(enterinfos); // PlanMaterialRequirementInfoRepository.UnitOfWork.Commit(); // } // catch (DataException dataException) // { // return new OperationResult(OperationResultType.Error, dataException.Message); // } // catch (OSharpException osharpException) // { // return new OperationResult(OperationResultType.Error, osharpException.Message); // } // List<string> names = new List<string>(); // foreach (var data in enterinfos) // { // names.Add(data.Id.ToString()); // } // return count > 0 // ? new OperationResult(OperationResultType.Success, // names.Count > 0 // ? "信息“{0}”逻辑还原成功".FormatWith(names.ExpandAndToString()) // : "{0}个信息逻辑还原成功".FormatWith(count)) // : new OperationResult(OperationResultType.NoChanged); //} /// <summary> /// 更新工序材料需求信息 /// </summary> /// <param name="inputDtos"></param> /// <returns></returns> public async Task <OperationResult> Update(params PlanMaterialRequirementInfoInputDto[] inputDtos) { inputDtos.CheckNotNull("inputDtos"); foreach (var dtoData in inputDtos) { dtoData.ProductionProcessRequirement = PlanProductionProcessRequirementInfoRepository.TrackEntities.Where(m => m.Id == dtoData.ProductionProcessRequirement_Id).FirstOrDefault(); if (Equals(dtoData.ProductionProcessRequirement, null)) { return(new OperationResult(OperationResultType.Error, "对应的工序请求不存在,无法保存!")); } dtoData.Material = MaterialInfoRepository.TrackEntities.Where(m => m.Id == dtoData.Material_Id).FirstOrDefault(); if (Equals(dtoData.Material, null)) { return(new OperationResult(OperationResultType.Error, "对应的物料不存在,无法保存!")); } } PlanMaterialRequirementInfoRepository.UnitOfWork.BeginTransaction(); var result = await PlanMaterialRequirementInfoRepository.UpdateAsync(inputDtos); PlanMaterialRequirementInfoRepository.UnitOfWork.Commit(); return(result); }
/// <summary> /// 检查实体是否存在 /// </summary> /// <param name="predicate"></param> /// <param name="id"></param> /// <returns></returns> public bool CheckExists(Expression <Func <PlanMaterialRequirementInfo, bool> > predicate, Guid id) { return(PlanMaterialRequirementInfoRepository.CheckExists(predicate, id)); }
/// <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); }