|
@@ -31,20 +31,74 @@ class HolidayController extends DooController {
|
|
|
|
|
|
public function myList(){
|
|
|
Doo::loadModel('holidayday');
|
|
|
+ Doo::loadModel('holiday');
|
|
|
+ Doo::loadModel('holidaystaff');
|
|
|
$hday = new HDay();
|
|
|
- $thisyear = date('Y',1572624000);
|
|
|
+ $holiday = new Holiday();
|
|
|
+ $hstaff = new HStaff();
|
|
|
+
|
|
|
+ $thisyear = date('Y',time());
|
|
|
+// $thisyear = date('Y',1546358400);
|
|
|
$num = intval($thisyear)-2017;
|
|
|
$html = '';
|
|
|
+ $yearnum = isset($this->params['yearnum']) && is_numeric($this->params['yearnum']) ? $this->params['yearnum'] : '';
|
|
|
for($i = $num; $i >= 0; $i--){
|
|
|
- $html .= '<option value="'.(2017+$i).'">'.(2017+$i).'</option>';
|
|
|
+ if($yearnum == (2017+$i)){
|
|
|
+ $html .= '<option value="'.(2017+$i).'" selected>'.(2017+$i).'</option>';
|
|
|
+ }else{
|
|
|
+ $html .= '<option value="'.(2017+$i).'">'.(2017+$i).'</option>';
|
|
|
+ }
|
|
|
}
|
|
|
$data['option'] = $html;
|
|
|
$yeartime = isset($this->params['yearnum']) && is_numeric($this->params['yearnum']) ? $this->getYearMonthTime($this->params['yearnum']) : $this->getYearMonthTime($thisyear);
|
|
|
- $holidaymsg = array('shijia'=> array(), 'bingjia' => array(), 'jiaban' => array(), 'zhiban' => array(), 'buxiu' => array(), 'tiaoxiu' => array());
|
|
|
- foreach(array(1,2,4,5,10,11) as $k => $v){
|
|
|
-
|
|
|
+ //记录事,病,旷,加,值,补,调的信息
|
|
|
+ $holidaymsg = array('1'=> array(), '2' => array(), '3' => array(), '4' => array(), '5' => array(), '10' => array(), '11' => array());
|
|
|
+ foreach(array(1,2,3,4,5,10,11) as $k => $v){
|
|
|
+ $all = 0;
|
|
|
+ for($i = 0; $i < 12; $i++){
|
|
|
+ if($v == 11){
|
|
|
+ $typeholiday = $holiday->find(array('where' => 'status=1 and type='.$v.' and uid='.$this->staff[0]['sid'].' and addtime between '.$yeartime[$i]['starttime'].' and '.$yeartime[$i]['endtime'],'asArray' => TRUE));
|
|
|
+ $holidaymsg[$v][$i+1] = 0;
|
|
|
+ if(!empty($typeholiday)){
|
|
|
+ foreach($typeholiday as $tk => $tv){
|
|
|
+ $holidaymsg[$v][$i+1] += floatval($tv['daynum']);
|
|
|
+ $all += floatval($tv['daynum']);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $holidaymsg[$v][$i+1] = $holidaymsg[$v][$i+1] != 0 ? $holidaymsg[$v][$i+1] : '';
|
|
|
+ }else{
|
|
|
+ $typeholiday = $hday->find(array('where' => 'type='.$v.' and uid='.$this->staff[0]['sid'].' and UNIX_TIMESTAMP(daytime) between '.$yeartime[$i]['starttime'].' and '.$yeartime[$i]['endtime'],'asArray' => TRUE));
|
|
|
+ $holidaymsg[$v][$i+1] = 0;
|
|
|
+ if(!empty($typeholiday)){
|
|
|
+ foreach($typeholiday as $tk => $tv){
|
|
|
+ $holidaymsg[$v][$i+1] += floatval($tv['daymsg']);
|
|
|
+ $all += floatval($tv['daymsg']);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $holidaymsg[$v][$i+1] = $holidaymsg[$v][$i+1] != 0 ? $holidaymsg[$v][$i+1] : '';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $holidaymsg[$v]['all'] = $all != 0 ? $all : '';
|
|
|
}
|
|
|
|
|
|
+ $hstaffmsg = $hstaff->getOne(array('where' => 'uid='.$this->staff[0]['sid'], 'asArray' => TRUE));
|
|
|
+ $data['yearnum'] = floatval($hstaffmsg['yearnum']);
|
|
|
+ $data['overtimetnum'] = floatval($holidaymsg[4]['all'])+floatval($holidaymsg[5]['all']);
|
|
|
+ $data['addnum'] = floatval($hstaffmsg['addnum']);
|
|
|
+ $data['hunjianum'] = floatval($hstaffmsg['hunjianum']);
|
|
|
+ $data['chanjianum'] = floatval($hstaffmsg['chanjianum']);
|
|
|
+ $data['sangjianum'] = floatval($hstaffmsg['sangjianum']);
|
|
|
+ $data['gongjianum'] = floatval($hstaffmsg['gongjianum']);
|
|
|
+
|
|
|
+ $data['yearround'] = $this->getYearRoundtime($hstaffmsg['hadyear'],$this->staff[0]['hiredate']);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+// var_dump($holidaymsg);
|
|
|
+// exit;
|
|
|
+
|
|
|
+ $data['holidaymsg'] = $holidaymsg;
|
|
|
+
|
|
|
$data ['memu'] = 'holiday';
|
|
|
$data ['holidaymenu'] = 'mylist';
|
|
|
$data ['staff'] = $this->staff;
|
|
@@ -56,9 +110,8 @@ class HolidayController extends DooController {
|
|
|
Doo::loadModel('holidayday');
|
|
|
Doo::loadModel('holidaystaff');
|
|
|
Doo::loadModel('holidaytype');
|
|
|
- $lastmonthstart = strtotime(date("Y-m-01",strtotime("last month")));
|
|
|
- $lastmonthend = strtotime(date('Y-m-01',time()))-1;
|
|
|
- $data['countmonth'] = date("Y年m月",strtotime("last month"));
|
|
|
+ $thismonth = $this->getMonthTime(date('Y-m-d',time()));
|
|
|
+ $data['countmonth'] = date("Y年m月",time());
|
|
|
|
|
|
$holiday = new Holiday();
|
|
|
$hday = new HDay();
|
|
@@ -66,8 +119,8 @@ class HolidayController extends DooController {
|
|
|
$type = new HType();
|
|
|
|
|
|
$holidaycount =array();
|
|
|
- foreach(array(1,2,4,5) as $k => $v){
|
|
|
- $typeholiday = $hday->find(array('where' => 'type='.$v.' and uid='.$this->staff[0]['sid'].' and UNIX_TIMESTAMP(daytime) between '.$lastmonthstart.' and '.$lastmonthend,'asArray' => TRUE));
|
|
|
+ foreach(array(1,2,3,4,5) as $k => $v){
|
|
|
+ $typeholiday = $hday->find(array('where' => 'type='.$v.' and uid='.$this->staff[0]['sid'].' and UNIX_TIMESTAMP(daytime) between '.$thismonth['start'].' and '.$thismonth['end'],'asArray' => TRUE));
|
|
|
$holidaycount[$k] = 0;
|
|
|
if(!empty($typeholiday)){
|
|
|
foreach($typeholiday as $tk => $tv){
|
|
@@ -77,8 +130,8 @@ class HolidayController extends DooController {
|
|
|
}
|
|
|
|
|
|
$hstaffmsg = $hstaff->getOne(array('where' => 'uid='.$this->staff[0]['sid'], 'asArray' => TRUE));
|
|
|
- $holidaycount[4] = floatval($hstaffmsg['yearnum']);
|
|
|
- $holidaycount[5] = floatval($hstaffmsg['addnum']);
|
|
|
+ $holidaycount[5] = floatval($hstaffmsg['yearnum']);
|
|
|
+ $holidaycount[6] = floatval($hstaffmsg['addnum']);
|
|
|
|
|
|
$data['holidaycount'] = $holidaycount;
|
|
|
|
|
@@ -135,7 +188,7 @@ class HolidayController extends DooController {
|
|
|
if($this->params['type'] == 4 ){//加班、值班
|
|
|
$sql = ' and (type=4 or type=5)';
|
|
|
}elseif($this->params['type'] == 6){//其他长假
|
|
|
- $sql = ' and type in(6,7,8,9)';
|
|
|
+ $sql = ' and type in(3,6,7,8,9,12,13)';
|
|
|
}else{
|
|
|
$sql = ' and type='.$this->params['type'];
|
|
|
}
|
|
@@ -184,8 +237,10 @@ class HolidayController extends DooController {
|
|
|
}
|
|
|
$msg = substr($msg,0,strlen($msg)-1);
|
|
|
}
|
|
|
- }else{
|
|
|
+ }elseif(in_array($v['type'],array(6,7,8,9))){
|
|
|
$msg .= $v['starttime']. ' 至 '.$v['endtime'];
|
|
|
+ }elseif(in_array($v['type'],array(13,14))){
|
|
|
+ $msg .= date('Y-m-d H:i:s',$v['addtime']);
|
|
|
}
|
|
|
$holidaymsg[$k]['daymsg'] = $msg;
|
|
|
}
|
|
@@ -198,6 +253,499 @@ class HolidayController extends DooController {
|
|
|
$this->render ( "/holiday-allList", $data );
|
|
|
}
|
|
|
|
|
|
+ public function holidayClose(){
|
|
|
+ //获取办事处列表
|
|
|
+ Doo::loadModel('staff');
|
|
|
+ Doo::loadModel('holidaystaff');
|
|
|
+ Doo::loadModel('holidayday');
|
|
|
+ Doo::loadModel('holiday');
|
|
|
+ $staff = new staff();
|
|
|
+ $hstaff = new HStaff();
|
|
|
+ $hday = new HDay();
|
|
|
+ $holiday = new Holiday();
|
|
|
+
|
|
|
+ $sql = 'SELECT `CLD_L_category`.cid,`CLD_L_category`.title,count(`CLD_staff`.sid) as count FROM `CLD_L_category` left join `CLD_staff` on `CLD_L_category`.cid=`CLD_staff`.cid where `CLD_staff`.nature=1 group by `CLD_staff`.cid HAVING count(`CLD_staff`.sid)>0 order by count(`CLD_staff`.sid) desc';
|
|
|
+ $query = Doo::db ()->query ( $sql );
|
|
|
+ $result = $query->fetchAll ();
|
|
|
+ $data['category'] = $result;
|
|
|
+
|
|
|
+
|
|
|
+ $thisyear = date('Y',time());
|
|
|
+// $thisyear = date('Y',1546358400);
|
|
|
+ $data['thismonth'] = intval(date('m',time()));
|
|
|
+ $num = intval($thisyear)-2017;
|
|
|
+ $html = '';
|
|
|
+ $yearnum = isset($this->params['year']) && is_numeric($this->params['year']) ? $this->params['year'] : '';
|
|
|
+ for($i = $num; $i >= 0; $i--){
|
|
|
+ if($yearnum == (2017+$i)){
|
|
|
+ $html .= '<option value="'.(2017+$i).'" selected>'.(2017+$i).'</option>';
|
|
|
+ }else{
|
|
|
+ $html .= '<option value="'.(2017+$i).'">'.(2017+$i).'</option>';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $data['option'] = $html;
|
|
|
+ if(isset($this->params['year']) && isset($this->params['month'])){
|
|
|
+ $month = intval($this->params['month']) < 10 ? '0'.$this->params['month'] : $this->params['month'];
|
|
|
+ $date = $this->params['year'].'-'.$month.'-01';
|
|
|
+ $thismonth = $this->getMonthTime($date);
|
|
|
+ $data['thismonth'] = $this->params['month'];
|
|
|
+ }else{
|
|
|
+ $thismonth = $this->getMonthTime(date('Y-m-d',time()));
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach($result as $k => $v){
|
|
|
+ $stafflist[$k]['categoryname'] = $v['title'];
|
|
|
+ $stafflist[$k]['count'] = $v['count'];
|
|
|
+ $cidstafflist = $staff->find(array('where' => 'cid='.$v['cid'].' and nature=1', 'asArray' => TRUE));
|
|
|
+ foreach($cidstafflist as $ck => $cv) {
|
|
|
+ foreach (array(1, 2, 3) as $tk => $tv) {
|
|
|
+ $typeholiday = $hday->find(array('where' => 'type=' . $tv . ' and uid=' . $cv['sid'] . ' and UNIX_TIMESTAMP(daytime) between ' . $thismonth['start'] . ' and ' . $thismonth['end'], 'asArray' => TRUE));
|
|
|
+ $cidstafflist[$ck][$tv] = 0;
|
|
|
+ if (!empty($typeholiday)) {
|
|
|
+ foreach ($typeholiday as $thk => $thv) {
|
|
|
+ $cidstafflist[$ck][$tv] += floatval($thv['daymsg']);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $cidstafflist[$ck][$tv] = $cidstafflist[$ck][$tv] != 0 ? $cidstafflist[$ck][$tv] : '';
|
|
|
+ }
|
|
|
+ $cidstafflist[$ck]['first'] = $ck == 0 ? 1 : ''; // 是否第一个
|
|
|
+ }
|
|
|
+ $stafflist[$k]['cidstafflist'] = $cidstafflist;
|
|
|
+ }
|
|
|
+
|
|
|
+ $data['stafflist'] = $stafflist;
|
|
|
+
|
|
|
+ $zongbu = $staff->find(array('where' => 'cid=12 and nature=1', 'asArray' => TRUE));
|
|
|
+ $data['zongbu'] = $zongbu;
|
|
|
+
|
|
|
+ $data ['memu'] = 'holiday';
|
|
|
+ $data ['holidaymenu'] = 'close';
|
|
|
+ $data ['staff'] = $this->staff;
|
|
|
+ $this->render ( "/holiday-close", $data );
|
|
|
+ }
|
|
|
+
|
|
|
+ public function holidayClose2(){
|
|
|
+ //获取办事处列表
|
|
|
+ Doo::loadModel('staff');
|
|
|
+ Doo::loadModel('holidaystaff');
|
|
|
+ Doo::loadModel('holidayday');
|
|
|
+ Doo::loadModel('holiday');
|
|
|
+ $staff = new staff();
|
|
|
+ $hstaff = new HStaff();
|
|
|
+ $hday = new HDay();
|
|
|
+ $holiday = new Holiday();
|
|
|
+
|
|
|
+ $sql = 'SELECT `CLD_L_category`.cid,`CLD_L_category`.title,count(`CLD_staff`.sid) as count FROM `CLD_L_category` left join `CLD_staff` on `CLD_L_category`.cid=`CLD_staff`.cid where `CLD_staff`.nature=2 group by `CLD_staff`.cid HAVING count(`CLD_staff`.sid)>0 order by count(`CLD_staff`.sid) desc';
|
|
|
+ $query = Doo::db ()->query ( $sql );
|
|
|
+ $result = $query->fetchAll ();
|
|
|
+ $data['category'] = $result;
|
|
|
+
|
|
|
+ $thisyear = date('Y',time());
|
|
|
+// $thisyear = date('Y',1546358400);
|
|
|
+ $data['thismonth'] = intval(date('m',time()));
|
|
|
+ $num = intval($thisyear)-2017;
|
|
|
+ $html = '';
|
|
|
+ $yearnum = isset($this->params['year']) && is_numeric($this->params['year']) ? $this->params['year'] : '';
|
|
|
+ for($i = $num; $i >= 0; $i--){
|
|
|
+ if($yearnum == (2017+$i)){
|
|
|
+ $html .= '<option value="'.(2017+$i).'" selected>'.(2017+$i).'</option>';
|
|
|
+ }else{
|
|
|
+ $html .= '<option value="'.(2017+$i).'">'.(2017+$i).'</option>';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $data['option'] = $html;
|
|
|
+ if(isset($this->params['year']) && isset($this->params['month'])){
|
|
|
+ $month = intval($this->params['month']) < 10 ? '0'.$this->params['month'] : $this->params['month'];
|
|
|
+ $date = $this->params['year'].'-'.$month.'-01';
|
|
|
+ $thismonth = $this->getMonthTime($date);
|
|
|
+ $data['thismonth'] = $this->params['month'];
|
|
|
+ }else{
|
|
|
+ $thismonth = $this->getMonthTime(date('Y-m-d',time()));
|
|
|
+ }
|
|
|
+
|
|
|
+ $stafflist = array();
|
|
|
+ foreach($result as $k => $v){
|
|
|
+ $stafflist[$k]['categoryname'] = $v['title'];
|
|
|
+ $stafflist[$k]['count'] = $v['count'];
|
|
|
+ $cidstafflist = $staff->find(array('where' => 'cid='.$v['cid'].' and nature=2', 'asArray' => TRUE));
|
|
|
+ foreach($cidstafflist as $ck => $cv) {
|
|
|
+ foreach (array(1, 2, 3, 14) as $tk => $tv) {
|
|
|
+ if($tv == 14){
|
|
|
+ $typeholiday = $holiday->getOne(array('where' => 'status=1 and type='.$tv.' and uid='.$cv['sid'].' and starttime="'.$thismonth['start'].'" and endtime="'.$thismonth['end'].'"', 'desc' => 'id', 'asArray' => TRUE));
|
|
|
+ $cidstafflist[$ck][$tv] = $typeholiday['daynum'] != 0 ? floatval($typeholiday['daynum']) : '';
|
|
|
+ }else{
|
|
|
+ $typeholiday = $hday->find(array('where' => 'type=' . $tv . ' and uid=' . $cv['sid'] . ' and UNIX_TIMESTAMP(daytime) between ' . $thismonth['start'] . ' and ' . $thismonth['end'], 'asArray' => TRUE));
|
|
|
+ $cidstafflist[$ck][$tv] = 0;
|
|
|
+ if (!empty($typeholiday)) {
|
|
|
+ foreach ($typeholiday as $thk => $thv) {
|
|
|
+ $cidstafflist[$ck][$tv] += floatval($thv['daymsg']);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $cidstafflist[$ck][$tv] = $cidstafflist[$ck][$tv] != 0 ? $cidstafflist[$ck][$tv] : '';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $cidstafflist[$ck]['first'] = $ck == 0 ? 1 : ''; // 是否第一个
|
|
|
+ }
|
|
|
+ $stafflist[$k]['cidstafflist'] = $cidstafflist;
|
|
|
+ }
|
|
|
+
|
|
|
+ $data['stafflist'] = $stafflist;
|
|
|
+
|
|
|
+ $data['internstafflist'] = $staff->find(array('where' => 'nature=2', 'asArray' => TRUE));
|
|
|
+
|
|
|
+ $data ['memu'] = 'holiday';
|
|
|
+ $data ['holidaymenu'] = 'close';
|
|
|
+ $data ['staff'] = $this->staff;
|
|
|
+ $this->render ( "/holiday-close2", $data );
|
|
|
+ }
|
|
|
+
|
|
|
+ public function addHoliday2(){
|
|
|
+ if(isset($_POST['uid']) && is_numeric($_POST['uid']) && isset($_POST['type']) && is_numeric($_POST['type'])){
|
|
|
+ Doo::loadModel('holiday');
|
|
|
+ $holiday = new Holiday();
|
|
|
+ if(in_array($_POST['type'],array(1,2,3))){
|
|
|
+ $day = $_POST['day'];
|
|
|
+ $dayjson = array('holiday' => [$day.'_1']);
|
|
|
+ $holiday->uid = $_POST['uid'];
|
|
|
+ $holiday->type = $_POST['type'];
|
|
|
+ $holiday->dayjson = json_encode($dayjson);
|
|
|
+ $holiday->daynum = 1.0;
|
|
|
+ $holiday->status = 1;
|
|
|
+ $holiday->addtime = time();
|
|
|
+ $holiday->approvetime = time();
|
|
|
+ $holiday->description = $_POST['description'];
|
|
|
+ $id = $holiday->insert();
|
|
|
+
|
|
|
+ Doo::loadModel('holidayday');
|
|
|
+ $hday = new HDay();
|
|
|
+ $hday->hid = $id;
|
|
|
+ $hday->uid = $_POST['uid'];
|
|
|
+ $hday->type = $_POST['type'];
|
|
|
+ $hday->daytime = $day;
|
|
|
+ $hday->daymsg = 1.0;
|
|
|
+ $hday->insert();
|
|
|
+ if(isset($_POST['close2'])){
|
|
|
+ return '/holidayclose2';
|
|
|
+ }else{
|
|
|
+ return '/holidayclose';
|
|
|
+ }
|
|
|
+ }elseif($_POST['type'] == 14){
|
|
|
+ $thismonth = $this->getMonthTime(date('Y-m-d',time()));
|
|
|
+ $holiday->uid = $_POST['uid'];
|
|
|
+ $holiday->type = $_POST['type'];
|
|
|
+ $holiday->starttime = $thismonth['start'];
|
|
|
+ $holiday->endtime = $thismonth['end'];
|
|
|
+ $holiday->daynum = $_POST['daynum'];
|
|
|
+ $holiday->status = 1;
|
|
|
+ $holiday->addtime = time();
|
|
|
+ $holiday->approvetime = time();
|
|
|
+ $holiday->description = $_POST['description'];
|
|
|
+ $holiday->insert();
|
|
|
+ return '/holidayclose2';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ exit('添加事病假、旷工出错');
|
|
|
+ }
|
|
|
+
|
|
|
+ public function holidayOvertime(){
|
|
|
+ //获取办事处列表
|
|
|
+ Doo::loadModel('staff');
|
|
|
+ Doo::loadModel('holidaystaff');
|
|
|
+ Doo::loadModel('holidayday');
|
|
|
+ Doo::loadModel('holiday');
|
|
|
+ $staff = new staff();
|
|
|
+ $hstaff = new HStaff();
|
|
|
+ $hday = new HDay();
|
|
|
+ $holiday = new Holiday();
|
|
|
+
|
|
|
+ $sql = 'SELECT `CLD_L_category`.cid,`CLD_L_category`.title,count(`CLD_staff`.sid) as count FROM `CLD_L_category` left join `CLD_staff` on `CLD_L_category`.cid=`CLD_staff`.cid group by `CLD_staff`.cid HAVING count(`CLD_staff`.sid)>0 order by count(`CLD_staff`.sid) desc';
|
|
|
+ $query = Doo::db ()->query ( $sql );
|
|
|
+ $result = $query->fetchAll ();
|
|
|
+ $data['category'] = $result;
|
|
|
+
|
|
|
+ $thisyear = date('Y',time());
|
|
|
+// $thisyear = date('Y',1546358400);
|
|
|
+ $data['thismonth'] = intval(date('m',time()));
|
|
|
+ $num = intval($thisyear)-2017;
|
|
|
+ $html = '';
|
|
|
+ $yearnum = isset($this->params['year']) && is_numeric($this->params['year']) ? $this->params['year'] : '';
|
|
|
+ for($i = $num; $i >= 0; $i--){
|
|
|
+ if($yearnum == (2017+$i)){
|
|
|
+ $html .= '<option value="'.(2017+$i).'" selected>'.(2017+$i).'</option>';
|
|
|
+ }else{
|
|
|
+ $html .= '<option value="'.(2017+$i).'">'.(2017+$i).'</option>';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $data['option'] = $html;
|
|
|
+ if(isset($this->params['year']) && isset($this->params['month'])){
|
|
|
+ $month = intval($this->params['month']) < 10 ? '0'.$this->params['month'] : $this->params['month'];
|
|
|
+ $date = $this->params['year'].'-'.$month.'-01';
|
|
|
+ $thismonth = $this->getMonthTime($date);
|
|
|
+ $data['thismonth'] = $this->params['month'];
|
|
|
+ }else{
|
|
|
+ $thismonth = $this->getMonthTime(date('Y-m-d',time()));
|
|
|
+ }
|
|
|
+
|
|
|
+ $stafflist = array();
|
|
|
+ if(isset($this->params['cid']) && is_numeric($this->params['cid'])){
|
|
|
+ $data['thiscid'] = $this->params['cid'];
|
|
|
+ foreach($result as $k => $v){
|
|
|
+ if($this->params['cid'] == $v['cid']){
|
|
|
+ $stafflist[0]['categoryname'] = $v['title'];
|
|
|
+ $stafflist[0]['count'] = $v['count'];
|
|
|
+ $cidstafflist = $staff->getStaffByCid($v['cid']);
|
|
|
+ foreach($cidstafflist as $ck => $cv){
|
|
|
+ $hstaffmsg = $hstaff->getOne(array('where' => 'uid='.$cv['sid'], 'asArray' => TRUE));
|
|
|
+ $cidstafflist[$ck]['addnum'] = $hstaffmsg['addnum'] != 0.0 ? floatval($hstaffmsg['addnum']) : '';
|
|
|
+ foreach(array(4,5,10,11) as $tk => $tv){
|
|
|
+ if($tv == 11){
|
|
|
+ $typeholiday = $holiday->find(array('where' => 'status=1 and type='.$tv.' and uid='.$cv['sid'].' and addtime between '.$thismonth['start'].' and '.$thismonth['end'],'asArray' => TRUE));
|
|
|
+ $cidstafflist[$ck][$tv] = 0;
|
|
|
+ if(!empty($typeholiday)){
|
|
|
+ foreach($typeholiday as $thk => $thv){
|
|
|
+ $cidstafflist[$ck][$tv] += floatval($thv['daynum']);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $cidstafflist[$ck][$tv] = $cidstafflist[$ck][$tv] != 0 ? $cidstafflist[$ck][$tv] : '';
|
|
|
+ }else{
|
|
|
+ $typeholiday = $hday->find(array('where' => 'type='.$tv.' and uid='.$cv['sid'].' and UNIX_TIMESTAMP(daytime) between '.$thismonth['start'].' and '.$thismonth['end'],'asArray' => TRUE));
|
|
|
+ $cidstafflist[$ck][$tv] = 0;
|
|
|
+ if(!empty($typeholiday)){
|
|
|
+ foreach($typeholiday as $thk => $thv){
|
|
|
+ $cidstafflist[$ck][$tv] += floatval($thv['daymsg']);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $cidstafflist[$ck][$tv] = $cidstafflist[$ck][$tv] != 0 ? $cidstafflist[$ck][$tv] : '';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $cidstafflist[$ck]['countnum'] = floatval($cidstafflist[$ck][4])+floatval($cidstafflist[$ck][5]) != 0 ? floatval($cidstafflist[$ck][4]) + floatval($cidstafflist[$ck][5]) : '';
|
|
|
+ $cidstafflist[$ck]['first'] = $ck == 0 ? 1 : ''; // 是否第一个
|
|
|
+ }
|
|
|
+ $stafflist[0]['cidstafflist'] = $cidstafflist;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ foreach($result as $k => $v){
|
|
|
+ $stafflist[$k]['categoryname'] = $v['title'];
|
|
|
+ $stafflist[$k]['count'] = $v['count'];
|
|
|
+ $cidstafflist = $staff->getStaffByCid($v['cid']);
|
|
|
+ foreach($cidstafflist as $ck => $cv) {
|
|
|
+ $hstaffmsg = $hstaff->getOne(array('where' => 'uid=' . $cv['sid'], 'asArray' => TRUE));
|
|
|
+ $cidstafflist[$ck]['addnum'] = $hstaffmsg['addnum'] != 0.0 ? floatval($hstaffmsg['addnum']) : '';
|
|
|
+ foreach (array(4, 5, 10, 11) as $tk => $tv) {
|
|
|
+ if ($tv == 11) {
|
|
|
+ $typeholiday = $holiday->find(array('where' => 'status=1 and type=' . $tv . ' and uid=' . $cv['sid'] . ' and addtime between ' . $thismonth['start'] . ' and ' . $thismonth['end'], 'asArray' => TRUE));
|
|
|
+ $cidstafflist[$ck][$tv] = 0;
|
|
|
+ if (!empty($typeholiday)) {
|
|
|
+ foreach ($typeholiday as $thk => $thv) {
|
|
|
+ $cidstafflist[$ck][$tv] += floatval($thv['daynum']);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $cidstafflist[$ck][$tv] = $cidstafflist[$ck][$tv] != 0 ? $cidstafflist[$ck][$tv] : '';
|
|
|
+ } else {
|
|
|
+ $typeholiday = $hday->find(array('where' => 'type=' . $tv . ' and uid=' . $cv['sid'] . ' and UNIX_TIMESTAMP(daytime) between ' . $thismonth['start'] . ' and ' . $thismonth['end'], 'asArray' => TRUE));
|
|
|
+ $cidstafflist[$ck][$tv] = 0;
|
|
|
+ if (!empty($typeholiday)) {
|
|
|
+ foreach ($typeholiday as $thk => $thv) {
|
|
|
+ $cidstafflist[$ck][$tv] += floatval($thv['daymsg']);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $cidstafflist[$ck][$tv] = $cidstafflist[$ck][$tv] != 0 ? $cidstafflist[$ck][$tv] : '';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $cidstafflist[$ck]['countnum'] = floatval($cidstafflist[$ck][4])+floatval($cidstafflist[$ck][5]) != 0 ? floatval($cidstafflist[$ck][4]) + floatval($cidstafflist[$ck][5]) : '';
|
|
|
+ $cidstafflist[$ck]['first'] = $ck == 0 ? 1 : ''; // 是否第一个
|
|
|
+ }
|
|
|
+ $stafflist[$k]['cidstafflist'] = $cidstafflist;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $data['stafflist'] = $stafflist;
|
|
|
+
|
|
|
+ $zongbu = $staff->getStaffByCid(12);
|
|
|
+ $data['zongbu'] = $zongbu;
|
|
|
+
|
|
|
+ $data ['memu'] = 'holiday';
|
|
|
+ $data ['holidaymenu'] = 'overtime';
|
|
|
+ $data ['staff'] = $this->staff;
|
|
|
+ $this->render ( "/holiday-overtime", $data );
|
|
|
+ }
|
|
|
+
|
|
|
+ public function addHoliday(){
|
|
|
+ if(isset($_POST['uid']) && is_numeric($_POST['uid']) && isset($_POST['type']) && is_numeric($_POST['type'])){
|
|
|
+ Doo::loadModel('holidaystaff');
|
|
|
+ Doo::loadModel('holiday');
|
|
|
+ $holiday = new Holiday();
|
|
|
+ $hstaff = new HStaff();
|
|
|
+ $hstaffmsg = $hstaff->getOne(array('where' => 'uid='.$_POST['uid'], 'asArray' => TRUE));
|
|
|
+ if($_POST['type'] == 4 || $_POST['type'] == 5){
|
|
|
+ $day = $_POST['day'];
|
|
|
+ $hstaff->uid = $_POST['uid'];
|
|
|
+ $hstaff->addnum = floatval($hstaffmsg['addnum'])+1;
|
|
|
+ $result = $hstaff->update();
|
|
|
+ if($result){
|
|
|
+ $dayjson = array('holiday' => [$day.'_1']);
|
|
|
+ $holiday->uid = $_POST['uid'];
|
|
|
+ $holiday->type = $_POST['type'];
|
|
|
+ $holiday->dayjson = json_encode($dayjson);
|
|
|
+ $holiday->daynum = 1.0;
|
|
|
+ $holiday->status = 1;
|
|
|
+ $holiday->addtime = time();
|
|
|
+ $holiday->approvetime = time();
|
|
|
+ $holiday->description = $_POST['description'];
|
|
|
+ $id = $holiday->insert();
|
|
|
+
|
|
|
+ Doo::loadModel('holidayday');
|
|
|
+ $hday = new HDay();
|
|
|
+ $hday->hid = $id;
|
|
|
+ $hday->uid = $_POST['uid'];
|
|
|
+ $hday->type = $_POST['type'];
|
|
|
+ $hday->daytime = $day;
|
|
|
+ $hday->daymsg = 1.0;
|
|
|
+ $hday->insert();
|
|
|
+
|
|
|
+ return '/holidayovertime';
|
|
|
+ }else{
|
|
|
+ exit('添加到holidaystaff出错');
|
|
|
+ }
|
|
|
+ }elseif($_POST['type'] == 13){
|
|
|
+ $daynum = $_POST['tixian'];
|
|
|
+ if($daynum > $hstaffmsg['addnum']){
|
|
|
+ exit('提现天数超过存假天数了');
|
|
|
+ }else{
|
|
|
+ $hstaff->uid = $_POST['uid'];
|
|
|
+ $hstaff->addnum = $hstaffmsg['addnum']-$daynum;
|
|
|
+ $result = $hstaff->update();
|
|
|
+ if($result){
|
|
|
+ $holiday->uid = $_POST['uid'];
|
|
|
+ $holiday->type = 13;
|
|
|
+ $holiday->daynum = $daynum;
|
|
|
+ $holiday->status = 1;
|
|
|
+ $holiday->addtime = time();
|
|
|
+ $holiday->approvetime = 1;
|
|
|
+ $holiday->description = $_POST['description'];
|
|
|
+ $holiday->insert();
|
|
|
+
|
|
|
+ return '/holidayovertime';
|
|
|
+ }else{
|
|
|
+ exit('添加到holidaystaff出错');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ exit('添加加值班或提现出错');
|
|
|
+ }
|
|
|
+
|
|
|
+ public function holidayVacation(){
|
|
|
+
|
|
|
+ //获取办事处列表
|
|
|
+ Doo::loadModel('staff');
|
|
|
+ Doo::loadModel('holidaystaff');
|
|
|
+ $staff = new staff();
|
|
|
+ $hstaff = new HStaff();
|
|
|
+
|
|
|
+ $sql = 'SELECT `CLD_L_category`.cid,`CLD_L_category`.title,count(`CLD_staff`.sid) as count FROM `CLD_L_category` left join `CLD_staff` on `CLD_L_category`.cid=`CLD_staff`.cid group by `CLD_staff`.cid HAVING count(`CLD_staff`.sid)>0 order by count(`CLD_staff`.sid) desc';
|
|
|
+ $query = Doo::db ()->query ( $sql );
|
|
|
+ $result = $query->fetchAll ();
|
|
|
+ $data['category'] = $result;
|
|
|
+
|
|
|
+ $stafflist = array();
|
|
|
+ if(isset($this->params['cid']) && is_numeric($this->params['cid'])){
|
|
|
+ $data['thiscid'] = $this->params['cid'];
|
|
|
+ foreach($result as $k => $v){
|
|
|
+ if($this->params['cid'] == $v['cid']){
|
|
|
+ $stafflist[0]['categoryname'] = $v['title'];
|
|
|
+ $stafflist[0]['count'] = $v['count'];
|
|
|
+ $cidstafflist = $staff->getStaffByCid($v['cid']);
|
|
|
+ foreach($cidstafflist as $ck => $cv){
|
|
|
+ $hstaffmsg = $hstaff->getOne(array('where' => 'uid='.$cv['sid'], 'asArray' => TRUE));
|
|
|
+ $cidstafflist[$ck]['yearnum'] = $hstaffmsg['yearnum'] != 0.0 ? floatval($hstaffmsg['yearnum']) : '';
|
|
|
+ $cidstafflist[$ck]['addnum'] = $hstaffmsg['addnum'] != 0.0 ? floatval($hstaffmsg['addnum']) : '';
|
|
|
+ $cidstafflist[$ck]['hunjianum'] = $hstaffmsg['hunjianum'] != 0.0 ? floatval($hstaffmsg['hunjianum']) : '';
|
|
|
+ $cidstafflist[$ck]['chanjianum'] = $hstaffmsg['chanjianum'] != 0.0 ? floatval($hstaffmsg['chanjianum']) : '';
|
|
|
+ $cidstafflist[$ck]['sangjianum'] = $hstaffmsg['sangjianum'] != 0.0 ? floatval($hstaffmsg['sangjianum']) : '';
|
|
|
+ $cidstafflist[$ck]['gongjianum'] = $hstaffmsg['gongjianum'] != 0.0 ? floatval($hstaffmsg['gongjianum']) : '';
|
|
|
+ $cidstafflist[$ck]['yearround'] = $this->getYearRoundtime($hstaffmsg['hadyear'],$cv['hiredate']);
|
|
|
+ $cidstafflist[$ck]['first'] = $ck == 0 ? 1 : ''; // 是否第一个
|
|
|
+ }
|
|
|
+ $stafflist[0]['cidstafflist'] = $cidstafflist;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ foreach($result as $k => $v){
|
|
|
+ $stafflist[$k]['categoryname'] = $v['title'];
|
|
|
+ $stafflist[$k]['count'] = $v['count'];
|
|
|
+ $cidstafflist = $staff->getStaffByCid($v['cid']);
|
|
|
+ foreach($cidstafflist as $ck => $cv){
|
|
|
+ $hstaffmsg = $hstaff->getOne(array('where' => 'uid='.$cv['sid'], 'asArray' => TRUE));
|
|
|
+ $cidstafflist[$ck]['yearnum'] = $hstaffmsg['yearnum'] != 0.0 ? floatval($hstaffmsg['yearnum']) : '';
|
|
|
+ $cidstafflist[$ck]['addnum'] = $hstaffmsg['addnum'] != 0.0 ? floatval($hstaffmsg['addnum']) : '';
|
|
|
+ $cidstafflist[$ck]['hunjianum'] = $hstaffmsg['hunjianum'] != 0.0 ? floatval($hstaffmsg['hunjianum']) : '';
|
|
|
+ $cidstafflist[$ck]['chanjianum'] = $hstaffmsg['chanjianum'] != 0.0 ? floatval($hstaffmsg['chanjianum']) : '';
|
|
|
+ $cidstafflist[$ck]['sangjianum'] = $hstaffmsg['sangjianum'] != 0.0 ? floatval($hstaffmsg['sangjianum']) : '';
|
|
|
+ $cidstafflist[$ck]['gongjianum'] = $hstaffmsg['gongjianum'] != 0.0 ? floatval($hstaffmsg['gongjianum']) : '';
|
|
|
+ $cidstafflist[$ck]['yearround'] = $this->getYearRoundtime($hstaffmsg['hadyear'],$cv['hiredate']);
|
|
|
+ $cidstafflist[$ck]['first'] = $ck == 0 ? 1 : ''; // 是否第一个
|
|
|
+ }
|
|
|
+ $stafflist[$k]['cidstafflist'] = $cidstafflist;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $zongbu = $staff->getStaffByCid(12);
|
|
|
+ $data['zongbu'] = $zongbu;
|
|
|
+ $hstaff2 = new HStaff();
|
|
|
+ $hstaffmsg2 = $hstaff2->getOne(array('select' => 'yearnum', 'where' => 'uid='.$zongbu[0]['sid'], 'asArray' => TRUE));
|
|
|
+ $data['thisnum'] = floatval($hstaffmsg2['yearnum']);
|
|
|
+
|
|
|
+ $data['stafflist'] = $stafflist;
|
|
|
+
|
|
|
+ $data ['memu'] = 'holiday';
|
|
|
+ $data ['holidaymenu'] = 'vacation';
|
|
|
+ $data ['staff'] = $this->staff;
|
|
|
+ $this->render ( "/holiday-vacation", $data );
|
|
|
+ }
|
|
|
+
|
|
|
+ public function setStaffHoliday(){
|
|
|
+ if(isset($_POST['uid']) && is_numeric($_POST['uid']) && isset($_POST['typeholiday']) && isset($_POST['addnum'])){
|
|
|
+ Doo::loadModel('holidaystaff');
|
|
|
+ $hstaff = new HStaff();
|
|
|
+ $hstaffmsg = $hstaff->getOne(array('where' => 'uid='.$_POST['uid'], 'asArray' => TRUE));
|
|
|
+ $hstaff->uid = $_POST['uid'];
|
|
|
+ $hstaff->$_POST['typeholiday'] = $hstaffmsg[$_POST['typeholiday']]+$_POST['addnum'];
|
|
|
+ $hstaff->update();
|
|
|
+ return '/holidayvacation';
|
|
|
+ }else{
|
|
|
+ exit('增加出错');
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getStaffCategory(){
|
|
|
+ if(isset($_POST['cid']) && is_numeric($_POST['cid'])){
|
|
|
+ Doo::loadModel('staff');
|
|
|
+ $staff = new staff();
|
|
|
+ $stafflist = $staff->getStaffByCid($_POST['cid']);
|
|
|
+ Doo::loadModel('holidaystaff');
|
|
|
+ $hstaff = new HStaff();
|
|
|
+ $hstaffmsg = $hstaff->getOne(array('select' => 'yearnum', 'where' => 'uid='.$stafflist[0]['sid'], 'asArray' => TRUE));
|
|
|
+ exit(json_encode(array('code' => 200, 'stafflist' => $stafflist, 'thisnum' => floatval($hstaffmsg['yearnum']))));
|
|
|
+ }
|
|
|
+ exit(json_encode(array('code' => 400)));
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getHolidayStaff(){
|
|
|
+ if(isset($_POST['uid']) && is_numeric($_POST['uid']) && isset($_POST['type'])){
|
|
|
+ Doo::loadModel('holidaystaff');
|
|
|
+ $hstaff = new HStaff();
|
|
|
+ $staffmsg = $hstaff->getOne(array('select' => $_POST['type'], 'where' => 'uid='.$_POST['uid'], 'asArray' => TRUE));
|
|
|
+ exit(json_encode(array('code' => 200, 'thisnum' => floatval($staffmsg[$_POST['type']]))));
|
|
|
+ }
|
|
|
+ exit(json_encode(array('code' => 400)));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
private function geyDayMsg($dayjson){
|
|
|
$holidayday = array();
|
|
|
foreach($dayjson as $dk => $dv){
|
|
@@ -210,6 +758,13 @@ class HolidayController extends DooController {
|
|
|
return $holidayday;
|
|
|
}
|
|
|
|
|
|
+ //获取某日期的月初月末时间戳
|
|
|
+ private function getMonthTime($time){
|
|
|
+ $starttime = strtotime(date('Y-m-01',strtotime($time)));
|
|
|
+ $endtime = strtotime("+1 months", strtotime(date('Y-m-01',strtotime($time))))-1;
|
|
|
+ return array('start' => $starttime, 'end' => $endtime);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
//获取本年的每个月的时间戳
|
|
|
private function getYearMonthTime($thisyear){
|
|
@@ -225,6 +780,21 @@ class HolidayController extends DooController {
|
|
|
return $monthdata;
|
|
|
}
|
|
|
|
|
|
+ //获取本年当事人的年假周期
|
|
|
+ private function getYearRoundtime($hadyear,$hiredate){
|
|
|
+ $month = date('m', strtotime($hiredate));
|
|
|
+ $date = date('d', strtotime($hiredate));
|
|
|
+ $monthday = intval($month).'月'.intval($date).'日';
|
|
|
+ $year = date('Y',time());
|
|
|
+ if(strtotime($hiredate)+(86400*365*$hadyear) < time()){
|
|
|
+ $lastyear = intval($year)-1;
|
|
|
+ return intval($lastyear).'年'.$monthday.'~'.intval($year).'年'.$monthday;
|
|
|
+ }else{
|
|
|
+ $nextyear = intval($year)+1;
|
|
|
+ return intval($year).'年'.$monthday.'~'.intval($nextyear).'年'.$monthday;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
?>
|