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('db_大废品') ->cache(true,86400) ->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); $start_time = $year . '-' . $month . '-01 00:00:00'; $end_time = date('Y-m-t', strtotime("$year-$month-01")) . ' 23:59:59'; $gz = db('人事_关联工资设置')->alias('r')->cache(true,3600) ->join('绩效工资汇总 j', 'r.被关联员工 = j.bh AND r.日期 = j.sczl_rq') ->join('人事_基本资料 n', 'n.员工编号 = r.关联员工') ->field('r.关联员工, j.bh, sum(j.个人计件工资) as 个人计件工资, sum(j.个人加班工资) as 个人加班工资, sum(j.装版工时,j.保养工时,j.打样工时) as 定额补差, sum(j.异常停机工时) as 计时工资, DATE_FORMAT(j.sczl_rq,"%Y.%m.%d") as 日期') ->where('r.日期', 'between', [$start_time, $end_time]) ->where('n.所在部门', 'like', $req['department'] . '%') ->group('LEFT(j.sczl_rq, 10), j.bh') ->select(); $data = []; foreach($gz as $v){ if (!isset($data[$v['关联员工']][$v['日期']])) { $data[$v['关联员工']][$v['日期']] = [ '个人计件工资' => 0, '个人加班工资' => 0, '定额补差' => 0, '计时工资' => 0 ]; } $data[$v['关联员工']][$v['日期']]['个人计件工资'] += (float) $v['个人计件工资']; $data[$v['关联员工']][$v['日期']]['个人加班工资'] += (float) $v['个人加班工资']; $data[$v['关联员工']][$v['日期']]['定额补差'] += (float) $v['定额补差']; $data[$v['关联员工']][$v['日期']]['计时工资'] += (float) $v['计时工资']; } $res=db('人事_关联工资设置') ->cache(true,86400) ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT') ->field('关联员工 as 员工编号,rtrim(人事_基本资料.员工姓名) 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['关联计件工资'] = floatval(number_format($data[$v['员工编号']][$v['日期']]['个人计件工资']/$v['关联人数']*$v['关联系数'],2)); $v['关联加班工资'] = floatval(number_format($data[$v['员工编号']][$v['日期']]['个人加班工资']/$v['关联人数']*$v['关联系数'],2)); $v['关联定额补差'] = floatval(number_format($data[$v['员工编号']][$v['日期']]['定额补差']/$v['关联人数']*$v['关联系数'],2)); $v['关联计时工资'] = floatval(number_format($data[$v['员工编号']][$v['日期']]['计时工资']/$v['关联人数']*$v['关联系数']*9.5,2)); $v['关联工资合计'] = floatval(number_format( ($data[$v['员工编号']][$v['日期']]['个人计件工资'] + $data[$v['员工编号']][$v['日期']]['个人加班工资'] + $data[$v['员工编号']][$v['日期']]['定额补差'] + $data[$v['员工编号']][$v['日期']]['计时工资']*9.5 )/$v['关联人数']*$v['关联系数'],2)); }else{ $v['关联计件工资'] = ''; $v['关联加班工资'] = ''; $v['关联定额补差'] = ''; $v['关联计时工资'] = ''; $v['关联工资合计'] = ''; } } if($res===false){ $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('绩效工资汇总') ->cache(true,86400) ->field('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资, (sum(装版工时) + sum(保养工时) + 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('人事_关联工资设置')->cache(true,86400) ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT') ->field('DATE_FORMAT(日期,"%Y.%m.%d") as 日期,关联员工 as 员工编号,rtrim(人事_基本资料.员工姓名) 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['日期']]['个人加班工资']; $v['定额补差']=$data[$v['被关联员工']][$v['日期']]['定额补差']; $v['计时工资']=floatval(number_format($data[$v['被关联员工']][$v['日期']]['计时工资']*9.5,2)); }else{ $v['被关联姓名']=''; $v['计件工资']=''; $v['加班工资']=''; $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('绩效工资汇总') ->cache(true,86400) ->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('人事_关联工资设置')->cache(true,86400) ->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); $start_time = $year . '-' . $month . '-01 00:00:00'; $end_time = date('Y-m-t', strtotime("$year-$month-01")) . ' 23:59:59'; $gz = db('人事_关联工资设置')->alias('r')->cache(true,3600) ->join('绩效工资汇总 j', 'r.被关联员工 = j.bh AND r.日期 = j.sczl_rq') ->join('人事_基本资料 n', 'n.员工编号 = r.关联员工') ->field('r.关联员工, j.bh, sum(j.个人计件工资) as 个人计件工资, sum(j.个人加班工资) as 个人加班工资, sum(j.装版工时,j.保养工时,j.打样工时) as 定额补差, sum(j.异常停机工时) as 计时工资, DATE_FORMAT(j.sczl_rq,"%Y.%m.%d") as 日期') ->where('r.日期', 'between', [$start_time, $end_time]) ->where('n.所在部门', 'like', $req['department'] . '%') ->where('r.关联员工', 'like', '%' . $req['search'] . '%') ->group('LEFT(j.sczl_rq, 10), j.bh') ->select(); $data = []; foreach($gz as $v){ if (!isset($data[$v['关联员工']][$v['日期']])) { $data[$v['关联员工']][$v['日期']] = [ '个人计件工资' => 0, '个人加班工资' => 0, '定额补差' => 0, '计时工资' => 0 ]; } $data[$v['关联员工']][$v['日期']]['个人计件工资'] += (float) $v['个人计件工资']; $data[$v['关联员工']][$v['日期']]['个人加班工资'] += (float) $v['个人加班工资']; $data[$v['关联员工']][$v['日期']]['定额补差'] += (float) $v['定额补差']; $data[$v['关联员工']][$v['日期']]['计时工资'] += (float) $v['计时工资']; } $res=db('人事_关联工资设置')->cache(true,86400) ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT') ->field('关联员工 as 员工编号,rtrim(人事_基本资料.员工姓名) 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['关联计件工资'] = floatval(number_format($data[$v['员工编号']][$v['日期']]['个人计件工资']/$v['关联人数']*$v['关联系数'],2)); $v['关联加班工资'] = floatval(number_format($data[$v['员工编号']][$v['日期']]['个人加班工资']/$v['关联人数']*$v['关联系数'],2)); $v['关联定额补差'] = floatval(number_format($data[$v['员工编号']][$v['日期']]['定额补差']/$v['关联人数']*$v['关联系数'],2)); $v['关联计时工资'] = floatval(number_format($data[$v['员工编号']][$v['日期']]['计时工资']/$v['关联人数']*$v['关联系数']*9.5,2)); $v['关联工资合计'] = floatval(number_format( ($data[$v['员工编号']][$v['日期']]['个人计件工资'] + $data[$v['员工编号']][$v['日期']]['个人加班工资'] + $data[$v['员工编号']][$v['日期']]['定额补差'] + $data[$v['员工编号']][$v['日期']]['计时工资']*9.5 )/$v['关联人数']*$v['关联系数'],2)); }else{ $v['关联计件工资'] = ''; $v['关联加班工资'] = ''; $v['关联定额补差'] = ''; $v['关联计时工资'] = ''; $v['关联工资合计'] = ''; } } if($res===false){ $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(); $start_time=$req['date'].' 00:00:00'; $end_time=$req['date'].' 23:59:59'; $data=db('绩效工资汇总') ->cache(true,3600) ->group('bh') ->where(['sczl_rq'=>$start_time]) ->column('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资, sum(个人加班工资) as 个人加班工资'); $res = db('人事_关联工资设置')->alias('r') ->cache(true,3600) ->join('人事_基本资料 j1','j1.员工编号 = r.关联员工') ->join('人事_基本资料 j2','j2.员工编号 = r.被关联员工') ->field('DATE_FORMAT(r.日期,"%Y.%m.%d") as 日期, r.关联员工 as 关联人员工号, rtrim(j1.员工姓名) as 关联人员姓名, r.被关联员工 as 班组员工编号,rtrim(j2.员工姓名) as 被关联人员姓名, r.权重 as 组员权重,r.关联系数 as 日关联系数,r.UniqID') ->where(['r.日期'=>['between',"$start_time,$end_time"],'r.关联员工'=>$req['code']]) ->order('r.关联员工') ->select(); if($res===false){ $this->error('失败'); } foreach($res as &$v){ if(isset($data[$v['班组员工编号']])){ $v['计件工资基数'] = $data[$v['班组员工编号']]['个人计件工资']; $v['加班工资基数'] = $data[$v['班组员工编号']]['个人加班工资']; }else{ $v['计件工资基数'] = 0; $v['加班工资基数'] = 0; } $v['班组员工编号'] = $v['班组员工编号'].'('.$v['被关联人员姓名'].')'; $v['日关联人数'] = count($res); } $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('人事_基本资料') ->cache(true,86400) ->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'; $res=db('绩效工资汇总')->alias('j')->cache(true,3600) ->join('人事_基本资料 r','r.员工编号=j.bh') ->field('DATE_FORMAT(j.sczl_rq,"%Y.%m.%d") as 日期, trim(r.所在部门) as 所在部门,sczl_bzdh, trim(r.职称职务) as 职称职务, CONCAT(trim(j.xm),"(", j.bh, ")") as 班组员工编号, sum(j.个人计件工资) as 个人计件工资, sum(j.个人加班工资) as 个人加班工资, j.bh, j.UniqID') ->group('j.bh') ->where(['j.sczl_rq'=>['between',"$start_time,$end_time"]]) ->order('r.所在部门,r.所在部门,j.bh') ->select(); if($res===false){ $this->error('失败'); } $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('人事_基本资料')->where('员工姓名','like','%'.$req['search'].'%')->column('员工编号'); if($gd){ $where = [ 'j.sczl_rq'=>['between',"$start_time,$end_time"], 'j.bh'=>['in',$gd] ]; }else{ $where = [ 'j.sczl_rq'=>['between',"$start_time,$end_time"], 'j.bh'=>['like','%'.$req['search'].'%'] ]; } $res=db('绩效工资汇总')->alias('j')->cache(true,3600) ->join('人事_基本资料 r','r.员工编号=j.bh') ->field('DATE_FORMAT(j.sczl_rq,"%Y.%m.%d") as 日期, trim(r.所在部门) as 所在部门,sczl_bzdh, trim(r.职称职务) as 职称职务, CONCAT(trim(j.xm),"(", j.bh, ")") as 班组员工编号, sum(j.个人计件工资) as 个人计件工资, sum(j.个人加班工资) as 个人加班工资, j.bh, j.UniqID') ->group('j.bh') ->where($where) ->order('r.所在部门,r.所在部门,j.bh') ->select(); if($res===false){ $this->error('失败'); } $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('人事_关联工资设置') ->cache(true,86400) ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT') ->field('关联员工 as 员工编号, trim(人事_基本资料.员工姓名) as 员工姓名, trim(人事_基本资料.所在部门) as 所在部门, trim(人事_基本资料.职称职务) as 职称职务,trim(人事_基本资料.UniqID) as UniqID') ->group('关联员工') ->where(['日期'=>['between',"$start_time,$end_time"]]) ->select(); if($res===false){ $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) || count($params)==0){ $this->error('参数不能为空'); } $date = date('Y-m-d H:i:s'); //查询当前最大id $UniqID = db('人事_关联工资设置')->order('UniqID desc')->limit(1)->value('UniqID'); $i = 1; $rows = []; foreach($params as $k=>$v){ //查询当天此关联用户是否已经绑定过此被关联用户 $bool = db('人事_关联工资设置') ->where(['日期'=>$v['date'].' 00:00:00','关联员工'=>$v['关联员工'],'被关联员工'=>$v['被关联员工']]) ->find(); if($bool) continue; //获取用户信息 $sys_id = '[1002/郑小丽]'; $rows[$k] = [ '日期' => $v['date'].' 00:00:00', '关联员工' => $v['关联员工'], '关联系数' => $v['关联系数'], '被关联员工' => $v['被关联员工'], '权重' => 1.00, 'sys_id' => $sys_id, 'sys_rq' => $date, 'UniqID' => $UniqID+$i, ]; $i++; } if(!count($rows)) $this->success('成功'); //开启事务 db()->startTrans(); try{ $sql=db()->table('人事_关联工资设置') ->fetchSql(true) ->insertAll($rows); $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){ $sql=db('人事_关联工资设置') ->where(['UniqID'=>$v['UniqID']]) ->fetchSql(true) ->delete($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('成功'); } }