示例#1
0
文件: MpoCtrl.cs 项目: radtek/Danfoss
        /// <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));
        }
示例#2
0
文件: MpoCtrl.cs 项目: radtek/Danfoss
        /// <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));
        }
示例#3
0
文件: MpoCtrl.cs 项目: radtek/Danfoss
        /// <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));
        }
示例#4
0
文件: MpoCtrl.cs 项目: radtek/Danfoss
        /// <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));
        }
示例#5
0
文件: MpoCtrl.cs 项目: radtek/Danfoss
        /// <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);
        }
示例#6
0
        /// <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);
            }
        }
示例#7
0
 /// <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);
 }
示例#8
0
文件: MpoCtrl.cs 项目: radtek/Danfoss
        /// <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);
        }
示例#9
0
        /// <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);
        }