LR-20210131IOQH\Administrator
2021-08-10 11e11a51839529b17f70927524e086e90adf692d
zhengcaioa/Services/HrSalaryService.cs
@@ -93,6 +93,11 @@
            return resultEntity;
        }
        /// <summary>
        /// 保存工资核准
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public ResultEntity SaveCheckSalary(HrSalaryUpDTO dto)
        {
            ResultEntity resultEntity = new ResultEntity();
@@ -103,10 +108,13 @@
                {
                    //更新电话费用状态
                    var sim = _context.SimCost.Where(c => c.bill_year == updatepltRole.Year && c.bill_month <= updatepltRole.Month && c.user_id == updatepltRole.Userid && c.status == "0").ToList();
                    foreach(var item in sim)
                    if(sim!=null)
                    {
                        item.status = "1";
                    }
                        foreach (var item in sim)
                        {
                            item.status = "1";
                        }
                    }
                    var user = _context.PltUsers.Where(c => c.Id == updatepltRole.Userid).SingleOrDefault();
@@ -116,73 +124,35 @@
                    var sum_f = ((updatepltRole.Jibengongzi ?? 0) + (updatepltRole.Baomifei ?? 0) + (updatepltRole.Gongzuobutie ?? 0) +
                        (updatepltRole.Jiabangongzi ?? 0) + (updatepltRole.Shebao ?? 0) + (updatepltRole.Dianhuabutie ?? 0) +
                        (updatepltRole.Quanqinjiang ?? 0) + (updatepltRole.Jiaotngbutie ?? 0) + (updatepltRole.Jixiaoticheng ?? 0) +
                        dto.Jiangjin + dto.Bufagongzi);
                        dto.Jiangjin + dto.Bufagongzi) + dto.Jiucuo; ;
                    updatepltRole.Peichang = dto.Peichang;
                    updatepltRole.Jiucuo = dto.Jiucuo;
                    var sum_k= (updatepltRole.Shebaokou ?? 0) + (updatepltRole.Geshui ?? 0) + (updatepltRole.Dianhuafei ?? 0) +
                        (updatepltRole.Queqin ?? 0) + (updatepltRole.Fakuan ?? 0) + dto.Peichang + dto.Jiucuo;
                    var sum_k = (updatepltRole.Shebaokou ?? 0) + (updatepltRole.Geshui ?? 0) + (updatepltRole.Dianhuafei ?? 0) +
                        (updatepltRole.Queqin ?? 0) + (updatepltRole.Fakuan ?? 0) + dto.Peichang;
                    //计算预发工资
                    //var lyear = updatepltRole.Year;
                    //var lmonth = updatepltRole.Month-1;
                    //if(lmonth==0)
                    //{
                    //    lyear = lyear - 1;
                    //    lmonth = 12;
                    //}
                    //var sumyfhj = _context.HrSalaries.Where(c => c.Year == lyear && c.Month == lmonth && c.Userid == updatepltRole.Userid).SingleOrDefault();
                    if(DateTime.Today> user.ShiyongDateEnd)
                    if (user.advancewages.HasValue && user.advancewages.Value>0)
                    {
                        if(string.IsNullOrEmpty(user.BasicPrice))
                        var pc = user.advancewages.Value;
                        if (sum_f - sum_k > pc)
                        {
                            updatepltRole.Daozhanggongzi = sum_f - sum_k;
                            updatepltRole.Yufagongzi = 0;
                            updatepltRole.Daozhanggongzi = sum_f - sum_k;
                        }
                        else
                        {
                            var pc = decimal.Parse(user.BasicPrice);
                            if (sum_f - sum_k > pc)
                            {
                                updatepltRole.Daozhanggongzi = sum_f - sum_k;
                                updatepltRole.Yufagongzi = 0;
                                updatepltRole.Yufagongziheji = updatepltRole.Yufagongziheji - (sum_f - sum_k - pc);
                            }
                            else
                            {
                                updatepltRole.Daozhanggongzi = pc;
                                updatepltRole.Yufagongzi = pc-(sum_f - sum_k);
                                updatepltRole.Yufagongziheji = updatepltRole.Yufagongziheji + updatepltRole.Yufagongzi;
                            }
                        }
                            //预发
                            updatepltRole.Daozhanggongzi = pc;
                            updatepltRole.Yufagongzi = pc - (sum_f - sum_k);
                            updatepltRole.Yufagongziheji += updatepltRole.Yufagongzi;
                        }
                    }
                    else
                    {
                        if (user.ShiyongPrice.HasValue)
                        {
                            var pc = user.ShiyongPrice.Value;
                            if (sum_f - sum_k > pc)
                            {
                                updatepltRole.Daozhanggongzi = sum_f - sum_k;
                                updatepltRole.Yufagongzi = 0;
                                updatepltRole.Yufagongziheji = updatepltRole.Yufagongziheji - (sum_f - sum_k - pc);
                            }
                            else
                            {
                                updatepltRole.Daozhanggongzi = pc;
                                updatepltRole.Yufagongzi = pc - (sum_f - sum_k);
                                updatepltRole.Yufagongziheji = updatepltRole.Yufagongziheji + updatepltRole.Yufagongzi;
                            }
                        }
                        else
                        {
                            updatepltRole.Daozhanggongzi = sum_f - sum_k;
                            updatepltRole.Yufagongzi = 0;
                        }
                        updatepltRole.Daozhanggongzi = sum_f - sum_k;
                    }
                    updatepltRole.Islock = "H";
