Пример #1
0
        /// <summary>
        /// 获取员工内部成本列表
        /// </summary>
        /// <param name="resId"></param>
        /// <returns></returns>
        public List <sys_resource_internal_cost> GetInternalCostList(long resId)
        {
            var dal      = new sys_resource_internal_cost_dal();
            var costList = dal.FindListBySql($"select * from sys_resource_internal_cost where resource_id={resId} order by start_date asc");

            return(costList);
        }
Пример #2
0
        /// <summary>
        /// 删除员工内部成本
        /// </summary>
        /// <param name="resId"></param>
        /// <param name="id"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public List <sys_resource_internal_cost> DeleteInternalCost(long resId, long id, long userId)
        {
            var dal      = new sys_resource_internal_cost_dal();
            var costList = GetInternalCostList(resId);

            if (costList == null || costList.Count == 1)
            {
                return(null);
            }

            int idx = costList.FindIndex(_ => _.id == id);

            if (idx == -1)
            {
                return(costList);
            }

            if (idx == 0)   // 第一个
            {
                costList[1].start_date = null;
                dal.Update(costList[1]);
            }
            else if (idx == costList.Count - 1)  // 最后一个
            {
                costList[idx - 1].end_date = null;
                dal.Update(costList[idx - 1]);
            }
            else
            {
                costList[idx - 1].end_date = costList[idx].end_date;
                dal.Update(costList[idx - 1]);
            }
            costList.RemoveAt(idx);
            dal.Delete(costList[idx]);

            return(costList);
        }
Пример #3
0
        /// <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);
        }
Пример #4
0
        /// <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);
        }