rs['fenzp']);
$fensj = floatval($this->rs['fensj']);
$fenrs = floatval($this->rs['fenrs']);
//默认分数=自己评分*50% + 上级评分*25% + 人事评分*25%
$fen = $fenzp*0.5 + $fensj*0.25 + $fenrs*0.25;
//3个平均分
//$fen = ($fenzp+$fensj+$fenrs)/3;
$this->update(array('fen' => $fen), $this->id);
}
}
//需要评分就可以查看
protected function flowisreadqx()
{
$boss = $this->getpfrows();
if($boss)return true;
return false;
}
private function getpfrows()
{
return m('hrcheckn')->getall('mid='.$this->id.' and `optid`='.$this->adminid.' and `optdt` is null','*', '`sort`');
}
public function flowrsreplace($rs, $lx=0)
{
if(isset($rs['abclex']))return $rs;
$ztstr = '';
if(isempt($rs['pfrens'])){
$ztstr = '评分已完成';
}else{
if($rs['uid']==$this->adminid){
$ztstr = '待'.$rs['pfrens'].'评分';
}else{
$ztstr = '待评分';
}
}
$rs['pfrenids'] = $ztstr;
if($lx==1){
$ckbo = $this->isreadqxs();//是否设置查看权限
$ispf = $this->getpfrows();
if(!$ispf){
if($ckbo){ //设置可查看
$rs['subdatastr'] = $this->getsubdatastr($this->id);
$this->moders['isgbcy'] = 0;
$this->moders['isgbjl'] = 0;
}else{
if($rs['uid']!=$this->adminid)$rs['fen'] = '-';
}
}else{
$rs['fen'] = '-';
}
}
if($rs['uid']!=$this->adminid && !contain($this->atype, 'all'))$rs['fen']='-';//自己只能看自己分
return $rs;
}
public function getsubdatastr($id, $glx=0)
{
$srows = m('hrchecks')->getrows('`mid`='.$id.'','*','`sort`');
$nrows = m('hrcheckn')->getrows('`mid`='.$id.'','*','`sort`');
$pars = array();
$fsarr = array();
foreach($nrows as $k2=>$rs2){
$pars[$rs2['pfid']] = $rs2['pfname'].'
'.$rs2['optname'].'(权重'.$rs2['weight'].'%)';
$fsarr['s'.$rs2['sid'].'_'.$rs2['pfid'].''] = $rs2['defen'];
}
$fenshu = 0;
$toarr = array();
foreach($srows as $k1=>&$rs1){
$rs1['xuhaos'] = $k1+1;
foreach($pars as $k3=>$v3){
$val = arrvalue($fsarr, 's'.$rs1['id'].'_'.$k3.'');
if(!isset($toarr[$k3]))$toarr[$k3] = 0;
$toarr[$k3]+=floatval($val);
if($val==0)$val= '';
$rs1['pfzd'.$k3.''] = $val; //得分
}
$fenshu+=floatval($rs1['fenshu']);
}
//统计的
$tjarr = array();
foreach($toarr as $k3=>$v1){
if($v1==0)$v1='';
$tjarr['pfzd'.$k3.''] = $v1;
}
$tjarr['itemname'] = '小计';
$tjarr['fenshu'] = $fenshu;
$srows[]= $tjarr;
if($glx==1){
return array(
'data'=>$srows,
'colums'=> $pars
);
}
$herstr = 'xuhaos,,center@itemname,考核内容,left@fenshu,分值';
foreach($pars as $k1=>$v1)$herstr.='@pfzd'.$k1.','.$v1.'';
$pfrowsstr = c('html')->createrows($srows, $herstr,'#dddddd');
return $pfrowsstr;
}
protected function flowinit()
{
$this->dtobj = c('date');
}
protected function flowbillwhere($uid, $lx)
{
$month = $this->rock->post('month');
$where = '';
if(!isempt($month)){
$where="and a.`startdt` like '".$month."%'";
}
return array(
'table' => '`[Q]hrcheck` a left join `[Q]userinfo` b on a.uid=b.id',
'fields' => 'a.*,b.deptname',
'asqom' => 'a.',
'where' => $where,
'orlikefields' => 'b.deptname'
);
}
//是否可评分
protected function flowdatalog($arr)
{
$pfrows = $this->getpfrows();
foreach($pfrows as $k=>&$rs){
$rs['xuhaos'] = $k+1;
$rs['defenstr'] = '';
$rs['itemname'] = '
'.$rs['itemname'].'
';
}
$pfrowsstr = c('html')->createrows($pfrows, 'xuhaos,,center@itemname,考核内容,left@pfname,评分名称@fenshu,总分数@defenstr,评分分数','#dddddd');
return array(
'pfrows' => $pfrows,
'pfrowsstr' => $pfrowsstr,
);
}
public function hrkaohemrun()
{
$dt = $this->rock->date;
$dbs = m('hrkaohes');
$dbs1 = m('hrchecks');
$dbn1 = m('hrcheckn');
$dbn = m('hrkaohen');
$rows = m('hrkaohem')->getall("`status`=1 and `startdt`<='$dt' and `enddt`>='$dt'");
$keox = 0;
foreach($rows as $k=>$rs){
$bo = $this->xuyuns($rs);
if(!$bo)continue;
$keox++;
$rowxm = $dbs->getall("`mid`='".$rs['id']."'",'*','`sort`');
$rowpf = $dbn->getall("`mid`='".$rs['id']."'",'*','`sort`');
$inarr = array(
'khid' => $rs['id'],
'title' => $rs['title'],
'startdt' => $this->rock->date,
'applydt' => $this->rock->date,
'optdt' => $this->rock->now,
'createdt' => $this->rock->now,
'optname' => $rs['optname'],
'optid' => $rs['optid'],
'isturn' => 1,
'month' => date('Y-m'),
'status' => 1,
'enddt' => ''
);
if($rs['pfsj']>0)$inarr['enddt'] = $this->dtobj->adddate($inarr['startdt'],'d', $rs['pfsj']);
$recwe = $this->adminmodel->gjoin($rs['receid'],'', 'where');
$uarr = $this->adminmodel->getall("`status`=1 and ($recwe)",'id,name');
foreach($uarr as $uk=>$urs){
$inarr['uid'] = $urs['id'];
$inarr['applyname'] = $urs['name'];
$pfren = $pfrenid = $pfrenids = $pfrens = '';
$mid = 0;
$where1 = "`uid`='".$urs['id']."' and `startdt`='".$inarr['startdt']."' and `khid`='".$rs['id']."'";
if($mrs = $this->getone($where1)){
$mid= (int)$mrs['id'];
}else{
$where1= '';
}
//保存的hrcheck表
$bo = $this->record($inarr, $where1);
if($mid==0)$mid = $this->db->insert_id();
//在保存到hrchecks考核内容表
$sids = '0';
$sids1 = '0';
foreach($rowxm as $k1=>$rs1){
$where1 = "`mid`='$mid' and `itemname`='".$rs1['itemname']."'";
$sid = (int)$dbs1->getmou('id',$where1);
if($sid==0)$where1 = '';
$fenshu = floatval($rs['maxfen']) * floatval($rs1['weight']) * 0.01;
$dbs1->record(array(
'mid' => $mid,
'sort' => $k1,
'itemname' => $rs1['itemname'],
'weight' => $rs1['weight'],
'fenshu' => $fenshu
), $where1);
if($sid==0)$sid = $this->db->insert_id();
$sids.=','.$sid.'';
//添加到hrcheckn考核内容表
foreach($rowpf as $k2=>$rs2){
$pfarr = $this->getpftype($urs, $rs2);
$where2= "`mid`='$mid' and `pfid`='".$rs2['id']."' and `sid`='$sid'";
$sid1 = 0;
$srs = $dbn1->getone($where2);
if($srs){
$sid1 = (int)$srs['id'];
}
if($sid1==0)$where2 = '';
$dbn1->record(array(
'mid' => $mid,
'sort' => $k2,
'itemname' => $rs1['itemname'],
'weight' => $rs2['pfweight'],
'pfid' => $rs2['id'],
'pfname' => $rs2['pfname'],
'sid' => $sid,
'fenshu' => $fenshu,
'optid' => $pfarr[0],
'optname' => $pfarr[1],
),$where2);
if($sid1==0)$sid1 = $this->db->insert_id();
$sids1.=','.$sid1.'';
if(!isempt($pfarr[0]) && !contain(','.$pfrenid.',',','.$pfarr[0].',')){
$pfren .= ','.$pfarr[1];
$pfrenid .= ','.$pfarr[0];
}
//未评分人
$ispf = false;
if($srs && !isempt($srs['optdt']))$ispf=true;
if(!$ispf && !isempt($pfarr[0]) && !contain(','.$pfrenids.',',','.$pfarr[0].',')){
$pfrenids .= ','.$pfarr[0];
$pfrens .= ','.$pfarr[1];
}
}
}
$dbs1->delete("`mid`='$mid' and `id` not in($sids)");
$dbn1->delete("`mid`='$mid' and `id` not in($sids1)");
if($pfrenid!=''){
$pfrenid = substr($pfrenid,1);
$pfren = substr($pfren,1);
}
if($pfrenids!=''){
$pfrenids = substr($pfrenids, 1);
$pfrens = substr($pfrens, 1);
}
$this->update(array(
'pfrenid' => $pfrenid,
'pfren' => $pfren,
'pfrenids' => $pfrenids,
'pfrens' => $pfrens,
), $mid);
//发给对应人通知
$this->loaddata($mid, false);
$this->numtodosend('pftodo','评分');
}
}
return $keox;
}
private function xuyuns($rs){
$pinlv = $rs['pinlv'];
$sctime = $rs['sctime'];
if(isempt($sctime))return false;
if($pinlv=='d')return true; //每天
if($pinlv=='m'){
if(date('d')==date('d', strtotime($sctime)))return true;
}
//每季度
if($pinlv=='j'){
$m = (int)date('m');
$jdr = array(1,4,7,10);
if(in_array($m, $jdr)){
if(date('d')==date('d', strtotime($sctime)))return true;
}
}
//每年
if($pinlv=='y'){
if(date('m-d')==date('m-d', strtotime($sctime)))return true;
}
return false;
}
//获取评分人
private function getpftype($urs, $rs2){
$pftype = $rs2['pftype'];
$sid = '';
$sna = '';
if(!isempt($rs2['pfren'])){
$sid = $rs2['pfrenid'];
$sna = $rs2['pfren'];
}
if($pftype=='my'){
$sid = $urs['id'];
$sna = $urs['name'];
}
//上级
if($pftype=='super' && $sid==''){
$sua = $this->adminmodel->getsuperman($urs['id']);
if($sua){
$sid = $sua[0];
$sna = $sua[1];
}
}
return array($sid, $sna);
}
public function defen($mid)
{
$rows = m('hrcheckn')->getall('`mid`='.$mid.'');
$fshu = 0;
$pfren = $pfrenid = $pfrenids = $pfrens = '';
foreach($rows as $k=>$rs){
$fshu += floatval($rs['defen']) * floatval($rs['weight']) * 0.01;
if(!isempt($rs['optid']) && !contain(','.$pfrenid.',',','.$rs['optid'].',')){
$pfren .= ','.$rs['optname'];
$pfrenid .= ','.$rs['optid'];
}
if(isempt($rs['optdt']) && !isempt($rs['optid']) && !contain(','.$pfrenids.',',','.$rs['optid'].',')){
$pfrenids .= ','.$rs['optid'];
$pfrens .= ','.$rs['optname'];
}
}
if($pfrenid!=''){
$pfrenid = substr($pfrenid,1);
$pfren = substr($pfren,1);
}
if($pfrenids!=''){
$pfrenids = substr($pfrenids, 1);
$pfrens = substr($pfrens, 1);
}
$this->update(array(
'pfrenid' => $pfrenid,
'pfren' => $pfren,
'pfrenids' => $pfrenids,
'pfrens' => $pfrens,
'fen' => $fshu,
), $mid);
}
/**
* 提交评分
*/
public function pingfen()
{
$str = $this->rock->post('str');
$star= c('array')->strtoarray($str);
$dbn = m('hrcheckn');
foreach($star as $kv2){
$sid = $kv2[0];
$defen = $kv2[1];
$uarr = array(
'defen' => $defen,
'optdt' => $this->rock->now
);
$dbn->update($uarr, $sid);
}
$this->defen($this->id);
$sm = $this->rock->post('sm');
$this->addlog(array(
'name' => '评分',
'explain' => $sm
));
//$this->numtodosend('pftz','评分', $sm);
return 'ok';
}
}