@@ -388,41 +358,48 @@
            return data;
        }
        /// <summary>
        /// 工资核准查询
        /// </summary>
        /// <param name="searchEntity"></param>
        /// <returns></returns>
        public ResultDataEntity<HrSalaryDTO> SearchSalaryByPaging(HrSalaryDTOSearch searchEntity)
        {
            ResultDataEntity<HrSalaryDTO> data = new ResultDataEntity<HrSalaryDTO>();
            //var listCode = (from a in _context.SysCodeDtls
            //                join b in _context.SysCodes
            //                on a.CodeId equals b.Id
            //                where a.RecStatus == "A"
            //                              && b.RecStatus == "A"
            //                select new CodeDataEntity()
            //                {
            //                    CodeId = b.Id,
            //                    CodeTable = b.CodeTable,
            //                    CodeField = b.CodeField,
            //                    CodeSn = a.CodeSn,
            //                    Comments = a.Comments,
            //                    Contents = a.Contents,
            //                    RecStatus = a.RecStatus,
            //                    Sort = a.Sort
            //                }
            //         );
            var listCode = (from e in _context.SysCodes
                                            join c in _context.SysCodeDtls
                                            on e.Id equals c.CodeId
                                            where e.RecStatus == "A"
                                            && c.RecStatus == "A"
                                            && e.CodeTable == "t_sim_bind"
                                            && e.CodeField == "cardpro"
                                            select c).OrderBy(x => x.Sort).ToList();
            //int year = 0;
            //int month = 0;
            //if (string.IsNullOrWhiteSpace(searchEntity.YearMonth))
            //{
            //    DateTime yearMonth = DateTime.Now;//.Parse(searchEntity.YearMonth + "-01");
            //    year = yearMonth.Year;
            //    month = yearMonth.Month;
            //}
            var query = (from a in _context.HrSalaries//.Where(x => x.RecStatus == "A")
                        // join b in listCode.Where(x => x.CodeTable == "hr_jibengongzi" && x.CodeField == "dianhuabutie")
                        //on a.Dianhuabutie equals b.CodeSn
                        // into bsssss
                        // from bbb in bsssss.DefaultIfEmpty()
            int year = 0;
            int month = 0;
            if (string.IsNullOrWhiteSpace(searchEntity.YearMonth))
            {
                DateTime yearMonth = DateTime.Now;//.Parse(searchEntity.YearMonth + "-01");
                year = yearMonth.Year;
                month = yearMonth.Month;
            }
            else
            {
                var len = searchEntity.YearMonth.Split('-');
                if(len.Length==2)
                {
                    year =int.Parse(len[0]);
                    month = int.Parse(len[1]);
                }
            }
            var query = (from a in (_context.HrSalaries.Where(x => x.RecStatus == "A"))
                         //join b in listCode
                         //on a.Dianhuabutie equals b.CodeSn
                         //into bsssss
                         //from bbb in bsssss.DefaultIfEmpty()
                         join f in _context.PltUsers
                         on a.Userid equals f.Id
@@ -438,7 +415,7 @@
                          && (string.IsNullOrWhiteSpace(searchEntity.Usernumber) || f.Usernumber == searchEntity.Usernumber.Trim())
                            && (string.IsNullOrWhiteSpace(searchEntity.DeptId) || f.DeptId == searchEntity.DeptId.Trim())
                              && (string.IsNullOrWhiteSpace(searchEntity.UserName) || f.UserName.Contains(searchEntity.UserName.Trim()))
                              //&& (string.IsNullOrWhiteSpace(searchEntity.YearMonth) || ( a.Year == year && a.Month == month ))
                              && ( (a.Year == year && a.Month == month))
                         select new HrSalaryDTO
                         {
                             Id = a.Id,
@@ -457,7 +434,6 @@
                             Shebao = a.Shebao,
                             Dianhuabutie = a.Dianhuabutie,
                             Quanqinjiang = a.Quanqinjiang,
                             Jiaotngbutie = a.Jiaotngbutie,
                             Jixiaoticheng = a.Jixiaoticheng,
@@ -504,7 +480,7 @@
                             Modifier = a.Modifier,
                             Modifytime = a.Modifytime,
                         }).OrderByDescending(x => x.Modifytime).ToList();
                         }).OrderBy(x => x.UserName).ToList();
