getchecklistbyheader($checkhead,$checkdate,$checkshift); return $list; } //20200203 日起使用,从daycheckinfo中读取 public function getchecklistbyheadwithdate($checkhead,$checkdate){ $daycheck_table=new daycheckinfo(); $list=$daycheck_table->getchecklistbyheadwithdate($checkhead,$checkdate); return $list; } /* * getprjcheckoprbywid 于20200203日停止使用,仅保留代码 * */ public function getprjcheckoprbywid($wid,$checkdate,$shift){ //获得项目ID $pw_tabel=new pwrelationmodel(); $pid=$pw_tabel->getpidbywid($wid); if ($pid>0){ //获取项目下,当天班次所有打分记录 $opr_t=new checkoprmodel(); $list=$opr_t->getoprinfobypid($pid,$checkdate,$shift); return $list; }else{ //此人无项目 $list=array(); return $list; } } //20200203开始使用,按日汇总考勤,参数中去掉了班次参数 public function getheadcheckoprwithdate($wid,$checkdate){ //获得项目ID $pw_tabel=new pwrelationmodel(); $pid=$pw_tabel->getpidbywid($wid); if ($pid>0){ //获取项目下,当天班次所有打分记录 $opr_t=new checkoprmodel(); $list=$opr_t->getoprinfobypid($pid,$checkdate); return $list; }else{ //此人无项目 $list=array(); return $list; } } /* * 20200403 * 获取项目经理个人所有的记工记录 */ public function getoprinfobyhid($arr){ $hid=$arr['hid']; $startdate=date('Y-m-d',strtotime('-60 day')); $opr_t=new checkoprmodel(); $list=$opr_t->seloprlistbyhid($hid,$startdate); return $list; } /* * 20200206 * steelxu * 按人汇总表的数据,汇人总的天数,总记分 * 先直接应用daycheckinfo实现 * 20200325 * 加身份证号 */ public function getsumcheckinfo($query_arr){ $month=$query_arr['monthinfo']; $year=$query_arr['yearinfo']; $pageNum=$query_arr['pageNum']; $pageSize=$query_arr['pageSize']; $start=($pageNum-1)*$pageSize; if (strlen($month)==1){ $month='0'.$month; } $strmonth=$year.'-'.$month; $dc_table=new daycheckinfo(); //20200421 为统计推荐奖金,启用新方法, //$r_list=$dc_table->countcheckbymonth($strmonth,$start,$pageSize); //20200421 含 奖励计算的新方法 $r_list=$dc_table->countcheckwithawardbymonth($strmonth,$start,$pageSize); //获取所有工人信息 //todo 此处在数据量大时可优化,可重写model层查询,只返回id和身份证,这样效率更高,现在暂时不用 $t_w=new gworkermodel(); $w_list=$t_w->selshengfengzhenglist(); $sfzlist=array(); foreach($w_list as $k){ $id=$k['id']; if($k['shengfengid']){ $sfzlist[$id]=$k['shengfengid']; }else{ $sfzlist[$id]=''; } } //获得了总体数据,获取每日数据 foreach ($r_list as &$v) { $wid=$v['wid']; $v['sfz']=$sfzlist[$wid]; $detail_arr=$dc_table->getcheckinfobywidwithmonth($wid,$strmonth); foreach($detail_arr as $k){ $daystr=substr($k['checkdate'],-2); // echo $k['checkdate']; // echo $daystr; $v[$daystr]=$k['dayscore']; } } return $r_list; } /* * 20230215 * 加上公司的 */ public function getsumcompanycheckinfo($query_arr){ $month=$query_arr['monthinfo']; $year=$query_arr['yearinfo']; $pageNum=$query_arr['pageNum']; $pageSize=$query_arr['pageSize']; $cid=$query_arr['companyid']; $start=($pageNum-1)*$pageSize; if (strlen($month)==1){ $month='0'.$month; } $strmonth=$year.'-'.$month; $dc_table=new daycheckinfo(); //20200421 为统计推荐奖金,启用新方法, //$r_list=$dc_table->countcheckbymonth($strmonth,$start,$pageSize); //20200421 含 奖励计算的新方法 // $r_list=$dc_table->countcheckwithawardbymonth($strmonth,$start,$pageSize); //20230215 加上公司 $r_list=$dc_table->countcompanycheckwithawardbymonth($strmonth,$start,$pageSize,$cid); //获取所有工人信息 //todo 此处在数据量大时可优化,可重写model层查询,只返回id和身份证,这样效率更高,现在暂时不用 //身份证还是取全部的,因为人员会流动,无论那种方式都会有问题,最后再看如何优化 // 问题在于,如果工人数量较多,再和工人身份证做连接,将是a*b的数量级的运算, //如果取出来,则是a+b的运算, $t_w=new gworkermodel(); $w_list=$t_w->selshengfengzhenglist(); // $w_list=$t_w->selcompanyshengfengzhenglist($cid); $sfzlist=array(); foreach($w_list as $k){ $id=$k['id']; if($k['shengfengid']){ $sfzlist[$id]=$k['shengfengid']; }else{ $sfzlist[$id]=''; } } //获得了总体数据,获取每日数据 foreach ($r_list as &$v) { $wid=$v['wid']; if($sfzlist[$wid]){ $v['sfz']=$sfzlist[$wid]; $detail_arr=$dc_table->getcheckinfobywidwithmonth($wid,$strmonth); foreach($detail_arr as $k){ $daystr=substr($k['checkdate'],-2); // echo $k['checkdate']; // echo $daystr; $v[$daystr]=$k['dayscore']; } } } return $r_list; } /* * 20200208 * steelxu * 取消某员工,某班次考勤 * 20200209 增加对操作记录的处理,在opr 表中增加一条 -1的记录 * 20200307,增加对撤销时gid的撤销操作 */ public function invokecheckbywid($query_arr){ $wid=$query_arr['wid']; $checkdate=$query_arr['checkdate']; $shift=$query_arr['shift']; $id=$query_arr['id']; $headid=$query_arr['headid']; if (array_key_exists('gid',$query_arr)){ $gid=$query_arr['gid']; }else{ $t_head=new wheadmodel(); $gid=$t_head->getgidbywid($wid); } $dc_table=new daycheckinfo(); $res=$dc_table->revokecheckshift($checkdate,$wid,$shift,$id); $ginfo=new ginfomodel(); $pid=$ginfo->getpidbygid($gid); $opr_arr['pid']=$pid; $opr_arr['checkdate']=$checkdate; $opr_arr['checkorder']=$shift; $opr_arr['headid']=$headid; $opr_arr['isopr']=1; $opr_arr['gid']=$gid; $opr_arr['wnum']=-1; $opr_arr['oprtime']=date('Y:m:d H:i:s'); $oprtable=new checkoprmodel(); $oprtable->saveOprRecord($opr_arr); return $res; } /* * 20200208 * steelxu * 获取班组长某班次的记工记录, * 以便班组长取消 *20200416 * 取出时只有当时所在的班组才能修改,换了班组则不可以 * */ public function getheadoprwithshift($query_arr){ $headid=$query_arr['wid']; $checkdate=$query_arr['checkdate']; $shift=$query_arr['shift']; //获取班组 $ghead=new wheadmodel(); $gid=$ghead->getgidbywid($headid); $dc_table=new daycheckinfo(); $rlist=$dc_table->getlistbyheadwithshift($checkdate,$shift,$headid,$gid); return $rlist; } public function getworkovertime($pagenum,$pagesize){ $start=($pagenum-1)*$pagesize; $t_dayscore=new daycheckinfo(); $rlist=$t_dayscore->selscorewithprjbyscore($start,$pagesize); return $rlist; } /* * 20230215 * 修改查加班的功能,只能查本公司的 */ public function getworkovertimebycid($pagenum,$pagesize,$cid){ $start=($pagenum-1)*$pagesize; $t_dayscore=new daycheckinfo(); $rlist=$t_dayscore->selscorewithprjbyscorecid($start,$pagesize,$cid); return $rlist; } }