/// <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); }
/// <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); }
/// <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); }
/// <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); }