123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- <?php
- /**
- * Created by PhpStorm.
- * User: sicilon_IT
- * Date: 2020/1/30
- * Time: 10:59
- */
- namespace app\index\logic;
- use app\index\model\checkinfomodel;
- use app\index\model\checkoprmodel;
- use app\index\model\pwrelationmodel;
- use app\index\model\daycheckinfo;
- use app\index\model\ginfomodel;
- use app\index\model\wheadmodel;
- use app\index\model\gworkermodel;
- class checkmanger{
- //20200203 日起停止使用,改从daycheckinfo中读取
- public function getchecklistbyhead($checkhead,$checkdate,$checkshift){
- $check_table=new checkinfomodel();
- $list=$check_table->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;
- }
- }
|