Ejemplo n.º 1
0
        /// <summary>
        /// 新增工时
        /// </summary>
        /// <param name="weList"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public bool AddWorkEntry(List <sdk_work_entry> weList, long userId)
        {
            var bll = new TimeOffPolicyBLL();
            tst_timeoff_balance_dal balDal = new tst_timeoff_balance_dal();
            long batchId = dal.GetNextId("seq_entry_batch");

            foreach (var we in weList)
            {
                we.id             = dal.GetNextIdCom();
                we.create_time    = Tools.Date.DateHelper.ToUniversalTimeStamp();
                we.update_time    = we.create_time;
                we.create_user_id = userId;
                we.update_user_id = userId;
                we.batch_id       = batchId;

                dal.Insert(we);
                OperLogBLL.OperLogAdd <sdk_work_entry>(we, we.id, userId, DicEnum.OPER_LOG_OBJ_CATE.SDK_WORK_ENTRY, "新增工时");

                if (we.task_id == (long)CostCode.Sick)  // 病假需要在假期余额表添加记录
                {
                    bll.UpdateTimeoffBalance(we.resource_id.Value, Tools.Date.DateHelper.TimeStampToUniversalDateTime(we.start_time.Value), (CostCode)we.task_id);
                    //var balance = bll.UpdateTimeoffBalance((long)we.resource_id, Tools.Date.DateHelper.TimeStampToDateTime((long)we.start_time), 0 - (decimal)we.hours_billed);
                    //tst_timeoff_balance bal = new tst_timeoff_balance();
                    //bal.object_id = we.id;
                    //bal.object_type_id = 2214;
                    //bal.task_id = we.task_id;
                    //bal.resource_id = (long)we.resource_id;
                    //bal.balance = balance - (decimal)we.hours_billed;
                    //balDal.Insert(bal);
                }
            }

            return(true);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 删除工时
        /// </summary>
        /// <param name="batchId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public bool DeleteWorkEntry(long batchId, long userId)
        {
            var weList = dal.FindListBySql($"select * from sdk_work_entry where batch_id={batchId} and delete_time=0");

            if (weList.Count == 0)
            {
                return(false);
            }

            int  type;
            long id;

            if (!GetWorkEntryType(batchId, out type, out id))
            {
                return(false);
            }

            bool rtn     = true;
            var  bll     = new TimeOffPolicyBLL();
            var  taskbll = new TaskBLL();
            tst_timeoff_balance_dal balDal = new tst_timeoff_balance_dal();
            string reason;

            foreach (var we in weList)
            {
                if (type == 1)  // 常规工时
                {
                    we.delete_time    = Tools.Date.DateHelper.ToUniversalTimeStamp();
                    we.delete_user_id = userId;
                    dal.Update(we);
                    OperLogBLL.OperLogDelete <sdk_work_entry>(we, we.id, userId, DicEnum.OPER_LOG_OBJ_CATE.SDK_WORK_ENTRY, "删除工时");

                    if (we.task_id == (long)CostCode.Sick)  // 病假需要在假期余额表删除记录
                    {
                        bll.UpdateTimeoffBalance(we.resource_id.Value, Tools.Date.DateHelper.TimeStampToUniversalDateTime(we.start_time.Value), (CostCode)we.task_id);
                        //var balance = bll.UpdateTimeoffBalance((long)we.resource_id, Tools.Date.DateHelper.TimeStampToDateTime((long)we.start_time), (decimal)we.hours_billed);
                        //balDal.ExecuteSQL($"delete from tst_timeoff_balance where object_id={we.id}");
                    }
                }
                else if (type == 2) // 休假请求
                {
                    bll.CancleTimeoffRequest(we.timeoff_request_id.Value, userId);
                }
                else    // 任务工时和工单工时
                {
                    if (!taskbll.DeleteEntry(we.id, userId, out reason))
                    {
                        rtn = false;
                    }
                }
            }

            return(rtn);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 删除工时表
        /// </summary>
        /// <param name="startDate"></param>
        /// <param name="resourceId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public bool DeleteWorkEntryReport(DateTime startDate, long resourceId, long userId)
        {
            sdk_work_entry_report_dal rptDal = new sdk_work_entry_report_dal();
            var find = rptDal.FindSignleBySql <sdk_work_entry_report>($"select * from sdk_work_entry_report where resource_id={resourceId} and start_date='{startDate}' and delete_time=0");

            if (find != null && find.status_id != (int)DicEnum.WORK_ENTRY_REPORT_STATUS.HAVE_IN_HAND)
            {
                return(false);
            }

            var weList = GetWorkEntryListByStartDate(startDate, resourceId);

            if (weList.Count == 0)
            {
                return(false);
            }

            var bll = new TimeOffPolicyBLL();
            tst_timeoff_balance_dal balDal = new tst_timeoff_balance_dal();

            //var weList = GetWorkEntryByBatchId(batchId);
            //if (weList.Count == 0)
            //    return true;
            //if (weList[0].approve_and_post_user_id != null) // 已审批提交不能删除
            //    return false;

            foreach (var we in weList)
            {
                we.delete_time    = Tools.Date.DateHelper.ToUniversalTimeStamp();
                we.delete_user_id = userId;
                dal.Update(we);
                OperLogBLL.OperLogDelete <sdk_work_entry>(we, we.id, userId, DicEnum.OPER_LOG_OBJ_CATE.SDK_WORK_ENTRY, "删除工时");

                if (we.task_id == (long)CostCode.Sick)  // 病假需要在假期余额表删除记录
                {
                    bll.UpdateTimeoffBalance(we.resource_id.Value, Tools.Date.DateHelper.TimeStampToUniversalDateTime(we.start_time.Value), (CostCode)we.task_id);
                    //var balance = bll.UpdateTimeoffBalance((long)we.resource_id, Tools.Date.DateHelper.TimeStampToDateTime((long)we.start_time), (decimal)we.hours_billed);
                    //balDal.ExecuteSQL($"delete from tst_timeoff_balance where object_id={we.id}");
                }
            }

            if (find != null)
            {
                find.delete_time    = Tools.Date.DateHelper.ToUniversalTimeStamp();
                find.delete_user_id = userId;
                rptDal.Update(find);
                OperLogBLL.OperLogDelete <sdk_work_entry_report>(find, find.id, userId, DicEnum.OPER_LOG_OBJ_CATE.SDK_WORK_RECORD, "删除工时表");
            }
            return(true);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 编辑工时
        /// </summary>
        /// <param name="weList">编辑后的工时列表</param>
        /// <param name="batchId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public bool EditWorkEntry(List <sdk_work_entry> weList, long batchId, long userId)
        {
            var bll = new TimeOffPolicyBLL();
            tst_timeoff_balance_dal balDal = new tst_timeoff_balance_dal();
            var weListOld = GetWorkEntryByBatchId(batchId);

            if (weListOld[0].approve_and_post_user_id != null) // 已审批提交不能编辑
            {
                return(false);
            }

            foreach (var we in weListOld)
            {
                if (weList.Exists(_ => _.start_time == we.start_time))  // 原工时被编辑
                {
                    var weOld  = dal.FindById(we.id);
                    var weEdit = weList.Find(_ => _.start_time == we.start_time);
                    we.internal_notes = weEdit.internal_notes;
                    we.summary_notes  = weEdit.summary_notes;
                    we.hours_worked   = weEdit.hours_worked;
                    we.hours_billed   = weEdit.hours_billed;
                    we.update_time    = Tools.Date.DateHelper.ToUniversalTimeStamp();
                    we.update_user_id = userId;
                    var desc = OperLogBLL.CompareValue <sdk_work_entry>(weOld, we);
                    if (!string.IsNullOrEmpty(desc))
                    {
                        dal.Update(we);
                        OperLogBLL.OperLogUpdate(desc, we.id, userId, DicEnum.OPER_LOG_OBJ_CATE.SDK_WORK_ENTRY, "编辑工时");

                        if (we.task_id == (long)CostCode.Sick && we.hours_worked != weOld.hours_worked)  // 病假需要在假期余额表修改记录
                        {
                            bll.UpdateTimeoffBalance(we.resource_id.Value, Tools.Date.DateHelper.TimeStampToUniversalDateTime(we.start_time.Value), (CostCode)we.task_id);
                            //var balance = bll.UpdateTimeoffBalance((long)we.resource_id, Tools.Date.DateHelper.TimeStampToDateTime((long)we.start_time), (decimal)weOld.hours_billed - (decimal)we.hours_billed);
                            //var bal = balDal.FindSignleBySql<tst_timeoff_balance>($"select * from tst_timeoff_balance where object_id={we.id}");
                            //bal.balance = bal.balance + ((decimal)we.hours_billed - (decimal)weOld.hours_billed);
                            //balDal.Update(bal);
                        }
                    }
                    weList.Remove(weEdit);
                }
                else    // 原工时被删除
                {
                    we.delete_time    = Tools.Date.DateHelper.ToUniversalTimeStamp();
                    we.delete_user_id = userId;
                    dal.Update(we);
                    OperLogBLL.OperLogDelete <sdk_work_entry>(we, we.id, userId, DicEnum.OPER_LOG_OBJ_CATE.SDK_WORK_ENTRY, "编辑工时删除");

                    if (we.task_id == (long)CostCode.Sick)  // 病假需要在假期余额表删除记录
                    {
                        bll.UpdateTimeoffBalance(we.resource_id.Value, Tools.Date.DateHelper.TimeStampToUniversalDateTime(we.start_time.Value), (CostCode)we.task_id);
                        //var balance = bll.UpdateTimeoffBalance((long)we.resource_id, Tools.Date.DateHelper.TimeStampToDateTime((long)we.start_time), (decimal)we.hours_billed);
                        //balDal.ExecuteSQL($"delete from tst_timeoff_balance where object_id={we.id}");
                    }
                }
            }
            foreach (var we in weList)  // 剩余需要新增
            {
                we.id             = dal.GetNextIdCom();
                we.batch_id       = batchId;
                we.resource_id    = weListOld[0].resource_id;
                we.cost_code_id   = weListOld[0].cost_code_id;
                we.task_id        = weListOld[0].task_id;
                we.create_time    = Tools.Date.DateHelper.ToUniversalTimeStamp();
                we.update_time    = we.create_time;
                we.create_user_id = userId;
                we.update_user_id = userId;

                dal.Insert(we);
                OperLogBLL.OperLogAdd <sdk_work_entry>(we, we.id, userId, DicEnum.OPER_LOG_OBJ_CATE.SDK_WORK_ENTRY, "编辑工时新增");

                if (we.task_id == (long)CostCode.Sick)  // 病假需要在假期余额表添加记录
                {
                    bll.UpdateTimeoffBalance(we.resource_id.Value, Tools.Date.DateHelper.TimeStampToUniversalDateTime(we.start_time.Value), (CostCode)we.task_id);
                    //var balance = bll.UpdateTimeoffBalance((long)we.resource_id, Tools.Date.DateHelper.TimeStampToDateTime((long)we.start_time), 0 - (decimal)we.hours_billed);
                    //tst_timeoff_balance bal = new tst_timeoff_balance();
                    //bal.object_id = we.id;
                    //bal.object_type_id = 2214;
                    //bal.task_id = we.task_id;
                    //bal.balance = balance + (decimal)we.hours_billed;
                    //balDal.Insert(bal);
                }
            }

            return(true);
        }