Performance.php 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\AdminBaseController;
  4. class Performance extends AdminBaseController
  5. {
  6. public function index()
  7. {
  8. return view();
  9. }
  10. public function import()
  11. {
  12. return view();
  13. }
  14. public function match()
  15. {
  16. $old_file = input('old_file/s', "");
  17. if (!file_exists($old_file)) {
  18. return '绩效工资文件不存在';
  19. }
  20. $new_file = input('new_file/s', "");
  21. if (!file_exists($new_file)) {
  22. return '绩效得分文件不存在';
  23. }
  24. //初始化数据
  25. $data1 = [
  26. 'xuhao', 'xingming', 'zhiwei', 'bumen', 'jixiaogongzijishu',
  27. 'yingchuqin1', 'yingchuqin2', 'yingchuqin3',
  28. 'shichuqin1', 'shichuqin2', 'shichuqin3',
  29. ];
  30. $data2 = ['xingming', 'defen1', 'defen2', 'defen3'];
  31. $old_list = import_exl_jixiao($old_file, $data1, 2);
  32. $new_list = import_exl_jixiao($new_file, $data2, 2);
  33. if (empty($old_list)) {
  34. return '绩效工资文件无数据';
  35. }
  36. if (empty($new_list)) {
  37. return '绩效得分文件无数据';
  38. }
  39. $old_list = $this->_dealArray($old_list);
  40. $new_list = $this->_dealArray($new_list);
  41. $scoreByName = [];
  42. foreach ($new_list as $v) {
  43. $scoreByName[$v['xingming']] = $v;
  44. }
  45. $list = [];
  46. foreach ($old_list as $v) {
  47. if (empty($scoreByName[$v['xingming']])) {
  48. return $v['xingming'] . '在绩效得分表中未找到';
  49. }
  50. $item = [];
  51. $item['xuhao'] = $v['xuhao'];
  52. $item['xingming'] = $v['xingming'];
  53. $item['zhiwei'] = $v['zhiwei'];
  54. $item['bumen'] = $v['bumen'];
  55. $item['jixiaofen1'] = $scoreByName[$v['xingming']]['defen1'];
  56. $item['jixiaofen2'] = $scoreByName[$v['xingming']]['defen2'];
  57. $item['jixiaofen3'] = $scoreByName[$v['xingming']]['defen3'];
  58. $item['jixiaoxishu1'] = $item['jixiaofen1'] > 100 ? 1 : $v['jixiaofen1'] / 100;
  59. $item['jixiaoxishu2'] = $item['jixiaofen2'] > 100 ? 1 : $v['jixiaofen2'] / 100;
  60. $item['jixiaoxishu3'] = $item['jixiaofen3'] > 100 ? 1 : $v['jixiaofen3'] / 100;
  61. $item['jixiaogongzijishu'] = $v['jixiaogongzijishu'];
  62. $chuqinlv1 = $v['shichuqin1'] / $v['yingchuqin1'];
  63. $chuqinlv2 = $v['shichuqin2'] / $v['yingchuqin2'];
  64. $chuqinlv3 = $v['shichuqin3'] / $v['yingchuqin3'];
  65. $item['jixiaogongzi1'] = round($item['jixiaogongzijishu'] * $item['jixiaoxishu1'] * $chuqinlv1, 2);
  66. $item['jixiaogongzi2'] = round($item['jixiaogongzijishu'] * $item['jixiaoxishu2'] * $chuqinlv2, 2);
  67. $item['jixiaogongzi3'] = round($item['jixiaogongzijishu'] * $item['jixiaoxishu3'] * $chuqinlv3, 2);
  68. $item['jixiaogongziheji'] = $item['jixiaogongzi1'] + $item['jixiaogongzi2'] + $item['jixiaogongzi3'];
  69. $item['yufagongzi1'] = $item['yufagongzi2'] = $item['yufagongzi3'] = $item['jixiaogongzijishu'] * 0.8;
  70. $item['yufagongziheji'] = $item['yufagongzi1'] * 3;
  71. $item['bufa'] = $item['jixiaogongziheji'] - $item['yufagongziheji'];
  72. if ($item['bufa'] > 0) {
  73. $item['gonghui'] = round($item['bufa'] * 0.005, 2);
  74. } else {
  75. $item['gonghui'] = 0;
  76. }
  77. $item['shifa'] = round($item['bufa'] - $item['gonghui'], 2);
  78. $list[] = $item;
  79. }
  80. $xlsCell = [
  81. ['xuhao', '序号'],
  82. ['xingming', '姓名'],
  83. ['zhiwei', '职位'],
  84. ['bumen', '部门'],
  85. ['jixiaofen1', '绩效得分第1月'],
  86. ['jixiaofen2', '绩效得分第2月'],
  87. ['jixiaofen3', '绩效得分第3月'],
  88. ['jixiaoxishu1', '绩效系数第1月'],
  89. ['jixiaoxishu2', '绩效系数第2月'],
  90. ['jixiaoxishu3', '绩效系数第3月'],
  91. ['jixiaogongzijishu', '绩效工资基数'],
  92. ['jixiaogongzi1', '绩效工资第1月'],
  93. ['jixiaogongzi2', '绩效工资第2月'],
  94. ['jixiaogongzi3', '绩效工资第3月'],
  95. ['jixiaogongziheji', '绩效工资合计'],
  96. ['yufagongzi1', '已预发工资第1月'],
  97. ['yufagongzi2', '已预发工资第2月'],
  98. ['yufagongzi3', '已预发工资第3月'],
  99. ['yufagongziheji', '已预发工资合计'],
  100. ['bufa', '应补发绩效工资'],
  101. ['gonghui', '工会会费'],
  102. ['shifa', '实际补发绩效工资'],
  103. ];
  104. // unlink($old_file);
  105. // unlink($new_file);
  106. export_exl("绩效工资", $xlsCell, $list);
  107. }
  108. public function match1()
  109. {
  110. $old_file = input('old_file/s', "");
  111. if (!file_exists($old_file)) {
  112. return '旧名单文件不存在';
  113. }
  114. $new_file = input('new_file/s', "");
  115. if (!file_exists($new_file)) {
  116. return '新名单文件不存在';
  117. }
  118. //初始化数据
  119. $data1 = [
  120. 'xuhao', 'xingming', 'zhiwei', 'bumen', 'jixiaofen1', 'jixiaofen2', 'jixiaofen3', 'jixiaoxishu1', 'jixiaoxishu2',
  121. 'jixiaoxishu3', 'jixiaogongzijishu', 'jixiaogongzi1', 'jixiaogongzi2', 'jixiaogongzi3', 'jixiaogongziheji',
  122. 'yufagongzi1', 'yufagongzi2', 'yufagongzi3', 'yufagongziheji',
  123. ];
  124. $data2 = [
  125. 'xuhao', 'bumen', 'xingming', 'afen1', 'afen2', 'afen3', 'ziping', 'bumen', 'fenguan', 'heyue', 'defen1', 'defen2', 'defen3',
  126. ];
  127. $old_list = import_exl_jixiao($old_file, $data1, 4);
  128. $new_list = import_exl_jixiao($new_file, $data2, 3);
  129. if (empty($old_list)) {
  130. return '旧名单文件无数据';
  131. }
  132. if (empty($new_list)) {
  133. return '新名单文件无数据';
  134. }
  135. $old_list = $this->_dealArray($old_list);
  136. $new_list = $this->_dealArray($new_list);
  137. $scoreByName = [];
  138. foreach ($new_list as $v) {
  139. $scoreByName[$v['xingming']] = $v;
  140. }
  141. $list = [];
  142. foreach ($old_list as $v) {
  143. if (empty($scoreByName[$v['xingming']])) {
  144. return $v['xingming'] . '在绩效得分表中未找到';
  145. }
  146. $v['jixiaofen1'] = $scoreByName[$v['xingming']]['defen1'];
  147. $v['jixiaofen2'] = $scoreByName[$v['xingming']]['defen2'];
  148. $v['jixiaofen3'] = $scoreByName[$v['xingming']]['defen3'];
  149. $v['jixiaoxishu1'] = $scoreByName[$v['xingming']]['defen1'] > 100 ? 1 : $scoreByName[$v['xingming']]['defen1'] / 100;
  150. $v['jixiaoxishu2'] = $scoreByName[$v['xingming']]['defen2'] > 100 ? 1 : $scoreByName[$v['xingming']]['defen2'] / 100;
  151. $v['jixiaoxishu3'] = $scoreByName[$v['xingming']]['defen3'] > 100 ? 1 : $scoreByName[$v['xingming']]['defen3'] / 100;
  152. $v['jixiaogongzi1'] = $v['jixiaogongzijishu'] * $v['jixiaoxishu1'];
  153. $v['jixiaogongzi2'] = $v['jixiaogongzijishu'] * $v['jixiaoxishu2'];
  154. $v['jixiaogongzi3'] = $v['jixiaogongzijishu'] * $v['jixiaoxishu3'];
  155. $v['jixiaogongziheji'] = $v['jixiaogongzi1'] + $v['jixiaogongzi2'] + $v['jixiaogongzi3'];
  156. $v['yufagongzi1'] = $v['jixiaogongzijishu'] * 0.8;
  157. $v['yufagongzi2'] = $v['jixiaogongzijishu'] * 0.8;
  158. $v['yufagongzi3'] = $v['jixiaogongzijishu'] * 0.8;
  159. $v['yufagongziheji'] = $v['yufagongzi1'] + $v['yufagongzi2'] + $v['yufagongzi3'];
  160. $v['bufa'] = $v['jixiaogongziheji'] - $v['yufagongziheji'];
  161. $v['gonghui'] = round($v['bufa'] * 0.005, 2);
  162. $v['shifa'] = round($v['bufa'] - $v['gonghui'], 2);
  163. $list[] = $v;
  164. }
  165. $xlsCell = [
  166. ['xuhao', '序号'],
  167. ['xingming', '姓名'],
  168. ['zhiwei', '职位'],
  169. ['bumen', '部门'],
  170. ['jixiaofen1', '绩效得分第1月'],
  171. ['jixiaofen2', '绩效得分第2月'],
  172. ['jixiaofen3', '绩效得分第3月'],
  173. ['jixiaoxishu1', '绩效系数第1月'],
  174. ['jixiaoxishu2', '绩效系数第2月'],
  175. ['jixiaoxishu3', '绩效系数第3月'],
  176. ['jixiaogongzijishu', '绩效工资基数'],
  177. ['jixiaogongzi1', '绩效工资第1月'],
  178. ['jixiaogongzi2', '绩效工资第2月'],
  179. ['jixiaogongzi3', '绩效工资第3月'],
  180. ['jixiaogongziheji', '绩效工资合计'],
  181. ['yufagongzi1', '已预发工资第1月'],
  182. ['yufagongzi2', '已预发工资第2月'],
  183. ['yufagongzi3', '已预发工资第3月'],
  184. ['yufagongziheji', '已预发工资合计'],
  185. ['bufa', '应补发绩效工资'],
  186. ['gonghui', '工会会费'],
  187. ['shifa', '实际补发绩效工资'],
  188. ];
  189. unlink($old_file);
  190. unlink($new_file);
  191. export_exl("绩效工资", $xlsCell, $list);
  192. }
  193. private function _dealArray($arr)
  194. {
  195. $res = [];
  196. foreach ($arr as $v) {
  197. if (!empty($v['xingming'])) {
  198. $res[] = $v;
  199. }
  200. }
  201. return $res;
  202. }
  203. }