230 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			230 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C#
		
	
	
	
| 
								 | 
							
								using BLL;
							 | 
						|||
| 
								 | 
							
								using Model;
							 | 
						|||
| 
								 | 
							
								using System;
							 | 
						|||
| 
								 | 
							
								using System.Collections.Generic;
							 | 
						|||
| 
								 | 
							
								using System.Data;
							 | 
						|||
| 
								 | 
							
								using System.Data.SqlClient;
							 | 
						|||
| 
								 | 
							
								using System.Linq;
							 | 
						|||
| 
								 | 
							
								using System.Threading;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								namespace FineUIPro.Web.HSSE.SitePerson
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    public partial class PersonInfoClock : PageBase
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region 加载
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 加载页面
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="sender"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="e"></param>
							 | 
						|||
| 
								 | 
							
								        protected void Page_Load(object sender, EventArgs e)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            if (!IsPostBack)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                UnitService.GetUnit(this.drpUnit, this.CurrUser.LoginProjectId, true);
							 | 
						|||
| 
								 | 
							
								                btnClose.OnClientClick = ActiveWindow.GetHideReference();
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region 保存
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 保存按钮
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="sender"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="e"></param>
							 | 
						|||
| 
								 | 
							
								        protected void btnSave_Click(object sender, EventArgs e)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            if ((this.ckIn.Checked && !string.IsNullOrEmpty(this.txtInTime.Text)) || (this.ckOut.Checked && !string.IsNullOrEmpty(this.txtOutTime.Text)))
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                var getPersons = from x in Funs.DB.SitePerson_Person
							 | 
						|||
| 
								 | 
							
								                                 join y in Funs.DB.Project_ProjectUnit on new { x.ProjectId, x.UnitId } equals new { y.ProjectId, y.UnitId }
							 | 
						|||
| 
								 | 
							
								                                 where x.ProjectId == this.CurrUser.LoginProjectId && (!x.OutTime.HasValue || x.OutTime > DateTime.Now)
							 | 
						|||
| 
								 | 
							
								                                 && x.IsCardNoOK == true && x.InTime <= DateTime.Now && x.HeadImage != null
							 | 
						|||
| 
								 | 
							
								                                 && y.IsSynchro == true && x.RealNameAddTime.HasValue
							 | 
						|||
| 
								 | 
							
								                                 select x;
							 | 
						|||
| 
								 | 
							
								                if (this.drpUnit.SelectedValueArray.Length == 1 && this.drpUnit.SelectedValue == BLL.Const._Null)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    string[] strs = this.drpUnit.SelectedValueArray;
							 | 
						|||
| 
								 | 
							
								                    getPersons = getPersons.Where(x => strs.Contains(x.UnitId));
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                var units = from x in Funs.DB.Base_Unit
							 | 
						|||
| 
								 | 
							
								                            select x;
							 | 
						|||
| 
								 | 
							
								                var workPosts = from x in Funs.DB.Base_WorkPost
							 | 
						|||
| 
								 | 
							
								                                select x;
							 | 
						|||
| 
								 | 
							
								                var unitWorks = from x in Funs.DB.WBS_UnitWork
							 | 
						|||
| 
								 | 
							
								                                select x;
							 | 
						|||
| 
								 | 
							
								                Dictionary<string, string> unitNameDic = new Dictionary<string, string>();
							 | 
						|||
| 
								 | 
							
								                Dictionary<string, string> workPostNameDic = new Dictionary<string, string>();
							 | 
						|||
| 
								 | 
							
								                Dictionary<string, string> workPostTypeDic = new Dictionary<string, string>();
							 | 
						|||
| 
								 | 
							
								                Dictionary<string, string> unitWorkDic = new Dictionary<string, string>();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                foreach (var unit in units)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    unitNameDic.Add(unit.UnitId, unit.UnitName);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                foreach (var workPost in workPosts)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    workPostNameDic.Add(workPost.WorkPostId, workPost.WorkPostName);
							 | 
						|||
