public ActionResult Create(Orders order) { List <OrderSystemDetail> orderDetails; if (!this.CheckOrder(order.OrderNumber, out orderDetails)) { ViewData["error"] = ORDER_EXISTS_ERROR; return(View()); } OrderSystemDetail orderItem = orderDetails[0]; order.DateAssign = DateTime.Now; order.DateNeedFinish = orderItem.duedate; order.RoomId = orderItem.roomId; order.RoomName = orderItem.roomName; order.RoomNumber = orderItem.ocrcode; order.Status = enumStatus.Unhandle; order.ProductUnit = orderItem.FatherInvntryUom; order.ProductCode = orderItem.Fatheritemcode; order.ProductInfo = orderItem.Fatheritemname; order.OrderNumber = orderItem.docnum; order.ProductFreeCount = orderItem.plannedqty; order.ProductCount = orderItem.plannedqty; //物料信息 List <string> mateCodes = new List <string> (); foreach (OrderSystemDetail item in orderDetails) { mateCodes.Add(item.Childitemcode); } IEnumerable <Materials> materialList = from item in db.Materials where mateCodes.Contains(item.Code) select item; string strIds = string.Empty; foreach (Materials item in materialList) { strIds += item.ID + ";"; } order.MaterialInfo = strIds.Substring(0, strIds.Length - 1); db.Orders.Add(order); db.SaveChanges(); return(RedirectToAction("Detail", new { id = order.OrderId, error = enumErrorCode.HandlerSuccess })); }
private bool CheckOrder(string order, out List <OrderSystemDetail> orderDetails) { bool result = false; orderDetails = null; try { //获取订单数据 Dictionary <string, string> orderParam = new Dictionary <string, string>(); orderParam.Add(ORDER_CODE_PARAM, order); string strOrderInfo = WebInfo.PostPageInfo(ORDER_URL, orderParam); //订单解码 DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List <OrderSystemDetail>)); MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(strOrderInfo)); orderDetails = (List <OrderSystemDetail>)serializer.ReadObject(stream); if (orderDetails.Count < 1) { return(result); } //校验车间权限 OrderSystemDetail orderItem = orderDetails[0]; FactoryRoom room = db.FactoryRoom.FirstOrDefault(item => item.RoomNumber == orderItem.ocrcode); if (room == null) { return(result); } int userId = Convert.ToInt32(Session["UserID"]); UsersInRooms tempUserRoom = db.UsersInRooms.FirstOrDefault(item => item.RoomId == room.RoomID && item.UserId == userId); if (tempUserRoom == null) { return(result); } orderItem.roomName = room.RoomName; orderItem.roomId = room.RoomID; result = true; } catch { } return(result); }
public JsonResult GetOrderInfo(string order) { JsonResult result = new JsonResult(); using (var t = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted })) { Orders tempCurrentOrder = db.Orders.FirstOrDefault(item => item.OrderNumber == order); if (tempCurrentOrder != null) { result.Data = new { error = ORDER_EXISTS_ERROR }; return(result); } } result.Data = new { error = ORDER_RIGHT_ERROR }; //获取订单数据 List <OrderSystemDetail> orderDetails; if (!this.CheckOrder(order, out orderDetails)) { return(result); } //物料保存 List <string> matList = new List <string>(); bool insertFlag = false; foreach (OrderSystemDetail item in orderDetails) { matList.Add(string.Format(App_Start.Constants.MACHINE_MATERIAL_STRUCTURE, item.Childitemcode, item.ChildnvntryUom, item.Childitemname)); Materials tempMat = db.Materials.FirstOrDefault(m => m.Code == item.Childitemcode); if (tempMat == null) { db.Materials.Add(new Materials() { Code = item.Childitemcode, Unit = item.ChildnvntryUom, DetailInfo = item.Childitemname }); insertFlag = true; } } if (insertFlag) { db.SaveChanges(); } //返回前台显示 OrderSystemDetail orderItem = orderDetails[0]; result.Data = new { orderCode = orderItem.docnum, roomName = orderItem.roomName, roomNumber = orderItem.ocrcode, dateFinish = orderItem.duedate.ToString("yyyy年MM月dd日"), productCode = orderItem.Fatheritemcode, productUnit = orderItem.FatherInvntryUom, productInfo = orderItem.Fatheritemname, materialInfo = matList.ToArray(), detail = orderItem.U_WL_PACK == null ? "" : orderItem.U_WL_PACK, notice = orderItem.U_htyq }; return(result); }