using System; using System.Collections.Generic; using System.Linq; using System.Text; using QMAPP.BLL; using QMAPP.FJC.Entity.ProductionPlan; using QMAPP.FJC.DAL.ProductionPlan; using QMFrameWork.Data; using QMAPP.Entity; using System.Data; using QMAPP.FJC.Entity.Operation; using QMAPP.FJC.Entity.FIS; namespace QMAPP.FJC.BLL.ProductionPlan { /// /// 模块名称:派工单 /// 作 者:张鹏 /// 编写日期:2017年10月24日 /// public class WorkOrderBLL : BaseBLL { #region 获取信息 /// /// 获取信息 /// /// 条件 /// 信息 public WorkOrder Get(WorkOrder info) { try { return new WorkOrderDAL().Get(info); } catch (Exception ex) { throw ex; } } #endregion #region 获取列表 /// /// 获取列表 /// /// 条件 /// 数据页 /// 数据页 public DataPage GetList(WorkOrder condition, DataPage page) { try { return new WorkOrderDAL().GetList(condition, page); } catch (Exception ex) { throw ex; } } /// /// 获取指定工序的生产计划清单 /// /// 工序编码 /// 过滤选项:0全部;1隐藏挂起;2只看挂起 /// public List GetOrderInCell(string workcellcode,int filter, DataPage dataPage) { try { return new WorkOrderDAL().GetOrderInCell(workcellcode,filter,dataPage.PageSize); } catch (Exception ex) { throw ex; } } /// /// /// /// /// public List GetOrderInfo(string orderplanno) { try { return new WorkOrderDAL().GetWorkOrderInfo(orderplanno); } catch (Exception ex) { throw ex; } } public List GetOrderUnPrinted(string RouteCode, int filter, DataPage dataPage) { try { return new WorkOrderDAL().GetOrderUnPrinted(RouteCode, filter, dataPage.PageSize); } catch (Exception ex) { throw ex; } } public int SetOrderPrinted(string orderpid) { try { return new WorkOrderDAL().SetOrderPrinted(orderpid); } catch (Exception ex) { throw ex; } } /// /// 获取指定工序下待完成计划数量 /// /// 工序编码 /// 班次 /// 日期 /// public int GetOrderCountInCell(string workcellcode, string shift) { try { var date = DateTime.Now; return new WorkOrderDAL().GetOrderCountInCell(workcellcode, shift, date); } catch (Exception ex) { throw ex; } } /// /// 获取工作中心当日的总计划数量 /// /// 工作中心 /// public int GetDayPlanCount(string workcentercode) { try { var date = DateTime.Now; return new WorkOrderDAL().GetDayPlanCount(workcentercode, date); } catch (Exception ex) { throw ex; } } /// /// 获取计划标签数据 /// /// /// public Entity.View.PlanLabel GetPlanLabel(string workorderid) { Entity.View.PlanLabel labeldata = new Entity.View.PlanLabel(); DAL.ProductionPlan.WorkOrderDAL dal = new WorkOrderDAL(); var order = dal.Get(new WorkOrder { PID = workorderid }); if (order == null) { throw new Exception("获取工单信息失败!"); } labeldata.BOM = order.PBOM_CODE; labeldata.PN = order.MATERIAL_CODE; labeldata.SEQ = order.SEQ; labeldata.PlanDate = order.PLAN_DATE.ToString("yyyy-MM-dd HH:mm:ss"); switch (order.ORDER_TYPE) { case "0": { labeldata.PlanType = "FIS"; break; } case "1": { labeldata.PlanType = "STOCK"; break; } case "2": { labeldata.PlanType = "INSERT"; break; } } var plandal = new DAL.FIS.OrderPlanDAL(); var plan = plandal.Get(new Entity.FIS.OrderPlan { PID = order.ORDERPLANID }); if (plan == null) { throw new Exception("获取计划信息异常!"); } labeldata.PlanNo = plan.PLAN_NO; if (order.ORDER_TYPE == "0") { var fisdal = new DAL.FIS.FISOrderDAL(); var fis = fisdal.GetByPlan(plan.PLAN_NO, plan.MATERIAL_CODE); if (fis == null) { throw new Exception("获取FIS信息异常!"); } labeldata.VIN = fis.VIN; labeldata.KIN = fis.KIN; } else { labeldata.VIN = "N/A"; labeldata.KIN = "N/A"; } var materialdal = new MD.DAL.MaterialDAL(); var material = materialdal.Get(new MD.Entity.Material { MATERIAL_CODE = order.MATERIAL_CODE }); if (material == null) { throw new Exception("获取物料信息异常!"); } labeldata.HBType = material.HBTYPE; labeldata.ProjectCode = material.PROJECTCODE; labeldata.Color = material.COLOR; labeldata.ProdName = material.MATERIAL_NAME; return labeldata; } /// /// 获取计划标签数据 /// /// /// public Entity.View.PlanLabel GetPlanLabelBindProdut(Product Product) { Entity.View.PlanLabel labeldata = new Entity.View.PlanLabel(); var plandal = new DAL.FIS.OrderPlanDAL(); var plan = plandal.Get(new Entity.FIS.OrderPlan { PID = Product.PLAN_ID }); if (plan == null) { throw new Exception("获取计划信息异常!"); } labeldata.BOM = plan.PBOM_CODE; labeldata.PN = plan.MATERIAL_CODE; labeldata.PlanDate = plan.PLAN_DATE.ToString("yyyy-MM-dd HH:mm:ss"); DAL.ProductionPlan.WorkOrderDAL dal = new WorkOrderDAL(); var order = dal.GetOneByProduct(Product.PRODUCTCODE); if (order != null) { labeldata.SEQ = order.SEQ; } else { labeldata.SEQ = "N/A"; } switch (plan.PLANSOURCE) { case "0": { labeldata.PlanType = "FIS"; break; } case "1": { labeldata.PlanType = "STOCK"; break; } case "2": { labeldata.PlanType = "INSERT"; break; } } labeldata.PlanNo = plan.PLAN_NO; if (plan.PLANSOURCE == "0") { var fisdal = new DAL.FIS.FISOrderDAL(); var fis = fisdal.GetByPlan(plan.PLAN_NO, plan.MATERIAL_CODE); if (fis == null) { throw new Exception("获取FIS信息异常!"); } labeldata.VIN = fis.VIN; labeldata.KIN = fis.KIN; } else { labeldata.VIN = "N/A"; labeldata.KIN = "N/A"; } var materialdal = new MD.DAL.MaterialDAL(); var material = materialdal.Get(new MD.Entity.Material { MATERIAL_CODE = plan.MATERIAL_CODE }); if (material == null) { throw new Exception("获取物料信息异常!"); } labeldata.HBType = material.HBTYPE; labeldata.ProjectCode = material.PROJECTCODE; labeldata.Color = material.COLOR; labeldata.ProdName = material.MATERIAL_NAME; return labeldata; } #endregion #region 信息是否重复 /// /// 判断名称是否存在 /// /// 信息 /// true:已存在;fasel:不存在。 public bool Exists(WorkOrder info) { try { return new WorkOrderDAL().Exists(info); } catch (Exception ex) { throw ex; } } #endregion #region 插入信息 /// /// 插入信息(单表) /// /// 信息 /// 插入行数 public DataResult Insert(WorkOrder info) { DataResult result = new DataResult(); try { if (string.IsNullOrWhiteSpace(info.PID)) { info.PID = Guid.NewGuid().ToString(); } WorkOrderDAL cmdDAL = new WorkOrderDAL(); result.Result = new WorkOrderDAL().Insert(info); result.IsSuccess = true; return result; } catch (Exception ex) { throw ex; } } #endregion #region 更新信息 /// /// 更新信息 /// /// 信息 /// 更新行数 public DataResult Update(WorkOrder info) { DataResult result = new DataResult(); try { result.Result = new WorkOrderDAL().Update(info); result.IsSuccess = true; return result; } catch (Exception ex) { throw ex; } } /// /// 挂起工单 /// /// public int SuspendOrder(List orderid) { var orders = GetListByID(orderid.ToArray()); foreach (var order in orders) { if (int.Equals(order.STATE, 2)) { throw new Exception("不可将状态为执行中的工单挂起!"); } order.STATE = 4; } var dal = new WorkOrderDAL(); return dal.Update(orders); } /// /// 取消挂起 /// /// /// public int CancelSuspend(List orderid) { var orders = GetListByID(orderid.ToArray()); foreach (var order in orders) { if (!int.Equals(order.STATE, 4)) { throw new Exception("只可取消状态为挂起状态的工单!"); } order.STATE = 1; } var dal = new WorkOrderDAL(); return dal.Update(orders); } /// /// 回收工单 /// /// /// public int TakeBack(List orderid) { var orders = GetListByID(orderid.ToArray()); foreach (var order in orders) { if (!int.Equals(order.STATE, 4)) { throw new Exception("只可回收状态为挂起状态的工单!"); } //order.ORDER_TYPE = "1"; order.PRI = 1; order.STATE = 0; } var dal = new WorkOrderDAL(); return dal.Update(orders); } /// /// 重置工单 /// /// /// public int ResetOrder(List orderid) { var orders = GetListByID(orderid.ToArray()); var first = orders.FirstOrDefault(); if (first != null) { QMAPP.MD.DAL.WorkCellDAL workCelldal = new QMAPP.MD.DAL.WorkCellDAL(); string pbomcode = first.PBOM_CODE; QMAPP.MD.Entity.ProcessRouteWorkCellSeq workcell = workCelldal.GetFirstWorkCell(pbomcode).FirstOrDefault(); foreach (var order in orders) { if (!int.Equals(order.STATE, 4)) { throw new Exception("只可重置状态为挂起状态的工单!"); } //order.ORDER_TYPE = "1"; order.WORKCELL_CODE = workcell.WORKCELL_CODE; order.PRI = 1; order.STATE = 0; } var dal = new WorkOrderDAL(); return dal.Update(orders); } return 0; } /// /// 忽略FIS断号 /// /// /// public int IgnoreFISBreak(List orderid) { var orders = GetListByID(orderid.ToArray()); var first = orders.FirstOrDefault(); var plans = new List(); var plandal = new DAL.FIS.OrderPlanDAL(); foreach (var order in orders) { if (!int.Equals(order.ORDER_TYPE, "0")) { throw new Exception("只可对FIS工单进行忽略断号操作!"); } var plan = plandal.Get(new OrderPlan { PID = order.ORDERPLANID }); if (plan != null) { plan.IGNORE_FISBREAK = "1"; plandal.Update(plan); plans.Add(plan); } } return plans.Count; } /// /// 删除工单 /// /// /// public int DeleteOrder(List orderid) { var orders = GetListByID(orderid.ToArray()); foreach (var order in orders) { if (!int.Equals(order.STATE, 4)) { throw new Exception("只可删除状态为挂起状态的工单!"); } //order.STATE = 1; } var dal = new WorkOrderDAL(); return dal.Delete(orders); } /// /// 根据主键获取列表 /// /// /// private List GetListByID(params string[] orderid) { var dal = new WorkOrderDAL(); return dal.GetListByID(orderid); } #endregion #region 删除 /// /// 删除信息 /// /// 主键串 /// 删除个数 public DataResult DeleteArray(string strs) { int count = 0; DataResult result = new DataResult(); string[] list = strs.Split(":".ToCharArray()); try { foreach (string str in list) { count += this.Delete(new WorkOrder { PID = str }); } result.Result = count; result.IsSuccess = true; return result; } catch (Exception ex) { throw ex; } } /// /// 删除信息 /// /// 信息 /// 删除个数 public int Delete(WorkOrder info) { try { return new WorkOrderDAL().Delete(info); } catch (Exception ex) { throw ex; } } #endregion #region 导出数据 /// /// 获取导出的数据 /// /// 查询条件 /// 数据 public DataTable GetExportData(WorkOrder info) { try { return new WorkOrderDAL().GetExportData(info); } catch (Exception ex) { throw ex; } } #endregion #region 导入数据 /// /// 导入数据 /// /// 数据 /// 导入结果 public DataResult ImportData(List list) { DataResult result = new DataResult(); WorkOrderDAL cmDal = new WorkOrderDAL(); List List = new List(); int index = 0; try { result.Result = new ImportMessage(); result.Result.Errors = new List(); using (IDataSession session = AppDataFactory.CreateMainSession()) { //状态判断 foreach (WorkOrder ma in list) { index++; if (!string.IsNullOrEmpty(ma.InfoError)) { ma.PID = null; result.Result.failureNum += 1; continue; } //修改改时根据主键等信息获取详细内容信息 WorkOrder oldInfo = cmDal.Get(ma); if (oldInfo != null) { //更新 ma.PID = oldInfo.PID; ma.IsNewInfo = false; result.Result.updateNum += 1; } else { //新增 oldInfo = new WorkOrder(); if (string.IsNullOrWhiteSpace(ma.PID)) { ma.PID = Guid.NewGuid().ToString(); } ma.IsNewInfo = true; result.Result.insertNum += 1; } List.Add(ma); } } //导入 cmDal.GetImportData(List); result.Msg = "导入成功"; result.IsSuccess = true; return result; } catch (Exception ex) { result.IsSuccess = false; result.Ex = ex; return result; } } #endregion } }