Ejemplo n.º 1
0
        public Response InsertOrder(InterfaceOrderModel interfaceorder)
        {
            Response Response = new Response();

            if (!CheckLogin())
            {
                Response.Code    = 500;
                Response.Status  = false;
                Response.Message = "请先登录!";
                return(Response);
            }

            try
            {
                #region 保存订单接口主表
                InterfaceOrderHeader headdata = _unitWork.FindSingle <InterfaceOrderHeader>(u => u.Code.Equals(interfaceorder.interfaceOrderHeader.Code));
                interfaceorder.interfaceOrderHeader.Id = headdata?.Id;
                if (interfaceorder.interfaceOrderHeader.PartMaterialCode == null)
                {
                    interfaceorder.interfaceOrderHeader.PartMaterialCode = interfaceorder.interfaceOrderHeader.ProductCode;
                }
                if (interfaceorder.interfaceOrderHeader.Id == null)
                {
                    if (interfaceorder.interfaceOrderHeader.CreateBy == null)
                    {
                        interfaceorder.interfaceOrderHeader.CreateBy   = "system";
                        interfaceorder.interfaceOrderHeader.CreateTime = DateTime.Now;
                    }
                    _unitWork.Add(interfaceorder.interfaceOrderHeader);
                }
                else
                {
                    if (interfaceorder.interfaceOrderHeader.UpdateBy == null)
                    {
                        interfaceorder.interfaceOrderHeader.UpdateBy   = "system";
                        interfaceorder.interfaceOrderHeader.UpdateTime = DateTime.Now;
                    }
                    _unitWork.UpdateByTracking(interfaceorder.interfaceOrderHeader);
                }
                #endregion

                #region 保存订单主表
                OrderHeader orderHeader = _unitWork.FindSingle <OrderHeader>(u => u.Code.Equals(interfaceorder.interfaceOrderHeader.Code));
                if (orderHeader == null)
                {
                    orderHeader = new OrderHeader();
                }
                orderHeader.Code        = interfaceorder.interfaceOrderHeader.Code;
                orderHeader.MachineType = interfaceorder.interfaceOrderHeader.MachineType;
                orderHeader.ProductCode = interfaceorder.interfaceOrderHeader.ProductCode;
                if (orderHeader.PartMaterialCode == null)
                {
                    orderHeader.PartMaterialCode = interfaceorder.interfaceOrderHeader.ProductCode;
                }
                else
                {
                    orderHeader.PartMaterialCode = interfaceorder.interfaceOrderHeader.PartMaterialCode;
                }
                orderHeader.PlanQty     = (interfaceorder.interfaceOrderHeader.PlanQty == null ? 0 : interfaceorder.interfaceOrderHeader.PlanQty);
                orderHeader.CompleteQty = (interfaceorder.interfaceOrderHeader.CompleteQty == null ? 0 : interfaceorder.interfaceOrderHeader.CompleteQty);
                orderHeader.NGQty       = (interfaceorder.interfaceOrderHeader.NGQty == null ? 0 : interfaceorder.interfaceOrderHeader.NGQty);
                if (interfaceorder.interfaceOrderHeader.Status == null)
                {
                    orderHeader.Status = OrderStatus.已准备;
                }
                else
                {
                    orderHeader.Status = interfaceorder.interfaceOrderHeader.Status;
                }
                if (interfaceorder.interfaceOrderHeader.Type == null)
                {
                    orderHeader.Type = OrderType.正常工单;
                }
                else
                {
                    orderHeader.Type = interfaceorder.interfaceOrderHeader.Type;
                }
                if (interfaceorder.interfaceOrderHeader.LineId == null)
                {
                    var workship = _unitWork.FindSingle <ProductHeader>(u => u.Code == interfaceorder.interfaceOrderHeader.ProductCode).WorkShop;
                    orderHeader.LineId = _unitWork.FindSingle <Line>(u => u.WorkshopCode.Equals(workship)).Id;
                }
                else
                {
                    orderHeader.LineId = interfaceorder.interfaceOrderHeader.LineId;
                }
                if (interfaceorder.interfaceOrderHeader.Priority == null)
                {
                    orderHeader.Priority = 5;
                }
                else
                {
                    orderHeader.Priority = interfaceorder.interfaceOrderHeader.Priority;
                }
                orderHeader.LotNo = interfaceorder.interfaceOrderHeader.LotNo;
                if (interfaceorder.interfaceOrderHeader.LineId == null)
                {
                    orderHeader.WorkFactory = _unitWork.Find <Factory>(null).Select(u => u.FactoryCode).FirstOrDefault();
                }
                else
                {
                    orderHeader.WorkFactory = interfaceorder.interfaceOrderHeader.WorkFactory;
                }

                orderHeader.PlanStartTime   = interfaceorder.interfaceOrderHeader.PlanStartTime;
                orderHeader.PlanEndTime     = interfaceorder.interfaceOrderHeader.PlanEndTime;
                orderHeader.ActualStartTime = interfaceorder.interfaceOrderHeader.ActualStartTime;
                orderHeader.ActualEndTime   = interfaceorder.interfaceOrderHeader.ActualEndTime;
                orderHeader.ReserveNo       = interfaceorder.interfaceOrderHeader.ReserveNo;
                orderHeader.ReserveRowNo    = interfaceorder.interfaceOrderHeader.ReserveRowNo;
                orderHeader.CreateTime      = interfaceorder.interfaceOrderHeader.CreateTime;
                orderHeader.CreateBy        = interfaceorder.interfaceOrderHeader.CreateBy;
                orderHeader.UpdateTime      = interfaceorder.interfaceOrderHeader.UpdateTime;
                orderHeader.UpdateBy        = interfaceorder.interfaceOrderHeader.UpdateBy;

                if (orderHeader.Id == null)
                {
                    if (orderHeader.CreateBy == null)
                    {
                        orderHeader.CreateBy   = "system";
                        orderHeader.CreateTime = DateTime.Now;
                    }
                    _unitWork.Add(orderHeader);
                }
                else
                {
                    if (orderHeader.UpdateBy == null)
                    {
                        orderHeader.UpdateBy   = "system";
                        orderHeader.UpdateTime = DateTime.Now;
                    }
                    _unitWork.UpdateByTracking(orderHeader);
                }
                #endregion

                foreach (var item in interfaceorder.interfaceOrderDetails)
                {
                    try
                    {
                        #region 保存订单接口子表
                        InterfaceOrderDetiail data = _context.Set <InterfaceOrderDetiail>().AsQueryable().Where(u => u.OrderCode.Equals(item.OrderCode) && u.DrawingNumber.Equals(item.DrawingNumber)).SingleOrDefault();
                        item.Id = data?.Id;

                        if (item.Id == null)
                        {
                            if (item.CreateBy == null)
                            {
                                item.CreateBy   = "system";
                                item.CreateTime = DateTime.Now;
                            }
                            _unitWork.Add(item);
                        }
                        else
                        {
                            if (item.UpdateBy == null)
                            {
                                item.UpdateBy   = "system";
                                item.UpdateTime = DateTime.Now;
                            }
                            _unitWork.UpdateByTracking(item);
                        }
                        #endregion

                        #region 保存订单子表
                        OrderDetiail orderDetail = _context.Set <OrderDetiail>().AsQueryable().Where(u => u.OrderCode.Equals(item.OrderCode) && u.DrawingNumber.Equals(item.DrawingNumber)).SingleOrDefault();
                        if (orderDetail == null)
                        {
                            orderDetail = new OrderDetiail();
                        }

                        orderDetail.OrderCode      = item.OrderCode;
                        orderDetail.OrderHeaderId  = orderHeader.Id;
                        orderDetail.DrawingNumber  = item.DrawingNumber;
                        orderDetail.SerialNumber   = item.SerialNumber;
                        orderDetail.ExecuteStatus  = "ready";
                        orderDetail.QualityStatus  = "good";
                        orderDetail.StationTraceId = item.StationTraceId;
                        orderDetail.StartTime      = item.StartTime;
                        orderDetail.EndTime        = item.EndTime;
                        orderDetail.PrintCount     = 0;
                        orderDetail.CreateTime     = item.CreateTime;
                        orderDetail.CreateBy       = item.CreateBy;
                        orderDetail.UpdateTime     = item.UpdateTime;
                        orderDetail.UpdateBy       = item.UpdateBy;


                        if (orderDetail.Id == null)
                        {
                            if (orderDetail.CreateBy == null)
                            {
                                orderDetail.CreateBy   = "system";
                                orderDetail.CreateTime = DateTime.Now;
                            }
                            _unitWork.Add(orderDetail);
                        }
                        else
                        {
                            if (orderDetail.UpdateBy == null)
                            {
                                orderDetail.UpdateBy   = "system";
                                orderDetail.UpdateTime = DateTime.Now;
                            }
                            _unitWork.UpdateByTracking(orderDetail);
                        }
                        #endregion
                    }
                    catch (Exception ex)
                    {
                        #region 记录订单接口子表错误信息
                        InterfaceOrderDetiail data = _context.Set <InterfaceOrderDetiail>().AsQueryable().Where(u => u.OrderCode.Equals(item.OrderCode) && u.DrawingNumber.Equals(item.DrawingNumber)).SingleOrDefault();
                        if (data != null)
                        {
                            data.ErrorMessage = ex.Message;
                            if (data.UpdateBy == null)
                            {
                                data.UpdateBy   = "system";
                                data.UpdateTime = DateTime.Now;
                            }
                            _unitWork.Update(data);
                        }
                        #endregion

                        Response.Code    = 500;
                        Response.Status  = false;
                        Response.Message = (Response.Message == "操作成功" ? "" : Response.Message) + "\r\n" + "订单号:" + item.OrderCode + ",产品图号:" + item.DrawingNumber + "同步失败:" + ex.Message;
                    }
                }
            }
            catch (Exception ex)
            {
                #region 记录订单接口主表错误信息
                try
                {
                    InterfaceOrderHeader data = _context.Set <InterfaceOrderHeader>().AsQueryable().Where(u => u.Code.Equals(interfaceorder.interfaceOrderHeader.Code)).SingleOrDefault();
                    if (data != null)
                    {
                        data.ErrorMessage = ex.Message;
                        if (data.UpdateBy == null)
                        {
                            data.UpdateBy   = "system";
                            data.UpdateTime = DateTime.Now;
                        }
                        _unitWork.Update(data);
                    }
                }
                catch (Exception)
                {
                }
                #endregion

                Response.Code    = 500;
                Response.Status  = false;
                Response.Message = (Response.Message == "操作成功" ? "" : Response.Message) + "\r\n" + "同步失败:" + ex.Message;
            }

            return(Response);
        }
 public string TransmitOrder([FromBody] InterfaceOrderModel interfaceorder)
 {
     return(JsonHelper.Instance.Serialize(_app.InsertOrder(interfaceorder)));
 }