| 
								 | 
							
								                    workPostTypeDic.Add(workPost.WorkPostId, workPost.PostType);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                foreach (var unitWork in unitWorks)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    unitWorkDic.Add(unitWork.UnitWorkId, unitWork.UnitWorkName + UnitWorkService.GetProjectType(unitWork.ProjectType));
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                if (getPersons.Count() > 0)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    List<SitePerson_PersonInOut> list = new List<SitePerson_PersonInOut>();
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in getPersons)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (this.ckIn.Checked)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            Model.SitePerson_PersonInOut newPersonInfo = new Model.SitePerson_PersonInOut
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                PersonInOutId = SQLHelper.GetNewID(),
							 | 
						|||
| 
								 | 
							
								                                PersonId = item.PersonId,
							 | 
						|||
| 
								 | 
							
								                                ProjectId = item.ProjectId,
							 | 
						|||
| 
								 | 
							
								                                WorkAreaId = item.WorkAreaId,
							 | 
						|||
| 
								 | 
							
								                                InOutWay = Const.InOutWay_2,
							 | 
						|||
| 
								 | 
							
								                            };
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                            newPersonInfo.ProjectId = item.ProjectId;
							 | 
						|||
| 
								 | 
							
								                            newPersonInfo.PersonId = item.PersonId;
							 | 
						|||
| 
								 | 
							
								                            newPersonInfo.PersonName = item.PersonName;
							 | 
						|||
| 
								 | 
							
								                            newPersonInfo.IdentityCard = item.IdentityCard;
							 | 
						|||
| 
								 | 
							
								                            newPersonInfo.UnitId = item.UnitId;
							 | 
						|||
| 
								 | 
							
								                            newPersonInfo.UnitName = unitNameDic.ContainsKey(item.UnitId) ? unitNameDic[item.UnitId] : "";
							 | 
						|||
| 
								 | 
							
								                            newPersonInfo.WorkPostId = item.WorkPostId;
							 | 
						|||
| 
								 | 
							
								                            if (!string.IsNullOrEmpty(item.WorkPostId))
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                newPersonInfo.WorkPostName = workPostNameDic.ContainsKey(item.WorkPostId) ? workPostNameDic[item.WorkPostId] : "";
							 | 
						|||
| 
								 | 
							
								                                newPersonInfo.PostType = workPostTypeDic.ContainsKey(item.WorkPostId) ? workPostTypeDic[item.WorkPostId] : "";
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (string.IsNullOrEmpty(newPersonInfo.WorkAreaName) && !string.IsNullOrEmpty(newPersonInfo.WorkAreaId))
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                                string unitWorkName = string.Empty;
							 | 
						|||
| 
								 | 
							
								                                if (!string.IsNullOrEmpty(newPersonInfo.WorkAreaId))
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    string[] strs = newPersonInfo.WorkAreaId.Split(',');
							 | 
						|||
| 
								 | 
							
								                                    foreach (var i in strs)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                                        unitWorkName += unitWorkDic.ContainsKey(i) ? unitWorkDic[i] + "," : "";
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                    if (!string.IsNullOrEmpty(unitWorkName))
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        unitWorkName = unitWorkName.Substring(0, unitWorkName.LastIndexOf(","));
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                                newPersonInfo.WorkAreaName = unitWorkName;
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                            newPersonInfo.IsIn = true;
							 | 
						|||
| 
								 | 
							
								                            newPersonInfo.ChangeTime = Funs.GetNewDateTimeOrNow(this.txtInTime.Text);
							 | 
						|||
| 
								 | 
							
								                            list.Add(newPersonInfo);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                        if (this.ckOut.Checked)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            Model.SitePerson_PersonInOut newPersonInfo = new Model.SitePerson_PersonInOut
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                PersonInOutId = SQLHelper.GetNewID(),
							 | 
						|||
| 
								 | 
							
								                                PersonId = item.PersonId,
							 | 
						|||
| 
								 | 
							
								                                ProjectId = item.ProjectId,
							 | 
						|||
