/// <summary> /// 数据更新 /// </summary> /// <param name="newValue">更新后对象</param> /// <returns>影响记录条数</returns> public int Update(ModelView.MpoView newValue) { Model.TableModel.Mpo model = View2Model(newValue); List <Model.TableModel.Mpo> modelList = new List <Model.TableModel.Mpo>(); modelList.Add(model); return(DbEngine.QueryInt <Model.TableModel.Mpo>("update", modelList)); }
/// <summary> /// 删除操作 /// </summary> /// <param name="oldValue">要删除的值</param> /// <returns>影响记录条数</returns> public int Delete(ModelView.MpoView oldValue) { Model.TableModel.Mpo model = View2Model(oldValue); List <Model.TableModel.Mpo> modelList = new List <Model.TableModel.Mpo>(); modelList.Add(model); return(DbEngine.QueryInt <Model.TableModel.Mpo>("Delete", modelList)); }
/// <summary> /// 更新操作 /// </summary> /// <param name="listNewValue">更新后的视图模板类的集合</param> /// <returns>影响记录条数</returns> public int Update(List <ModelView.MpoView> listNewValue) { List <Model.TableModel.Mpo> modelList = new List <Model.TableModel.Mpo>(); foreach (ModelView.MpoView item in listNewValue) { Model.TableModel.Mpo model = View2Model(item); modelList.Add(model); } return(DbEngine.QueryInt <Model.TableModel.Mpo>("update", modelList)); }
/// <summary> /// 删除操作 /// </summary> /// <param name="oldValues">要删除的多个值</param> /// <returns>影响记录条数</returns> public int Delete(List <ModelView.MpoView> oldValues) { List <Model.TableModel.Mpo> modelList = new List <Model.TableModel.Mpo>(); foreach (ModelView.MpoView item in oldValues) { Model.TableModel.Mpo model = View2Model(item); modelList.Add(model); } return(DbEngine.QueryInt <Model.TableModel.Mpo>("Delete", modelList)); }
/// <summary> /// 视图类转实体类 /// </summary> /// <param name="view">视图类</param> /// <returns>实体类</returns> private Model.TableModel.Mpo View2Model(ModelView.MpoView view) { Model.TableModel.Mpo model = new Model.TableModel.Mpo(); if (string.IsNullOrEmpty(view.id)) { model.id = Common.Md5Operate.CreateGuidId(); } else { model.id = view.id; } model.status_name = view.status_name; model.status_no = string.IsNullOrEmpty(view.status_no) ? "310" : view.status_no; model.crt_user_no = string.IsNullOrEmpty(view.crt_user_no) ? "Server" : view.crt_user_no; model.crt_user_name = string.IsNullOrEmpty(view.crt_user_name) ? "Server" : view.crt_user_name; DateTime dt = DateTime.Now; model.crt_time = DateTime.TryParse(view.crt_time, out dt) ? dt : DateTime.Now; model.upd_user_no = string.IsNullOrEmpty(view.upd_user_no) ? "Server" : view.upd_user_no; model.upd_user_name = string.IsNullOrEmpty(view.upd_user_name) ? "Server" : view.upd_user_name; dt = DateTime.Now; model.upd_time = DateTime.TryParse(view.upd_time, out dt) ? dt : DateTime.Now; GlobalDataCtrl globalDataCtrl = new GlobalDataCtrl(); model.mpo_no = string.IsNullOrEmpty(view.mpo_no) ? globalDataCtrl.GetNextNoByTblName("mpo") : view.mpo_no; model.mpo_type_no = view.mpo_type_no; model.mpo_type_name = view.mpo_type_name; model.part_no = string.IsNullOrEmpty(view.part_no)?"PartNo":view.part_no; model.part_name = view.part_name; model.part_spec = view.part_spec; model.part_unit = view.part_unit; decimal tmpDecimal = 0; model.mpo_qty = string.IsNullOrEmpty(view.mpo_qty) ? 0.0M : (decimal.TryParse(view.mpo_qty, out tmpDecimal)?tmpDecimal:0.0M); DateTime tmpDt = DateTime.Now; model.mpo_hope_start_datetime = string.IsNullOrEmpty(view.mpo_hope_start_datetime) ? (DateTime?)null : (DateTime.TryParse(view.mpo_hope_start_datetime, out tmpDt) ? tmpDt : (DateTime?)null); model.mpo_hope_end_datetime = string.IsNullOrEmpty(view.mpo_hope_end_datetime) ? (DateTime?)null : (DateTime.TryParse(view.mpo_hope_end_datetime, out tmpDt) ? tmpDt : (DateTime?)null); model.workshop_no = view.workshop_no; model.factory_no = view.factory_no; model.line_no = view.line_no; model.job_no = view.job_no; model.shift_no = view.shift_no; model.client_no = view.client_no; model.client_name = view.client_name; model.commit_status_no = string.IsNullOrEmpty(view.commit_status_no) ? "400" : view.commit_status_no; model.commit_status_name = string.IsNullOrEmpty(view.commit_status_name) ? "未下发" : view.commit_status_name; model.procedure_finished_qty = string.IsNullOrEmpty(view.procedure_finished_qty) ? 0.0M : (decimal.TryParse(view.procedure_finished_qty, out tmpDecimal) ? tmpDecimal : 0.0M); model.procedure_status_name = string.IsNullOrEmpty(view.procedure_status_name) ? "未开工" : view.procedure_status_name; return(model); }
/// <summary> /// 插入或更新主生产订单 /// </summary> /// <param name="mpoNo">主生产号</param> /// <param name="mpoQty">生产单数量</param> /// <param name="startDate">开始日期</param> /// <param name="endDate">结束日期</param> /// <param name="partNo">型号</param> /// <returns>数据处理行数</returns> private int InsertOrUpdateMpo(string mpoNo, int mpoQty, DateTime startDate, DateTime endDate, string partNo) { if (startDate < endDate) { DateTime dtTmp = DateTime.Now; dtTmp = startDate; startDate = endDate; endDate = dtTmp; } string where = string.Format("mpo_no='{0}'", mpoNo); List <Model.TableModel.Mpo> list = LocalDbServer.QueryList <Model.TableModel.Mpo>(where); Model.TableModel.Mpo mpoModel = new Model.TableModel.Mpo(); string operate = "insert"; if (list == null) { mpoModel = CreateMpo(mpoNo, mpoQty, startDate, endDate, partNo); } if (list.Count <= 0) { mpoModel = CreateMpo(mpoNo, mpoQty, startDate, endDate, partNo); } else if (list.Count == 1) { mpoModel = list[0]; mpoModel.mpo_qty += mpoQty; mpoModel.mpo_hope_start_datetime = mpoModel.mpo_hope_start_datetime > startDate ? startDate : mpoModel.mpo_hope_start_datetime; mpoModel.mpo_hope_start_datetime = mpoModel.mpo_hope_start_datetime > startDate ? startDate : mpoModel.mpo_hope_start_datetime; operate = "update"; } if (list.Count > 1) { mpoModel = null; } if (mpoModel == null) { return(-1); } try { return(LocalDbServer.QueryInt <Model.TableModel.Mpo>(operate, new List <Model.TableModel.Mpo>() { mpoModel })); } catch (Exception) { return(-1); } }
/// <summary> /// 订单实体类的构建 /// </summary> /// <param name="mpoNo">订单号</param> /// <param name="mpoQty">订单数量</param> /// <param name="startDate">开始时间</param> /// <param name="endDate">结束时间</param> /// <param name="partNo">型号</param> /// <returns>订单实体类</returns> private Model.TableModel.Mpo CreateMpo(string mpoNo, int mpoQty, DateTime startDate, DateTime endDate, string partNo) { if (string.IsNullOrEmpty(mpoNo)) { return(null); } mpoQty = mpoQty <= 0 ? 0 : mpoQty; Model.TableModel.Mpo resModel = new Model.TableModel.Mpo(); resModel.id = Common.Md5Operate.CreateGuidId(); resModel.status_no = "300"; resModel.status_name = "未确认"; resModel.crt_user_no = "server"; resModel.crt_user_name = "server"; resModel.crt_time = DateTime.Now; resModel.upd_user_no = "server"; resModel.upd_user_name = "server"; resModel.upd_time = DateTime.Now; resModel.mpo_no = mpoNo; resModel.mpo_type_no = "01"; resModel.mpo_type_name = "生产"; resModel.part_no = partNo; resModel.part_name = string.Empty; resModel.part_spec = string.Empty; resModel.part_unit = string.Empty; resModel.mpo_qty = mpoQty; resModel.mpo_hope_start_datetime = startDate; resModel.mpo_hope_end_datetime = endDate; resModel.workshop_no = "ws01"; resModel.factory_no = "dfs_f"; resModel.line_no = "line01"; resModel.job_no = string.Empty; resModel.shift_no = string.Empty; resModel.client_no = string.Empty; resModel.client_name = string.Empty; resModel.commit_status_no = "400"; resModel.commit_status_name = "未下发"; resModel.procedure_status_name = "未开工"; resModel.procedure_finished_qty = 0; return(resModel); }
/// <summary> /// 实体类转视图类 /// </summary> /// <param name="model">实体类</param> /// <returns>视图类</returns> private ModelView.MpoView Model2View(Model.TableModel.Mpo model) { ModelView.MpoView view = new ModelView.MpoView(); view.id = model.id; view.status_name = model.status_name; view.status_no = model.status_no; view.crt_user_no = model.crt_user_no; view.crt_user_name = model.crt_user_name; view.crt_time = model.crt_time.ToString("yyyy-MM-dd HH:mm:ss.fff"); view.upd_user_no = model.upd_user_no; view.upd_user_name = model.upd_user_name; view.upd_time = model.upd_time.ToString("yyyy-MM-dd HH:mm:ss.fff"); view.mpo_no = model.mpo_no; view.mpo_type_no = model.mpo_type_no; view.mpo_type_name = model.mpo_type_name; view.part_no = model.part_no; view.part_name = model.part_name; view.part_spec = model.part_spec; view.part_unit = model.part_unit; view.mpo_qty = decimal.Round(model.mpo_qty, MidpointRounding.AwayFromZero).ToString(); view.mpo_hope_start_datetime = model.mpo_hope_start_datetime.HasValue?((DateTime)model.mpo_hope_start_datetime).ToString("yyyy-MM-dd"):string.Empty; view.mpo_hope_end_datetime = model.mpo_hope_end_datetime.HasValue ? ((DateTime)model.mpo_hope_end_datetime).ToString("yyyy-MM-dd") : string.Empty; view.workshop_no = model.workshop_no; view.factory_no = model.factory_no; view.line_no = model.line_no; view.job_no = model.job_no; view.shift_no = model.shift_no; view.client_no = model.client_no; view.client_name = model.client_name; view.commit_status_no = model.commit_status_no; view.commit_status_name = model.commit_status_name; view.procedure_finished_qty = decimal.Round(model.procedure_finished_qty, MidpointRounding.AwayFromZero).ToString(); view.procedure_status_name = model.procedure_status_name; return(view); }
/// <summary> /// 报工记录提交并将新提交的报工记录返回 /// </summary> /// <param name="barcode">记录信息</param> /// <param name="eqmNo">设备编号</param> /// <returns>报工记录</returns> public Model.TableModel.Mes_fb SubmitMesFb(Model.ProductBarcode barcode, string eqmNo) { if (barcode == null) { return(null); } //如果上次报过工,就不报了 if (barcode.IsLastSubmit) { return(null); }//一定不是上一次报工的记录 DateTime actTime = DateTime.Now; actTime = DateTime.TryParse(barcode.ProductDate + " " + barcode.ProductTime, out actTime)?actTime:DateTime.Now; string userNo = barcode.User; string tmpUser = DataLoadCtrl.LoadFieldByColumn("worker_no", "worker_name", barcode.User, "mes_worker"); userNo = tmpUser == "UNKNOWN" ? userNo : tmpUser; if (barcode.SerialNoExist)//该序列号存在,这个序列号必定存在报工记录 { Model.TableModel.Mes_fb_item mesFbItem = GetMesFbItem(barcode.ProductSerialNo, eqmNo); Model.TableModel.Mes_fb mesFb = GetMesFb(barcode.MpoNo, eqmNo); Model.TableModel.Mpo mpo = GetMpo(barcode.MpoNo); if (mesFbItem == null || mesFb == null || mpo == null) { return(null); } string result = mesFbItem.quality_no == "QA01" ? "OK" : "NG"; if (result != barcode.Result) { if (barcode.Result == "OK") { mesFb.fb_end_qty_ok += 1; mesFb.fb_end_qty_ng -= 1; mesFbItem.quality_no = "QA01"; if (IsLastEqm(eqmNo)) { mpo.procedure_finished_qty += 1; } } else { mesFb.fb_end_qty_ok -= 1; mesFb.fb_end_qty_ng += 1; mesFbItem.quality_no = "QA04"; if (IsLastEqm(eqmNo)) { mpo.procedure_finished_qty -= 1; } } if (mpo.mpo_qty <= mpo.procedure_finished_qty) { mpo.procedure_status_name = "已完工"; } } mesFb.upd_time = actTime; mesFb.upd_user_name = barcode.User; mesFb.upd_user_no = userNo; mesFb.fb_end_datetime = actTime; mesFb.worker_no = userNo; mesFb.worker_name = barcode.User; mesFb.fb_time = actTime; mesFbItem.upd_time = actTime; mesFbItem.upd_user_name = barcode.User; mesFbItem.upd_user_no = userNo; mesFbItem.fb_datetime = actTime; mesFbItem.worker_no = userNo; mesFbItem.worker_name = barcode.User; mesFbItem.in_id = barcode.ID; int b = DbEngine.QueryInt <Model.TableModel.Mes_fb>("update", new List <Model.TableModel.Mes_fb>() { mesFb }); if (b > 0) { b = DbEngine.QueryInt <Model.TableModel.Mes_fb_item>("update", new List <Model.TableModel.Mes_fb_item>() { mesFbItem }); if (b > 0) { b = DbEngine.QueryInt <Model.TableModel.Mes_fb_info>("insert", barcode.SubmitInfo); if (b > 0) { DbEngine.QueryInt <Model.TableModel.Mpo>("update", new List <Model.TableModel.Mpo>() { mpo }); } } } } else //序列号不存在,则一定不存在报工记录 { bool isNeedUpdateMpo = true; //检测生产订单号 Model.TableModel.Mpo mpo = GetMpo(barcode.MpoNo); if (mpo == null) { isNeedUpdateMpo = false; mpo = new Model.TableModel.Mpo(); mpo.id = "virtualMpo"; mpo.mpo_no = barcode.MpoNo; mpo.part_no = barcode.ProductTypeNo; mpo.mpo_qty = 0; mpo.mpo_hope_start_datetime = DateTime.Now; mpo.mpo_hope_end_datetime = DateTime.Now; mpo.commit_status_no = "310"; mpo.commit_status_name = "已下发"; mpo.procedure_finished_qty = 0; mpo.procedure_status_name = "已开工"; } Model.TableModel.Mes_fb mesFb = new Model.TableModel.Mes_fb(); mesFb.id = Common.Md5Operate.CreateGuidId(); mesFb.status_no = "310"; mesFb.status_name = "已确认"; mesFb.crt_time = actTime; mesFb.crt_user_name = barcode.User; mesFb.crt_user_no = userNo; mesFb.upd_time = actTime; mesFb.upd_user_name = barcode.User; mesFb.upd_user_no = userNo; mesFb.fb_no = DataBllCtrl.GetNextNoByTblName("mes_fb"); mesFb.mpo_no = mpo.mpo_no; mesFb.part_no = barcode.ProductTypeNo; mesFb.fb_start_datetime = actTime; mesFb.fb_end_datetime = actTime; if (barcode.Result == "OK") { mesFb.fb_end_qty_ok = 1; if (IsLastEqm(eqmNo)) { mpo.procedure_finished_qty += 1; } } else { mesFb.fb_end_qty_ng = 1; } mesFb.worker_no = userNo; mesFb.worker_name = barcode.User; mesFb.fb_time = actTime; mesFb.eqm_no = eqmNo; mesFb.eqm_name = DataLoadCtrl.LoadFieldByColumn("eqm_name", "eqm_no", eqmNo, "pdm_eqm"); mesFb.factory_no = "dfs_f"; Model.TableModel.Mes_fb_item mesFbItem = new Model.TableModel.Mes_fb_item(); mesFbItem.id = Common.Md5Operate.CreateGuidId(); mesFbItem.status_no = "310"; mesFbItem.status_name = "已确认"; mesFbItem.crt_time = actTime; mesFbItem.crt_user_name = barcode.User; mesFbItem.crt_user_no = userNo; mesFbItem.upd_time = actTime; mesFbItem.upd_user_name = barcode.User; mesFbItem.upd_user_no = userNo; mesFbItem.fb_item_no = DataBllCtrl.GetNextNoByTblName("mes_fb_item"); mesFbItem.serial_no = barcode.ProductSerialNo; mesFbItem.fb_no = mesFb.fb_no; mesFbItem.mpo_no = mpo.mpo_no; mesFbItem.part_no = barcode.ProductTypeNo; mesFbItem.fb_datetime = actTime; mesFbItem.quality_no = barcode.Result == "OK" ? "QA01" : "QA04"; mesFbItem.worker_no = userNo; mesFbItem.worker_name = barcode.User; mesFbItem.eqm_no = eqmNo; mesFbItem.eqm_name = mesFb.eqm_name; mesFbItem.wkc_no = "PSH On BYD"; mesFbItem.wkc_name = "PSH On BYD生产线"; mesFbItem.in_id = barcode.ID; int b = DbEngine.QueryInt <Model.TableModel.Mes_fb>("insert", new List <Model.TableModel.Mes_fb>() { mesFb }); if (b > 0) { b = DbEngine.QueryInt <Model.TableModel.Mes_fb_item>("insert", new List <Model.TableModel.Mes_fb_item>() { mesFbItem }); if (b > 0) { b = DbEngine.QueryInt <Model.TableModel.Mes_fb_info>("insert", barcode.SubmitInfo); if (b > 0 && isNeedUpdateMpo) { DbEngine.QueryInt <Model.TableModel.Mpo>("update", new List <Model.TableModel.Mpo>() { mpo }); } } } } return(null); }