public static int SignIn(string userName, string userId, double lng, double lat) { TreatFee f = new TreatFee(); List <TreatFee> fee = f.Select(" and billman='" + userName + "' and VBCODE= '打卡申请' and left(createtime, 10) = CONVERT(varchar(10), GETDATE(), 120) and state=10 order by id desc "); if (fee.Count > 0) { double lng_kf = fee[0].KFLNG == null ? -1 : Convert.ToDouble(fee[0].KFLNG); double lat_kf = fee[0].KFLAT == null ? -1 : Convert.ToDouble(fee[0].KFLAT); DateTime now = System.DateTime.Now; if (MyGlobal.AERA_CHECK)//是否距离校验 { if (LngLatDis.GetDistance(lng, lat, lng_kf, lat_kf) > MyGlobal.VISITAERA) { return(-3);//距离超长 } } //else //{ L_SIGN s = new L_SIGN(); string date_s = now.ToString("yyyy-MM-dd"); List <L_SIGN> l = s.Select(" AND USERID='" + userId + "' AND DATE='" + date_s + "' "); if (l.Count <= 0)//今日无签到记录 { L_SIGN mm = new L_SIGN(); mm.USERID = userId; mm.TURENAME = userName; mm.DATE = date_s; mm.TIME_A = SysTime.GetTime.ToString("yyyy-MM-dd HH:mm:ss"); mm.NAME_A = fee[0].CLIENT; mm.LAT_A = lat.ToString(); mm.LNG_A = lng.ToString(); mm.R_CODE_IN = fee[0].BILLCODE; mm.Insert(); return(0); } else//今日记录已存在 { string sign_in = l[0].TIME_A == null ? "" : l[0].TIME_A; string sign_out = l[0].TIME_D == null ? "" : l[0].TIME_D; if (sign_in.Trim() != "") //上班已签到 { return(-4); //已签到 } else if (sign_out != "") { return(-5);//已签到下班 } else { L_SIGN mm = new L_SIGN(); mm.TIME_A = SysTime.GetTime.ToString("yyyy-MM-dd HH:mm:ss"); mm.NAME_A = fee[0].CLIENT; mm.LAT_A = lat.ToString(); mm.LNG_A = lng.ToString(); mm.R_CODE_IN = fee[0].BILLCODE; mm.Updata(" and id=" + l[0].ID); return(0); } } } else { return(-2);//没有任何单子 } }
/// <summary> /// 返回 -1:没有该人员 -2:没有任何单子 -3:距离超长 -4:已签到 -5;已签到下班 0:成功 /// </summary> /// <param name="userId"></param> /// <param name="lng"></param> /// <param name="lat"></param> /// <returns></returns> public static int SignOut(string userName, string userId, double lng, double lat) { puku_user user = new puku_user(); List <puku_user> pukus = user.Select(" and USERPU='" + userId + "' and ISSTOP='否' and left(ZF4, 10)= CONVERT(varchar(10), GETDATE(), 120) "); if (pukus.Count > 0) { //double lng_kf = pukus[0].ZF2 == null ? -1 : Convert.ToDouble(pukus[0].ZF2); //double lat_kf = pukus[0].ZF3 == null ? -1 : Convert.ToDouble(pukus[0].ZF3); //if (lng_kf == -1 || lat_kf == -1) //{ // return -2;//没有任何单子 //} //else //{ string date = System.DateTime.Now.ToString("yyyy-MM-dd"); if (MyGlobal.AERA_CHECK) //是否距离校验 { if (LngLatDis.GetDistance(lng, lat, Convert.ToDouble(pukus[0].ZF2), Convert.ToDouble(pukus[0].ZF3)) > MyGlobal.VISITAERA) { return(-3); //距离超长 } } //else //{ L_SIGN s = new L_SIGN(); List <L_SIGN> l = s.Select(" AND USERID='" + userId + "' AND DATE='" + date + "' "); if (l.Count <= 0) //今日无签到记录 { L_SIGN mm = new L_SIGN(); mm.USERID = userId; mm.TURENAME = pukus[0].TURENAME; mm.DATE = date; mm.TIME_D = SysTime.GetTime.ToString("yyyy-MM-dd HH:mm:ss"); mm.NAME_D = pukus[0].ZF1; mm.LAT_D = lat.ToString(); //签到时 用户的位置 mm.LNG_D = lng.ToString(); mm.R_CODE_OUT = pukus[0].REFERCODE; //签到依据的单据 mm.Insert(); return(0); } else //今日记录已存在 { string sign_out = l[0].TIME_D == null ? "" : l[0].TIME_D; if (sign_out.Trim() != "") //下班已签到 { return(-4); //已签到 } else { L_SIGN mm = new L_SIGN(); mm.TIME_D = SysTime.GetTime.ToString("yyyy-MM-dd HH:mm:ss"); mm.NAME_D = pukus[0].ZF1; mm.LAT_D = lat.ToString(); mm.LNG_D = lng.ToString(); mm.R_CODE_OUT = pukus[0].REFERCODE; mm.Updata(" and id=" + l[0].ID); return(0); } } //} } else { return(-2);//没有该人员 } }