Exemple #1
0
 /// <summary>
 /// 月度数据导入
 /// </summary>
 /// <param name="pw"></param>
 private void InsertPredictionWages(PredictionWages pw)
 {
     using (WorkDataClassesDataContext db = new WorkDataClassesDataContext())
     {
         int preCnt = db.PredictionWages.Where(n => n.WorkMon == pw.WorkMon && n.WorkYear == pw.WorkYear &&
                                               n.WorkerId == pw.WorkerId && n.WorkSiteId == pw.WorkSiteId && n.WholePart == pw.WholePart).Count();
         if (preCnt == 0)
         {
             db.PredictionWages.InsertOnSubmit(pw);
             db.SubmitChanges();
         }
     }
 }
Exemple #2
0
        public HttpResponseMessage MonGenerate(string year, string mon)
        {
            using (WorkDataClassesDataContext db = new WorkDataClassesDataContext())
            {
                var data = from s in db.Attendance
                           where s.WorkDate.Value.Year == Convert.ToInt32(year) && s.WorkDate.Value.Month == Convert.ToInt32(mon)
                           select new
                {
                    s.WorkId, s.Worker.Sex,
                    WorkDate = Convert.ToString(s.WorkDate.Value),
                    s.Worker.WorkType,
                    s.WorkTime,
                    s.WorkMore,
                    s.WorkSite.WorkManage,
                    s.WorkSiteId
                };

                string[] workers = data.Select(n => n.WorkId).Distinct().ToArray();

                try
                {   //分工地月度
                    for (int i = 0; i < workers.Length; i++)
                    {
                        var   limitData = data.Where(n => n.WorkId == workers[i]);
                        int[] workSites = limitData.Select(n => n.WorkSiteId).Distinct().ToArray();
                        for (int j = 0; j < workSites.Length; j++)
                        {
                            PredictionWages pw = new PredictionWages
                            {
                                WorkerId    = workers[i],
                                WorkMon     = mon,
                                WorkYear    = year,
                                WorkSiteId  = workSites[j],
                                WholePart   = 0,
                                WorkMoreMon = Math.Round((double)limitData.Where(n => n.WorkSiteId == workSites[j]).Sum(n => n.WorkMore), 4),
                                WorkTimeMon = Math.Round((double)limitData.Where(n => n.WorkSiteId == workSites[j]).Sum(n => n.WorkTime), 4)
                            };
                            InsertPredictionWages(pw);
                        }
                    }
                    //整体月度
                    for (int i = 0; i < workers.Length; i++)
                    {
                        var   limitData = data.Where(n => n.WorkId == workers[i]);
                        int[] workSites = limitData.Select(n => n.WorkSiteId).Distinct().ToArray();

                        PredictionWages pw = new PredictionWages
                        {
                            WorkerId    = workers[i],
                            WorkMon     = mon,
                            WorkYear    = year,
                            WholePart   = 1,
                            WorkSiteId  = 4,   //整体月度汇总
                            WorkMoreMon = Math.Round((double)limitData.Where(n => n.WorkId == workers[i]).Sum(n => n.WorkMore), 4),
                            WorkTimeMon = Math.Round((double)limitData.Where(n => n.WorkId == workers[i]).Sum(n => n.WorkTime), 4)
                        };
                        InsertPredictionWages(pw);
                    }
                    string json = "ok";
                    json = JsonConvert.SerializeObject(json);
                    return(HttpResponseMessageToJson.ToJson(json));
                }
                catch (Exception e)
                {
                    string json = "error";
                    json = JsonConvert.SerializeObject(json);
                    return(HttpResponseMessageToJson.ToJson(json));
                }
            }
        }