| 
								 | 
							
								                                WorkAreaId = item.WorkAreaId,
							 | 
						|||
| 
								 | 
							
								                                InOutWay = Const.InOutWay_2,
							 | 
						|||
| 
								 | 
							
								                            };
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                            newPersonInfo.ProjectId = item.ProjectId;
							 | 
						|||
| 
								 | 
							
								                            newPersonInfo.PersonId = item.PersonId;
							 | 
						|||
| 
								 | 
							
								                            newPersonInfo.PersonName = item.PersonName;
							 | 
						|||
| 
								 | 
							
								                            newPersonInfo.IdentityCard = item.IdentityCard;
							 | 
						|||
| 
								 | 
							
								                            newPersonInfo.UnitId = item.UnitId;
							 | 
						|||
| 
								 | 
							
								                            newPersonInfo.UnitName = unitNameDic.ContainsKey(item.UnitId) ? unitNameDic[item.UnitId] : "";
							 | 
						|||
| 
								 | 
							
								                            newPersonInfo.WorkPostId = item.WorkPostId;
							 | 
						|||
| 
								 | 
							
								                            if (!string.IsNullOrEmpty(item.WorkPostId))
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                newPersonInfo.WorkPostName = workPostNameDic.ContainsKey(item.WorkPostId) ? workPostNameDic[item.WorkPostId] : "";
							 | 
						|||
| 
								 | 
							
								                                newPersonInfo.PostType = workPostTypeDic.ContainsKey(item.WorkPostId) ? workPostTypeDic[item.WorkPostId] : "";
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (string.IsNullOrEmpty(newPersonInfo.WorkAreaName) && !string.IsNullOrEmpty(newPersonInfo.WorkAreaId))
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                string unitWorkName = string.Empty;
							 | 
						|||
| 
								 | 
							
								                                if (!string.IsNullOrEmpty(newPersonInfo.WorkAreaId))
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    string[] strs = newPersonInfo.WorkAreaId.Split(',');
							 | 
						|||
| 
								 | 
							
								                                    foreach (var i in strs)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                                        unitWorkName += unitWorkDic.ContainsKey(i) ? unitWorkDic[i] + "," : "";
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                    if (!string.IsNullOrEmpty(unitWorkName))
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        unitWorkName = unitWorkName.Substring(0, unitWorkName.LastIndexOf(","));
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                                newPersonInfo.WorkAreaName = unitWorkName;
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                            newPersonInfo.IsIn = false;
							 | 
						|||
| 
								 | 
							
								                            newPersonInfo.ChangeTime = Funs.GetNewDateTimeOrNow(this.txtOutTime.Text);
							 | 
						|||
| 
								 | 
							
								                            list.Add(newPersonInfo);
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    Thread t = new Thread(new ThreadStart(() =>
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        BLL.PersonInOutService.AddPersonInOut(list);
							 | 
						|||
| 
								 | 
							
								                    }));
							 | 
						|||
| 
								 | 
							
								                    t.Start();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    Alert.ShowInParent("当前项目没有身份证合法的在岗人员!", MessageBoxIcon.Warning);
							 | 
						|||
| 
								 | 
							
								                    return;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            else
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                Alert.ShowInParent("请选择进场或出场!", MessageBoxIcon.Warning);
							 | 
						|||
| 
								 | 
							
								                return;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            ShowNotify("提交成功!", MessageBoxIcon.Success);
							 | 
						|||
| 
								 | 
							
								            PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        protected void ck_CheckedChanged(object sender, CheckedEventArgs e)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            this.txtInTime.Text = string.Empty;
							 | 
						|||
| 
								 | 
							
								            if (this.ckIn.Checked)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                this.txtInTime.Text = string.Format("{0:yyyy-MM-dd HH:mm}", System.DateTime.Now);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            this.txtOutTime.Text = string.Empty;
							 | 
						|||
| 
								 | 
							
								            if (this.ckOut.Checked)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                this.txtOutTime.Text = string.Format("{0:yyyy-MM-dd HH:mm}", System.DateTime.Now);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |