/// <summary> /// 查询并获取新的生产工艺规格文件 /// </summary> /// <param name="state"></param> private void updateWorkSheetInfo(object state) { string worksheetNo = (string)state; ProductPlan productPlan = ProductPlanDAL.GetProductPlan("where worksheetno='" + worksheetNo + "'"); if (productPlan == null) { return; } Crafwork crafwork = CrafworkDAL.GetCrafwork("where id=" + productPlan.Mid); if (crafwork == null) { return; } WorksheetNo = worksheetNo; this.Dispatcher.Invoke(() => { tbQrcode.Text = string.Empty; tbWroksheetNo.Text = productPlan.WorkSheetNo; tbCrafworkCode.Text = crafwork.CrafworkCode; tbSpecification.Text = productPlan.Specification; tbMaterialNo.Text = productPlan.MaterialNo; tbColor.Text = productPlan.Color; tbLength.Text = productPlan.Length + ""; tbBack.Text = productPlan.Bak; tbArrLength.Text = productPlan.ArrLength + ""; }); // 获取工艺参数文件 ProductionInfo.PdfService.PdfFileName = crafwork.FileName; }
public static List <ProductPlan> GetProductPlan() { var list = new List <ProductPlan>(); var bill = new JoinAlias(typeof(ProductPlan)); var query = new DQueryDom(bill); query.Columns.Add(DQSelectColumn.Field("ID")); query.Columns.Add(DQSelectColumn.Field("PlanNumber")); query.Where.Conditions.Add(DQCondition.Or(DQCondition.And(DQCondition.GreaterThanOrEqual("EndDate", DateTime.Today), DQCondition.LessThanOrEqual("Date", DateTime.Today)), DQCondition.And(DQCondition.GreaterThanOrEqual("EndDate", DateTime.Today.AddDays(-1)), DQCondition.LessThanOrEqual("Date", DateTime.Today.AddDays(-1))), DQCondition.And(DQCondition.GreaterThanOrEqual("EndDate", DateTime.Today.AddDays(-2)), DQCondition.LessThanOrEqual("Date", DateTime.Today.AddDays(-2))), DQCondition.And(DQCondition.GreaterThanOrEqual("EndDate", DateTime.Today.AddDays(-3)), DQCondition.LessThanOrEqual("Date", DateTime.Today.AddDays(-3))))); query.Where.Conditions.Add(DQCondition.EQ("BillState", 单据状态.已审核)); using (var context = new TransactionContext()) { using (var reader = context.Session.ExecuteReader(query)) { while (reader.Read()) { var productPlan = new ProductPlan { ID = (long)reader[0], PlanNumber = (string)reader[1] }; list.Add(productPlan); } } } return(list); }
public ActionResult UpdateProductPlan(int?id) { int ab = Convert.ToInt32(Session["id"]); int bc = Convert.ToInt32(Session["Designation"]); if (ab != 0 && bc == 2) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } //Servicess ServiceUpdate = db.Servicesses.Find(id); ProductPlan productPlan = db.ProductPlans.Find(id); if (productPlan == null) { return(HttpNotFound()); } return(View(productPlan)); } else { FormsAuthentication.SignOut(); return(RedirectToAction("Login", "Login")); } }
{//最简单、原始的、可能的查询计划 public Plan createPlan(QueryData data, Transaction tx) { //第一步:为每一个出现的表或者视图定义创建一个plan List <Plan> plans = new List <Plan>(); foreach (string tblname in data.tables()) { string viewdef = SimpleDB.mdMgr().getViewDef(tblname, tx); if (viewdef != null) { plans.Add(SimpleDB.planner().createQueryPlan(viewdef, tx)); } else { plans.Add(new TablePlan(tblname, tx)); } } //第二步:创建所有表计划的叉积运算 Plan p = plans[0]; plans.RemoveAt(0); foreach (Plan nextplan in plans) { p = new ProductPlan(p, nextplan); } //第三步:为predicate添加一个选择运算selection p = new SelectPlan(p, data.pred()); //第四步:做字段名称上的投影运算 p = new ProjectPlan(p, data.fields()); return(p); }
public ActionResult DeleteProductPlan(int id) { ProductPlan productPlan = db.ProductPlans.Find(id); db.ProductPlans.Remove(productPlan); db.SaveChanges(); return(RedirectToAction("ProductPlanInfo")); }
public ActionResult UpdateProductPlan([Bind(Include = "ProductPlanId,ProductName")] ProductPlan productPlan) { if (ModelState.IsValid) { db.Entry(productPlan).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("ProductPlanInfo")); } return(View(productPlan)); }
public static ProductPlan GetProductPlan(string whereString) { ProductPlan productPlan = null; string sql = "select * from [Mes].[dbo].[T_Plan] " + whereString; using (SqlDataReader reader = DBHelper.ExecuteSqlReader(sql)) { if (reader != null && reader.Read()) { try { productPlan = new ProductPlan(); if (DBNull.Value != reader["id"]) { productPlan.Id = Convert.ToInt32(reader["id"]); } if (DBNull.Value != reader["mid"]) { productPlan.Mid = Convert.ToInt32(reader["mid"]); } if (DBNull.Value != reader["worksheetno"]) { productPlan.WorkSheetNo = reader["worksheetno"].ToString(); } if (DBNull.Value != reader["materialno"]) { productPlan.MaterialNo = reader["materialno"].ToString(); } if (DBNull.Value != reader["color"]) { productPlan.Color = reader["color"].ToString(); } if (DBNull.Value != reader["specification"]) { productPlan.Specification = reader["specification"].ToString(); } if (DBNull.Value != reader["length"]) { productPlan.Length = Convert.ToInt32(reader["length"]); } if (DBNull.Value != reader["bak"]) { productPlan.Bak = reader["bak"].ToString(); } if (DBNull.Value != reader["arrlength"]) { productPlan.ArrLength = Convert.ToInt32(reader["arrlength"]); } } catch { productPlan = null; } } } return(productPlan); }
public ActionResult ProductPlan(ProductPlan productPlan) { if (ModelState.IsValid) { db.ProductPlans.Add(productPlan); db.SaveChanges(); return(RedirectToAction("ProductPlanInfo")); } else { return(View()); } }
private static double AnalyzeRisk(ProductPlan greatSmartThing) { double riskFactor = 1; double initialCost = greatSmartThing.InfrastructureCost + greatSmartThing.MarketingCost; if (initialCost > 100000) { riskFactor *= 0.75; } riskFactor *= ((greatSmartThing.UnitPrice - greatSmartThing.UnitProductionCost) / greatSmartThing.UnitPrice); return(riskFactor); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (ToolManager.CheckParams("IsDelete")) { List <string> sqls = new List <string>(); string planNumber = ToolManager.GetParamsString("PlanNumber"); string sql = string.Format(@"delete ProductPlanSubDetail where PlanNumber='{0}' ", planNumber); sqls.Add(sql); sql = string.Format(@" delete ProductPlanSub where PlanNumber='{0}' ", planNumber); sqls.Add(sql); sql = string.Format(@" delete ProductPlanDetail where PlanNumber='{0}' ", planNumber); sqls.Add(sql); sql = string.Format(@" delete ProductPlan where PlanNumber='{0}' ", planNumber); sqls.Add(sql); string error = string.Empty; string result = SqlHelper.BatchExecuteSql(sqls, ref error) ? "ok" : error; Tool.WriteLog(Tool.LogType.Operating, "删除开工单" + planNumber, result); Response.Write(result); Response.End(); return; } //确认领料 if (ToolManager.CheckQueryString("IsConfirmCollar")) { string type = ToolManager.GetQueryString("IsConfirmCollar"); type = type.Equals("sc") ? "生产出库" : "包装出库"; string error = string.Empty; string result = string.Empty; string userId = ToolCode.Tool.GetUser().UserNumber; string[] array = ToolManager.GetQueryString("PlanNumbers").Split(','); foreach (string str in array) { if (!WorkOrderManager.EnterKGD(str, userId, ref error, type)) { result += error; } } if (string.IsNullOrEmpty(result)) { Response.Write("1"); Response.End(); return; } else { Response.Write(result); Response.End(); return; } } //查询 if (ToolManager.CheckQueryString("pageIndex")) { GetPageOperation("btnSearch", "EditProductPlan.aspx", "ProductPlanDetailList.aspx", "ProductPlanSubList.aspx"); } //审核 if (ToolManager.CheckQueryString("check")) { string check = ToolManager.GetQueryString("check"); string temp = ProductPlan.check(ToolManager.GetQueryString("check")); bool result = temp == "1" ? true : false; if (result) { Tool.WriteLog(Tool.LogType.Operating, "审核开工单信息" + ToolManager.ReplaceSingleQuotesToBlank(check), "审核成功"); Response.Write(temp); Response.End(); return; } else { Tool.WriteLog(Tool.LogType.Operating, "审核开工单信息" + ToolManager.ReplaceSingleQuotesToBlank(check), "审核失败!原因" + temp); Response.Write(temp); Response.End(); return; } } } }
public object ConsumeMaterial([FromBody] ConsumeMaterial materialManagement) { if (materialManagement.Bill == null) { return(Result.GenError <Result>(Error.ParamError)); } foreach (var bill in materialManagement.Bill) { bill.Type = MaterialOp.出库; bill.CorrectNumber(); } var mBills = materialManagement.Bill.Where(x => x.Number > 0); if (!mBills.Any()) { return(Result.GenError <Result>(Error.MaterialNotEmpty)); } //出库时物料必须存在 if (mBills.Any(x => x.Type == MaterialOp.出库 && x.BillId == 0)) { return(Result.GenError <Result>(Error.MaterialBillNotExist)); } var billIds = mBills.Select(x => x.BillId).Distinct(); if (!billIds.Any()) { return(Result.GenError <Result>(Error.MaterialNotEmpty)); } var allBills = MaterialHelper.GetDetails(billIds).ToDictionary(x => x.BillId); if (allBills.Count() != billIds.Count()) { return(Result.GenError <Result>(Error.MaterialBillNotExist)); } var createUserId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; ProductPlan plan = null; if (materialManagement.PlanId != 0) { plan = ProductPlanHelper.Instance.Get <ProductPlan>(materialManagement.PlanId); if (plan == null) { return(Result.GenError <Result>(Error.ProductionPlanNotExist)); } } var result = new DataResult(); #region 检验库存 var consumeBills = billIds.Select(x => new OpMaterial { BillId = x, Number = mBills.Where(y => y.BillId == x).Sum(z => z.Number) }).ToList(); var less = consumeBills.Where(x => x.Number > allBills[x.BillId].Number).Select(x => allBills[x.BillId].Code); if (less.Any()) { result.errno = Error.MaterialLess; result.datas.AddRange(less); return(result); } var oldBatches = new Dictionary <int, MaterialBatch>(); var upIds = new Dictionary <int, int>(); //出库指定的批次 var batchBills = mBills.Where(x => x.HaveBatch); if (batchBills.Any()) { var bIds = batchBills.SelectMany(x => x.Batches.Select(y => y.Id)).Distinct(); oldBatches.AddRange(MaterialBatchHelper.GetDetails(bIds).ToDictionary(x => x.Id)); if (bIds.Count() != oldBatches.Count()) { return(Result.GenError <DataResult>(Error.MaterialBatchNotExist)); } var mergeBatch = bIds.Select(x => { var oldBatch = oldBatches[x]; var batches = batchBills.Where(y => y.BillId == oldBatch.BillId).SelectMany((Func <OpMaterial, IEnumerable <MaterialBatchSimple> >)(y => y.Batches.Where((Func <MaterialBatchSimple, bool>)(z => z.Id == oldBatch.Id)))); return(new MaterialBatch { Id = oldBatch.Id, BatchId = oldBatch.BatchId, Batch = oldBatch.Batch, BillId = oldBatch.BillId, SupplierId = oldBatch.SupplierId, Number = batches.Sum(y => y.Number), }); }); var much = mergeBatch.Where(x => oldBatches[x.Id].Left < x.Number); if (much.Any()) { result = new DataResult { errno = Error.MaterialBatchLeftLess }; result.datas.AddRange(much.Select(x => $"{x.Batch} {allBills[x.BillId].Code} {x.Supplier}")); return(result); } } var noBatchBills = mBills.Where(x => !x.HaveBatch); if (noBatchBills.Any()) { var noBillIds = noBatchBills.Select(x => x.BillId).Distinct(); var noZeroBatches = MaterialBatchHelper.GetDetailsNoZero(noBillIds) .GroupBy(x => x.BillId).ToDictionary(x => x.Key); //.GroupBy(x => x.BillId).ToDictionary(x => x.Key, x => x.Select(y => y)); var mergeBatch = noBillIds.Select(billId => { var batches = noBatchBills.Where(y => y.BillId == billId); var number = batches.Sum(y => y.Number); return(new MaterialBatch { BillId = billId, Number = number, }); }); var noZeroMergeBatch = noBillIds.Select(billId => { var left = noZeroBatches.ContainsKey(billId) ? noZeroBatches[billId].Sum(y => y.Left) : 0; return(new MaterialBatch { BillId = billId, Left = left, }); }).ToDictionary(x => x.BillId); var much = mergeBatch.Where(x => noZeroMergeBatch[x.BillId].Left < x.Number); if (much.Any()) { result = new DataResult { errno = Error.MaterialBatchLeftLess }; result.datas.AddRange(much.Select(x => $"{x.Batch} {allBills[x.BillId].Code} {x.Supplier}")); return(result); } foreach (var bill in noBatchBills) { var number = bill.Number; foreach (var batch in noZeroBatches[bill.BillId].OrderBy(x => x.Time)) { if (number <= 0) { break; } if (!upIds.ContainsKey(batch.Id)) { upIds.Add(batch.Id, 0); } var n = 0m; if (number > batch.Left) { number -= batch.Left; n = batch.Left; } else { n = number; number = 0; } var z = ClassExtension.CopyTo <MaterialBatch, MaterialBatchSimple>(batch); z.Number = n; bill.Batches.Add(z); } } oldBatches.AddRange(noZeroBatches.Values.SelectMany(x => x.Where(y => upIds.ContainsKey(y.Id))).ToDictionary(x => x.Id)); } #endregion #region 计划领料 var planChangeBill = new List <ProductPlanBill>(); var planAddBill = new List <ProductPlanBill>(); if (materialManagement.PlanId != 0) { var planBill = ProductPlanBillHelper.GetPlanBills(materialManagement.PlanId, billIds).ToDictionary(x => x.BillId); #region 更新 var existBill = consumeBills.Where(x => planBill.ContainsKey(x.BillId)); if (existBill.Any()) { foreach (var bill in existBill) { planBill[bill.BillId].MarkedDateTime = markedDateTime; planBill[bill.BillId].ActualConsumption += bill.Number; planChangeBill.Add(planBill[bill.BillId]); } } #endregion #region 添加额外领用的物料 var extraBill = consumeBills.Where(x => !planBill.ContainsKey(x.BillId)); if (extraBill.Any()) { planAddBill.AddRange(extraBill.Select(x => new ProductPlanBill { CreateUserId = createUserId, MarkedDateTime = markedDateTime, PlanId = materialManagement.PlanId, BillId = x.BillId, ActualConsumption = x.Number, Extra = true, })); } #endregion } #endregion var logs = mBills.Select(x => { var batches = new List <MaterialBatch>(); batches.AddRange(x.Batches.Select(y => { var batch = oldBatches[y.Id]; batch.MarkedDateTime = markedDateTime; batch.OutTime = markedDateTime; batch.Left -= y.Number; var z = ClassExtension.CopyTo <MaterialBatchSimple, MaterialBatch>(y); z.Batch = batch.Batch; z.Price = batch.Price; return(z); })); var log = new MaterialLog(createUserId, markedDateTime, x.Type, x.Purpose, x.Number, allBills[x.BillId].Number, x.RelatedPerson, createUserId, allBills[x.BillId], batches, plan); return(log); }).ToList(); if (oldBatches.Any()) { MaterialBatchHelper.UpdateConsumeLeft(oldBatches.Values); } Task.Run(() => { if (planChangeBill.Any()) { ProductPlanBillHelper.UpdateActualConsumptions(planChangeBill); } if (planAddBill.Any()) { ProductPlanBillHelper.Instance.Add(planAddBill); } if (logs.Any()) { MaterialLogHelper.Instance.Add(logs); } if (allBills.Keys.Any()) { HMaterialHelper.UpdateBillPrice(allBills.Keys); } }); try { #region 消耗 foreach (var bill in consumeBills) { allBills[bill.BillId].OutTime = markedDateTime; allBills[bill.BillId].Number -= bill.Number; } MaterialHelper.Consume(allBills.Values); #endregion } catch (Exception e) { Log.Error(allBills.Values.ToJSON()); Log.Error(e); } return(result); }
public MaterialLog(string userId, DateTime time, MaterialOp type, int mode, string purpose, decimal number, decimal oldNumber, string relatedPerson, string manager, int itemId, MaterialBillDetail bill, IEnumerable <MaterialBatch> batches, ProductPlan plan = null) { CreateUserId = userId; MarkedDateTime = time; Time = time; BillId = bill.Id; Code = bill.Code; CategoryId = bill.CategoryId; Category = bill.Category; NameId = bill.NameId; Name = bill.Name; SpecificationId = bill.SpecificationId; Specification = bill.Specification; BIds = batches.Select(x => x.Id).Join(); Batches = batches.Select(x => x.Batch).Join(); BatchNumbers = batches.Select(x => x.Number).Join(); BatchAmount = batches.Sum(x => x.Number * x.Price); Type = type; Mode = mode; Purpose = plan?.Plan ?? purpose; PlanId = plan?.Id ?? 0; Plan = plan?.Plan ?? ""; Number = number; OldNumber = oldNumber; RelatedPerson = relatedPerson; Manager = manager; ItemId = itemId; }
public MaterialLog(string userId, DateTime time, MaterialOp type, int mode, string purpose, decimal number, decimal oldNumber, string relatedPerson, string manager, MaterialBillDetail bill, IEnumerable <MaterialBatch> batches, ProductPlan plan = null) : this(userId, time, type, mode, purpose, number, oldNumber, relatedPerson, manager, 0, bill, batches, plan) { }