EmployeeDailySalary.php 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use \think\Request;
  5. use \think\Db;
  6. /**
  7. * 员工日工资查询接口
  8. */
  9. class EmployeeDailySalary extends Api
  10. {
  11. protected $noNeedLogin = ['*'];
  12. protected $noNeedRight = ['*'];
  13. /**
  14. * 首页
  15. *
  16. */
  17. public function index()
  18. {
  19. $this->success('请求成功');
  20. }
  21. /**
  22. * 员工日工资查询侧边栏
  23. * @ApiMethod (GET)
  24. */
  25. public function getTab()
  26. {
  27. //get请求
  28. if(!$this->request->isGet()){
  29. $this->error('请求方式错误');
  30. }
  31. // $rows = db()->table('绩效工资汇总')
  32. // ->whereTime('sczl_rq', '>=', strtotime('-15 months'))
  33. // ->group('sys_ny')
  34. // ->order('sys_ny desc')
  35. // ->limit(15)
  36. // ->column('sys_ny');
  37. $rows = db('db_大废品')->cache(true,86400)
  38. ->whereTime('sys_rq', '>=', strtotime('-15 months'))
  39. ->group("DATE_FORMAT(`sys_rq`, '%Y%m')")
  40. ->order('sys_rq desc')
  41. ->limit(15)
  42. ->column("DATE_FORMAT(`sys_rq`, '%Y%m')");
  43. $res=db('绩效工资汇总')->cache(true,86400)
  44. ->field('sys_ny,bh')
  45. ->group('sys_ny,bh')
  46. ->where(['sys_ny'=>['between',"$rows[14],$rows[0]"]])
  47. ->order('sys_ny desc')
  48. ->select();
  49. foreach($res as $v){
  50. $arr[$v['sys_ny'].'-'][]=$v['bh'];
  51. }
  52. $rs = db('人事_基本资料')->cache(true,86400)->column('员工编号,所在部门');
  53. foreach($arr as $k=>$v){
  54. foreach($v as $key=>$value){
  55. $data[$k][$key]=rtrim($rs[$value]);
  56. }
  57. $data[$k]=array_unique($data[$k]);
  58. usort($data[$k], function($a, $b) {
  59. $order = array(
  60. '胶印车间',
  61. '凹印车间',
  62. '丝印车间',
  63. '模切车间',
  64. '检验车间',
  65. '精品试验车间',
  66. '品保部',
  67. '人力资源部',
  68. '生产部',
  69. '营销部'
  70. );
  71. $a_index = array_search($a, $order);
  72. $b_index = array_search($b, $order);
  73. return $a_index - $b_index;
  74. });
  75. }
  76. $i=0;
  77. foreach($data as $k=>$v){
  78. $datas[$i]['label']=str_replace('-','',$k);
  79. foreach($v as $value){
  80. $datas[$i]['children'][]['label']=$value;
  81. }
  82. $i++;
  83. }
  84. $this->success('成功',$datas);
  85. }
  86. /**
  87. * 员工日工资查询上侧列表
  88. * @ApiMethod (GET)
  89. * @param string $date 年月
  90. * @param string $department 部门
  91. */
  92. public function getList()
  93. {
  94. //get请求
  95. if(!$this->request->isGet()){
  96. $this->error('请求方式错误');
  97. }
  98. $req = $this->request->param();
  99. $res=db('绩效工资汇总')->cache(true,86400)
  100. ->join('人事_基本资料','人事_基本资料.员工编号=绩效工资汇总.bh')
  101. // ->field('bh,rtrim(xm) as 员工姓名,LEFT(sczl_rq, 10) as sczl_rq,sum(个人计件工资) as 计件工资,
  102. // sum(个人加班工资) as 加班工资,sum(异常停机工时) as 计时时数,sum(异常停机工时)*9.5 as 计时工资,
  103. // (sum(个人计件工资) + sum(个人加班工资) + sum(异常停机工时)*9.5) as 日工资合计')
  104. ->group('绩效工资汇总.bh,LEFT(sczl_rq, 10)')
  105. ->where('sys_ny',$req['date'])
  106. ->where(['人事_基本资料.所在部门'=>['like',$req['department'].'%']])
  107. ->column('CONCAT(bh, "-", DATE_FORMAT(sczl_rq,"%Y.%m.%d")) AS rq_bh,bh,rtrim(xm) as 员工姓名,DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq,sum(个人计件工资) as 计件工资,
  108. sum(个人加班工资) as 加班工资,sum(异常停机工时) as 计时时数,sum(异常停机工时)*9.5 as 计时工资,
  109. (sum(个人计件工资) + sum(个人加班工资) + sum(异常停机工时)*9.5) as 日工资合计');
  110. $year=substr($req['date'],0,4);
  111. $month=substr($req['date'],-2);
  112. $start_time = $year . '-' . $month . '-01 00:00:00';
  113. $end_time = date('Y-m-t', strtotime("$year-$month-01")) . ' 23:59:59';
  114. $arr = [];
  115. $columns = ['wgjs_bh1', 'wgjs_bh2', 'wgjs_bh3', 'wgjs_bh4', 'wgjs_bh5', 'wgjs_bh6'];
  116. $field = 'wgjs_js';
  117. for ($i = 1; $i <= 6; $i++) {
  118. $column = $columns[$i-1];
  119. $r = db('db_wgjs')->cache(true, 86400)
  120. ->field("DATE_FORMAT(wgjs_rq,'%Y.%m.%d') as wgjs_rq, $column as wgjs_bh, trim(员工姓名) as 员工姓名, ${field}${i} as wgjs_js")
  121. ->join('人事_基本资料', "人事_基本资料.员工编号=db_wgjs.$column")
  122. ->where(['wgjs_rq' => ['between', "$start_time,$end_time"], '人事_基本资料.所在部门' => ['like', $req['department'] . '%']])
  123. ->select();
  124. $arr = array_merge($arr, $r);
  125. }
  126. foreach($arr as $v){
  127. if(isset($list[$v['wgjs_bh'].'-'.$v['wgjs_rq']])){
  128. $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时时数']+=$v['wgjs_js'];
  129. $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时工资']=floatval(number_format($list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时时数']*9.5,2));
  130. $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['日工资合计']=floatval(number_format($list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时时数']*9.5,2));
  131. }else{
  132. $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['bh']=$v['wgjs_bh'];
  133. $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['员工姓名']=$v['员工姓名'];
  134. $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['sczl_rq']=$v['wgjs_rq'];
  135. $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计件工资']=0;
  136. $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['加班工资']=0;
  137. $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时时数']=$v['wgjs_js'];
  138. $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时工资']=floatval(number_format($v['wgjs_js']*9.5,2));
  139. $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['日工资合计']=floatval(number_format($v['wgjs_js']*9.5,2));
  140. }
  141. };
  142. foreach($res as $k=>&$v){
  143. if(array_key_exists($k,$list)){
  144. $v['计时时数'] += $list[$k]['计时时数'];
  145. $v['计时工资'] = floatval(number_format($v['计时时数']*9.5,2));
  146. $v['日工资合计'] = $v['计件工资'] + $v['加班工资'] + $v['计时工资'];
  147. unset($list[$k]);
  148. }
  149. unset($v['rq_bh']);
  150. }
  151. $rows = array_merge($res,$list);
  152. ksort($rows);
  153. $rows = array_values($rows);
  154. $this->success('成功',$rows);
  155. }
  156. /**
  157. * 员工日工资查询下侧列表
  158. * @ApiMethod (GET)
  159. * @param string $date 年月
  160. * @param string $code 员工编号
  161. */
  162. public function getAllList()
  163. {
  164. //get请求
  165. if(!$this->request->isGet()){
  166. $this->error('请求方式错误');
  167. }
  168. $req = $this->request->param();
  169. $res=db('绩效工资汇总')->cache(true,86400)
  170. ->field('LEFT(sczl_rq, 10) as sczl_rq,sczl_gdbh,rtrim(g.Gd_cpmc) as Gd_cpmc,sczl_yjno,sczl_gxh,sczl_type,
  171. sczl_jtbh,sum(班组车头产量) as 班组车头产量,sum(班组换算产量) as 班组换算产量,工序难度系数,sum(个人计件工资)
  172. as 个人计件工资,sum(个人加班工资) as 个人加班工资,sum(装版工时) as 装版工时,sum(保养工时) as 保养工时,
  173. sum(打样工时) as 打样工时,sum(异常停机工时) as 异常停机工时,sum(车头产量占用机时) as 车头产量占用机时,日定额,
  174. sum(达标定额) as 达标定额,千件工价,补产标准,bh,rtrim(xm) as xm,Rate')
  175. ->join('工单_基本资料 g','g.Gd_gdbh=绩效工资汇总.sczl_gdbh','LEFT')
  176. ->group('LEFT(sczl_rq, 10),sczl_gdbh')
  177. ->where(['sys_ny'=>$req['date'],'bh'=>$req['code']])
  178. ->select();
  179. if(!$res){
  180. $this->error('失败');
  181. }
  182. foreach($res as &$v){
  183. $v['sczl_rq']=str_replace('-','.',$v['sczl_rq']);
  184. if($v['sczl_yjno']>9){
  185. $sczl_yjno=$v['sczl_yjno'];
  186. }else{
  187. $sczl_yjno='0'.$v['sczl_yjno'];
  188. }
  189. unset($v['sczl_yjno']);
  190. if($v['sczl_gxh']>9){
  191. $sczl_gxh=$v['sczl_gxh'];
  192. }else{
  193. $sczl_gxh='0'.$v['sczl_gxh'];
  194. }
  195. unset($v['sczl_gxh']);
  196. $v['sczl_type']=$sczl_yjno.'-'.$sczl_gxh.'-->'.$v['sczl_type'];
  197. }
  198. $this->success('成功',$res);
  199. }
  200. /**
  201. * 员工日工资查询详情
  202. * @ApiMethod (GET)
  203. * @param string $date 日期
  204. * @param string $code 员工编号
  205. */
  206. public function getDetail()
  207. {
  208. //get请求
  209. if(!$this->request->isGet()){
  210. $this->error('请求方式错误');
  211. }
  212. $req = $this->request->param();
  213. $start_time=$req['date'].' 00:00:00';
  214. $end_time=$req['date'].' 23:59:59';
  215. $res=db('绩效工资汇总')->cache(true,86400)
  216. ->field('LEFT(sczl_rq, 10) as sczl_rq,sczl_gdbh,rtrim(g.Gd_cpmc) as Gd_cpmc,sczl_yjno,sczl_gxh,sczl_type,
  217. sczl_jtbh,sum(班组车头产量) as 班组车头产量,sum(班组换算产量) as 班组换算产量,工序难度系数,sum(个人计件工资)
  218. as 个人计件工资,sum(个人加班工资) as 个人加班工资,sum(装版工时) as 装版工时,sum(保养工时) as 保养工时,
  219. sum(打样工时) as 打样工时,sum(异常停机工时) as 异常停机工时,sum(车头产量占用机时) as 车头产量占用机时,日定额,
  220. sum(达标定额) as 达标定额,千件工价,补产标准,bh,rtrim(xm) as xm,Rate')
  221. ->join('工单_基本资料 g','g.Gd_gdbh=绩效工资汇总.sczl_gdbh','LEFT')
  222. ->group('LEFT(sczl_rq, 10),sczl_gdbh')
  223. ->where(['sczl_rq'=>['between',"$start_time,$end_time"],'bh'=>$req['code']])
  224. ->select();
  225. if(!$res){
  226. $this->error('失败');
  227. }
  228. foreach($res as &$v){
  229. $v['sczl_rq']=str_replace('-','.',$v['sczl_rq']);
  230. if($v['sczl_yjno']>9){
  231. $sczl_yjno=$v['sczl_yjno'];
  232. }else{
  233. $sczl_yjno='0'.$v['sczl_yjno'];
  234. }
  235. unset($v['sczl_yjno']);
  236. if($v['sczl_gxh']>9){
  237. $sczl_gxh=$v['sczl_gxh'];
  238. }else{
  239. $sczl_gxh='0'.$v['sczl_gxh'];
  240. }
  241. unset($v['sczl_gxh']);
  242. $v['sczl_type']=$sczl_yjno.'-'.$sczl_gxh.'-->'.$v['sczl_type'];
  243. }
  244. $this->success('成功',$res);
  245. }
  246. /**
  247. * 定位
  248. * @ApiMethod GET
  249. */
  250. public function search(){
  251. //get请求
  252. if(!$this->request->isGet()){
  253. $this->error('请求方式错误');
  254. }
  255. $req = $this->request->param();
  256. $yg = db('人事_基本资料')->cache(true,86400)->where('员工姓名',$req['search'])->value('员工编号');
  257. if($yg){
  258. $req['search']=$yg;
  259. }
  260. $res=db('绩效工资汇总')->cache(true,86400)
  261. // ->join('人事_基本资料','人事_基本资料.员工编号=绩效工资汇总.bh','LEFT')
  262. ->field('bh,xm as 员工姓名,LEFT(sczl_rq, 10) as sczl_rq,sum(个人计件工资) as 计件工资,
  263. sum(个人加班工资) as 加班工资,(sum(个人计件工资)+sum(个人加班工资)) as 日工资合计')
  264. ->group('绩效工资汇总.bh,LEFT(sczl_rq, 10)')
  265. ->where('sys_ny',$req['date'])
  266. ->where('bh',$req['search'])
  267. // ->where('人事_基本资料.所在部门',$req['department'])
  268. ->select();
  269. if(!$res){
  270. $this->error('失败');
  271. }
  272. $year=substr($req['date'],0,4);
  273. $month=substr($req['date'],-2);
  274. $start_time = $year . '-' . $month . '-01 00:00:00';
  275. $end_time = date('Y-m-t', strtotime("$year-$month-01")) . ' 23:59:59';
  276. $res1=db('db_wgjs')->cache(true,86400)
  277. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,wgjs_bh1 as wgjs_bh,wgjs_js1 as wgjs_js')
  278. // ->join('人事_基本资料','人事_基本资料.员工编号=db_wgjs.wgjs_bh1','LEFT')
  279. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'wgjs_bh1'=>$req['search']])
  280. ->select();
  281. $res2=db('db_wgjs')->cache(true,86400)
  282. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,wgjs_bh2 as wgjs_bh,wgjs_js2 as wgjs_js')
  283. // ->join('人事_基本资料','人事_基本资料.员工编号=db_wgjs.wgjs_bh2','LEFT')
  284. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'wgjs_bh2'=>$req['search']])
  285. ->select();
  286. $res3=db('db_wgjs')->cache(true,86400)
  287. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,wgjs_bh3 as wgjs_bh,wgjs_js3 as wgjs_js')
  288. // ->join('人事_基本资料','人事_基本资料.员工编号=db_wgjs.wgjs_bh3','LEFT')
  289. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'wgjs_bh3'=>$req['search']])
  290. ->select();
  291. $res4=db('db_wgjs')->cache(true,86400)
  292. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,wgjs_bh4 as wgjs_bh,wgjs_js4 as wgjs_js')
  293. // ->join('人事_基本资料','人事_基本资料.员工编号=db_wgjs.wgjs_bh4','LEFT')
  294. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'wgjs_bh4'=>$req['search']])
  295. ->select();
  296. $res5=db('db_wgjs')->cache(true,86400)
  297. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,wgjs_bh5 as wgjs_bh,wgjs_js5 as wgjs_js')
  298. // ->join('人事_基本资料','人事_基本资料.员工编号=db_wgjs.wgjs_bh5','LEFT')
  299. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'wgjs_bh5'=>$req['search']])
  300. ->select();
  301. $res6=db('db_wgjs')->cache(true,86400)
  302. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,wgjs_bh6 as wgjs_bh,wgjs_js6 as wgjs_js')
  303. // ->join('人事_基本资料','人事_基本资料.员工编号=db_wgjs.wgjs_bh6','LEFT')
  304. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'wgjs_bh6'=>$req['search']])
  305. ->select();
  306. $arr=array_merge($res1,$res2,$res3,$res4,$res5,$res6);
  307. foreach($arr as $v){
  308. if(isset($list[$v['wgjs_rq']][$v['wgjs_bh']])){
  309. $list[$v['wgjs_rq']][$v['wgjs_bh']]+=$v['wgjs_js'];
  310. }else{
  311. $list[$v['wgjs_rq']][$v['wgjs_bh']]=$v['wgjs_js'];
  312. }
  313. }
  314. foreach($res as &$v){
  315. $v['sczl_rq']=str_replace('-','.',$v['sczl_rq']);
  316. if(isset($list[$v['sczl_rq']][$v['bh']])){
  317. $v['计时']=$list[$v['sczl_rq']][$v['bh']];
  318. }else{
  319. $v['计时']='';
  320. }
  321. }
  322. $this->success('成功',$res);
  323. }
  324. /**
  325. * 员工计件明细
  326. * @ApiMethod (GET)
  327. * @param string $start_time
  328. * @param string $end_time
  329. * @param string $code 员工编号
  330. */
  331. public function getPieceDetail()
  332. {
  333. //get请求
  334. if(!$this->request->isGet()){
  335. $this->error('请求方式错误');
  336. }
  337. $req = $this->request->param();
  338. $req['start_time']=str_replace('.','-',$req['start_time']);
  339. $req['end_time']=str_replace('.','-',$req['end_time']);
  340. $start_time=$req['start_time'].' 00:00:00';
  341. $end_time=$req['end_time'].' 23:59:59';
  342. $res=db('绩效工资汇总')->cache(true,86400)
  343. ->field('LEFT(sczl_rq, 10) as sczl_rq,sczl_gdbh,rtrim(g.员工姓名) as 员工资料,sczl_yjno,sczl_gxh,sczl_type,
  344. sczl_jtbh,班组车头产量,保养工时,装版工时,打样工时,异常停机工时,补产标准,计时补差额工资 as 班组补产,日定额,达标定额,千件工价,
  345. 个人计件工资,个人加班工资,Rate as 个人比例')
  346. ->join('人事_基本资料 g','人事_基本资料.员工编号=绩效工资汇总.bh','LEFT')
  347. ->where(['sczl_rq'=>['between',"$start_time,$end_time"],'bh'=>$req['code']])
  348. ->select();
  349. if(!$res){
  350. $this->error('失败');
  351. }
  352. foreach($res as &$v){
  353. $v['sczl_rq']=str_replace('-','.',$v['sczl_rq']);
  354. if($v['sczl_yjno']>9){
  355. $sczl_yjno=$v['sczl_yjno'];
  356. }else{
  357. $sczl_yjno='0'.$v['sczl_yjno'];
  358. }
  359. unset($v['sczl_yjno']);
  360. if($v['sczl_gxh']>9){
  361. $sczl_gxh=$v['sczl_gxh'];
  362. }else{
  363. $sczl_gxh='0'.$v['sczl_gxh'];
  364. }
  365. unset($v['sczl_gxh']);
  366. $v['sczl_type']=$sczl_yjno.'-'.$sczl_gxh.'-->'.$v['sczl_type'];
  367. $v['班组补产']=$v['补产标准']*($v['保养工时']+$v['装版工时']+$v['打样工时']+$v['异常停机工时']);
  368. }
  369. $this->success('成功',$res);
  370. }
  371. /**
  372. * 每日工资统计
  373. * @ApiMethod (GET)
  374. * @param string $date 年月
  375. * @param string $department 部门
  376. */
  377. public function statistics()
  378. {
  379. //get请求
  380. if(!$this->request->isGet()){
  381. $this->error('请求方式错误');
  382. }
  383. $req = $this->request->param();
  384. $res=db('绩效工资汇总')->cache(true,86400)
  385. ->join('人事_基本资料','人事_基本资料.员工编号=绩效工资汇总.bh','LEFT')
  386. ->field('bh,rtrim(xm) as 员工姓名,LEFT(sczl_rq, 10) as sczl_rq,sum(个人计件工资) as 计件工资,
  387. sum(个人加班工资) as 加班工资')
  388. ->group('绩效工资汇总.bh,LEFT(sczl_rq, 10)')
  389. ->where('sys_ny',$req['date'])
  390. ->where(['人事_基本资料.所在部门'=>['like',$req['department'].'%']])
  391. ->select();
  392. if(!$res){
  393. $this->error('失败');
  394. }
  395. $year=substr($req['date'],0,4);
  396. $month=substr($req['date'],-2);
  397. $start_time = $year . '-' . $month . '-01 00:00:00';
  398. $end_time = date('Y-m-t', strtotime("$year-$month-01")) . ' 23:59:59';
  399. $res1=db('db_wgjs')->cache(true,86400)
  400. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,wgjs_bh1 as wgjs_bh,wgjs_js1 as wgjs_js')
  401. ->join('人事_基本资料','人事_基本资料.员工编号=db_wgjs.wgjs_bh1','LEFT')
  402. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'人事_基本资料.所在部门'=>['like',$req['department'].'%']])
  403. ->select();
  404. $res2=db('db_wgjs')->cache(true,86400)
  405. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,wgjs_bh2 as wgjs_bh,wgjs_js2 as wgjs_js')
  406. ->join('人事_基本资料','人事_基本资料.员工编号=db_wgjs.wgjs_bh2','LEFT')
  407. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'人事_基本资料.所在部门'=>['like',$req['department'].'%']])
  408. ->select();
  409. $res3=db('db_wgjs')->cache(true,86400)
  410. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,wgjs_bh3 as wgjs_bh,wgjs_js3 as wgjs_js')
  411. ->join('人事_基本资料','人事_基本资料.员工编号=db_wgjs.wgjs_bh3','LEFT')
  412. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'人事_基本资料.所在部门'=>['like',$req['department'].'%']])
  413. ->select();
  414. $res4=db('db_wgjs')->cache(true,86400)
  415. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,wgjs_bh4 as wgjs_bh,wgjs_js4 as wgjs_js')
  416. ->join('人事_基本资料','人事_基本资料.员工编号=db_wgjs.wgjs_bh4','LEFT')
  417. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'人事_基本资料.所在部门'=>['like',$req['department'].'%']])
  418. ->select();
  419. $res5=db('db_wgjs')->cache(true,86400)
  420. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,wgjs_bh5 as wgjs_bh,wgjs_js5 as wgjs_js')
  421. ->join('人事_基本资料','人事_基本资料.员工编号=db_wgjs.wgjs_bh5','LEFT')
  422. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'人事_基本资料.所在部门'=>['like',$req['department'].'%']])
  423. ->select();
  424. $res6=db('db_wgjs')->cache(true,86400)
  425. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,wgjs_bh6 as wgjs_bh,wgjs_js6 as wgjs_js')
  426. ->join('人事_基本资料','人事_基本资料.员工编号=db_wgjs.wgjs_bh6','LEFT')
  427. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'人事_基本资料.所在部门'=>['like',$req['department'].'%']])
  428. ->select();
  429. $arr=array_merge($res1,$res2,$res3,$res4,$res5,$res6);
  430. foreach($arr as $v){
  431. if(isset($list[$v['wgjs_rq']][$v['wgjs_bh']])){
  432. $list[$v['wgjs_rq']][$v['wgjs_bh']]+=$v['wgjs_js'];
  433. }else{
  434. $list[$v['wgjs_rq']][$v['wgjs_bh']]=$v['wgjs_js'];
  435. }
  436. }
  437. foreach($res as &$v){
  438. if(isset($list[$v['sczl_rq']][$v['bh']])){
  439. $v['计时工资']=$list[$v['sczl_rq']][$v['bh']];
  440. }else{
  441. $v['计时工资']='';
  442. }
  443. $v['部门']=$req['department'];
  444. $v['sczl_rq']=str_replace('-','.',$v['sczl_rq']);
  445. }
  446. $this->success('成功',$res);
  447. }
  448. /**
  449. * 月度计时工资调整
  450. * @ApiMethod (GET)
  451. * @param string $date 年月
  452. * @param string $code 员工编号
  453. */
  454. public function wageAdjustment()
  455. {
  456. //get请求
  457. if(!$this->request->isGet()){
  458. $this->error('请求方式错误');
  459. }
  460. $req = $this->request->param();
  461. $res=db('绩效加班工资月度修正')->cache(true,86400)
  462. ->field('人事_基本资料.所在部门,bh,rtrim(xm) as xm,月计时时数,DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq,sczl_gdbh,sczl_yjno,sczl_gxh,
  463. 千件工价,Rate,sum(达标定额) as 达标定额,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资,计时冲定额,sum(New_计件工资) as
  464. New_计件工资,sum(New_加班工资) as New_加班工资,调整量_合计')
  465. ->join('人事_基本资料','人事_基本资料.员工编号=绩效加班工资月度修正.bh','LEFT')
  466. ->group('LEFT(sczl_rq, 10),sczl_gdbh')
  467. ->where(['sys_ny'=>$req['date'],'bh'=>$req['code']])
  468. ->select();
  469. if(!$res){
  470. $this->error('失败');
  471. }
  472. foreach($res as &$v){
  473. if($v['sczl_yjno']>9){
  474. $sczl_yjno=$v['sczl_yjno'];
  475. }else{
  476. $sczl_yjno='0'.$v['sczl_yjno'];
  477. }
  478. unset($v['sczl_yjno']);
  479. if($v['sczl_gxh']>9){
  480. $sczl_gxh=$v['sczl_gxh'];
  481. }else{
  482. $sczl_gxh='0'.$v['sczl_gxh'];
  483. }
  484. unset($v['sczl_gxh']);
  485. $v['sczl_gdbh']=$v['sczl_gdbh'].'-'.$sczl_yjno.'-'.$sczl_gxh;
  486. $v['bh']=$v['bh'].' '.$v['xm'];
  487. unset($v['xm']);
  488. }
  489. $this->success('成功',$res);
  490. }
  491. }