public TableData Query(OrderDetiail entity)
        {
            var result = new TableData();
            var data   = _app.Find(EntityToExpression <OrderDetiail> .GetExpressions(entity));

            GetData(data, result);
            result.count = data.Count();

            return(result);
        }
Example #2
0
 public string Upd(OrderDetiail Table_entity)
 {
     try
     {
         _app.Upd(Table_entity);
     }
     catch (Exception ex)
     {
         Result.Status  = false;
         Result.Message = ex.Message;
     }
     return(JsonHelper.Instance.Serialize(Result));
 }
Example #3
0
        public string GetTemplate()
        {
            var result = new TableData();
            List <OrderDetiail> listOrderDetiail = new List <OrderDetiail>();
            OrderDetiail        entity           = _app.FindSingle(u => u.Id > 0);

            if (entity != null)
            {
                listOrderDetiail.Add(entity);
            }
            else
            {
                listOrderDetiail.Add(new OrderDetiail());
            }

            result.data  = listOrderDetiail;
            result.count = listOrderDetiail.Count;

            return(JsonHelper.Instance.Serialize(result));
        }
        public Response ImportIn(IFormFile excelfile)
        {
            Response            result = new Infrastructure.Response();
            List <OrderDetiail> exp    = imp.ConvertToModel <OrderDetiail>(excelfile);
            string sErrorMsg           = "";

            for (int i = 0; i < exp.Count; i++)
            {
                try
                {
                    OrderDetiail e = exp[i];
                    e.Id = null;
                    _app.Add(e);
                }
                catch (Exception ex)
                {
                    sErrorMsg     += "第" + (i + 2) + "行:" + ex.Message + "<br>";
                    result.Message = sErrorMsg;
                    break;
                }
            }
            if (sErrorMsg.Equals(string.Empty))
            {
                if (exp.Count == 0)
                {
                    sErrorMsg     += "没有发现有效数据, 请确定模板是否正确, 或是否有填充数据!";
                    result.Message = sErrorMsg;
                }
                else
                {
                    result.Message = "导入完成";
                }
            }
            else
            {
                result.Status  = false;
                result.Message = result.Message;
            }
            return(result);
        }
        public Response EquipmentWorkNodeApp(EquipmentWorkNodeModel equipmentWorkNode)
        {
            using (var tran = _context.Database.BeginTransaction())
            {
                Response <ReviseModel> Response = new Response <ReviseModel>();
                string sErrorMsg = "";
                //if (!CheckLogin())
                //{
                //    Response.Code = 500;
                //    Response.Status = false;
                //    Response.Message = "请先登录!";
                //    return Response;
                //}

                try
                {
                    Equipment equipment = _unitWork.FindSingle <Equipment>(u => u.Code.Equals(equipmentWorkNode.EquipmentCode));
                    if (equipment == null)
                    {
                        sErrorMsg       += "设备号为:" + equipmentWorkNode.EquipmentCode + "系统中不存在,请确认<br>";
                        Response.Message = sErrorMsg;
                    }
                    else
                    {
                        EquipmentStatus equipmentStatus = _unitWork.FindSingle <EquipmentStatus>(u => u.EquipmentId.Equals(equipment.Id));
                        if (equipmentWorkNode.EquipmentCode == EquipmentStart.桁车1 || equipmentWorkNode.EquipmentCode == EquipmentStart.桁车2 || equipmentWorkNode.EquipmentCode == EquipmentStart.桁车3)
                        {
                            StepTrace stCar = _unitWork.Find <StepTrace>(u => u.SerialNumber == equipmentWorkNode.SerialNumber).FirstOrDefault();
                            if (equipmentWorkNode.Status == "1")
                            {
                                stCar.StationId        = equipment.StationId;
                                stCar.StationOutTime   = DateTime.Now;
                                equipmentStatus.Status = equipmentWorkNode.Status;
                            }
                            else
                            {
                                stCar.StationId        = 0;
                                stCar.StationInTime    = DateTime.Now;
                                equipmentStatus.Status = "0";
                            }
                            _unitWork.UpdateByTracking(stCar);
                            equipmentStatus.UpdateBy   = "ECSApi";
                            equipmentStatus.UpdateTime = DateTime.Now;
                            _unitWork.Update(equipmentStatus);
                        }
                        else
                        {
                            //工位工序对应关系
                            StepStation stepStation = _unitWork.Find <StepStation>(u => u.StationId == equipment.StationId).FirstOrDefault();
                            Step        step        = _unitWork.Find <Step>(u => u.ProductCode == equipmentWorkNode.ProductCode && u.StepType == stepStation.StepType).FirstOrDefault();

                            //更新设备状态
                            if (equipmentWorkNode.Status == "0")
                            {
                                equipmentStatus.Status     = equipmentWorkNode.Status;
                                equipmentStatus.UpdateBy   = "ECSApi";
                                equipmentStatus.UpdateTime = DateTime.Now;
                                _unitWork.Update(equipmentStatus);
                            }
                            else if (equipmentWorkNode.Status == "1")//开始工作
                            {
                                if (equipmentWorkNode.EquipmentCode == EquipmentStart.组对1 || equipmentWorkNode.EquipmentCode == EquipmentStart.组对2 || equipmentWorkNode.EquipmentCode == EquipmentStart.组对3 || equipmentWorkNode.EquipmentCode == EquipmentStart.组对4 || equipmentWorkNode.EquipmentCode == EquipmentStart.组对5 || equipmentWorkNode.EquipmentCode == EquipmentStart.组对6)
                                {//开始生产,写入在制品
                                    StepTrace steptrace = _unitWork.FindSingle <StepTrace>(u => u.WONumber.Equals(equipmentWorkNode.OrderCode));
                                    if (steptrace == null)
                                    {
                                        steptrace               = new StepTrace();
                                        steptrace.WONumber      = equipmentWorkNode.OrderCode;
                                        steptrace.ProductCode   = equipmentWorkNode.ProductCode;
                                        steptrace.SerialNumber  = equipmentWorkNode.SerialNumber;
                                        steptrace.LineId        = equipment.LineId;
                                        steptrace.StepId        = step.Id;
                                        steptrace.StationId     = equipment.StationId;
                                        steptrace.NextStepId    = _unitWork.FindSingle <Step>(u => u.Sequence == step.Sequence + 1).Id;
                                        steptrace.IsNG          = false;
                                        steptrace.IsInvalid     = false;
                                        steptrace.LineInTime    = DateTime.Now;
                                        steptrace.StationInTime = DateTime.Now;
                                        steptrace.CreateBy      = "ECSApi";
                                        steptrace.CreateTime    = DateTime.Now;
                                        _unitWork.Add(steptrace);
                                    }
                                }
                                else
                                {
                                    StepTrace st = _unitWork.Find <StepTrace>(u => u.SerialNumber == equipmentWorkNode.SerialNumber).FirstOrDefault();
                                    st.StepId    = step.Id;
                                    st.StationId = equipment.StationId;
                                    if (step.Sequence == 4)
                                    {
                                        st.NextStepId = 0;
                                    }
                                    else
                                    {
                                        st.NextStepId = _unitWork.FindSingle <Step>(u => u.Sequence == step.Sequence + 1).Id;
                                    }
                                    st.StationInTime = DateTime.Now;
                                    _unitWork.UpdateByTracking(st);
                                }

                                equipmentStatus.Status     = equipmentWorkNode.Status;
                                equipmentStatus.UpdateBy   = "ECSApi";
                                equipmentStatus.UpdateTime = DateTime.Now;
                                _unitWork.Update(equipmentStatus);
                            }
                            else if (equipmentWorkNode.Status == "2")//完成
                            {
                                equipmentStatus.Status     = "0";
                                equipmentStatus.UpdateBy   = "ECSApi";
                                equipmentStatus.UpdateTime = DateTime.Now;
                                _unitWork.Update(equipmentStatus);
                                //执行其它逻辑块(如更新steptrace在制品信息,呼叫桁车已转至下一个工序,给三一MES工序报工等)
                                if (_unitWork.IsExist <StepTrace>(u => u.SerialNumber == equipmentWorkNode.SerialNumber))
                                {
                                    //在制品追踪表
                                    StepTrace stepTrace = _unitWork.Find <StepTrace>(u => u.SerialNumber == equipmentWorkNode.SerialNumber).FirstOrDefault();
                                    stepTrace.StationOutTime = DateTime.Now;
                                    //取下道工序
                                    int?StationIdSequence = _unitWork.FindSingle <Step>(u => u.Id.Equals(stepTrace.StepId)).Sequence;
                                    //如果下道工序为最后一道机加工序则为空否则取下道工序
                                    if (step.Sequence == 4)
                                    {
                                        stepTrace.LineOutTime = DateTime.Now;
                                        stepTrace.NextStepId  = 0;
                                        _unitWork.UpdateByTracking(stepTrace);
                                        OrderHeader oh;
                                        if (equipmentWorkNode.OrderCode != null)
                                        {
                                            oh = _unitWork.Find <OrderHeader>(u => u.Code == equipmentWorkNode.OrderCode).FirstOrDefault();
                                        }
                                        else
                                        {
                                            var headerid = _unitWork.FindSingle <OrderDetiail>(u => u.SerialNumber == equipmentWorkNode.SerialNumber).OrderHeaderId;
                                            oh = _unitWork.Find <OrderHeader>(u => u.Id == headerid).FirstOrDefault();
                                        }
                                        //更新明细状态为完成
                                        OrderDetiail orderdt = _unitWork.Find <OrderDetiail>(u => u.OrderCode.Equals(equipmentWorkNode.OrderCode) && u.SerialNumber == equipmentWorkNode.SerialNumber).FirstOrDefault();
                                        orderdt.ExecuteStatus = "done";
                                        orderdt.EndTime       = DateTime.Now;
                                        orderdt.UpdateBy      = "ECSApi";
                                        orderdt.UpdateTime    = DateTime.Now;
                                        _unitWork.Update(orderdt);
                                        if (oh.CompleteQty == null)
                                        {
                                            oh.CompleteQty = 0;
                                        }
                                        oh.CompleteQty = oh.CompleteQty + 1;
                                        List <OrderDetiail> orderDetiails = _unitWork.Find <OrderDetiail>(u => u.OrderCode.Equals(equipmentWorkNode.OrderCode) && u.ExecuteStatus != "done").ToList();
                                        if (orderDetiails.Count == 0)
                                        {
                                            //更新工单状态为已完成
                                            oh.Status        = OrderStatus.完成;
                                            oh.ActualEndTime = DateTime.Now;
                                            oh.UpdateBy      = "ECSApi";
                                            oh.UpdateTime    = DateTime.Now;
                                            _unitWork.Update(oh);
                                        }

                                        if (oh.Status == OrderStatus.完成)
                                        {
                                            //在制品写入历史表
                                            StepTraceHistory stepTraceHistory = _unitWork.FindSingle <StepTraceHistory>(u => u.WONumber.Equals(stepTrace.WONumber));
                                            if (stepTraceHistory == null)
                                            {
                                                stepTraceHistory = new StepTraceHistory();
                                                stepTrace.CopyTo(stepTraceHistory);
                                                stepTraceHistory.Id = null;
                                                _unitWork.Add(stepTraceHistory);
                                                //删除已完成的在制品数据
                                                _unitWork.DeleteByTracking(stepTrace);
                                            }

                                            OrderHeaderHistory orderHeaderHistory = _unitWork.FindSingle <OrderHeaderHistory>(u => u.Code.Equals(oh.Code));
                                            if (orderHeaderHistory == null)
                                            {
                                                orderHeaderHistory = new OrderHeaderHistory();
                                                //工单主表写入工单历史表
                                                oh.CopyTo(orderHeaderHistory);
                                                orderHeaderHistory.Id = null;
                                                _unitWork.Add(orderHeaderHistory);
                                                //写入工单明细历史表
                                                List <OrderDetiail> detiails = _unitWork.Find <OrderDetiail>(u => u.OrderHeaderId.Equals(oh.Id)).ToList();
                                                foreach (OrderDetiail oddt in detiails)
                                                {
                                                    OrderDetiailHistory orderDetiailHistory = new OrderDetiailHistory();
                                                    oddt.CopyTo(orderDetiailHistory);
                                                    orderDetiailHistory.Id            = null;
                                                    orderDetiailHistory.OrderHeaderId = orderHeaderHistory.Id;
                                                    _unitWork.Add(orderDetiailHistory);
                                                }
                                            }
                                        }
                                    }
                                    else
                                    {
                                        //stepTrace.NextStepId = _unitWork.FindSingle<Step>(u => u.Sequence == StationIdSequence + 1).Id;
                                        stepTrace.UpdateBy   = "ECSApi";
                                        stepTrace.UpdateTime = DateTime.Now;
                                        _unitWork.Update(stepTrace);
                                    }
                                    //写入过站记录表
                                    StepTraceLog stepTraceLog = _unitWork.FindSingle <StepTraceLog>(u => u.WONumber.Equals(stepTrace.WONumber) && u.SerialNumber == stepTrace.SerialNumber && u.StationId == stepTrace.StationId);
                                    if (stepTraceLog == null)
                                    {
                                        stepTraceLog                = new StepTraceLog();
                                        stepTraceLog.WONumber       = stepTrace.WONumber;
                                        stepTraceLog.ProductCode    = stepTrace.ProductCode;
                                        stepTraceLog.SerialNumber   = stepTrace.SerialNumber;
                                        stepTraceLog.LineId         = stepTrace.LineId;
                                        stepTraceLog.StationId      = stepTrace.StationId;
                                        stepTraceLog.PassOrFail     = "pass";
                                        stepTraceLog.IsNG           = stepTrace.IsNG;
                                        stepTraceLog.NGcode         = stepTrace.NGcode;
                                        stepTraceLog.LineInTime     = stepTrace.LineInTime;
                                        stepTraceLog.StationInTime  = stepTrace.StationInTime;
                                        stepTraceLog.StationOutTime = DateTime.Now;
                                        stepTraceLog.CreateBy       = "ECSApi";
                                        stepTraceLog.CreateTime     = DateTime.Now;
                                        //如果工序为最后一道机加则更新出线时间
                                        if (step.Sequence == 4)
                                        {
                                            stepTraceLog.LineOutTime = DateTime.Now;
                                        }
                                        _unitWork.Add(stepTraceLog);
                                    }
                                }
                                else
                                {
                                    sErrorMsg       += "在制品:" + equipmentWorkNode.SerialNumber + "不存在或已完工,请至在制品历史页面确认!<br>";
                                    Response.Message = sErrorMsg;
                                }
                            }
                            else
                            {
                                sErrorMsg       += "状态为:" + equipmentWorkNode.Status + "不识别的设备状态<br>";
                                Response.Message = sErrorMsg;
                            }
                        }
                    }
                    tran.Commit();
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    Response.Code    = 500;
                    Response.Status  = false;
                    Response.Message = (Response.Message == "操作成功" ? "" : Response.Message) + "\r\n" + "EquipmentCode:" + equipmentWorkNode.EquipmentCode + "反馈失败!" + ex.Message;
                }

                return(Response);
            }
        }
