941 lines
25 KiB
PHP
941 lines
25 KiB
PHP
<?php
|
||
class kaoqinClassAction extends Action
|
||
{
|
||
|
||
|
||
public function kqdkjlaftershow($table, $rows)
|
||
{
|
||
$reimbo = m('reim');
|
||
return array(
|
||
'rows' => $rows,
|
||
'qybo' => $reimbo->installwx(1),
|
||
'ddbo' => $reimbo->installwx(2),
|
||
);
|
||
}
|
||
|
||
//获取打卡记录
|
||
public function getdkjlAjax()
|
||
{
|
||
$reimbo = m('reim');
|
||
$uids = $this->adminid;
|
||
if($this->post('atype')=='all')$uids = '';//全部
|
||
$dt1 = $this->post('dt1');
|
||
$dt2 = $this->post('dt2');
|
||
$msg = '获取成功';
|
||
$daka = $this->option->getval('qywxplat_daka');
|
||
if($daka=='1'){
|
||
$barr = c('rockqywx')->getcheckindata($uids, $dt1, $dt2, 1);
|
||
if(!$barr['success']){
|
||
$msg = $barr['msg'];
|
||
}else{
|
||
$data = $barr['data'];
|
||
$msg .= ',从代建中应用获取打卡(共'.$data['zongts'].'条,新增'.$data['okload'].'条)';
|
||
if($data['maxpage']>1)$msg.=',并发送异步请求1条';
|
||
}
|
||
}else{
|
||
if($reimbo->installwx(1)){
|
||
$barr = m('weixinqy:daka')->getrecord($uids, $dt1, $dt2, 1);
|
||
//加入异步
|
||
$send = 0;
|
||
if($uids=='' && $barr['errcode']==0 && $barr['maxpage']>1){
|
||
for($i=1;$i<=$barr['maxpage'];$i++){
|
||
if($i>1)$reimbo->asynurl('asynrun','wxdkjl', array(
|
||
'dt1' => $dt1,
|
||
'dt2' => $dt2,
|
||
'page' => $i
|
||
));
|
||
}
|
||
$send++;
|
||
}
|
||
if($barr['errcode']!=0){
|
||
$msg .= ',企业微信('.$barr['msg'].')';
|
||
}else{
|
||
if(isset($barr['zongts']))$msg .= ',微信打卡(共'.$barr['zongts'].'条,新增'.$barr['okload'].'条)';
|
||
if($send>0)$msg .= ',并发送异步请求'.$send.'条';
|
||
}
|
||
}
|
||
}
|
||
|
||
//钉钉
|
||
if($reimbo->installwx(2)){
|
||
$barr = m('dingding:daka')->getrecord($uids, $dt1, $dt2);
|
||
if($barr['errcode']!=0)$msg .= ',钉钉('.$barr['msg'].')';
|
||
}
|
||
return returnsuccess($msg);
|
||
}
|
||
|
||
|
||
public function kqdwbefore($table)
|
||
{
|
||
$key = $this->post('key');
|
||
$where = '';
|
||
if(!isempt($key))$where=" and (`name` like '%$key%' or `address` like '%$key%')";
|
||
return $where;
|
||
}
|
||
|
||
|
||
//考勤信息
|
||
public function kqinfobeforeshow($table)
|
||
{
|
||
$dt1 = $this->post('dt1');
|
||
$dt2 = $this->post('dt2');
|
||
$atype = $this->post('atype');
|
||
$key = $this->post('key');
|
||
$keys = $this->post('keys');
|
||
$uid = $this->adminid;
|
||
$s = '';
|
||
|
||
if($atype=='all'){
|
||
$s = m('admin')->getcompanywhere(4);
|
||
}
|
||
if($atype=='my'){
|
||
$s = 'and uid='.$uid.'';
|
||
}
|
||
if($atype=='down'){
|
||
$s = 'and '.m('admin')->getdownwheres('a.uid', $uid, 0);
|
||
}
|
||
|
||
if(!isempt($dt1))$s.=" and a.`stime` >= '$dt1'";
|
||
if(!isempt($dt2))$s.=" and a.`stime` <= '$dt2 23:59:59'";
|
||
if(!isempt($key))$s.=" and (b.`name` like '%$key%' or b.`deptname` like '%$key%')";
|
||
if(!isempt($keys))$s.=" and (a.`kind`='$keys' or a.`qjkind`='$keys')";
|
||
$fields = 'a.*,b.name,b.deptname';
|
||
$table = '[Q]'.$table.' a left join `[Q]admin` b on a.uid=b.id';
|
||
return array('where'=>$s,'table'=>$table, 'fields'=>$fields,'order'=>'a.stime desc');
|
||
}
|
||
|
||
public function kqinfoaftershow($table, $rows)
|
||
{
|
||
$uid = $this->adminid;
|
||
$types = explode(',','<font color=blue>待审核</font>,<font color=green>已审核</font>,<font color=red>未通过</font>,,,<font color=#888888>已作废</font>');
|
||
foreach($rows as $k=>$rs){
|
||
$rows[$k]['status'] = $this->rock->arrvalue($types, $rs['status']);
|
||
$modenum = 'leavehr';
|
||
$modename = '考勤信息';
|
||
if($rs['kind']=='请假'){
|
||
$modenum = 'leave';
|
||
$modename = '请假条';
|
||
}
|
||
$jiatype = '';
|
||
if($rs['kind']=='加班'){
|
||
$modenum = 'jiaban';
|
||
$modename = '加班单';
|
||
$jiatype = '调休';
|
||
if($rs['jiatype']=='1')$jiatype='加班费'.$rs['jiafee'].'';
|
||
}
|
||
$rows[$k]['modenum'] = $modenum;
|
||
$rows[$k]['modename'] = $modename;
|
||
if($rs['status']==5)$rows[$k]['ishui'] = 1;
|
||
|
||
$totday = floatval(arrvalue($rs,'totday','0'));
|
||
if($totday>0)$rows[$k]['totals'].='('.$totday.'天)';
|
||
$rows[$k]['jiatype'] = $jiatype;
|
||
if(!isempt($rs['enddt'])){
|
||
$rows[$k]['etime'] = $rs['enddt']; //截止时间
|
||
if($rs['enddt']<$this->rock->now)$rows[$k]['ishui'] = 1;
|
||
}
|
||
}
|
||
$month = $this->post('dt1', date('Y-m'));
|
||
$str = '';
|
||
if($this->post('atype')=='my'){
|
||
$kqm = m('kaoqin');
|
||
$jiafee = $kqm->getjiafee($uid, $month);
|
||
$str = ''.$kqm->getqjsytimestr($uid).'';
|
||
if($jiafee>0)$str.=','.substr($month,0,7).'加班费('.$jiafee.'元)';
|
||
}
|
||
return array('rows'=>$rows,'totalstr'=> $str);
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
public $rows;
|
||
public function kqsjgzdataAjax()
|
||
{
|
||
$this->rows = array();
|
||
$this->getkqdat(0, 1);
|
||
$this->returnjson(array(
|
||
'rows' => $this->rows
|
||
));
|
||
}
|
||
private function getkqdat($pid, $oi)
|
||
{
|
||
$db = m('kqsjgz');
|
||
$menu = $db->getall("`pid`='$pid' order by `sort`",'*');
|
||
foreach($menu as $k=>$rs){
|
||
$sid = $rs['id'];
|
||
$rs['level'] = $oi;
|
||
$rs['stotal'] = $db->rows("`pid`='$sid'");
|
||
$this->rows[] = $rs;
|
||
$this->getkqdat($sid, $oi+1);
|
||
}
|
||
}
|
||
public function kqsjgzdatadelAjax()
|
||
{
|
||
$type = (int)$this->post('type','0');
|
||
$id = (int)$this->post('id');
|
||
if($id==1 && $type!=3)showreturn('','此记录不能删除',201);
|
||
if($type==0)m('kqsjgz')->delete("`id`='$id' or pid='$id'");
|
||
if($type==1)m('kqdist')->delete("`id`='$id'"); //分配的
|
||
if($type==2)m('kqxxsj')->delete("`id`='$id' or pid='$id'");
|
||
if($type==3){
|
||
$ida = c('check')->onlynumber($this->post('id'));
|
||
m('kqxxsj')->delete("`id` in($ida)");
|
||
}
|
||
showreturn();
|
||
}
|
||
|
||
public function kqdwdkdatadelAjax()
|
||
{
|
||
$id = (int)$this->post('id');
|
||
m('kqdw')->delete("`id`='$id'");
|
||
showreturn();
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
//考勤时间分配
|
||
public function kqdistbefore($table)
|
||
{
|
||
$type = (int)$this->post('type','0');
|
||
$gzid = (int)$this->post('gzid','0');
|
||
$key = $this->post('key');
|
||
$where = 'and `type`='.$type.'';
|
||
if($gzid!=0)$where.=" and `mid` ='$gzid'";
|
||
if(!isempt($key))$where.=" and `recename` like '%$key%'";
|
||
return array(
|
||
'where' => $where,
|
||
'order' => 'id desc'
|
||
);
|
||
}
|
||
public function kqdistafter($table, $rows)
|
||
{
|
||
$type = (int)$this->post('type','0');
|
||
$db = m('kqsjgz');
|
||
if($type==1)$db = m('kqxxsj');
|
||
if($type==2)$db = m('kqdw');
|
||
foreach($rows as $k=>$rs){
|
||
$rows[$k]['mid'] = $db->getmou('name', $rs['mid']);
|
||
$rows[$k]['mids'] = $rs['mid'];
|
||
}
|
||
$gzdata = array();
|
||
if($type==0){
|
||
$gzdata = $db->getall('pid=0','id,name','`sort`');
|
||
}else if($type==1){
|
||
$gzdata = $db->getall('pid=0','id,name','`id`');
|
||
}else if($type==2){
|
||
$gzdata = $db->getall('1=1','id,name','`id`');
|
||
}
|
||
return array(
|
||
'rows' => $rows,
|
||
'gzdata' => $gzdata
|
||
);
|
||
}
|
||
|
||
|
||
public function kqxxsjdtbefore($table)
|
||
{
|
||
$pid = (int)$this->post('pid','0');
|
||
$month = $this->post('month');
|
||
$s = 'and `pid`='.$pid.'';
|
||
if(!isempt($month))$s.=" and `dt` like '$month%'";
|
||
return array(
|
||
'where' => $s,
|
||
'order' => 'dt desc'
|
||
);
|
||
}
|
||
public function kqxxsjdtafter($table, $rows)
|
||
{
|
||
$dtobj = c('date');
|
||
foreach($rows as $k=>$rs){
|
||
$w = $dtobj->cnweek($rs['dt']);
|
||
$rows[$k]['week'] = $w;
|
||
if($w=='六' || $w=='日')$rows[$k]['ishui'] = 1;
|
||
}
|
||
return array('rows'=>$rows);
|
||
}
|
||
public function setxiugdateAjax()
|
||
{
|
||
$month = $this->post('month');
|
||
$pid = (int)$this->post('pid','0');
|
||
if(isempt($month) || $pid==0)return;
|
||
$dtobj = c('date');
|
||
$max = $dtobj->getmaxdt($month);
|
||
$db = m('kqxxsj');
|
||
for($i=1; $i<=$max; $i++){
|
||
$oi = $i;if($oi<10)$oi='0'.$i.'';
|
||
$dt = ''.$month.'-'.$oi.'';
|
||
$we = $dtobj->cnweek($dt);
|
||
if($we=='六' || $we=='日'){
|
||
$where = "pid='$pid' and `dt`='$dt'";
|
||
if($db->rows($where)==0)$db->insert("pid='$pid',`dt`='$dt'");
|
||
}
|
||
}
|
||
}
|
||
|
||
//一键添加节假日
|
||
public function setjiedateAjax()
|
||
{
|
||
$month = $this->post('month');
|
||
$pid = (int)$this->post('pid','0');
|
||
if(isempt($month) || $pid==0)return;
|
||
$dtobj = c('date');
|
||
$year = substr($month,0,4);
|
||
$dt = ''.$year.'-01-01';
|
||
$db = m('kqxxsj');
|
||
//从官网读取节假日日期
|
||
$barr = c('xinhuapi')->getjiari();
|
||
if(!$barr['success'])return $barr;
|
||
$jierixiuxi = $barr['data']['jierixiuxi']; //休息日
|
||
$jierishangban = $barr['data']['jierishangban']; //上班日
|
||
|
||
for($i=0;$i<366;$i++){
|
||
if($i>0)$dt = $dtobj->adddate($dt,'d', 1);
|
||
$we = $dtobj->cnweek($dt);
|
||
$isxiu = 0;
|
||
if($we=='六' || $we=='日'){
|
||
$isxiu = 1;
|
||
}
|
||
if(contain($jierixiuxi, $dt))$isxiu = 1;
|
||
if(contain($jierishangban, $dt))$isxiu = 0;//上班
|
||
|
||
$where = "pid='$pid' and `dt`='$dt'";
|
||
if($isxiu==1){
|
||
if($db->rows($where)==0)$db->insert("pid='$pid',`dt`='$dt'");
|
||
}else{
|
||
$db->delete($where);
|
||
}
|
||
if($dt==''.$year.'-12-31')break;
|
||
}
|
||
return returnsuccess();
|
||
}
|
||
|
||
|
||
//考勤分析
|
||
public function kqanaybeforeshow($table)
|
||
{
|
||
$dt1 = $this->post('dt1');
|
||
$dt2 = $this->post('dt2');
|
||
$key = $this->post('key');
|
||
$iswork = $this->post('iswork','1');
|
||
$iskq = $this->post('iskq','1');
|
||
$s = '';
|
||
if($iswork=='1')$s.=" and a.`iswork`=$iswork";
|
||
if($iskq=='1')$s.=" and b.`iskq`=$iskq";
|
||
if(!isempt($dt1))$s.=" and a.`dt` >= '$dt1'";
|
||
if(!isempt($dt2))$s.=" and a.`dt` <= '$dt2'";
|
||
if(!isempt($key))$s.=" and (b.`name` like '%$key%' or b.`deptname` like '%$key%')";
|
||
$fields = 'a.*,b.name,b.deptname';
|
||
if(ISMORECOM && $this->adminid>1)$s.=' and b.`companyid`='.m('admin')->getcompanyid().'';
|
||
$table = '[Q]'.$table.' a left join `[Q]userinfo` b on a.uid=b.id';
|
||
return array('where'=>$s,'table'=>$table, 'fields'=>$fields,'order'=>'a.`dt` desc,a.`uid`,`sort`');
|
||
}
|
||
public function kqanayaftershow($table, $rows)
|
||
{
|
||
$dtobj = c('date');
|
||
$ustie = '';
|
||
$iswordk = array('否','是');
|
||
$kq = m('kaoqin');
|
||
foreach($rows as $k=>$rs){
|
||
$rows[$k]['status'] = $rs['iswork'];
|
||
$rows[$k]['week'] = $dtobj->cnweek($rs['dt']);
|
||
$keys= ''.$rs['dt'].''.$rs['uid'].'';
|
||
$rows[$k]['iswork'] = arrvalue($iswordk, $rs['iswork']);
|
||
|
||
$rows[$k]['state'] = $kq->getkqstate($rs);
|
||
|
||
if($ustie!='' && $ustie==$keys){
|
||
$rows[$k]['deptname'] = '';
|
||
$rows[$k]['name'] = '';
|
||
$rows[$k]['dt'] = '';
|
||
$rows[$k]['iswork'] = '';
|
||
$rows[$k]['week'] = '';
|
||
}
|
||
$ustie= $keys;
|
||
}
|
||
return array('rows'=>$rows);
|
||
}
|
||
public function kqanayallAjax()
|
||
{
|
||
$dt = $this->post('dt');
|
||
$atype = $this->post('atype');
|
||
$whe = '';
|
||
if($atype=='my')$whe=' and id='.$this->adminid.'';
|
||
m('kaoqin')->kqanayall($dt, $whe);
|
||
}
|
||
public function kqanayallinitAjax()
|
||
{
|
||
$dt = $this->post('dt');
|
||
$atype = $this->post('atype');
|
||
if($atype=='my'){
|
||
$this->kqanayallAjax();
|
||
return '{"zong":"ok"}';
|
||
}
|
||
return m('kaoqin')->kqanayallfirst($dt, 1);
|
||
}
|
||
public function kqanayallpageAjax()
|
||
{
|
||
$dt = $this->post('dt');
|
||
$page = (int)$this->post('page');
|
||
m('kaoqin')->kqanayall($dt, '', $page);
|
||
echo 'ok';
|
||
}
|
||
|
||
|
||
//考勤分析总表
|
||
public function kqanayallbeforeshow($table)
|
||
{
|
||
$this->month = substr($this->post('dt1',date('Y-m')),0,7);
|
||
$key = $this->post('key');
|
||
$iskq = $this->post('iskq','1');
|
||
$s = m('admin')->monthuwhere($this->month, 'b.');
|
||
if($iskq=='1')$s.=" and b.`iskq`=$iskq";
|
||
if(!isempt($key))$s.=" and (b.`name` like '%$key%' or b.`deptname` like '%$key%')";
|
||
$fields = 'b.name,b.deptname,b.ranking';
|
||
$table = '`[Q]userinfo` b';
|
||
return array('where'=>$s,'table'=>$table, 'fields'=>$fields);
|
||
}
|
||
public function kqanayallaftershow($table, $rows)
|
||
{
|
||
$barr = array();
|
||
$kq = m('kaoqin');
|
||
$dtobj = c('date');
|
||
|
||
$barr[] = array(
|
||
'dt1_0' => '上班',
|
||
'dt1_1' => '下班',
|
||
'dt2_0' => '上班',
|
||
'dt2_1' => '下班',
|
||
);
|
||
|
||
foreach($rows as $k=>&$rs){
|
||
$rs['dt1_0'] = '正常';
|
||
$rs['dt1_1'] = '正常';
|
||
|
||
$rs['dt2_0'] = '未打卡';
|
||
$rs['dt2_1'] = '未打卡';
|
||
|
||
$barr[] = $rs;
|
||
}
|
||
return array('rows'=>$barr);
|
||
}
|
||
|
||
|
||
//个人考勤数据库
|
||
public function getmyanaykqAjax()
|
||
{
|
||
$uid = (int)$this->post('uid', $this->adminid);
|
||
$month = $this->post('month');
|
||
$kq = m('kaoqin');
|
||
$barr = $kq->getanay($uid, $month);
|
||
$barrs = $toarr = array();
|
||
foreach($barr as $dt=>$dtrows){
|
||
$str = '';
|
||
foreach($dtrows as $k=>$rs){
|
||
$iswork = $rs['iswork'];
|
||
$state = $rs['state'];
|
||
|
||
if($iswork==1 && isempt($rs['states'])){
|
||
if(!isset($toarr[$state]))$toarr[$state]=0;
|
||
$toarr[$state]++;
|
||
}
|
||
$s = $kq->getkqstate($rs);
|
||
$str.= ''.$rs['ztname'].':'.$s.'';
|
||
$str.= '<br>';
|
||
if($iswork==0)$str='<font color="#aaaaaa">'.$str.'</font>';
|
||
}
|
||
$barrs[$dt] = $str;
|
||
}
|
||
$barrs['total'] = $toarr;
|
||
$this->returnjson($barrs);
|
||
}
|
||
public function reladanaymyAjax()
|
||
{
|
||
$uid = (int)$this->post('uid', $this->adminid);
|
||
$month = $this->post('month');
|
||
m('kaoqin')->kqanaymonth($uid, $month);
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
//考勤统计
|
||
public $months;
|
||
public function kqtotalbeforeshow($table)
|
||
{
|
||
$dt1 = $this->post('month', date('Y-m'));
|
||
$iskq = $this->post('iskq','1');
|
||
$iskq = $this->post('iskq','1');
|
||
$this->months = $dt1;
|
||
$key = $this->post('key');
|
||
$atype = $this->post('atype');
|
||
$receid = $this->post('receid');
|
||
$s = m('admin')->monthuwhere($dt1);
|
||
|
||
//下属,userinfo下的
|
||
if($atype=='down'){
|
||
$s .= 'and '.m('admin')->getdownwheres('id', $this->adminid, 0);
|
||
}
|
||
|
||
if($atype=='my'){
|
||
$s = 'and id='.$this->adminid.'';
|
||
}else{
|
||
if($iskq=='1')$s.=" and `iskq`=$iskq";
|
||
if(ISMORECOM)$s.=" and `companyid`=".m('admin')->getcompanyid()."";
|
||
}
|
||
if(isempt($receid)){
|
||
if(!isempt($key))$s.=" and (`name` like '%$key%' or `ranking` like '%$key%' or `deptallname` like '%$key%')";
|
||
}else{
|
||
$ofval = m('admin')->gjoin($receid,'', 'all');
|
||
if(!$ofval)$ofval='0';
|
||
$s .= ' and `id` in ('.$ofval.')';
|
||
}
|
||
|
||
$fields = 'id,name,deptname,ranking,workdate,state';
|
||
return array('where'=>$s,'fields'=>$fields,'order'=>'`id`');
|
||
}
|
||
|
||
public function kqtotalaftershow($table, $rows)
|
||
{
|
||
$zta = m('flow:userinfo');
|
||
$pnum = $this->post('pnum');
|
||
$colalls= array();
|
||
foreach($rows as $k=>$rs){
|
||
if($rs['state']==5)$rows[$k]['ishui']=1;
|
||
$rows[$k]['state'] = $zta->getuserstate($rs['state']);
|
||
}
|
||
$kqobj = m('kaoqin');
|
||
$barr = $kqobj->alltotalrows($this->months, $rows);
|
||
$rows = $barr['rows'];
|
||
$darr = array();
|
||
//读取表头
|
||
if($pnum=='all'){
|
||
$dt = $this->months.'-01';
|
||
//获取每天考勤几个状态
|
||
$nuuid = $this->adminid;
|
||
if($rows)$nuuid = $rows[0]['id'];
|
||
$sbarr = $kqobj->getsbarr($nuuid, $dt);
|
||
$lenz = count($sbarr); //每天考勤几个状态
|
||
$touar = array();
|
||
|
||
$max = $kqobj->dtobj->getmaxdt($this->months);
|
||
for($i=1;$i<=$max;$i++){
|
||
$xq = $kqobj->dtobj->cnweek($this->months.'-'.$i.'');
|
||
for($j=0;$j<$lenz;$j++){
|
||
$dataIndex = 'dt'.$i.'_'.$j.'';
|
||
$colalls[] = array(
|
||
'text' => ''.$i.'('.$xq.')',
|
||
'dataIndex' => $dataIndex, //字段名
|
||
'colspan' => $lenz
|
||
);
|
||
$touar[$dataIndex] = $sbarr[$j]['name'];
|
||
}
|
||
}
|
||
|
||
$darr[] = $touar;
|
||
|
||
//读取人员考勤状态
|
||
foreach($rows as $k=>$rs){
|
||
$uid = $rs['id'];
|
||
$kqarr = $kqobj->getanay($uid, $this->months);
|
||
for($i=1;$i<=$max;$i++){
|
||
$oi = $i<10?'0'.$i.'':$i;
|
||
$dt = $this->months.'-'.$oi.'';
|
||
if(isset($kqarr[$dt]))foreach($kqarr[$dt] as $j=>$rs1){
|
||
$dataIndex = 'dt'.$i.'_'.$j.'';
|
||
$rs[$dataIndex] = $kqobj->getkqstate($rs1); //考勤状态
|
||
}
|
||
}
|
||
$darr[] = $rs;
|
||
}
|
||
}else{
|
||
$darr = $rows;
|
||
}
|
||
|
||
|
||
$barr['colalls'] = $colalls;
|
||
$barr['rows'] = $darr;
|
||
|
||
|
||
|
||
return $barr;
|
||
}
|
||
|
||
|
||
|
||
/**
|
||
* 批量导入打卡记录(2017-08-22)弃用
|
||
*/
|
||
public function addpldkjlAjax()
|
||
{
|
||
$val = $this->post('val');
|
||
if(isempt($val))backmsg('error');
|
||
$arrs = explode("\n", $val);
|
||
$oi = 0;$uarr = array();
|
||
$dtobj = c('date');$adb = m('admin');$db = m('kqdkjl');
|
||
foreach($arrs as $valss){
|
||
$name = '';
|
||
$dkdt = '';
|
||
$uid = 0;
|
||
if(!isempt($valss)){
|
||
$a = $this->adtewe(explode(' ', $valss),2);
|
||
$name = $a[0];
|
||
$dkdt = $a[1];
|
||
}
|
||
if(!isempt($name) && !isempt($dkdt)){
|
||
$dkdt = str_replace('/','-', $dkdt);
|
||
if(!$dtobj->isdate($dkdt))continue;
|
||
if(isset($uarr[$name])){
|
||
$uid = $uarr[$name];
|
||
}else{
|
||
$usar = $adb->getrows("`name`='$name'",'id');
|
||
if($this->db->count!=1)continue;
|
||
$uid = $usar[0]['id'];
|
||
$uarr[$name] = $uid;
|
||
}
|
||
if($db->rows("`uid`='$uid' and `dkdt`='$dkdt'")>0)continue;
|
||
$oi++;
|
||
$db->insert(array(
|
||
'uid' => $uid,
|
||
'dkdt' => $dkdt,
|
||
'optdt' => $this->now,
|
||
'type' => 5
|
||
));
|
||
}
|
||
}
|
||
backmsg('','成功导入'.$oi.'条数据');
|
||
}
|
||
private function adtewe($a, $len){
|
||
for($i=0;$i<$len;$i++){
|
||
if(!isset($a[$i]))$a[$i] = '';
|
||
}
|
||
return $a;
|
||
}
|
||
|
||
public function savaweizzAjax()
|
||
{
|
||
$id = (int)$this->post('id');
|
||
$uarr['location_x'] = $this->post('x');
|
||
$uarr['location_y'] = $this->post('y');
|
||
$uarr['scale'] = $this->post('zoom');
|
||
m('kqdw')->update($uarr, $id);
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
public function locationAction()
|
||
{
|
||
$id = (int)$this->get('id');
|
||
|
||
if($id>0){
|
||
$rs = m('location')->getone($id);
|
||
if(!$rs)exit('not found record');
|
||
if($rs['scale']<=0)$rs['scale']=12;
|
||
$rs['content'] = '地址:'.$rs['label'].'<br>定位时间:'.$rs['optdt'].'';
|
||
$rs['type'] = 0;
|
||
}else{
|
||
$info = $this->get('info');
|
||
if(!$info)exit('not found info');
|
||
$arr = explode(',', $this->jm->base64decode($info));
|
||
$rs['precision'] = 0;
|
||
$rs['location_x'] = $arr[0];
|
||
$rs['location_y'] = $arr[1];
|
||
$rs['scale'] = $arr[2];
|
||
$rs['type'] = 1;
|
||
$rs['content'] = arrvalue($arr,3);
|
||
}
|
||
if($this->rock->ismobile())$rs['type'] = 1;
|
||
$this->smartydata['rs'] = $rs;
|
||
$this->smartydata['qqmapkey'] = c('mapqq')->getkey();
|
||
}
|
||
|
||
public function locationchangeAction()
|
||
{
|
||
$callback = $this->get('callback');
|
||
$location_x = $this->get('location_x','24.528153');
|
||
$location_y = $this->get('location_y','118.167806');
|
||
$scale = $this->get('scale',12);
|
||
$this->assign('callback', $callback);
|
||
$this->assign('location_x', $location_x);
|
||
$this->assign('location_y', $location_y);
|
||
$this->assign('scale', $scale);
|
||
$this->smartydata['qqmapkey'] = c('mapqq')->getkey();
|
||
}
|
||
|
||
//删除打卡记录
|
||
public function deldkjlAjax()
|
||
{
|
||
$sid = $this->post('id');
|
||
//m('kqdkjl')->delete('id in('.$sid.')');
|
||
$this->showreturn('');
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
//排班读取人员
|
||
public function pbkqdistbefore($table)
|
||
{
|
||
$pblx = (int)$this->post('pblx',0);//0查看,1组,2人员
|
||
|
||
$dt1 = $this->post('dt1', date('Y-m'));
|
||
$this->months = $dt1;
|
||
|
||
//根据组
|
||
if($pblx==1){
|
||
$where1 = '';
|
||
if(ISMORECOM)$where1='and `companyid` in(0,'.m('admin')->getcompanyid().')';
|
||
return array(
|
||
'table' => '`[Q]group`',
|
||
'where' => $where1
|
||
);
|
||
}
|
||
|
||
|
||
$key = $this->post('key');
|
||
|
||
$atype = $this->post('atype');
|
||
$s = m('admin')->monthuwhere($dt1,'a.');
|
||
if($atype=='my'){
|
||
$s = 'and a.`id`='.$this->adminid.'';
|
||
}else{
|
||
if(ISMORECOM)$s.='and a.`companyid`='.m('admin')->getcompanyid().'';
|
||
}
|
||
|
||
if(!isempt($key))$s.=" and (a.`name` like '%$key%' or a.`ranking` like '%$key%' or a.`deptname` like '%$key%')";
|
||
$table = "[Q]userinfo a left join `[Q]admin` b on a.id=b.id";
|
||
|
||
$fields = 'a.id,a.name,a.deptname,a.ranking,a.workdate,a.state';
|
||
return array(
|
||
'where' =>$s,
|
||
'fields'=>$fields,
|
||
'order'=>'b.`sort`,a.`id`',
|
||
'table'=> $table
|
||
);
|
||
}
|
||
|
||
public function pbkqdistafter($table, $rows)
|
||
{
|
||
$zta = m('flow:userinfo');
|
||
$maxjg = c('date')->getmaxdt($this->months);
|
||
$kqobj = m('kaoqin');
|
||
$pblx = $this->post('pblx','0');
|
||
|
||
//人员的
|
||
if($pblx=='0'){
|
||
foreach($rows as $k=>$rs){
|
||
if($rs['state']==5)$rows[$k]['ishui']=1;
|
||
$rows[$k]['state'] = $zta->getuserstate($rs['state']);
|
||
$uid = $rs['id'];
|
||
|
||
for($i=1;$i<=$maxjg;$i++){
|
||
$oi = ($i<10) ? '0'.$i.'' : $i;
|
||
$dt = $this->months.'-'.$oi;
|
||
$zt = '';
|
||
$iswork = $kqobj->isworkdt($uid, $dt);
|
||
if($iswork==1){
|
||
$zt = $kqobj->getdistid($uid, $dt);
|
||
}
|
||
$rows[$k]['day'.$i.''] = $zt;
|
||
}
|
||
}
|
||
}
|
||
|
||
//组的
|
||
if($pblx=='1' || $pblx=='2'){
|
||
$gset = $this->db->getall("select * from `[Q]kqdisv` where `dt` like '".$this->months."%' and `plx`=".$pblx." order by `type`");
|
||
$setar= array();
|
||
foreach($gset as $k=>$rs){
|
||
$key = 'a'.$rs['dt'].'_'.$rs['receid'].'_'.$rs['type'].'';
|
||
$setar[$key] = $rs['mid'];
|
||
}
|
||
|
||
foreach($rows as $k=>$rs){
|
||
if($pblx=='1')$rows[$k]['deptname']='组';
|
||
for($i=1;$i<=$maxjg;$i++){
|
||
$oi = ($i<10) ? '0'.$i.'' : $i;
|
||
$dt = $this->months.'-'.$oi;
|
||
$key1 = 'a'.$dt.'_'.$rs['id'].'_1';//休息
|
||
$key2 = 'a'.$dt.'_'.$rs['id'].'_2';//工作日
|
||
$key0 = 'a'.$dt.'_'.$rs['id'].'_0'; //考勤
|
||
$iswork = 1;
|
||
$zt = '';
|
||
if(isset($setar[$key1]))$iswork=0;
|
||
if(isset($setar[$key2]))$iswork=1;//有设置工作日就是工作日
|
||
if($iswork==1){
|
||
$zt = arrvalue($setar, $key0,'0');
|
||
}
|
||
|
||
$rows[$k]['day'.$i.''] = $zt;
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
//读取考勤时间规则
|
||
$gzrows = m('kqsjgz')->getall('pid=0','`id`,`name`','`sort`');
|
||
|
||
return array(
|
||
'rows' => $rows,
|
||
'maxjg'=> $maxjg,
|
||
'week' => date('w', strtotime($this->months.'-01')),
|
||
'gzrows'=> $gzrows
|
||
);
|
||
}
|
||
|
||
//排班标识保存
|
||
public function setpaibanAjax()
|
||
{
|
||
$len = (int)$this->post('len','0');
|
||
$db = m('kqdisv');
|
||
for($i=0;$i<$len;$i++){
|
||
$dt = date('Y-m-d',strtotime($this->post('dt_'.$i.'')));
|
||
$mid = $this->post('mid_'.$i.'');
|
||
$plx = $this->post('plx_'.$i.'');//1组,2人员
|
||
$receid = $this->post('receid_'.$i.'');
|
||
$lx = (int)$this->post('type_'.$i.'','0');
|
||
|
||
$type = 0;//考勤规则
|
||
|
||
//设置休息日 取消休息日
|
||
if($lx==0 || $lx==1){
|
||
$type = 1;
|
||
}
|
||
//设置工作日 取消工作日
|
||
if($lx==2 || $lx==3){
|
||
$type = 2;
|
||
}
|
||
$where = "`plx`='$plx' and `receid`='$receid' and `dt`='$dt'";
|
||
if($type==0)$where.=" and `type`='$type'";
|
||
if($lx==1 || $lx==3 || $lx==5){
|
||
$db->delete($where);
|
||
}else{
|
||
if($db->rows($where)==0){
|
||
$db->insert(array(
|
||
'plx' => $plx,
|
||
'receid' => $receid,
|
||
'dt' => $dt,
|
||
'type' => $type,
|
||
'mid' => $mid,
|
||
));
|
||
}else{
|
||
$db->update('`mid`='.$mid.',`type`='.$type.'', $where);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
//自动添加年假
|
||
public function addnianjiaAjax()
|
||
{
|
||
$dt = $this->get('dt');
|
||
$barr = m('flow:leave')->autoaddleave($dt);
|
||
return '共添加'.count($barr).'人';
|
||
}
|
||
|
||
|
||
//剩余假期统计
|
||
public function kqtotalafterjiashow($table, $rows)
|
||
{
|
||
$zta = m('flow:userinfo');
|
||
$dt = $this->post('month');
|
||
$kqkind = $this->option->getdata('kqkind', "and `name`<>'增加调休'");
|
||
$kq = m('kaoqin');
|
||
|
||
foreach($rows as $k=>$rs){
|
||
if($rs['state']==5)$rows[$k]['ishui']=1;
|
||
$rows[$k]['state'] = $zta->getuserstate($rs['state']);
|
||
|
||
foreach($kqkind as $k1=>$rs1){
|
||
$tosss = $kq->getqjsytime($rs['id'], str_replace('增加','', $rs1['name']), $dt);
|
||
if($tosss==0)$tosss='';
|
||
$rows[$k]['total'.$k1.''] = $tosss;
|
||
}
|
||
$tosss = $kq->getqjsytime($rs['id'], '调休', $dt);
|
||
if($tosss==0)$tosss='';
|
||
$rows[$k]['tiaoxiu'] = $tosss;
|
||
}
|
||
return array(
|
||
'rows'=> $rows,
|
||
'kqkind'=> $kqkind,
|
||
);
|
||
}
|
||
|
||
public function updateenddtAjax()
|
||
{
|
||
$to = m('flow:leave')->updateenddt();
|
||
return '更新成功';
|
||
}
|
||
|
||
public function kqtotalmxbefore($table)
|
||
{
|
||
$uid = (int)$this->post('uid');
|
||
$qjkind = $this->post('qjkind');
|
||
$this->optuid = $uid;
|
||
$this->optqjkind = $qjkind;
|
||
$where = 'and `uid`='.$uid.'';
|
||
$this->optkind = '';
|
||
$this->optkinds = '增加'.$qjkind.'';
|
||
if($qjkind=='调休'){
|
||
$this->optkind = '加班';
|
||
$whera = "((`kind`='$this->optkind' and `jiatype`=0) or (`kind`='$this->optkinds'))";
|
||
$where .= " and ((`qjkind`='$qjkind' and `status` in(0,1)) or (`status`=1 and $whera))";
|
||
}else{
|
||
$this->optkind = $this->optkinds;
|
||
$where .= " and ((`qjkind`='$qjkind' and `status` in(0,1)) or (`kind`='$this->optkind' and `status`=1))";
|
||
}
|
||
return array(
|
||
'where' => $where,
|
||
'order' => '`stime`'
|
||
);
|
||
}
|
||
|
||
public function kqtotalmxafter($table, $rows)
|
||
{
|
||
$urs = m('userinfo')->getone($this->optuid);
|
||
foreach($rows as $k=>$rs){
|
||
if($urs){
|
||
$rows[$k]['uname'] = $urs['name'];
|
||
$rows[$k]['deptname'] = $urs['deptname'];
|
||
}
|
||
|
||
if(!isempt($rs['enddt'])){
|
||
$rows[$k]['etime'] = $rs['enddt']; //截止时间
|
||
if($rs['enddt']<$this->rock->now)$rows[$k]['ishui'] = 1;
|
||
}else{
|
||
if($rs['kind']==$this->optkind || $rs['kind']==$this->optkinds)$rows[$k]['etime'] = '';
|
||
}
|
||
}
|
||
$kqkind = $this->option->getdata('kqkind',"and `name`<>'增加调休'");
|
||
if($rows){
|
||
$rows[] = array(
|
||
'deptname' => '合计',
|
||
'totals1' => m('kaoqin')->getqjsytime($this->optuid, $this->optqjkind)
|
||
);
|
||
}
|
||
return array(
|
||
'rows' => $rows,
|
||
'kqkind' => $kqkind,
|
||
);
|
||
}
|
||
} |