public virtual void SaveOrUpdateMo(WorkOrder workOrder, string workOrderNo) { try { using (var trans = RF.TransactionScope(WMSEntityDataProvider.ConnectionStringName)) { var existWorkOrder = DomainControllerFactory.Create <WorkOrderController>() .GetWorkOrderByWo(workOrder.WorkOrderNo) ?? workOrder; OrganizationList list = new OrganizationList(); if (workOrder.Workshop.Code.IsNotEmpty()) { list = DomainControllerFactory.Create <OrganizationController>().GetOrganizationList(new OrganizationCriteria() { Code = workOrder.Workshop.Code }) as OrganizationList; } Organization org = list.Concrete().FirstOrDefault() as Organization ?? workOrder.Workshop; //if (org == null) //{ // throw new ValidationException("找不到车间[{0}]".Translate().FormatArgs(workOrder.Workshop.Code)); //} Item item = DomainControllerFactory.Create <ItemController>().GetByCode(workOrder.Item.Code); if (item == null) { //单个下载就报错 if (workOrderNo.IsNotEmpty()) { throw new ValidationException("找不到物料[{0}]".Translate().FormatArgs(workOrder.Item.Code)); } else { return; } } Warehouse house = DomainControllerFactory.Create <WarehouseController>().GetWarehouse(workOrder.ReceiptWarehouse.Code); if (house == null) { existWorkOrder.ReceiptWarehouseId = null; ////单个下载就报错 //if (workOrderNo.IsNotEmpty()) //{ // throw new ValidationException("找不到收货库存地点[{0}]".Translate().FormatArgs(workOrder.ReceiptWarehouse.Code)); //} //else { return; } } else { existWorkOrder.ReceiptWarehouseId = house.Id; } existWorkOrder.Factory = workOrder.Factory; existWorkOrder.Item = item; existWorkOrder.WorkshopId = org?.Id; existWorkOrder.WorkOrderNo = workOrder.WorkOrderNo; existWorkOrder.OrderQty = workOrder.OrderQty; existWorkOrder.PlanBeginDate = workOrder.PlanBeginDate; existWorkOrder.ActuFinishDate = workOrder.ActuFinishDate; existWorkOrder.S_Type = workOrder.S_Type; existWorkOrder.ProductVersion = workOrder.ProductVersion; existWorkOrder.CreateDate = workOrder.CreateDate; existWorkOrder.IsClosed = workOrder.IsClosed; existWorkOrder.Remark = workOrder.Remark; existWorkOrder.Status = workOrder.Status; RF.Save(existWorkOrder); trans.Complete(); } } catch (Exception ex) { throw ex; } }