/// <summary> /// 新增员工信息 /// </summary> /// <param name="data"></param> /// <param name="user_id"></param> /// <param name="id"></param> /// <returns></returns> public ERROR_CODE Insert(SysUserAddDto data, long user_id, out long id) { id = data.sys_res.id = _dal.GetNextIdCom(); sys_resource findRes; if (string.IsNullOrEmpty(data.sys_res.mobile_phone)) { findRes = _dal.FindSignleBySql <sys_resource>($"select * from sys_resource where email='{data.sys_res.email}' and delete_time=0"); } else { findRes = _dal.FindSignleBySql <sys_resource>($"select * from sys_resource where (email='{data.sys_res.email}' or mobile_phone='{data.sys_res.mobile_phone}') and delete_time=0"); } if (findRes != null) { return(ERROR_CODE.SYS_NAME_EXIST); } data.sys_res.create_user_id = data.sys_res.update_user_id = user_id; data.sys_res.create_time = data.sys_res.update_time = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Now); _dal.Insert(data.sys_res); //操作日志新增一条日志,操作对象种类:员工 var user = UserInfoBLL.GetUserInfo(user_id); if (user == null) { return(ERROR_CODE.USER_NOT_FIND); } var add_account_log = new sys_oper_log() { user_cate = "用户", user_id = (int)user.id, name = user.name, phone = user.mobile == null ? "" : user.mobile, oper_time = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Now), oper_object_cate_id = (int)OPER_LOG_OBJ_CATE.CONTACTS, //员工 oper_object_id = data.sys_res.id, // 操作对象id oper_type_id = (int)OPER_LOG_TYPE.ADD, oper_description = _dal.AddValue(data.sys_res), remark = "保存员工信息" }; // 创建日志 new sys_oper_log_dal().Insert(add_account_log); // 插入日志 data.sys_user.id = id; //加密 data.sys_user.password = new Tools.Cryptographys().SHA1Encrypt(data.sys_user.password); new sys_user_dal().Insert(data.sys_user); add_account_log = new sys_oper_log() { user_cate = "用户", user_id = (int)user.id, name = user.name, phone = user.mobile == null ? "" : user.mobile, oper_time = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Now), oper_object_cate_id = (int)OPER_LOG_OBJ_CATE.CONTACTS, oper_object_id = data.sys_user.id,// 操作对象id oper_type_id = (int)OPER_LOG_TYPE.ADD, oper_description = _dal.AddValue(data.sys_user), remark = "保存客户信息" }; // 创建日志 new sys_oper_log_dal().Insert(add_account_log); if (data.timeoffPolicy != null) { new TimeOffPolicyBLL().AddTimeoffResource(id.ToString(), data.timeoffPolicy.timeoff_policy_id, data.timeoffPolicy.effective_date, user_id); } if (data.internalCost != null && data.internalCost.Count > 0) { var costDal = new sys_resource_internal_cost_dal(); foreach (var cost in data.internalCost) { cost.resource_id = id; cost.id = costDal.GetNextIdCom(); costDal.Insert(cost); } } if (data.availability != null) { data.availability.id = _dal.GetNextIdCom(); data.availability.resource_id = id; data.availability.create_time = Tools.Date.DateHelper.ToUniversalTimeStamp(); data.availability.update_time = data.availability.create_time; data.availability.create_user_id = user_id; data.availability.update_user_id = user_id; new sys_resource_availability_dal().Insert(data.availability); } sys_resource_additional_time_dal timeDal = new sys_resource_additional_time_dal(); if (data.addTime1 != null) { data.addTime1.id = timeDal.GetNextIdCom(); data.addTime1.resource_id = id; timeDal.Insert(data.addTime1); } if (data.addTime2 != null) { data.addTime2.id = timeDal.GetNextIdCom(); data.addTime2.resource_id = id; timeDal.Insert(data.addTime2); } return(ERROR_CODE.SUCCESS); }
/// <summary> /// 新增员工内部成本 /// </summary> /// <param name="resId"></param> /// <param name="start"></param> /// <param name="rate"></param> /// <param name="userId"></param> /// <returns></returns> public List <sys_resource_internal_cost> AddInternalCost(long resId, DateTime start, decimal rate, long userId) { var dal = new sys_resource_internal_cost_dal(); var costList = GetInternalCostList(resId); if (costList.Count == 0) // 第一条 { sys_resource_internal_cost cost = new sys_resource_internal_cost { id = dal.GetNextIdCom(), resource_id = resId, hourly_rate = rate }; dal.Insert(cost); costList.Add(cost); } else { var fd = costList.Find(_ => _.start_date == start); if (fd != null) // 开始时间不能重复 { return(null); } sys_resource_internal_cost cost = new sys_resource_internal_cost(); cost.id = dal.GetNextIdCom(); cost.start_date = start; cost.hourly_rate = rate; cost.resource_id = resId; if (costList[0].end_date != null && costList[0].end_date.Value >= start) // 生效时间最前,作为第二条 { costList[0].end_date = start.AddDays(-1); cost.end_date = costList[1].start_date.Value.AddDays(-1); dal.Update(costList[0]); // 更新第一条的结束时间 costList.Insert(1, cost); } else if (costList[0].end_date == null) // 当前只有一条,作为第二条 { costList[0].end_date = cost.start_date.Value.AddDays(-1); dal.Update(costList[0]); // 更新第一条的结束时间 costList.Insert(1, cost); } else if (cost.start_date.Value > costList[costList.Count - 1].start_date.Value) // 生效时间最后,最后一条 { costList[costList.Count - 1].end_date = cost.start_date.Value.AddDays(-1); dal.Update(costList[costList.Count - 1]); // 更新最后一条的结束时间 costList.Add(cost); } else // 生效时间在中间 { for (int i = 1; i < costList.Count - 2; i++) { if (costList[i].start_date.Value <cost.start_date.Value && costList[i + 1].start_date.Value> cost.start_date.Value) // 找到按顺序的时间前后项 { costList[i].end_date = cost.start_date.Value.AddDays(-1); cost.end_date = costList[i + 1].start_date.Value.AddDays(-1); dal.Update(costList[i]); // 更新前一条的结束时间 dal.Update(costList[i + 1]); // 更新后一条的开始时间 costList.Insert(i + 1, cost); } } } dal.Insert(cost); } return(costList); }