@@ -515,9 +491,36 @@
            if (searchEntity.totalrows == 0)
                searchEntity.totalrows = query.Count();
            var rolelist = query.Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList();
            if(rolelist!=null && rolelist.Count>0)
            {
                foreach(var item in rolelist)
                {
                    item.DianhuabutieChs = BackChs(listCode, item.Dianhuabutie);
                }
            }
            data.LoadData(searchEntity, rolelist);
            return data;
        }
        /// <summary>
        /// 注释
        /// </summary>
        /// <param name="listCode"></param>
        /// <param name="code"></param>
        /// <returns></returns>
        private string BackChs(List<SysCodeDtl> listCode ,decimal? code )
        {
            string str = "无";
            if(code.HasValue)
            {
                var st = ((int)code.Value).ToString();
                var temp = listCode.Find(c => c.CodeSn == st);
                if(temp!=null)
                {
                    str = temp.Comments;
                }
            }
            return str;
        }
        public ResultEntity ModifyStatus(string id, string userid)
@@ -582,6 +585,15 @@
        /// <returns></returns>
        public List<HrSalaryDTO> GetSalary(string userid,int year,int month)
        {
            var listCode = (from e in _context.SysCodes
                            join c in _context.SysCodeDtls
                            on e.Id equals c.CodeId
                            where e.RecStatus == "A"
                            && c.RecStatus == "A"
                            && e.CodeTable == "t_sim_bind"
                            && e.CodeField == "cardpro"
                            select c).OrderBy(x => x.Sort).ToList();
            var entity = (from a in _context.HrSalaries
                          join b in _context.PltUsers on a.Userid equals b.Id
                          join c in _context.HrDepts on b.DeptId equals c.Id
@@ -622,6 +634,13 @@
            if (entity == null)
            {
                entity = new List<HrSalaryDTO>();
            }
            else
            {
                foreach (var item in entity)
                {
                    item.DianhuabutieChs = BackChs(listCode, item.Dianhuabutie);
                }
            }
            return entity;
        }
@@ -681,6 +700,9 @@
                    }
                    else
                    {
                        model.id = Guid.NewGuid().ToString();
                        model.year = salary.Year;
                        model.month = salary.Month;
                        model.sub_time = DateTime.Now;
                        model.status = "A";
                        _context.HrSalaryAppeal.Add(model);
@@ -727,6 +749,15 @@
        public ResultDataEntity<HrSalaryDTO> SearchByPagingFinish(HrSalaryDTOSearch searchEntity)
        {
            ResultDataEntity<HrSalaryDTO> data = new ResultDataEntity<HrSalaryDTO>();
            var listCode = (from e in _context.SysCodes
                            join c in _context.SysCodeDtls
                            on e.Id equals c.CodeId
                            where e.RecStatus == "A"
                            && c.RecStatus == "A"
                            && e.CodeTable == "t_sim_bind"
                            && e.CodeField == "cardpro"
                            select c).OrderBy(x => x.Sort).ToList();
            DateTime st = DateTime.Now.AddDays(1 - DateTime.Now.Day).Date;
            DateTime et = DateTime.Now.AddDays(1 - DateTime.Now.Day).Date.AddMonths(1).AddSeconds(-1); 
@@ -822,7 +853,13 @@
            if (searchEntity.totalrows == 0)
                searchEntity.totalrows = list.Count();
            var rolelist = list.Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList();
            if (rolelist != null && rolelist.Count > 0)
            {
                foreach (var item in rolelist)
                {
                    item.DianhuabutieChs = BackChs(listCode, item.Dianhuabutie);
                }
            }
            data.LoadData(searchEntity, rolelist);
            return data;
        }