Kaynağa Gözat

绩效计算

linwu 11 saat önce
ebeveyn
işleme
f5b1a1bb35

+ 17 - 133
app/admin/controller/Performance.php

@@ -19,51 +19,35 @@ class Performance extends AdminBaseController
 
     public function match()
     {
-        $old_file = input('old_file/s', "");
-        if (!file_exists($old_file)) {
+        $file = input('file/s', "");
+        if (!file_exists($file)) {
             return '绩效工资文件不存在';
         }
-        $new_file = input('new_file/s', "");
-        if (!file_exists($new_file)) {
-            return '绩效得分文件不存在';
-        }
 
         //初始化数据
-        $data1    = [
+        $data     = [
             'xuhao', 'xingming', 'zhiwei', 'bumen', 'jixiaogongzijishu',
             'yingchuqin1', 'yingchuqin2', 'yingchuqin3',
             'shichuqin1', 'shichuqin2', 'shichuqin3',
+            'jixiaofen1', 'jixiaofen2', 'jixiaofen3',
+//            'jixiaofen1', 'jixiaofen2', 'jixiaofen3',
         ];
-        $data2    = ['xingming', 'defen1', 'defen2', 'defen3'];
-        $old_list = import_exl_jixiao($old_file, $data1, 2);
-        $new_list = import_exl_jixiao($new_file, $data2, 2);
+        $exl_list = import_exl_jixiao($file, $data, 2);
 
-        if (empty($old_list)) {
+        if (empty($exl_list)) {
             return '绩效工资文件无数据';
         }
-        if (empty($new_list)) {
-            return '绩效得分文件无数据';
-        }
-        $old_list = $this->_dealArray($old_list);
-        $new_list = $this->_dealArray($new_list);
 
-        $scoreByName = [];
-        foreach ($new_list as $v) {
-            $scoreByName[$v['xingming']] = $v;
-        }
         $list = [];
-        foreach ($old_list as $v) {
-            if (empty($scoreByName[$v['xingming']])) {
-                return $v['xingming'] . '在绩效得分表中未找到';
-            }
+        foreach ($exl_list as $v) {
             $item                      = [];
             $item['xuhao']             = $v['xuhao'];
             $item['xingming']          = $v['xingming'];
             $item['zhiwei']            = $v['zhiwei'];
             $item['bumen']             = $v['bumen'];
-            $item['jixiaofen1']        = $scoreByName[$v['xingming']]['defen1'];
-            $item['jixiaofen2']        = $scoreByName[$v['xingming']]['defen2'];
-            $item['jixiaofen3']        = $scoreByName[$v['xingming']]['defen3'];
+            $item['jixiaofen1']        = $v['jixiaofen1'];
+            $item['jixiaofen2']        = $v['jixiaofen2'];
+            $item['jixiaofen3']        = $v['jixiaofen3'];
             $item['jixiaoxishu1']      = $item['jixiaofen1'] > 100 ? 1 : $item['jixiaofen1'] / 100;
             $item['jixiaoxishu2']      = $item['jixiaofen2'] > 100 ? 1 : $item['jixiaofen2'] / 100;
             $item['jixiaoxishu3']      = $item['jixiaofen3'] > 100 ? 1 : $item['jixiaofen3'] / 100;
@@ -84,8 +68,10 @@ class Performance extends AdminBaseController
             $item['jixiaogongzi2']    = round($item['jixiaogongzijishu'] * $item['jixiaoxishu2'] * $chuqinlv2, 2);
             $item['jixiaogongzi3']    = round($item['jixiaogongzijishu'] * $item['jixiaoxishu3'] * $chuqinlv3, 2);
             $item['jixiaogongziheji'] = $item['jixiaogongzi1'] + $item['jixiaogongzi2'] + $item['jixiaogongzi3'];
-            $item['yufagongzi1']      = $item['yufagongzi2'] = $item['yufagongzi3'] = $item['jixiaogongzijishu'] * 0.8;
-            $item['yufagongziheji']   = $item['yufagongzi1'] * 3;
+            $item['yufagongzi1']      = round($item['jixiaogongzijishu'] * 0.8 * $chuqinlv1, 2);
+            $item['yufagongzi2']      = round($item['jixiaogongzijishu'] * 0.8 * $chuqinlv2, 2);
+            $item['yufagongzi3']      = round($item['jixiaogongzijishu'] * 0.8 * $chuqinlv3, 2);
+            $item['yufagongziheji']   = $item['yufagongzi1'] + $item['yufagongzi2'] + $item['yufagongzi3'];
             $item['bufa']             = $item['jixiaogongziheji'] - $item['yufagongziheji'];
             $item['gonghui']          = round($item['bufa'] * 0.005, 2);
             $item['shifa']            = round($item['bufa'] - $item['gonghui'], 2);
@@ -116,109 +102,7 @@ class Performance extends AdminBaseController
             ['gonghui', '工会会费'],
             ['shifa', '实际补发绩效工资'],
         ];
-        unlink($old_file);
-        unlink($new_file);
-        export_exl("绩效工资", $xlsCell, $list);
-    }
-
-    public function match1()
-    {
-        $old_file = input('old_file/s', "");
-        if (!file_exists($old_file)) {
-            return '旧名单文件不存在';
-        }
-        $new_file = input('new_file/s', "");
-        if (!file_exists($new_file)) {
-            return '新名单文件不存在';
-        }
-
-        //初始化数据
-        $data1    = [
-            'xuhao', 'xingming', 'zhiwei', 'bumen', 'jixiaofen1', 'jixiaofen2', 'jixiaofen3', 'jixiaoxishu1', 'jixiaoxishu2',
-            'jixiaoxishu3', 'jixiaogongzijishu', 'jixiaogongzi1', 'jixiaogongzi2', 'jixiaogongzi3', 'jixiaogongziheji',
-            'yufagongzi1', 'yufagongzi2', 'yufagongzi3', 'yufagongziheji',
-        ];
-        $data2    = [
-            'xuhao', 'bumen', 'xingming', 'afen1', 'afen2', 'afen3', 'ziping', 'bumen', 'fenguan', 'heyue', 'defen1', 'defen2', 'defen3',
-        ];
-        $old_list = import_exl_jixiao($old_file, $data1, 4);
-        $new_list = import_exl_jixiao($new_file, $data2, 3);
-
-        if (empty($old_list)) {
-            return '旧名单文件无数据';
-        }
-        if (empty($new_list)) {
-            return '新名单文件无数据';
-        }
-        $old_list = $this->_dealArray($old_list);
-        $new_list = $this->_dealArray($new_list);
-
-        $scoreByName = [];
-        foreach ($new_list as $v) {
-            $scoreByName[$v['xingming']] = $v;
-        }
-        $list = [];
-        foreach ($old_list as $v) {
-            if (empty($scoreByName[$v['xingming']])) {
-                return $v['xingming'] . '在绩效得分表中未找到';
-            }
-            $v['jixiaofen1']       = $scoreByName[$v['xingming']]['defen1'];
-            $v['jixiaofen2']       = $scoreByName[$v['xingming']]['defen2'];
-            $v['jixiaofen3']       = $scoreByName[$v['xingming']]['defen3'];
-            $v['jixiaoxishu1']     = $scoreByName[$v['xingming']]['defen1'] > 100 ? 1 : $scoreByName[$v['xingming']]['defen1'] / 100;
-            $v['jixiaoxishu2']     = $scoreByName[$v['xingming']]['defen2'] > 100 ? 1 : $scoreByName[$v['xingming']]['defen2'] / 100;
-            $v['jixiaoxishu3']     = $scoreByName[$v['xingming']]['defen3'] > 100 ? 1 : $scoreByName[$v['xingming']]['defen3'] / 100;
-            $v['jixiaogongzi1']    = $v['jixiaogongzijishu'] * $v['jixiaoxishu1'];
-            $v['jixiaogongzi2']    = $v['jixiaogongzijishu'] * $v['jixiaoxishu2'];
-            $v['jixiaogongzi3']    = $v['jixiaogongzijishu'] * $v['jixiaoxishu3'];
-            $v['jixiaogongziheji'] = $v['jixiaogongzi1'] + $v['jixiaogongzi2'] + $v['jixiaogongzi3'];
-            $v['yufagongzi1']      = $v['jixiaogongzijishu'] * 0.8;
-            $v['yufagongzi2']      = $v['jixiaogongzijishu'] * 0.8;
-            $v['yufagongzi3']      = $v['jixiaogongzijishu'] * 0.8;
-            $v['yufagongziheji']   = $v['yufagongzi1'] + $v['yufagongzi2'] + $v['yufagongzi3'];
-            $v['bufa']             = $v['jixiaogongziheji'] - $v['yufagongziheji'];
-            $v['gonghui']          = round($v['bufa'] * 0.005, 2);
-            $v['shifa']            = round($v['bufa'] - $v['gonghui'], 2);
-            $list[]                = $v;
-        }
-
-        $xlsCell = [
-            ['xuhao', '序号'],
-            ['xingming', '姓名'],
-            ['zhiwei', '职位'],
-            ['bumen', '部门'],
-            ['jixiaofen1', '绩效得分第1月'],
-            ['jixiaofen2', '绩效得分第2月'],
-            ['jixiaofen3', '绩效得分第3月'],
-            ['jixiaoxishu1', '绩效系数第1月'],
-            ['jixiaoxishu2', '绩效系数第2月'],
-            ['jixiaoxishu3', '绩效系数第3月'],
-            ['jixiaogongzijishu', '绩效工资基数'],
-            ['jixiaogongzi1', '绩效工资第1月'],
-            ['jixiaogongzi2', '绩效工资第2月'],
-            ['jixiaogongzi3', '绩效工资第3月'],
-            ['jixiaogongziheji', '绩效工资合计'],
-            ['yufagongzi1', '已预发工资第1月'],
-            ['yufagongzi2', '已预发工资第2月'],
-            ['yufagongzi3', '已预发工资第3月'],
-            ['yufagongziheji', '已预发工资合计'],
-            ['bufa', '应补发绩效工资'],
-            ['gonghui', '工会会费'],
-            ['shifa', '实际补发绩效工资'],
-        ];
-        unlink($old_file);
-        unlink($new_file);
-        export_exl("绩效工资", $xlsCell, $list);
-    }
-
-    private function _dealArray($arr)
-    {
-        $res = [];
-        foreach ($arr as $v) {
-            if (!empty($v['xingming'])) {
-                $res[] = $v;
-            }
-        }
-        return $res;
+        unlink($file);
+        export_exl("绩效工资", $xlsCell, $list,[],[10,10,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20]);
     }
 }

+ 11 - 39
app/admin/view/performance/import.html

@@ -8,26 +8,15 @@
                         <div class="layui-form-item">
                             <label class="layui-form-label">绩效工资</label>
                             <div class="layui-input-block">
-                                <input type="text" id="old_file_name" autocomplete="off" readonly placeholder="请点击上传文件按钮" class="layui-input">
+                                <input type="text" id="file_name" autocomplete="off" readonly placeholder="请点击上传文件按钮" class="layui-input">
                             </div>
                         </div>
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">绩效评分</label>
-                            <div class="layui-input-block">
-                                <input type="text" id="new_file_name" autocomplete="off" readonly placeholder="请点击上传文件按钮" class="layui-input">
-                            </div>
-                        </div>
-                        <input type="hidden" name="file_url" value="" id="old_file">
-                        <input type="hidden" name="file_url" value="" id="new_file">
+                        <input type="hidden" name="file_url" value="" id="file">
                         <div class="layui-form-item">
                             <a href="/static/common/exl/jixiaogongzi.xls" target="_blank">
                                 <button type="button" class="layui-btn layui-btn-normal">下载绩效工资模板</button>
                             </a>
-                            <a href="/static/common/exl/jixiaopingfen.xls" target="_blank">
-                                <button type="button" class="layui-btn layui-btn-normal">下载绩效评分模板</button>
-                            </a>
-                            <button type="button" class="layui-btn layui-btn-normal" id="upload1"><i class="layui-icon"></i>上传绩效工资</button>
-                            <button type="button" class="layui-btn layui-btn-normal" id="upload2"><i class="layui-icon"></i>上传绩效评分</button>
+                            <button type="button" class="layui-btn layui-btn-normal" id="upload"><i class="layui-icon"></i>上传绩效工资</button>
                             <input type="button" lay-submit lay-filter="{$lay_btn}" value="开始计算" class="layui-btn">
                         </div>
                     </div>
@@ -48,41 +37,24 @@
         form.render();
 
         form.on('submit({$lay_btn})', function(obj) {
-            let old_file = $('#old_file').val();
-            let new_file = $('#new_file').val();
-            if (old_file === '') {
+            let file = $('#file').val();
+            if (file === '') {
                 layer.msg("请上传绩效工资");
                 return false;
             }
-            if (new_file === '') {
-                layer.msg("请上传绩效评分");
-                return false;
-            }
-            $('#old_file').val('');
-            $('#old_file_name').val('');
-            $('#new_file').val('');
-            $('#new_file_name').val('');
-            let url = "{:url('performance/match')}?old_file=" + encodeURIComponent(old_file) + '&new_file=' + encodeURIComponent(new_file);
+            $('#file').val('');
+            $('#file_name').val('');
+            let url = "{:url('performance/match')}?file=" + encodeURIComponent(file);
             window.open(url);
         });
 
         upload.render({
-            elem: '#upload1'
-            ,url: "{:url('upload/file')}" //此处配置你自己的上传接口即可
-            ,accept: 'file' //普通文件
-            ,done: function(res){
-                $('#old_file').val(res.data.path);
-                $('#old_file_name').val(res.data.title);
-            }
-        });
-
-        upload.render({
-            elem: '#upload2'
+            elem: '#upload'
             ,url: "{:url('upload/file')}" //此处配置你自己的上传接口即可
             ,accept: 'file' //普通文件
             ,done: function(res){
-                $('#new_file').val(res.data.path);
-                $('#new_file_name').val(res.data.title);
+                $('#file').val(res.data.path);
+                $('#file_name').val(res.data.title);
             }
         });
     });

+ 4 - 1
app/common.php

@@ -36,7 +36,7 @@ function array_get($array, $key, $default = null)
  * @param array $expTableData [['a'=>1]]
  * @param array $textValue ['a']
  */
-function export_exl($expTitle, $expCellName, $expTableData, $textValue = [])
+function export_exl($expTitle, $expCellName, $expTableData, $textValue = [], $cellWidth=[])
 {
     $fileName    = $expTitle . date('_YmdHis'); //or $xlsTitle 文件名称可根据自己情况设定
     $cellNum     = count($expCellName);
@@ -44,6 +44,9 @@ function export_exl($expTitle, $expCellName, $expTableData, $textValue = [])
     $objPHPExcel = new \PHPExcel();
     $cellName    = get_exl_column_letter(count($expCellName));
     for ($i = 0; $i < $cellNum; $i++) {
+        if (!empty($cellWidth[$i])) {
+            $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension($cellName[$i])->setWidth($cellWidth[$i]);
+        }
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i] . '1', $expCellName[$i][1]);
     }
 // Miscellaneous glyphs, UTF-8