Example #6
0
 public string Load(PageReq pageRequest, OrderDetiail entity)
 {
     return(JsonHelper.Instance.Serialize(_app.Load(pageRequest, entity)));
 }
Example #7
0
 public string Export(OrderDetiail entity)
 {
     return(JsonHelper.Instance.Serialize(_app.ExportData(entity)));
 }
 public void Upd(OrderDetiail entity)
 {
     _app.Update(entity);
 }
 public void Ins(OrderDetiail entity)
 {
     _app.Add(entity);
 }
 public TableData Load(PageReq pageRequest, OrderDetiail entity)
 {
     return(_app.Load(pageRequest, entity));
 }
 public TableData ExportData(OrderDetiail entity)
 {
     return(_app.ExportData(entity));
 }
Example #12
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);
        }
Example #13
0
        public TableData CreateSNApp(List <OrderHeader> ohlist)
        {
            using (var tran = _context.Database.BeginTransaction())
            {
                TableData tab = new TableData
                {
                    code = 200
                };
                int    hcount    = 0;
                int    listcount = 0;
                string sErrorMsg = "";
                try
                {
                    listcount = ohlist.Count;
                    foreach (OrderHeader orderhearder in ohlist)
                    {
                        if (orderhearder.Status == OrderStatus.已准备)
                        {
                            if (_unitWork.IsExist <SerialNumber>(u => u.OrderCode.Equals(orderhearder.Code)))
                            {
                                sErrorMsg += "工单号为:" + orderhearder.Code + "已生成过SN,不可再生成!<br>";
                                tab.msg    = sErrorMsg;
                            }
                            else
                            {
                                List <OrderDetiail> orderDetiails = _unitWork.Find <OrderDetiail>(u => u.OrderHeaderId.Equals(orderhearder.Id)).ToList();
                                for (int i = 0; i < orderhearder.PlanQty; i++)
                                {
                                    SerialNumber serialNumber = new SerialNumber();
                                    serialNumber.OrderCode          = orderhearder.Code;
                                    serialNumber.ProductCode        = orderhearder.ProductCode;
                                    serialNumber.SerialNumberMember = _app.GetTaskNo(orderhearder.ProductCode);
                                    if (_unitWork.IsExist <ProductBarcodeRule>(u => u.ProductCode == orderhearder.ProductCode))
                                    {
                                        serialNumber.SerialRule = _unitWork.FindSingle <ProductBarcodeRule>(u => u.ProductCode == orderhearder.ProductCode).Code;
                                    }
                                    else
                                    {
                                        serialNumber.SerialRule = "";
                                    }
                                    serialNumber.PrintCount = 0;
                                    _apps.Add(serialNumber);

                                    if (orderDetiails.Count > 0)
                                    {
                                        OrderDetiail orderDetiail = _unitWork.Find <OrderDetiail>(u => u.OrderCode.Equals(serialNumber.OrderCode)).Skip(i).Take(1).OrderBy(a => a.Id).FirstOrDefault();
                                        //更新工单明细表的SN
                                        orderDetiail.SerialNumber = serialNumber.SerialNumberMember;
                                        _appdt.Update(orderDetiail);
                                    }
                                    else
                                    {
                                        //写入工单明细表
                                        OrderDetiail odin = new OrderDetiail();
                                        odin.OrderCode     = serialNumber.OrderCode;
                                        odin.OrderHeaderId = orderhearder.Id;
                                        ProductHeader dno = _unitWork.FindSingle <ProductHeader>(u => u.Code.Equals(orderhearder.ProductCode));
                                        odin.DrawingNumber = dno.DrawingNumber;
                                        //if (_unitWork.IsExist<ProductHeader>(u => u.Code.Equals(orderhearder.ProductCode)))
                                        //{
                                        //    odin.DrawingNumber = _unitWork.FindSingle<ProductHeader>(u => u.Code.Equals(orderhearder.ProductCode)).DrawingNumber;
                                        //}
                                        odin.SerialNumber  = serialNumber.SerialNumberMember;
                                        odin.ExecuteStatus = "ready";
                                        odin.QualityStatus = "good";
                                        _appdt.Add(odin);
                                    }
                                }


                                hcount = hcount + 1;
                            }
                        }
                        else
                        {
                            sErrorMsg += "工单号为:" + orderhearder.Code + "状态错误,为非准备状态!<br>";
                            tab.msg    = sErrorMsg;
                        }
                    }

                    if (listcount <= hcount)
                    {
                        tab.code = 200;
                        tab.msg  = "工单已全部成功生成SN!";
                    }
                    else
                    {
                        tab.code = 200;
                        tab.msg  = "工单全部完成!部分未成功生成SN的信息如下:<br>" + tab.msg;
                    }
                    tran.Commit();
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    tab.code = 300;
                    tab.msg += ex.Message;
                }
                return(tab);
            }
        }