success('请求成功'); } /** * 关联工资核算侧边栏 * @ApiMethod (GET) */ public function getTab() { //get请求 if(!$this->request->isGet()){ $this->error('请求方式错误'); } // $rows = db()->table('绩效工资汇总') // ->whereTime('sczl_rq', '>=', strtotime('-25 months')) // ->group('sys_ny') // ->order('sys_ny desc') // ->limit(25) // ->column('sys_ny'); $rows = db()->table('db_大废品') ->whereTime('sys_rq', '>=', strtotime('-25 months')) ->group("DATE_FORMAT(`sys_rq`, '%Y%m')") ->order('sys_rq desc') ->limit(25) ->column("DATE_FORMAT(`sys_rq`, '%Y%m')"); foreach($rows as $k=>$v){ $datas[$k]['label']=$v; $datas[$k]['children']=[ ['label'=>'胶印车间','rq'=>$v], ['label'=>'凹印车间','rq'=>$v], ['label'=>'丝印车间','rq'=>$v], ['label'=>'模切车间','rq'=>$v], ['label'=>'检验车间','rq'=>$v]]; } $this->success('成功',$datas); } /** * 关联工资核算上侧列表 * @ApiMethod (GET) * @param string $date 年月 * @param string $department 部门 */ public function getList() { //get请求 if(!$this->request->isGet()){ $this->error('请求方式错误'); } $req = $this->request->param(); $year=substr($req['date'],0,4); $month=substr($req['date'],-2); if($month==12){ $start_time=$year.'-12-01 00:00:00'; $end_time=($year+1).'-01-01 00:00:00'; }else{ $start_time=$year.'-'.$month.'-01 00:00:00'; $end_time=$year.'-'.($month+1).'-01 00:00:00'; } $gz=db()->table('绩效工资汇总') ->field('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资, DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq') ->group('LEFT(sczl_rq, 10),bh') ->where(['sys_ny'=>$req['date']]) ->select(); foreach($gz as $v){ $data[$v['bh']][$v['sczl_rq']]=$v; } $res=db()->table('人事_关联工资设置') ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT') ->field('关联员工 as 员工编号,rtrim(人事_基本资料.员工姓名) as 员工姓名,rtrim(人事_基本资料.职称职务) as 职称职务, 人事_基本资料.所在部门,DATE_FORMAT(日期,"%Y.%m.%d") as 日期,关联系数,count(被关联员工) as 关联人数') ->group('LEFT(日期, 10),关联员工') ->where(['日期'=>['between',"$start_time,$end_time"],'人事_基本资料.所在部门'=>['like',$req['department'].'%']]) ->order('关联员工,日期') ->select(); foreach($res as &$v){ if(isset($data[$v['员工编号']][$v['日期']])){ $v['个人计件工资']=$data[$v['员工编号']][$v['日期']]['个人计件工资']; $v['个人加班工资']=$data[$v['员工编号']][$v['日期']]['个人加班工资']; }else{ $v['个人计件工资']=''; $v['个人加班工资']=''; } } if(!$res){ $this->error('失败'); } $this->success('成功',$res); } /** * 关联工资核算下侧列表 * @ApiMethod (GET) * @param string $date 年月 * @param string $code 员工编号 */ public function getAllList() { //get请求 if(!$this->request->isGet()){ $this->error('请求方式错误'); } $req = $this->request->param(); $year=substr($req['date'],0,4); $month=substr($req['date'],-2); if($month==12){ $start_time=$year.'-12-01 00:00:00'; $end_time=($year+1).'-01-01 00:00:00'; }else{ $start_time=$year.'-'.$month.'-01 00:00:00'; $end_time=$year.'-'.($month+1).'-01 00:00:00'; } $gz=db()->table('绩效工资汇总') ->field('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资, DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq') ->group('LEFT(sczl_rq, 10),bh') ->where(['sys_ny'=>$req['date']]) ->select(); foreach($gz as $v){ $data[$v['bh']][$v['sczl_rq']]=$v; } $res=db()->table('人事_关联工资设置') ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT') ->field('DATE_FORMAT(日期,"%Y.%m.%d") as 日期,关联员工 as 员工编号,rtrim(人事_基本资料.员工姓名) as 员工姓名, rtrim(人事_基本资料.职称职务) as 职称职务,人事_基本资料.所在部门,被关联员工,权重') ->group('LEFT(日期, 10),被关联员工') ->where(['日期'=>['between',"$start_time,$end_time"],'关联员工'=>$req['code']]) ->order('关联员工,日期') ->select(); if(!$res){ $this->error('失败'); } foreach($res as &$v){ if(isset($data[$v['被关联员工']][$v['日期']])){ $v['被关联姓名']=$data[$v['被关联员工']][$v['日期']]['姓名']; $v['个人计件工资']=$data[$v['被关联员工']][$v['日期']]['个人计件工资']; $v['个人加班工资']=$data[$v['被关联员工']][$v['日期']]['个人加班工资']; }else{ $v['个人计件工资']=''; $v['个人加班工资']=''; } } $this->success('成功',$res); } /** * 关联工资核算详情 * @ApiMethod (GET) * @param string $date 日期 * @param string $code 员工编号 */ public function getDetail() { //get请求 if(!$this->request->isGet()){ $this->error('请求方式错误'); } $req = $this->request->param(); $start_time=$req['date'].' 00:00:00'; $end_time=$req['date'].' 23:59:59'; $gz=db()->table('绩效工资汇总') ->field('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资, DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq') ->group('LEFT(sczl_rq, 10),bh') ->where(['sczl_rq'=>$start_time]) ->select(); foreach($gz as $v){ $data[$v['bh']][$v['sczl_rq']]=$v; } $res=db()->table('人事_关联工资设置') ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT') ->field('DATE_FORMAT(日期,"%Y.%m.%d") as 日期,关联员工 as 员工编号,rtrim(人事_基本资料.员工姓名) as 员工姓名, rtrim(人事_基本资料.职称职务) as 职称职务,人事_基本资料.所在部门,被关联员工,权重') ->group('LEFT(日期, 10),被关联员工') ->where(['日期'=>['between',"$start_time,$end_time"],'关联员工'=>$req['code']]) ->order('关联员工,日期') ->select(); if(!$res){ $this->error('失败'); } foreach($res as &$v){ if(isset($data[$v['被关联员工']][$v['日期']])){ $v['被关联姓名']=$data[$v['被关联员工']][$v['日期']]['姓名']; $v['个人计件工资']=$data[$v['被关联员工']][$v['日期']]['个人计件工资']; $v['个人加班工资']=$data[$v['被关联员工']][$v['日期']]['个人加班工资']; }else{ $v['个人计件工资']=''; $v['个人加班工资']=''; } } $this->success('成功',$res); } /** * 定位 * @ApiMethod GET */ public function search(){ //get请求 if(!$this->request->isGet()){ $this->error('请求方式错误'); } $req = $this->request->param(); $year=substr($req['date'],0,4); $month=substr($req['date'],-2); if($month==12){ $start_time=$year.'-12-01 00:00:00'; $end_time=($year+1).'-01-01 00:00:00'; }else{ $start_time=$year.'-'.$month.'-01 00:00:00'; $end_time=$year.'-'.($month+1).'-01 00:00:00'; } $gd = db()->table('工单_基本资料')->where('Gd_cpmc',$req['search'])->value('Gd_gdbh'); if($gd){ $req['search']=$gd; } $gz=db()->table('绩效工资汇总') ->field('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资, DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq') ->group('LEFT(sczl_rq, 10),bh') ->where(['sys_ny'=>$req['date']]) ->select(); foreach($gz as $v){ $data[$v['bh']][$v['sczl_rq']]=$v; } $res=db()->table('人事_关联工资设置') ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT') ->field('关联员工 as 员工编号,rtrim(人事_基本资料.员工姓名) as 员工姓名,rtrim(人事_基本资料.职称职务) as 职称职务, 人事_基本资料.所在部门,DATE_FORMAT(日期,"%Y.%m.%d") as 日期,关联系数,count(被关联员工) as 关联人数') ->group('LEFT(日期, 10),关联员工') ->where(['日期'=>['between',"$start_time,$end_time"],'关联员工'=>$req['search']]) ->order('关联员工,日期') ->select(); foreach($res as &$v){ if(isset($data[$v['员工编号']][$v['日期']])){ $v['个人计件工资']=$data[$v['员工编号']][$v['日期']]['个人计件工资']; $v['个人加班工资']=$data[$v['员工编号']][$v['日期']]['个人加班工资']; }else{ $v['个人计件工资']=''; $v['个人加班工资']=''; } } if(!$res){ $this->error('失败'); } $this->success('成功',$res); } /** * 关联工资设置 * @ApiMethod (GET) * @param string $date 日期 * @param string $code 员工编号 */ public function setting() { //get请求 if(!$this->request->isGet()){ $this->error('请求方式错误'); } $req = $this->request->param(); $req['date']=str_replace('.','-',$req['date']); $start_time=$req['date'].' 00:00:00'; $end_time=$req['date'].' 23:59:59'; $gz=db()->table('绩效工资汇总') ->field('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资, DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq') ->group('LEFT(sczl_rq, 10),bh') ->where(['sczl_rq'=>$start_time]) ->select(); foreach($gz as $v){ $data[$v['bh']][$v['sczl_rq']]=$v; } $res=db()->table('人事_关联工资设置') ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT') ->field('DATE_FORMAT(日期,"%Y.%m.%d") as 日期,关联员工 as 关联人员工号,rtrim(人事_基本资料.员工姓名) as 关联人员姓名, 被关联员工 as 班组员工编号,权重 as 组员权重,关联系数 as 日关联系数,人事_关联工资设置.UniqID') ->group('被关联员工') ->where(['日期'=>['between',"$start_time,$end_time"],'关联员工'=>$req['code']]) ->order('关联员工,日期') ->select(); if(!$res){ $this->error('失败'); } foreach($res as &$v){ if(isset($data[$v['班组员工编号']][$v['日期']])){ $bh=$v['班组员工编号']; $rq=$v['日期']; $v['班组员工编号']=$bh.'('.$data[$bh][$rq]['姓名'].')'; $v['计件工资基数']=$data[$bh][$rq]['个人计件工资']; $v['加班工资基数']=$data[$bh][$rq]['个人加班工资']; $v['日关联人数']=count($res); }else{ $v['个人计件工资']=''; $v['个人加班工资']=''; } } $this->success('成功',$res); } /** * 更新关联系数 * @ApiMethod (GET) * @param string $date 日期 * @param string $code 员工编号 */ public function updateNum() { //get请求 if(!$this->request->isGet()){ $this->error('请求方式错误'); } $req = $this->request->param(); $req['date']=str_replace('.','-',$req['date']); $start_time=$req['date'].' 00:00:00'; // $sql=db()->table('人事_关联工资设置') // ->where(['日期'=>$start_time,'关联员工'=>$req['code']]) // ->fetchSql(true) // ->setField('关联系数',$req['num']); // Db::query($sql); $data['mod_rq'] = date('Y-m-d H:i:s'); $data['关联系数']=$req['num']; //开启事务 db()->startTrans(); try{ $sql=db()->table('人事_关联工资设置') ->where(['日期'=>$start_time,'关联员工'=>$req['code']]) ->fetchSql(true) ->update($data); $res=Db::query($sql); // 提交事务 db()->commit(); } catch (\Exception $e) { // 回滚事务 db()->rollback(); $this->error($e->getMessage()); } if($res===false) $this->error('失败'); $this->success('成功'); } /** * 关联组员权重查询 * @ApiMethod (GET) * @param string $date 日期 * @param string $code 员工编号 */ public function weightDetail() { //get请求 if(!$this->request->isGet()){ $this->error('请求方式错误'); } $req = $this->request->param(); $req['date']=str_replace('.','-',$req['date']); $start_time=$req['date'].' 00:00:00'; $end_time=$req['date'].' 23:59:59'; $res=db()->table('人事_基本资料') ->join('人事_关联工资设置','人事_基本资料.员工编号=人事_关联工资设置.被关联员工','LEFT') ->join('人事_员工照片','人事_基本资料.照片ID=人事_员工照片.UniqId','LEFT') ->field('人事_关联工资设置.被关联员工 as 员工编号,rtrim(员工姓名) as 姓名,rtrim(所在部门) as 部门名称,人事_基本资料.职称职务 as 职务, DATE_FORMAT(聘用日期,"%Y.%m.%d") as 入职日期,权重 as 关联权重') ->group('被关联员工') ->where(['人事_关联工资设置.日期'=>['between',"$start_time,$end_time"],'人事_关联工资设置.被关联员工'=>$req['code']]) ->order('关联员工,日期') ->select(); if(!$res){ $this->error('失败'); } $this->success('成功',$res); } /** * 批量附加组员列表 * @ApiMethod (GET) * @param string $date 日期 * @param string $code 员工编号 */ public function batchAddLst() { //get请求 if(!$this->request->isGet()){ $this->error('请求方式错误'); } $req = $this->request->param(); $req['date']=str_replace('.','-',$req['date']); $start_time=$req['date'].' 00:00:00'; $end_time=$req['date'].' 23:59:59'; $gz=db()->table('绩效工资汇总') ->field('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资, DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq,sczl_bzdh') ->group('LEFT(sczl_rq, 10),bh') ->where(['sczl_rq'=>$start_time]) ->select(); foreach($gz as $v){ $data[$v['bh']][$v['sczl_rq']]=$v; } $res=db()->table('人事_关联工资设置') ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.被关联员工','LEFT') ->field('DATE_FORMAT(日期,"%Y.%m.%d") as 日期,人事_基本资料.所在部门,人事_基本资料.职称职务,被关联员工 as 班组员工编号,人事_关联工资设置.UniqID') // ->group('被关联员工') ->where(['日期'=>['between',"$start_time,$end_time"],'关联员工'=>['NEQ',$req['code']]]) ->order('人事_基本资料.所在部门') ->select(); if(!$res){ $this->error('失败'); } foreach($res as &$v){ if(isset($data[$v['班组员工编号']][$v['日期']])){ $bh=$v['班组员工编号']; $rq=$v['日期']; $v['班组员工编号']=$bh.'('.$data[$bh][$rq]['姓名'].')'; $v['班组']=$data[$bh][$rq]['sczl_bzdh']; $v['计件工资基数']=$data[$bh][$rq]['个人计件工资']; $v['加班工资基数']=$data[$bh][$rq]['个人加班工资']; }else{ $v['计件工资基数']='删除'; $v['加班工资基数']=''; } } foreach($res as $k=>$v){ if($v['计件工资基数']=='删除'){ unset($res[$k]); } } array_multisort($res); $this->success('成功',$res); } /** * 批量附加组员定位 * @ApiMethod (GET) * @param string $date 日期 * @param string $search 员工编号 */ public function batchAddSearch() { //get请求 if(!$this->request->isGet()){ $this->error('请求方式错误'); } $req = $this->request->param(); $req['date']=str_replace('.','-',$req['date']); $start_time=$req['date'].' 00:00:00'; $end_time=$req['date'].' 23:59:59'; $gd = db()->table('工单_基本资料')->where('Gd_cpmc',$req['search'])->value('Gd_gdbh'); if($gd){ $req['search']=$gd; } $gz=db()->table('绩效工资汇总') ->field('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资, DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq,sczl_bzdh') ->group('LEFT(sczl_rq, 10),bh') ->where(['sczl_rq'=>$start_time]) ->select(); foreach($gz as $v){ $data[$v['bh']][$v['sczl_rq']]=$v; } $res=db()->table('人事_关联工资设置') ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.被关联员工','LEFT') ->field('DATE_FORMAT(日期,"%Y.%m.%d") as 日期,人事_基本资料.所在部门,人事_基本资料.职称职务,被关联员工 as 班组员工编号,人事_关联工资设置.UniqID') // ->group('被关联员工') ->where(['日期'=>['between',"$start_time,$end_time"],'被关联员工'=>['EQ',$req['search']]]) ->order('人事_基本资料.所在部门') ->select(); if(!$res){ $this->error('失败'); } foreach($res as &$v){ if(isset($data[$v['班组员工编号']][$v['日期']])){ $bh=$v['班组员工编号']; $rq=$v['日期']; $v['班组员工编号']=$bh.'('.$data[$bh][$rq]['姓名'].')'; $v['班组']=$data[$bh][$rq]['sczl_bzdh']; $v['计件工资基数']=$data[$bh][$rq]['个人计件工资']; $v['加班工资基数']=$data[$bh][$rq]['个人加班工资']; }else{ $v['计件工资基数']='删除'; $v['加班工资基数']=''; } } foreach($res as $k=>$v){ if($v['计件工资基数']=='删除'){ unset($res[$k]); } } $this->success('成功',$res); } /** * 关联组员复制列表 * @ApiMethod (GET) * @param string $date 日期 */ public function copyLst() { //get请求 if(!$this->request->isGet()){ $this->error('请求方式错误'); } $req = $this->request->param(); $req['date']=str_replace('.','-',$req['date']); $start_time=$req['date'].' 00:00:00'; $end_time=$req['date'].' 23:59:59'; $res=db()->table('人事_关联工资设置') ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT') ->field('关联员工 as 员工编号,人事_基本资料.员工姓名,人事_基本资料.所在部门,人事_基本资料.职称职务,人事_关联工资设置.UniqID') ->group('关联员工') ->where(['日期'=>['between',"$start_time,$end_time"]]) // ->order('人事_关联工资设置.关联员工') ->select(); if(!$res){ $this->error('失败'); } $this->success('成功',$res); } /** * 批量附加组员 * @ApiMethod POST * @params string UniqID */ public function batchAdd(){ if (Request::instance()->isPost() == false){ $this->error('非法请求'); } $params = Request::instance()->post(); if (!isset($params) || !isset($params[0]['UniqID'])){ $this->error('参数不能为空'); } //开启事务 db()->startTrans(); try{ foreach($params as $k=>$v){ $v['mod_rq']=date('Y-m-d H:i:s'); $sql=db()->table('人事_关联工资设置') ->where(['UniqID'=>$v['UniqID']]) ->fetchSql(true) ->update($v); $res=Db::query($sql); } // 提交事务 db()->commit(); } catch (\Exception $e) { // 回滚事务 db()->rollback(); $this->error($e->getMessage()); } if($res===false) $this->error('失败'); $this->success('成功'); } /** * 批量删除组员 * @ApiMethod POST * @params string UniqID */ public function batchDel(){ if (Request::instance()->isPost() == false){ $this->error('非法请求'); } $params = Request::instance()->post(); if (!isset($params) || !isset($params[0]['UniqID'])){ $this->error('参数不能为空'); } //开启事务 db()->startTrans(); try{ foreach($params as $k=>$v){ $v['mod_rq']=date('Y-m-d H:i:s'); $v['关联员工']=''; $sql=db()->table('人事_关联工资设置') ->where(['UniqID'=>$v['UniqID']]) ->fetchSql(true) ->update($v); $res=Db::query($sql); } // 提交事务 db()->commit(); } catch (\Exception $e) { // 回滚事务 db()->rollback(); $this->error($e->getMessage()); } if($res===false) $this->error('失败'); $this->success('成功'); } /** * 关联组员复制 * @ApiMethod POST * @params string UniqID */ public function copy(){ if (Request::instance()->isPost() == false){ $this->error('非法请求'); } $params = Request::instance()->post(); if (!isset($params) || !isset($params[0])){ $this->error('参数不能为空'); } //开启事务 db()->startTrans(); try{ foreach($params as $v){ $v['old_time']=str_replace('.','-',$v['old_time']).' 00:00:00'; $v['new_time']=str_replace('.','-',$v['new_time']).' 00:00:00'; db()->table('人事_关联工资设置') ->where(['关联员工'=>$v['关联员工'],'日期'=>$v['new_time']]) ->delete(); $data=Db::table('人事_关联工资设置') ->field('日期,关联员工,关联系数,被关联员工,权重,sys_id') ->where(['关联员工'=>$v['关联员工'],'日期'=>$v['old_time']]) ->select(); $id=Db::table('人事_关联工资设置')->order('UniqID desc')->limit(1)->value('UniqID'); $i=1; foreach($data as &$value){ $value['日期']=$v['new_time']; $value['UniqID']=$i+$id; $value['sys_rq']=date('Y-m-d H:i:s'); $i++; } $sql=db()->table('人事_关联工资设置') ->fetchSql(true) ->insertAll($data); $res=Db::query($sql); } // 提交事务 db()->commit(); } catch (\Exception $e) { // 回滚事务 db()->rollback(); $this->error($e->getMessage()); } if($res===false) $this->error('失败'); $this->success('成功'); } }