where($where_arr)->find();
return $rec;
}
//新增
public function addnewcheck($checkinfo){
//判断是否存在
$pid=$checkinfo['pid'];
$checkdate=$checkinfo['checkdate'];
$wid=$checkinfo['wid'];
$rec=$this->getinfobywid($pid,$checkdate,$wid);
if (empty($rec)){
$this->isUpdate(false)->setAttr('id',null)->save($checkinfo);
$rid=$this->id;
}else{
$rid=$rec['id'];
$this->updatebycheck($checkinfo,$rid);
}
$this->addtwoshift($rid);
return $rid;
}
public function updatebycheck($checkinfo,$id){
$where_arr['id']=$id;
$rid=$this->where($where_arr)->update($checkinfo);
return $rid;
}
private function addtwoshift($id){
$stradd='update t_daycheckinfo ';
$stradd=$stradd." set dayscore=if(isnull(score_1),0,score_1)+if(isnull(score_2),0,score_2)";
$stradd=$stradd." where id=".$id;
$this->execute($stradd);
}
public function getusercheckinfobywid($wid){
$where_arr['wid']=$wid;
$list=$this->where($where_arr)->order('checkdate')->select();
return $list;
}
/*
* 20200216
* steelxu
* 按月,按人查询的端口
*/
public function getusercheckinfobywidwithmonth($wid,$strmonth){
$strsql="select *";
$strsql=$strsql." from t_daycheckinfo";
$strsql=$strsql." where wid=".$wid." and checkdate like '".$strmonth."%'";
$strsql=$strsql." order by checkdate";
$list=$this->query($strsql);
return $list;
}
public function getchecklistbyheadwithdate($headid,$checkdate){
$strsql="select *";
$strsql=$strsql." from t_daycheckinfo";
$strsql=$strsql." where checkdate='".$checkdate."' and ((headid_1=".$headid.") or (headid_2=".$headid."))";
$rlist=$this->query($strsql);
return $rlist;
}
/*
* 20200206
* steelxu
* 汇总统计记工数据
* param $formatmoth 是格式化的月份,格式化工作在上一级完成
* 20200401
* 修改,测试项目记录的不导出
*/
public function countcheckbymonth($formatmonth,$start,$len){
$strsql= "select wid,wname,count(dayscore) as daycount,sum(dayscore) as monthsum ";
$strsql=$strsql." from t_daycheckinfo ";
$strsql=$strsql." where checkdate like '".$formatmonth."%' and pid>3 and dayscore>0" ;//
$strsql=$strsql." group by wid";
if ($len>0){
//导出到execl时,传入 $len参数为0,不加此行,导出所有数据
$strsql=$strsql." limit ".$start.",".$len;
}
$rlist=$this->query($strsql);
return $rlist;
}
/*
* 20200421
* 在原方法上,增加返回的推荐奖励数据的一个方法
* 从架构上而言,这是一种临时的省事的做法,
* 再有新的奖励,就必须创建一个奖励类来处理业务逻辑,再合并到输出中
*/
public function countcheckwithawardbymonth($formatmonth,$start,$len){
$strsql= "select a.wid,a.wname,count(a.dayscore) as daycount,sum(a.dayscore) as monthsum,b.sumaward";
$strsql=$strsql." from t_daycheckinfo a left join t_recuitaward b on a.wid=b.recuituser and b.summonth='".$formatmonth."'";
$strsql=$strsql." where checkdate like '".$formatmonth."%' and pid>3 and dayscore>0" ;//
$strsql=$strsql." group by wid";
if ($len>0){
//导出到execl时,传入 $len参数为0,不加此行,导出所有数据
$strsql=$strsql." limit ".$start.",".$len;
}
$rlist=$this->query($strsql);
return $rlist;
}
/*
* 20230215
* 在原有的方式上,加上一个公司id来处理
*/
public function countcompanycheckwithawardbymonth($formatmonth,$start,$len,$cid){
$strsql= "select a.wid,a.wname,count(a.dayscore) as daycount,sum(a.dayscore) as monthsum,b.sumaward";
$strsql=$strsql." from t_daycheckinfo a left join t_recuitaward b on a.wid=b.recuituser and b.summonth='".$formatmonth."' left join t_pinfo c on a.pid=c.id";
$strsql=$strsql." where checkdate like '".$formatmonth."%' and c.companyid=".$cid." and dayscore>0" ;//
$strsql=$strsql." group by wid";
if ($len>0){
//导出到execl时,传入 $len参数为0,不加此行,导出所有数据
$strsql=$strsql." limit ".$start.",".$len;
}
$rlist=$this->query($strsql);
return $rlist;
}
/*
* 20200208
* steelxu
* 获取某员工某月的记工记录
*/
public function getcheckinfobywidwithmonth($wid,$strmonth){
$strsql= "select * ";
$strsql=$strsql." from t_daycheckinfo ";
$strsql=$strsql." where wid=".$wid." and checkdate like '".$strmonth."%' and pid>3";//
$strsql=$strsql." order by checkdate ";
$rlist=$this->query($strsql);
return $rlist;
}
/*
* 20200208
* steelxu
* 取消某员工某班次的记录
* 本函数未更新操作记录
*/
public function revokecheckshift($checkdate,$wid,$shift,$id){
$strsql="update t_daycheckinfo";
$strsql=$strsql." set score_".$shift."=0,headid_".$shift."=0,gid_".$shift."=0";
$strsql=$strsql." where checkdate='".$checkdate."' and wid=".$wid;
$res=$this->execute($strsql);
$this->addtwoshift($id);
return $res;
}
/*
* 20200208 获取某公司某班组长记工的记录
* steelxu
* 解决班组长可以撤销操作记录的功能
*/
public function getlistbyheadwithshift($checkdate,$shift,$headid,$gid){
$strsql="select id,wid,wname,checkdate,score_".$shift." as score";
$strsql=$strsql." from t_daycheckinfo";
$strsql=$strsql." where checkdate='".$checkdate."' and headid_".$shift."=".$headid." and gid_".$shift."=".$gid;
$rlist=$this->query($strsql);
return $rlist;
}
/*
* 20200215
* steelxu
* 按月给工人汇总工分
*/
public function totalcheckbymonthwithwid($wid){
$strsql="select wid,wname,left(checkdate,7) as strmonth,count(*) as daycount,sum(dayscore) as monthsum";
$strsql=$strsql." from t_daycheckinfo";
$strsql=$strsql." where wid=".$wid;
$strsql=$strsql." group by left(checkdate,7)";
$strsql=$strsql." order by left(checkdate,7) desc";
$rlist=$this->query($strsql);
return $rlist;
}
/*
* 20200307
* 做一个查加班的记录
* 此记录是单独记录,但不是
*
*/
public function selscorewithprjbyscore($start,$len){
$strsql="select a.wid,a.wname,a.checkdate,a.score_1,b.wname as mname_1,a.score_2,c.wname as mname_2,d.pname as prjname ";
$strsql=$strsql." from t_daycheckinfo a INNER JOIN t_workerinfo b on a.headid_1=b.id INNER JOIN t_workerinfo c on a.headid_2=c.id INNER JOIN t_pinfo d on a.pid=d.id";
$strsql=$strsql." where score_1>5 or score_2>5 ";
$strsql=$strsql." order by a.pid,a.wid";
$strsql=$strsql." limit $start,$len";
$rlist=$this->query($strsql);
return $rlist;
}
/*
* 20230215
* 修改查加班的记录的功能 ,只能查自己公司的
*/
public function selscorewithprjbyscorecid($start,$len,$cid){
$strsql="select a.wid,a.wname,a.checkdate,a.score_1,b.wname as mname_1,a.score_2,c.wname as mname_2,d.pname as prjname ";
$strsql=$strsql." from t_daycheckinfo a INNER JOIN t_workerinfo b on a.headid_1=b.id INNER JOIN t_workerinfo c on a.headid_2=c.id INNER JOIN t_pinfo d on a.pid=d.id";
$strsql=$strsql." where (a.score_1>5 or a.score_2>5) and d.companyid=".$cid;
$strsql=$strsql." order by a.pid,a.wid";
$strsql=$strsql." limit $start,$len";
$rlist=$this->query($strsql);
return $rlist;
}
/*
* 20200308 完成按班组统计的数据
*/
public function selsuminfobygid($gid,$strmonth){
// $datenow=date('Y-m-d');
$strsql="select checkdate,sum(case when gid_1=$gid then score_1 else 0 end) as d_score_1,sum(case when gid_2=$gid then score_2 else 0 end) as d_score_2";
$strsql=$strsql." from t_daycheckinfo";
$strsql=$strsql." where checkdate like '$strmonth%'";
$strsql=$strsql." group by checkdate";
// echo $strsql;
// echo '
';
$rlist=$this->query($strsql);
return $rlist;
}
/*
* 20200312
* 按项目,起始日期,统计出勤记录
*
*/
public function selcinfowithdate($startday,$endday,$pid){
$strsql="select checkdate,pid,count(*) as workernumber ";
$strsql=$strsql." from t_daycheckinfo";
$strsql=$strsql." where checkdate>='".$startday."' and checkdate<='".$endday."' and pid=".$pid;
$strsql=$strsql." group by checkdate";
$r_list=$this->query($strsql);
return $r_list;
}
/*
* 20200315
* 实现按班组按人的统计
*/
public function selworksumbygidwithdate($gid,$strmonth){
// $datenow=date('Y-m-d');
$strsql="select checkdate,wid,wname,sum(case when gid_1=$gid then score_1 else 0 end) as d_score_1,sum(case when gid_2=$gid then score_2 else 0 end) as d_score_2";
$strsql=$strsql." from t_daycheckinfo";
$strsql=$strsql." where checkdate like '$strmonth%'";
$strsql=$strsql." group by checkdate,wid";
$strsql=$strsql." having d_score_1>0 or d_score_2>0";
// echo $strsql;
// echo '
';
$rlist=$this->query($strsql);
return $rlist;
}
/*
* 20200419
* 获取某员工某一时间段的工作记录
*
*/
public function selcountbyidwithdate($id,$bdate,$edate){
$strsql="select wid,checkdate, sum(dayscore) as sumds";
$strsql=$strsql." from t_daycheckinfo";
$strsql=$strsql." where wid=$id and checkdate>='".$bdate."' and checkdate<='".$edate."'";
$strsql=$strsql." group by checkdate";
$strsql=$strsql." having sumds>=10";
$rlist=$this->query($strsql);
if($rlist){
$rlist=collection($rlist)->toArray();
return count($rlist);
}else{
return 0;
}
}
/*
* 20200729
* 根据GID获取已取班次已经记工的人数
*/
public function selcountbygid($gid,$checkdate,$shift){
$strsql="select count(id) as checkcount";
$strsql=$strsql." from t_daycheckinfo";
$strsql=$strsql." where gid_$shift=$gid and checkdate='".$checkdate."' and score_$shift>0";
$count=$this->query($strsql);
$count=collection($count)->toArray();
return $count;
}
/*
* 20210807
*/
public function selscorebyidwithdays($id,$bdate){
$strsql="select wid,checkdate, sum(dayscore) as sumds";
$strsql=$strsql." from t_daycheckinfo";
$strsql=$strsql." where wid=$id and checkdate>='".$bdate."'";
$rlist=$this->query($strsql);
if($rlist){
$rlist=collection($rlist)->toArray();
return count($rlist);
}else{
return 0;
}
}
/*
* 20230215
*/
public function selinfobyid($id){
$where['id']=$id;
$rec=$this->where($where)->find();
return $rec;
}
}