using System; using System.Collections.Generic; using System.Linq; using System.Text; using QMAPP.BLL; using QMAPP.Entity; using QMAPP.FJC.Entity.FIS; using QMFrameWork.Log; using QMAPP.FJC.Entity; using QMFrameWork.Data; using QMAPP.FJC.DAL.FIS; using System.Data; using QMAPP.FJC.BLL.Dict; using QMAPP.FJC.Entity.Basic; using QMAPP.FJC.BLL.Dict; using QMAPP.MD.Entity; using QMAPP.MD.DAL; using QMAPP.FJC.Entity.ProductionPlan; using QMAPP.FJC.DAL.ProductionPlan; using QMFrameWork.Common.Util; using QMAPP.FJC.Entity.FileCopy.FIS; namespace QMAPP.FJC.BLL.FIS { /// /// 模块名称:仪表板计划 /// 作 者:郭兆福 /// 创建时间:2017年09月15日 /// public class DashBoardPlanBLL : BaseBLL { #region 获取信息 /// /// 获取信息 /// /// 条件 /// 信息 public DataResult Get(OrderPlan model) { DataResult result = new DataResult(); try { result.Result = new DashBoardPlanDAL().Get(model); } catch (Exception ex) { LogManager.LogHelper.Error(new LogInfo() { ErrorInfo = ex, Tag = ex.StackTrace, Info = "订单计划信息逻辑层-获取信息!" }); result.IsSuccess = false; result.Msg = Resource.SystemException; throw ex; } result.IsSuccess = true; return result; } #endregion #region 获取列表 /// /// 获取列表 /// /// 条件 /// 数据页 /// 数据页 public DataResult GetList(OrderPlan condition, DataPage page) { DataResult result = new DataResult(); try { //获取订单计划信息列表 DataPage dataPage = new DashBoardPlanDAL().GetList(condition, page); List list = page.Result as List; #region 显示类型 //处理字典信息 DictManageBLL dictPRODUCEREQUIRE = new DictManageBLL(DictKind.PRODUCEREQUIRE); DictManageBLL dictPLANSOURCE = new DictManageBLL(DictKind.PLANSOURCE); DictManageBLL dictPLANSTATE = new DictManageBLL(DictKind.PLAN_STATE); foreach (var info in list) { info.PRODUCEREQUIRE = dictPRODUCEREQUIRE.GetDictValue(info.PRODUCEREQUIRE); info.PLANSOURCE = dictPLANSOURCE.GetDictValue(info.PLANSOURCE); info.PLAN_STATE = dictPLANSTATE.GetDictValue(info.PLAN_STATE); } #endregion result.Result = dataPage; } catch (Exception ex) { LogManager.LogHelper.Error(new LogInfo() { ErrorInfo = ex, Tag = ex.StackTrace, Info = "信息逻辑层-获取列表!" }); result.IsSuccess = false; result.Msg = Resource.SystemException; throw ex; } result.IsSuccess = true; return result; } #endregion #region 信息是否重复 /// /// 判断计划单号是否存在 /// /// /// true:已存在;fasel:不存在。 public int ExistsOrderPlan(OrderPlan model) { try { return new DashBoardPlanDAL().ExistsOrderPlan(model); } catch (Exception ex) { throw ex; } } #endregion #region 插入信息 /// /// 插入信息(单表) /// /// 信息 /// 插入行数 public DataResult Insert(OrderPlan model) { DataResult result = new DataResult(); //基本信息 model.PID = Guid.NewGuid().ToString(); model.PLAN_STATE = "0"; model.PLANSOURCE = model.PLANSOURCE; //int no = new DoorPlankPlanDAL().GetNum(model); //model.PLAN_SEQ = //model.PLAN_DATE.ToString("yyyyMMdd") + no; Pbom pbomcode = new PbomDAL().Get(new Pbom { MATERIAL_CODE = model.MATERIAL_CODE }); model.PBOM_CODE = pbomcode.PBOM_CODE; string workcentercode = new WorkCellDAL().GetWorkcenter(model.ORDER_TYPE); model.WORKCENTER_CODE = workcentercode; if (model.WORKCENTER_CODE != "") { string factory = new FactoryDAL().GetFactoryWithWorkcenter(model.WORKCENTER_CODE); model.FACTORY_CODE = factory; } //QMAPP.MD.Entity.ProcessRoute routecode = new QMAPP.MD.DAL.ProcessRouteDAL().RouteWithMaterial(model.MATERIAL_CODE); //model.ROUTE_CODE = routecode.ROUTE_CODE; model.CREATEUSER = this.LoginUser.UserID; model.CREATEDATE = DateTime.Now; model.UPDATEUSER = model.CREATEUSER; model.UPDATEDATE = model.CREATEDATE; DashBoardPlanDAL cmdDAL = new DashBoardPlanDAL(); try { //if (ExistsOrderPlan(model) > 0) //{ // result.IsSuccess = false; // result.Msg = Resource.MaterielCodeIsHave; // return result; //} FISPlan condition = new FISPlan(); condition.PREFIX = "IP"; condition.DATASTR = model.PLAN_DATE.ToString("yyyyMMdd"); //获取流水号 FISPlan info = this.GetOrderPlanSeq(condition); //计划单号 model.PLAN_NO = condition.PREFIX + condition.DATASTR + info.SEQSTR; result.Result = new DashBoardPlanDAL().Insert(model); } catch (Exception ex) { LogManager.LogHelper.Error(new LogInfo() { ErrorInfo = ex, Tag = ex.StackTrace, Info = "信息逻辑层-插入信息!" }); result.IsSuccess = false; result.Msg = Resource.SystemException; throw ex; } result.IsSuccess = true; return result; } #endregion #region 获取流水号信息 /// /// 获取流水号信息 /// /// /// public FISPlan GetOrderPlanSeq(FISPlan condition) { FISPlan fisplan = new FISPlan(); OrderPlanDAL orderPlanDal = new OrderPlanDAL(); //根据表皮条码获取本体信息 try { fisplan = new OrderPlanDAL().GetOrderPlanSeq(condition); //若存在记录,流水号加1,且更新 if (fisplan != null) { string seqstr = (Convert.ToInt32(fisplan.SEQSTR) + 1).ToString().PadLeft(3, '0'); fisplan.SEQSTR = seqstr; //更新表T_AW_FISPLAN数据 using (IDataSession session = AppDataFactory.CreateMainSession()) { session.OpenTs(); orderPlanDal.BaseSession = session; orderPlanDal.UpdateFisPlan(fisplan); session.CommitTs(); } } //不存在则插入此日期信息 else { FISPlan planinfo = new FISPlan(); planinfo.PID = Guid.NewGuid().ToString(); planinfo.PREFIX = condition.PREFIX; planinfo.DATASTR = condition.DATASTR; planinfo.SEQSTR = "001"; using (IDataSession session = AppDataFactory.CreateMainSession()) { session.OpenTs(); orderPlanDal.BaseSession = session; orderPlanDal.InsertFisPlan(planinfo); session.CommitTs(); } return planinfo; } } catch (Exception ex) { LogManager.LogHelper.Error(new LogInfo() { ErrorInfo = ex, Tag = ex.StackTrace, Info = "仪表板逻辑层-获取流水号本体信息!" }); throw ex; } return fisplan; } #endregion #region 更新信息 /// /// 更新信息 /// /// /// 更新行数 public DataResult Update(OrderPlan model) { DataResult result = new DataResult(); WorkOrderDAL workOrderDal = new WorkOrderDAL(); model.UPDATEUSER = this.LoginUser.UserID; //工单表结构 DataTable totalDt = GetWorkOrderTable(); try { if (ExistsOrderPlan(model) > 0) { result.IsSuccess = false; result.Msg = "该订单号已经存在!"; return result; } if (model.COMPLETE_QTY > model.QTY) { result.IsSuccess = false; result.Msg = "修改后的计划数量不能小于已完成数量!"; return result; } if (model.PLAN_STATE == EnumGeter.PLANSTATE.COMPLATED.GetHashCode().ToString()) { result.IsSuccess = false; result.Msg = "订单已经完成不能进行修改!"; return result; } #region 如果修改后的计划数量等于完成数量,将计划状态更新为完成 if (model.QTY.Equals(model.COMPLETE_QTY)) { model.PLAN_STATE = EnumGeter.PLANSTATE.COMPLATED.GetHashCode().ToString(); } #endregion List list = workOrderDal.GetList(new WorkOrder() { ORDERPLANID = model.PID }); #region 判断数量 OrderPlanDAL orderPlanDal = new OrderPlanDAL(); OrderPlan initialOrderPlan = orderPlanDal.Get(new OrderPlan { PID = model.PID }); string deleteWorkOrderSql = ""; List workOrderList = new List(); //将计划数量调整变小,删除为生产的派工单 if ((initialOrderPlan.QTY - model.QTY) > 0) { int unProduceCount = list.Count(o => o.STATE == 0); if (list.Count > 0 && unProduceCount < (initialOrderPlan.QTY - model.QTY)) { result.IsSuccess = false; result.Msg = string.Format("该订单下已经加工的产品数量大于{0},请重新调整数量!", model.QTY); return result; } deleteWorkOrderSql = string.Format("delete from T_PP_WORKORDER where pid in (select top {0} pid from T_PP_WORKORDER where ORDERPLANID='{1}' and [STATE]=0 order by SEQ desc)", (initialOrderPlan.QTY - model.QTY), initialOrderPlan.PID); } else { if (list.Count > 0 && (model.QTY - initialOrderPlan.QTY) > 0) { workOrderList = this.PutOutOrderPlan(model, (model.QTY - initialOrderPlan.QTY), list.Count); } } #endregion using (IDataSession session = AppDataFactory.CreateMainSession()) { session.OpenTs(); orderPlanDal.BaseSession = session; workOrderDal.BaseSession = session; Pbom pbomcode = new PbomDAL().Get(new Pbom { MATERIAL_CODE = model.MATERIAL_CODE }); model.PBOM_CODE = pbomcode.PBOM_CODE; orderPlanDal.Update(model); if (string.IsNullOrEmpty(deleteWorkOrderSql) == false) { session.ExecuteSql(deleteWorkOrderSql, new List().ToArray()); } if (workOrderList.Count > 0) { foreach (var wo in workOrderList) { workOrderDal.Insert(wo); } } session.CommitTs(); } result.IsSuccess = true; result.Msg = "修改成功!"; return result; } catch (Exception ex) { LogManager.LogHelper.Error(new LogInfo() { ErrorInfo = ex, Tag = ex.StackTrace, Info = "信息逻辑层-更新信息!" }); result.IsSuccess = false; result.Msg = Resource.SystemException; throw ex; } } #endregion #region 删除 /// /// 删除信息 /// /// /// 删除个数 public DataResult Delete(string strs) { int count = 0; string[] list = strs.Split(":".ToCharArray()); DataResult result = new DataResult(); try { WorkOrderDAL workOrderDal = new WorkOrderDAL(); OrderPlanDAL orderPlanDal = new OrderPlanDAL(); //校验未通过的订单 List validOrderList = new List(); //可以删除的订单 List deleteOrderList = new List(); foreach (string str in list) { OrderPlan op = orderPlanDal.Get(new OrderPlan() { PID = str }); //去T_PP_WORkORDER表查询此计划下的派工单是否有不为0(初始)状态的派工信息,若有则不让删除 int Num = workOrderDal.GetAllWorkOrder(str); //如果订单初始化或是确认生产(发布)并且生产数量为0 if (op.PLAN_STATE == EnumGeter.PLANSTATE.INIT.GetHashCode().ToString() || (op.PLAN_STATE == EnumGeter.PLANSTATE.COMMIT.GetHashCode().ToString() && op.COMPLETE_QTY == 0 && Num == 0)) { deleteOrderList.Add(op); } else { validOrderList.Add(op); } } if (validOrderList.Count > 0) { result.IsSuccess = false; result.Msg = "只有初始化或是确认生产并且生产数量为0订单可以删除!"; return result; } using (IDataSession session = AppDataFactory.CreateMainSession()) { session.OpenTs(); orderPlanDal.BaseSession = session; workOrderDal.BaseSession = session; foreach (var op in deleteOrderList) { //删除订单 orderPlanDal.DeleteOrderPlan(op); //删除订单下的派工单 workOrderDal.BatchDeleteByOrderPlan(new WorkOrder() { ORDERPLANID = op.PID }); } session.CommitTs(); } result.Result = count; result.Msg = "订单删除成功!"; result.IsSuccess = true; return result; } catch (Exception ex) { throw ex; } } /// /// 删除信息 /// /// 信息 /// 删除个数 public int DeleteDashBoardPlan(OrderPlan model) { int count = 0; int number = new DashBoardPlanDAL().DelCheck(model); if (number > 0) { return count; } count = new DashBoardPlanDAL().Delete(model); return count; } #endregion #region 发布 /// /// 发布信息 /// /// /// 发布个数 public DataResult PutOut(string strs) { string[] list = strs.Split(":".ToCharArray()); DataResult result = new DataResult(); try { OrderPlanDAL orderPlandal = new OrderPlanDAL(); List validorderPlanList = new List(); List putOutPlanList=new List(); foreach (string str in list) { OrderPlan op = orderPlandal.Get(new OrderPlan { PID = str }); if (op.PLAN_STATE != EnumGeter.PLANSTATE.INIT.GetHashCode().ToString()) { validorderPlanList.Add(op); } putOutPlanList.Add(op); } if (validorderPlanList.Count > 0) { result.IsSuccess = false; result.Msg = "只有初始状态下的订单能够进行发布!"; return result; } DataTable totalDt = GetWorkOrderTable(); foreach (var op in putOutPlanList) { op.PLAN_STATE = EnumGeter.PLANSTATE.COMMIT.GetHashCode().ToString(); op.UPDATEUSER=this.LoginUser.UserID; totalDt = this.PutOutOrderPlan(op, totalDt); } using (IDataSession session = AppDataFactory.CreateMainSession()) { IDbConnection dbConn = DbManager.MainConnectionInfo.Connection; IDbTransaction ids = dbConn.BeginTransaction(); orderPlandal.BaseSession = session; foreach (var op in putOutPlanList) { orderPlandal.Update(op); } session.DbHelper.BulkCopyData(totalDt, "T_PP_WORKORDER", dbConn, ids); ids.Commit(); } result.IsSuccess = true; return result; } catch (Exception ex) { throw ex; } } /// /// 发布信息 /// /// 信息 /// 发布个数 public DataTable PutOutOrderPlan(OrderPlan info, DataTable workOrderDt) { WorkCellDAL workCelldal = new WorkCellDAL(); string pbomcode = info.PBOM_CODE; List list = workCelldal.GetFirstWorkCell(pbomcode); var dicPRI = new DictManageBLL(Dict.DictKind.ORDERPRI); //注入派工单信息 for (int i = 0; i < info.QTY; i++) { foreach (var seq in list) { DataRow workOrder = workOrderDt.NewRow(); workOrder["PID"] = Guid.NewGuid().ToString(); workOrder["ORDERPLANID"] = info.PID; workOrder["ORDERPLAN_NO"] = (info.PLAN_NO.ToString() + (i + 1).ToString().PadLeft(4, '0')); workOrder["ORDER_TYPE"] = info.PLANSOURCE; workOrder["SEQ"] = (i + 1).ToString().PadLeft(6, '0'); workOrder["MATERIAL_CODE"] = info.MATERIAL_CODE; workOrder["PBOM_CODE"] = info.PBOM_CODE; workOrder["QTY"] = 1; workOrder["COMPLETE_QTY"] = 0; workOrder["PLAN_DATE"] = info.PLAN_DATE; workOrder["SHIFT_CODE"] = info.SHIFT_CODE; workOrder["WORKCENTER_CODE"] = info.WORKCENTER_CODE; workOrder["WORKCELL_CODE"] = seq.WORKCELL_CODE; workOrder["WORKLOC_CODE"] = ""; workOrder["REMARK"] = ""; workOrder["EQPT_NAME"] = ""; workOrder["EQPT_CODE"] = ""; workOrder["STATE"] = EnumGeter.WORKPLANSTATE.INIT.GetHashCode().ToString(); workOrder["PRI"] = dicPRI.GetDictValue(info.PLANSOURCE); workOrderDt.Rows.Add(workOrder); } } return workOrderDt; } /// /// 发布信息--直接发布到最后一个工位 /// /// /// 发布个数 public DataResult PutOutEndWorkCell(string strs) { string[] list = strs.Split(":".ToCharArray()); DataResult result = new DataResult(); try { OrderPlanDAL orderPlandal = new OrderPlanDAL(); List validorderPlanList = new List(); List putOutPlanList = new List(); foreach (string str in list) { OrderPlan op = orderPlandal.Get(new OrderPlan { PID = str }); if (op.PLAN_STATE != EnumGeter.PLANSTATE.INIT.GetHashCode().ToString()) { validorderPlanList.Add(op); } putOutPlanList.Add(op); } if (validorderPlanList.Count > 0) { result.IsSuccess = false; result.Msg = "只有初始状态下的订单能够进行发布!"; return result; } DataTable totalDt = GetWorkOrderTable(); foreach (var op in putOutPlanList) { op.PLAN_STATE = EnumGeter.PLANSTATE.COMMIT.GetHashCode().ToString(); op.UPDATEUSER = this.LoginUser.UserID; totalDt = this.PutOutOrderPlanEndWorkCell(op, totalDt); } using (IDataSession session = AppDataFactory.CreateMainSession()) { IDbConnection dbConn = DbManager.MainConnectionInfo.Connection; IDbTransaction ids = dbConn.BeginTransaction(); orderPlandal.BaseSession = session; foreach (var op in putOutPlanList) { orderPlandal.Update(op); } session.DbHelper.BulkCopyData(totalDt, "T_PP_WORKORDER", dbConn, ids); ids.Commit(); } result.IsSuccess = true; return result; } catch (Exception ex) { throw ex; } } /// /// 发布信息--直接发布到最后一个工位 /// /// 信息 /// 发布个数 public DataTable PutOutOrderPlanEndWorkCell(OrderPlan info, DataTable workOrderDt) { WorkCellDAL workCelldal = new WorkCellDAL(); string pbomcode = info.PBOM_CODE; List list = workCelldal.GetEndWorkCell(pbomcode); var dicPRI = new DictManageBLL(Dict.DictKind.ORDERPRI); //注入派工单信息 for (int i = 0; i < info.QTY; i++) { foreach (var seq in list) { DataRow workOrder = workOrderDt.NewRow(); workOrder["PID"] = Guid.NewGuid().ToString(); workOrder["ORDERPLANID"] = info.PID; workOrder["ORDERPLAN_NO"] = (info.PLAN_NO.ToString() + (i + 1).ToString().PadLeft(4, '0')); workOrder["ORDER_TYPE"] = info.PLANSOURCE; workOrder["SEQ"] = (i + 1).ToString().PadLeft(6, '0'); workOrder["MATERIAL_CODE"] = info.MATERIAL_CODE; workOrder["PBOM_CODE"] = info.PBOM_CODE; workOrder["QTY"] = 1; workOrder["COMPLETE_QTY"] = 0; workOrder["PLAN_DATE"] = info.PLAN_DATE; workOrder["SHIFT_CODE"] = info.SHIFT_CODE; workOrder["WORKCENTER_CODE"] = info.WORKCENTER_CODE; workOrder["WORKCELL_CODE"] = seq.WORKCELL_CODE; workOrder["WORKLOC_CODE"] = ""; workOrder["REMARK"] = ""; workOrder["EQPT_NAME"] = ""; workOrder["EQPT_CODE"] = ""; workOrder["STATE"] = EnumGeter.WORKPLANSTATE.INIT.GetHashCode().ToString(); workOrder["PRI"] = dicPRI.GetDictValue(info.PLANSOURCE); workOrderDt.Rows.Add(workOrder); } } return workOrderDt; } public List PutOutOrderPlan(OrderPlan info,int number,int lastIndex) { List wolist = new List(); WorkCellDAL workCelldal = new WorkCellDAL(); string pbomcode = info.PBOM_CODE; List list = workCelldal.GetFirstWorkCell(pbomcode); var dicPRI = new DictManageBLL(Dict.DictKind.ORDERPRI); //注入派工单信息 for (int i = 0; i < number; i++) { foreach (var seq in list) { WorkOrder wo = new WorkOrder(); wo.PID = Guid.NewGuid().ToString(); wo.ORDERPLANID = info.PID; wo.ORDERPLAN_NO = (info.PLAN_NO.ToString() + (i + 1 + lastIndex).ToString().PadLeft(4, '0')); wo.ORDER_TYPE = info.PLANSOURCE; wo.SEQ= (i + 1 + lastIndex).ToString().PadLeft(6, '0'); wo.MATERIAL_CODE = info.MATERIAL_CODE; wo.PBOM_CODE = info.PBOM_CODE; wo.QTY = 1; wo.COMPLETE_QTY = 0; wo.PLAN_DATE = info.PLAN_DATE; wo.SHIFT_CODE = info.SHIFT_CODE; wo.WORKCENTER_CODE = info.WORKCENTER_CODE; wo.WORKCELL_CODE = seq.WORKCELL_CODE; wo.WORKLOC_CODE = ""; wo.REMARK = ""; wo.EQPT_NAME = ""; wo.EQPT_CODE = ""; wo.STATE =Convert.ToInt32( EnumGeter.WORKPLANSTATE.INIT.GetHashCode().ToString()); wo.PRI = Convert.ToInt32(dicPRI.GetDictValue(info.PLANSOURCE)); wo.PRINTED = "0"; wolist.Add(wo); } } return wolist; } #endregion #region 导出数据 /// /// 获取导出的数据 /// /// 查询条件 /// 数据 public DataTable GetExportData(OrderPlan model) { try { DataTable dt = new DashBoardPlanDAL().GetExportData(model); //处理字典信息 DictManageBLL dictPRODUCEREQUIRE = new DictManageBLL(DictKind.PRODUCEREQUIRE); DictManageBLL dictPLANSTATE = new DictManageBLL(DictKind.PLAN_STATE); DictManageBLL dictPLANSOURCE = new DictManageBLL(DictKind.PLANSOURCE); foreach (DataRow dr in dt.Rows) { //替换状态类别显示值 dr["PRODUCEREQUIRE"] = dictPRODUCEREQUIRE.GetDictValue(dr["PRODUCEREQUIRE"].ToString()); dr["PLAN_STATE"] = dictPLANSTATE.GetDictValue(dr["PLAN_STATE"].ToString()); dr["PLANSOURCE"] = dictPLANSOURCE.GetDictValue(dr["PLANSOURCE"].ToString()); } //根据所选信息进行导出 if (string.IsNullOrEmpty(model.PIDList) == false) { model.PIDList = "'" + model.PIDList.Replace(":", "','") + "'"; DataView dv = new DataView(dt); dv.RowFilter = "PID in (" + model.PIDList + ")"; dt = dv.ToTable(); } return dt; } catch (Exception ex) { throw ex; } } #endregion #region 导入数据 /// /// 导入Excel表数据 /// /// Excel列表 /// 区域信息 /// 工厂信息 /// 零件类别信息 /// 结果 public DataResult GetImportData(List list, Material materialmodel, MachineInfo machine, ProduceShift produceshiftmodel, QMAPP.MD.Entity.WorkCell workcellmodel) { DataResult result = new DataResult(); DashBoardPlanDAL cmDal = new DashBoardPlanDAL(); List List = new List(); List workOrderList = new List(); DataTable orderDt = GetOrderPlanTable(); DataTable workOrderDt = GetWorkOrderTable(); int index = 0; int num = 0; try { result.Result = new ImportMessage(); result.Result.Errors = new List(); List materialinfo = null; List produceshiftinfo = null; List machineList = null; using (IDataSession session = AppDataFactory.CreateMainSession()) { //工作中心 string workcentercode = new WorkCellDAL().GetWorkcenter(workcellmodel.WORKCELL_CODE); //工厂 string factory = new QMAPP.MD.DAL.FactoryDAL().GetFactoryWithWorkcenter(workcentercode); //获取物料信息 //materialinfo = new QMAPP.MD.BLL.MaterialBLL().GetNewMaterialList(materialmodel, workcellmodel); materialinfo = new QMAPP.MD.BLL.MaterialBLL().GetMaterialForOrder(workcellmodel.WORKCELL_CODE); //获取班次信息 produceshiftmodel.PRODUCELINE = workcentercode; produceshiftinfo = new FJC.BLL.Basic.ProduceShiftBLL().GetWorkcenterShifts(workcentercode); //获取设备信息 machineList = new QMAPP.FJC.BLL.Basic.MachineInfoBLL().GetMachineForOrderList(machine, workcellmodel); var bomdal = new QMAPP.MD.DAL.PbomDAL(); var processroutedal = new QMAPP.MD.DAL.ProcessRouteDAL(); var planNum = new DoorPlankPlanDAL().GetNum(null); //状态判断 foreach (OrderPlan ma in list) { index++; num++; //物料 Material areaMes = materialinfo.Find(a => a.MATERIAL_CODE.ToUpper() == ma.MATERIAL_CODE.ToUpper()); if (areaMes != null) { ma.MATERIAL_CODE = areaMes.MATERIAL_CODE; } else { ma.MATERIAL_CODE = null; result.Result.failureNum += 1; result.Result.Errors.Add(new RowError(index, "物料信息不存在")); continue; } //班次 ProduceShift plantMes = produceshiftinfo.Find(p => p.PRODUCESHIFTTCODE.ToUpper() == ma.SHIFT_CODE.ToUpper()); if (plantMes != null) { ma.SHIFT_CODE = plantMes.PRODUCESHIFTTCODE; } else { ma.SHIFT_CODE = null; result.Result.failureNum += 1; result.Result.Errors.Add(new RowError(index, "班次信息不存在")); continue; } //转变生产要求PRODUCEREQUIRE if (ma.PRODUCEREQUIRE != null) { if (ma.PRODUCEREQUIRE.Equals("以数量为准")) { ma.PRODUCEREQUIRE = "0"; } else if (ma.PRODUCEREQUIRE.Equals("以时间为准")) { ma.PRODUCEREQUIRE = "1"; } else { ma.PRODUCEREQUIRE = null; result.Result.Errors.Add(new RowError(index, "生产要求信息错误")); result.Result.failureNum += 1; continue; } } //Pbom Pbom pbomcode = bomdal.Get(new Pbom { MATERIAL_CODE = ma.MATERIAL_CODE }); if (pbomcode == null) { result.Result.Errors.Add(new RowError(index, "物料信息有误,无法确定PBOM信息,请检查PBOM配置")); result.Result.failureNum += 1; continue; } //工艺路线 QMAPP.MD.Entity.ProcessRoute routecode = processroutedal.RouteWithMaterial(ma.MATERIAL_CODE); if (routecode == null) { result.Result.Errors.Add(new RowError(index, "物料信息有误,无法确定工艺路线,请检查PBOM和工艺路线配置")); result.Result.failureNum += 1; continue; } if (string.IsNullOrEmpty(ma.InfoError) == false) { ma.PID = null; result.Result.failureNum += 1; continue; } //修改改时根据主键等信息获取详细内容信息 OrderPlan oldInfo = cmDal.Get(ma); if (oldInfo != null) { //更新 ma.PID = oldInfo.PID; ma.PLAN_SEQ = oldInfo.PLAN_SEQ; ma.FACTORY_CODE = oldInfo.FACTORY_CODE; ma.WORKCENTER_CODE = oldInfo.WORKCENTER_CODE; ma.PBOM_CODE = oldInfo.PBOM_CODE; ma.ROUTE_CODE = oldInfo.ROUTE_CODE; ma.PLAN_STATE = oldInfo.PLAN_STATE; ma.PLANSOURCE = oldInfo.PLANSOURCE; ma.CREATEUSER = oldInfo.CREATEUSER; ma.CREATEDATE = oldInfo.CREATEDATE; ma.UPDATEUSER = this.LoginUser.UserID; ma.UPDATEDATE = oldInfo.UPDATEDATE; ma.IsNewInfo = false; result.Result.updateNum += 1; } else { //新增 oldInfo = new OrderPlan(); ma.PID = Guid.NewGuid().ToString(); ma.PLAN_NO = ma.PLAN_NO; //int no = planNum + (num - 1); //ma.PLAN_SEQ = ma.PLAN_DATE.ToString("yyyyMMdd") + no; ma.PLAN_STATE = EnumGeter.PLANSTATE.INIT.GetHashCode().ToString(); ma.MATERIAL_CODE = ma.MATERIAL_CODE; ma.MACHINECODDE = ma.MACHINECODDE; ma.QTY = ma.QTY; ma.PBOM_CODE = pbomcode.PBOM_CODE; ma.ROUTE_CODE = routecode.ROUTE_CODE; ma.PLAN_DATE = ma.PLAN_DATE; ma.SHIFT_CODE = ma.SHIFT_CODE; ma.PLANSOURCE = "1"; ma.PRODUCEREQUIRE = ma.PRODUCEREQUIRE; ma.CREATEUSER = this.LoginUser.UserID; ma.CREATEDATE = DateTime.Now; ma.UPDATEUSER = ma.CREATEUSER; ma.UPDATEDATE = ma.CREATEDATE; ma.WORKCENTER_CODE = workcentercode; ma.FACTORY_CODE = factory; 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 #region 获取产品表 /// /// 获取产品表 /// /// private DataTable GetOrderPlanTable() { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = "PID", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "FACTORY_CODE", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "PLAN_NO", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "PLAN_SEQ", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "PLAN_STATE", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "MATERIAL_CODE", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "PBOM_CODE", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "ROUTE_CODE", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "REMARK", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "QTY", DataType = typeof(int) }); dt.Columns.Add(new DataColumn() { ColumnName = "COMPLETE_QTY", DataType = typeof(int) }); dt.Columns.Add(new DataColumn() { ColumnName = "PLAN_DATE", DataType = typeof(DateTime) }); dt.Columns.Add(new DataColumn() { ColumnName = "SHIFT_CODE", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "PLANSOURCE", DataType = typeof(int) }); dt.Columns.Add(new DataColumn() { ColumnName = "PRODUCEREQUIRE", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "CREATEDATE", DataType = typeof(DateTime) }); dt.Columns.Add(new DataColumn() { ColumnName = "CREATEUSER", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "UPDATEDATE", DataType = typeof(DateTime) }); dt.Columns.Add(new DataColumn() { ColumnName = "UPDATEUSER", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "WORKCENTER_CODE", DataType = typeof(string) }); return dt; } private DataTable GetWorkOrderTable() { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = "PID", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "ORDERPLANID", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "ORDERPLAN_NO", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "ORDER_TYPE", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "SEQ", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "MATERIAL_CODE", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "PBOM_CODE", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "QTY", DataType = typeof(int) }); dt.Columns.Add(new DataColumn() { ColumnName = "COMPLETE_QTY", DataType = typeof(int) }); dt.Columns.Add(new DataColumn() { ColumnName = "PLAN_DATE", DataType = typeof(DateTime) }); dt.Columns.Add(new DataColumn() { ColumnName = "SHIFT_CODE", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "WORKCENTER_CODE", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "WORKCENTER_NAME", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "WORKCELL_CODE", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "WORKCELL_NAME", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "WORKLOC_CODE", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "REMARK", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "EQPT_NAME", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "EQPT_CODE", DataType = typeof(string) }); dt.Columns.Add(new DataColumn() { ColumnName = "STATE", DataType = typeof(int) }); dt.Columns.Add(new DataColumn() { ColumnName = "PRI", DataType = typeof(int) }); return dt; } #endregion #region 获取列表(为了修改顺序号使用) /// /// 获取列表 /// /// 条件 /// 数据页 /// 数据页 public DataResult GetDashBoardPlanList(OrderPlan condition, DataPage page) { condition.PIDList = "'" + condition.PIDList.Replace(":", "','") + "'"; DataResult result = new DataResult(); try { //获取信息列表 DataPage dataPage = new DashBoardPlanDAL().GetDashBoardPlanList(condition, page); result.Result = dataPage; } catch (Exception ex) { LogManager.LogHelper.Error(new LogInfo() { ErrorInfo = ex, Tag = ex.StackTrace, Info = "信息逻辑层-获取列表!" }); result.IsSuccess = false; result.Msg = Resource.SystemException; throw ex; } result.IsSuccess = true; return result; } #endregion } }