RelatedSalaryAccounting.php 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653
  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 RelatedSalaryAccounting 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('-25 months'))
  33. // ->group('sys_ny')
  34. // ->order('sys_ny desc')
  35. // ->limit(25)
  36. // ->column('sys_ny');
  37. $rows = db()->table('db_大废品')
  38. ->whereTime('sys_rq', '>=', strtotime('-25 months'))
  39. ->group("DATE_FORMAT(`sys_rq`, '%Y%m')")
  40. ->order('sys_rq desc')
  41. ->limit(25)
  42. ->column("DATE_FORMAT(`sys_rq`, '%Y%m')");
  43. foreach($rows as $k=>$v){
  44. $datas[$k]['label']=$v;
  45. $datas[$k]['children']=[
  46. ['label'=>'胶印车间','rq'=>$v],
  47. ['label'=>'凹印车间','rq'=>$v],
  48. ['label'=>'丝印车间','rq'=>$v],
  49. ['label'=>'模切车间','rq'=>$v],
  50. ['label'=>'检验车间','rq'=>$v]];
  51. }
  52. $this->success('成功',$datas);
  53. }
  54. /**
  55. * 关联工资核算上侧列表
  56. * @ApiMethod (GET)
  57. * @param string $date 年月
  58. * @param string $department 部门
  59. */
  60. public function getList()
  61. {
  62. //get请求
  63. if(!$this->request->isGet()){
  64. $this->error('请求方式错误');
  65. }
  66. $req = $this->request->param();
  67. $year=substr($req['date'],0,4);
  68. $month=substr($req['date'],-2);
  69. if($month==12){
  70. $start_time=$year.'-12-01 00:00:00';
  71. $end_time=($year+1).'-01-01 00:00:00';
  72. }else{
  73. $start_time=$year.'-'.$month.'-01 00:00:00';
  74. $end_time=$year.'-'.($month+1).'-01 00:00:00';
  75. }
  76. $gz=db()->table('绩效工资汇总')
  77. ->field('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资,
  78. DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq')
  79. ->group('LEFT(sczl_rq, 10),bh')
  80. ->where(['sys_ny'=>$req['date']])
  81. ->select();
  82. foreach($gz as $v){
  83. $data[$v['bh']][$v['sczl_rq']]=$v;
  84. }
  85. $res=db()->table('人事_关联工资设置')
  86. ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT')
  87. ->field('关联员工 as 员工编号,rtrim(人事_基本资料.员工姓名) as 员工姓名,rtrim(人事_基本资料.职称职务) as 职称职务,
  88. 人事_基本资料.所在部门,DATE_FORMAT(日期,"%Y.%m.%d") as 日期,关联系数,count(被关联员工) as 关联人数')
  89. ->group('LEFT(日期, 10),关联员工')
  90. ->where(['日期'=>['between',"$start_time,$end_time"],'人事_基本资料.所在部门'=>['like',$req['department'].'%']])
  91. ->order('关联员工,日期')
  92. ->select();
  93. foreach($res as &$v){
  94. if(isset($data[$v['员工编号']][$v['日期']])){
  95. $v['个人计件工资']=$data[$v['员工编号']][$v['日期']]['个人计件工资'];
  96. $v['个人加班工资']=$data[$v['员工编号']][$v['日期']]['个人加班工资'];
  97. }else{
  98. $v['个人计件工资']='';
  99. $v['个人加班工资']='';
  100. }
  101. }
  102. if(!$res){
  103. $this->error('失败');
  104. }
  105. $this->success('成功',$res);
  106. }
  107. /**
  108. * 关联工资核算下侧列表
  109. * @ApiMethod (GET)
  110. * @param string $date 年月
  111. * @param string $code 员工编号
  112. */
  113. public function getAllList()
  114. {
  115. //get请求
  116. if(!$this->request->isGet()){
  117. $this->error('请求方式错误');
  118. }
  119. $req = $this->request->param();
  120. $year=substr($req['date'],0,4);
  121. $month=substr($req['date'],-2);
  122. if($month==12){
  123. $start_time=$year.'-12-01 00:00:00';
  124. $end_time=($year+1).'-01-01 00:00:00';
  125. }else{
  126. $start_time=$year.'-'.$month.'-01 00:00:00';
  127. $end_time=$year.'-'.($month+1).'-01 00:00:00';
  128. }
  129. $gz=db()->table('绩效工资汇总')
  130. ->field('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资,
  131. DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq')
  132. ->group('LEFT(sczl_rq, 10),bh')
  133. ->where(['sys_ny'=>$req['date']])
  134. ->select();
  135. foreach($gz as $v){
  136. $data[$v['bh']][$v['sczl_rq']]=$v;
  137. }
  138. $res=db()->table('人事_关联工资设置')
  139. ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT')
  140. ->field('DATE_FORMAT(日期,"%Y.%m.%d") as 日期,关联员工 as 员工编号,rtrim(人事_基本资料.员工姓名) as 员工姓名,
  141. rtrim(人事_基本资料.职称职务) as 职称职务,人事_基本资料.所在部门,被关联员工,权重')
  142. ->group('LEFT(日期, 10),被关联员工')
  143. ->where(['日期'=>['between',"$start_time,$end_time"],'关联员工'=>$req['code']])
  144. ->order('关联员工,日期')
  145. ->select();
  146. if(!$res){
  147. $this->error('失败');
  148. }
  149. foreach($res as &$v){
  150. if(isset($data[$v['被关联员工']][$v['日期']])){
  151. $v['被关联姓名']=$data[$v['被关联员工']][$v['日期']]['姓名'];
  152. $v['个人计件工资']=$data[$v['被关联员工']][$v['日期']]['个人计件工资'];
  153. $v['个人加班工资']=$data[$v['被关联员工']][$v['日期']]['个人加班工资'];
  154. }else{
  155. $v['个人计件工资']='';
  156. $v['个人加班工资']='';
  157. }
  158. }
  159. $this->success('成功',$res);
  160. }
  161. /**
  162. * 关联工资核算详情
  163. * @ApiMethod (GET)
  164. * @param string $date 日期
  165. * @param string $code 员工编号
  166. */
  167. public function getDetail()
  168. {
  169. //get请求
  170. if(!$this->request->isGet()){
  171. $this->error('请求方式错误');
  172. }
  173. $req = $this->request->param();
  174. $start_time=$req['date'].' 00:00:00';
  175. $end_time=$req['date'].' 23:59:59';
  176. $gz=db()->table('绩效工资汇总')
  177. ->field('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资,
  178. DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq')
  179. ->group('LEFT(sczl_rq, 10),bh')
  180. ->where(['sczl_rq'=>$start_time])
  181. ->select();
  182. foreach($gz as $v){
  183. $data[$v['bh']][$v['sczl_rq']]=$v;
  184. }
  185. $res=db()->table('人事_关联工资设置')
  186. ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT')
  187. ->field('DATE_FORMAT(日期,"%Y.%m.%d") as 日期,关联员工 as 员工编号,rtrim(人事_基本资料.员工姓名) as 员工姓名,
  188. rtrim(人事_基本资料.职称职务) as 职称职务,人事_基本资料.所在部门,被关联员工,权重')
  189. ->group('LEFT(日期, 10),被关联员工')
  190. ->where(['日期'=>['between',"$start_time,$end_time"],'关联员工'=>$req['code']])
  191. ->order('关联员工,日期')
  192. ->select();
  193. if(!$res){
  194. $this->error('失败');
  195. }
  196. foreach($res as &$v){
  197. if(isset($data[$v['被关联员工']][$v['日期']])){
  198. $v['被关联姓名']=$data[$v['被关联员工']][$v['日期']]['姓名'];
  199. $v['个人计件工资']=$data[$v['被关联员工']][$v['日期']]['个人计件工资'];
  200. $v['个人加班工资']=$data[$v['被关联员工']][$v['日期']]['个人加班工资'];
  201. }else{
  202. $v['个人计件工资']='';
  203. $v['个人加班工资']='';
  204. }
  205. }
  206. $this->success('成功',$res);
  207. }
  208. /**
  209. * 定位
  210. * @ApiMethod GET
  211. */
  212. public function search(){
  213. //get请求
  214. if(!$this->request->isGet()){
  215. $this->error('请求方式错误');
  216. }
  217. $req = $this->request->param();
  218. $year=substr($req['date'],0,4);
  219. $month=substr($req['date'],-2);
  220. if($month==12){
  221. $start_time=$year.'-12-01 00:00:00';
  222. $end_time=($year+1).'-01-01 00:00:00';
  223. }else{
  224. $start_time=$year.'-'.$month.'-01 00:00:00';
  225. $end_time=$year.'-'.($month+1).'-01 00:00:00';
  226. }
  227. $gd = db()->table('工单_基本资料')->where('Gd_cpmc',$req['search'])->value('Gd_gdbh');
  228. if($gd){
  229. $req['search']=$gd;
  230. }
  231. $gz=db()->table('绩效工资汇总')
  232. ->field('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资,
  233. DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq')
  234. ->group('LEFT(sczl_rq, 10),bh')
  235. ->where(['sys_ny'=>$req['date']])
  236. ->select();
  237. foreach($gz as $v){
  238. $data[$v['bh']][$v['sczl_rq']]=$v;
  239. }
  240. $res=db()->table('人事_关联工资设置')
  241. ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT')
  242. ->field('关联员工 as 员工编号,rtrim(人事_基本资料.员工姓名) as 员工姓名,rtrim(人事_基本资料.职称职务) as 职称职务,
  243. 人事_基本资料.所在部门,DATE_FORMAT(日期,"%Y.%m.%d") as 日期,关联系数,count(被关联员工) as 关联人数')
  244. ->group('LEFT(日期, 10),关联员工')
  245. ->where(['日期'=>['between',"$start_time,$end_time"],'关联员工'=>$req['search']])
  246. ->order('关联员工,日期')
  247. ->select();
  248. foreach($res as &$v){
  249. if(isset($data[$v['员工编号']][$v['日期']])){
  250. $v['个人计件工资']=$data[$v['员工编号']][$v['日期']]['个人计件工资'];
  251. $v['个人加班工资']=$data[$v['员工编号']][$v['日期']]['个人加班工资'];
  252. }else{
  253. $v['个人计件工资']='';
  254. $v['个人加班工资']='';
  255. }
  256. }
  257. if(!$res){
  258. $this->error('失败');
  259. }
  260. $this->success('成功',$res);
  261. }
  262. /**
  263. * 关联工资设置
  264. * @ApiMethod (GET)
  265. * @param string $date 日期
  266. * @param string $code 员工编号
  267. */
  268. public function setting()
  269. {
  270. //get请求
  271. if(!$this->request->isGet()){
  272. $this->error('请求方式错误');
  273. }
  274. $req = $this->request->param();
  275. $req['date']=str_replace('.','-',$req['date']);
  276. $start_time=$req['date'].' 00:00:00';
  277. $end_time=$req['date'].' 23:59:59';
  278. $gz=db()->table('绩效工资汇总')
  279. ->field('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资,
  280. DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq')
  281. ->group('LEFT(sczl_rq, 10),bh')
  282. ->where(['sczl_rq'=>$start_time])
  283. ->select();
  284. foreach($gz as $v){
  285. $data[$v['bh']][$v['sczl_rq']]=$v;
  286. }
  287. $res=db()->table('人事_关联工资设置')
  288. ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT')
  289. ->field('DATE_FORMAT(日期,"%Y.%m.%d") as 日期,关联员工 as 关联人员工号,rtrim(人事_基本资料.员工姓名) as 关联人员姓名,
  290. 被关联员工 as 班组员工编号,权重 as 组员权重,关联系数 as 日关联系数,人事_关联工资设置.UniqID')
  291. ->group('被关联员工')
  292. ->where(['日期'=>['between',"$start_time,$end_time"],'关联员工'=>$req['code']])
  293. ->order('关联员工,日期')
  294. ->select();
  295. if(!$res){
  296. $this->error('失败');
  297. }
  298. foreach($res as &$v){
  299. if(isset($data[$v['班组员工编号']][$v['日期']])){
  300. $bh=$v['班组员工编号'];
  301. $rq=$v['日期'];
  302. $v['班组员工编号']=$bh.'('.$data[$bh][$rq]['姓名'].')';
  303. $v['计件工资基数']=$data[$bh][$rq]['个人计件工资'];
  304. $v['加班工资基数']=$data[$bh][$rq]['个人加班工资'];
  305. $v['日关联人数']=count($res);
  306. }else{
  307. $v['个人计件工资']='';
  308. $v['个人加班工资']='';
  309. }
  310. }
  311. $this->success('成功',$res);
  312. }
  313. /**
  314. * 更新关联系数
  315. * @ApiMethod (GET)
  316. * @param string $date 日期
  317. * @param string $code 员工编号
  318. */
  319. public function updateNum()
  320. {
  321. //get请求
  322. if(!$this->request->isGet()){
  323. $this->error('请求方式错误');
  324. }
  325. $req = $this->request->param();
  326. $req['date']=str_replace('.','-',$req['date']);
  327. $start_time=$req['date'].' 00:00:00';
  328. // $sql=db()->table('人事_关联工资设置')
  329. // ->where(['日期'=>$start_time,'关联员工'=>$req['code']])
  330. // ->fetchSql(true)
  331. // ->setField('关联系数',$req['num']);
  332. // Db::query($sql);
  333. $data['mod_rq'] = date('Y-m-d H:i:s');
  334. $data['关联系数']=$req['num'];
  335. //开启事务
  336. db()->startTrans();
  337. try{
  338. $sql=db()->table('人事_关联工资设置')
  339. ->where(['日期'=>$start_time,'关联员工'=>$req['code']])
  340. ->fetchSql(true)
  341. ->update($data);
  342. $res=Db::query($sql);
  343. // 提交事务
  344. db()->commit();
  345. } catch (\Exception $e) {
  346. // 回滚事务
  347. db()->rollback();
  348. $this->error($e->getMessage());
  349. }
  350. if($res===false) $this->error('失败');
  351. $this->success('成功');
  352. }
  353. /**
  354. * 关联组员权重查询
  355. * @ApiMethod (GET)
  356. * @param string $date 日期
  357. * @param string $code 员工编号
  358. */
  359. public function weightDetail()
  360. {
  361. //get请求
  362. if(!$this->request->isGet()){
  363. $this->error('请求方式错误');
  364. }
  365. $req = $this->request->param();
  366. $req['date']=str_replace('.','-',$req['date']);
  367. $start_time=$req['date'].' 00:00:00';
  368. $end_time=$req['date'].' 23:59:59';
  369. $res=db()->table('人事_基本资料')
  370. ->join('人事_关联工资设置','人事_基本资料.员工编号=人事_关联工资设置.被关联员工','LEFT')
  371. ->join('人事_员工照片','人事_基本资料.照片ID=人事_员工照片.UniqId','LEFT')
  372. ->field('人事_关联工资设置.被关联员工 as 员工编号,rtrim(员工姓名) as 姓名,rtrim(所在部门) as 部门名称,人事_基本资料.职称职务 as 职务,
  373. DATE_FORMAT(聘用日期,"%Y.%m.%d") as 入职日期,权重 as 关联权重')
  374. ->group('被关联员工')
  375. ->where(['人事_关联工资设置.日期'=>['between',"$start_time,$end_time"],'人事_关联工资设置.被关联员工'=>$req['code']])
  376. ->order('关联员工,日期')
  377. ->select();
  378. if(!$res){
  379. $this->error('失败');
  380. }
  381. $this->success('成功',$res);
  382. }
  383. /**
  384. * 批量附加组员列表
  385. * @ApiMethod (GET)
  386. * @param string $date 日期
  387. * @param string $code 员工编号
  388. */
  389. public function batchAddLst()
  390. {
  391. //get请求
  392. if(!$this->request->isGet()){
  393. $this->error('请求方式错误');
  394. }
  395. $req = $this->request->param();
  396. $req['date']=str_replace('.','-',$req['date']);
  397. $start_time=$req['date'].' 00:00:00';
  398. $end_time=$req['date'].' 23:59:59';
  399. $gz=db()->table('绩效工资汇总')
  400. ->field('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资,
  401. DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq,sczl_bzdh')
  402. ->group('LEFT(sczl_rq, 10),bh')
  403. ->where(['sczl_rq'=>$start_time])
  404. ->select();
  405. foreach($gz as $v){
  406. $data[$v['bh']][$v['sczl_rq']]=$v;
  407. }
  408. $res=db()->table('人事_关联工资设置')
  409. ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.被关联员工','LEFT')
  410. ->field('DATE_FORMAT(日期,"%Y.%m.%d") as 日期,人事_基本资料.所在部门,人事_基本资料.职称职务,被关联员工 as 班组员工编号,人事_关联工资设置.UniqID')
  411. // ->group('被关联员工')
  412. ->where(['日期'=>['between',"$start_time,$end_time"],'关联员工'=>['NEQ',$req['code']]])
  413. ->order('人事_基本资料.所在部门')
  414. ->select();
  415. if(!$res){
  416. $this->error('失败');
  417. }
  418. foreach($res as &$v){
  419. if(isset($data[$v['班组员工编号']][$v['日期']])){
  420. $bh=$v['班组员工编号'];
  421. $rq=$v['日期'];
  422. $v['班组员工编号']=$bh.'('.$data[$bh][$rq]['姓名'].')';
  423. $v['班组']=$data[$bh][$rq]['sczl_bzdh'];
  424. $v['计件工资基数']=$data[$bh][$rq]['个人计件工资'];
  425. $v['加班工资基数']=$data[$bh][$rq]['个人加班工资'];
  426. }else{
  427. $v['计件工资基数']='删除';
  428. $v['加班工资基数']='';
  429. }
  430. }
  431. foreach($res as $k=>$v){
  432. if($v['计件工资基数']=='删除'){
  433. unset($res[$k]);
  434. }
  435. }
  436. array_multisort($res);
  437. $this->success('成功',$res);
  438. }
  439. /**
  440. * 批量附加组员定位
  441. * @ApiMethod (GET)
  442. * @param string $date 日期
  443. * @param string $search 员工编号
  444. */
  445. public function batchAddSearch()
  446. {
  447. //get请求
  448. if(!$this->request->isGet()){
  449. $this->error('请求方式错误');
  450. }
  451. $req = $this->request->param();
  452. $req['date']=str_replace('.','-',$req['date']);
  453. $start_time=$req['date'].' 00:00:00';
  454. $end_time=$req['date'].' 23:59:59';
  455. $gd = db()->table('工单_基本资料')->where('Gd_cpmc',$req['search'])->value('Gd_gdbh');
  456. if($gd){
  457. $req['search']=$gd;
  458. }
  459. $gz=db()->table('绩效工资汇总')
  460. ->field('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资,
  461. DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq,sczl_bzdh')
  462. ->group('LEFT(sczl_rq, 10),bh')
  463. ->where(['sczl_rq'=>$start_time])
  464. ->select();
  465. foreach($gz as $v){
  466. $data[$v['bh']][$v['sczl_rq']]=$v;
  467. }
  468. $res=db()->table('人事_关联工资设置')
  469. ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.被关联员工','LEFT')
  470. ->field('DATE_FORMAT(日期,"%Y.%m.%d") as 日期,人事_基本资料.所在部门,人事_基本资料.职称职务,被关联员工 as 班组员工编号,人事_关联工资设置.UniqID')
  471. // ->group('被关联员工')
  472. ->where(['日期'=>['between',"$start_time,$end_time"],'被关联员工'=>['EQ',$req['search']]])
  473. ->order('人事_基本资料.所在部门')
  474. ->select();
  475. if(!$res){
  476. $this->error('失败');
  477. }
  478. foreach($res as &$v){
  479. if(isset($data[$v['班组员工编号']][$v['日期']])){
  480. $bh=$v['班组员工编号'];
  481. $rq=$v['日期'];
  482. $v['班组员工编号']=$bh.'('.$data[$bh][$rq]['姓名'].')';
  483. $v['班组']=$data[$bh][$rq]['sczl_bzdh'];
  484. $v['计件工资基数']=$data[$bh][$rq]['个人计件工资'];
  485. $v['加班工资基数']=$data[$bh][$rq]['个人加班工资'];
  486. }else{
  487. $v['计件工资基数']='删除';
  488. $v['加班工资基数']='';
  489. }
  490. }
  491. foreach($res as $k=>$v){
  492. if($v['计件工资基数']=='删除'){
  493. unset($res[$k]);
  494. }
  495. }
  496. $this->success('成功',$res);
  497. }
  498. /**
  499. * 关联组员复制列表
  500. * @ApiMethod (GET)
  501. * @param string $date 日期
  502. */
  503. public function copyLst()
  504. {
  505. //get请求
  506. if(!$this->request->isGet()){
  507. $this->error('请求方式错误');
  508. }
  509. $req = $this->request->param();
  510. $req['date']=str_replace('.','-',$req['date']);
  511. $start_time=$req['date'].' 00:00:00';
  512. $end_time=$req['date'].' 23:59:59';
  513. $res=db()->table('人事_关联工资设置')
  514. ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT')
  515. ->field('关联员工 as 员工编号,人事_基本资料.员工姓名,人事_基本资料.所在部门,人事_基本资料.职称职务,人事_关联工资设置.UniqID')
  516. ->group('关联员工')
  517. ->where(['日期'=>['between',"$start_time,$end_time"]])
  518. // ->order('人事_关联工资设置.关联员工')
  519. ->select();
  520. if(!$res){
  521. $this->error('失败');
  522. }
  523. $this->success('成功',$res);
  524. }
  525. /**
  526. * 批量附加组员
  527. * @ApiMethod POST
  528. * @params string UniqID
  529. */
  530. public function batchAdd(){
  531. if (Request::instance()->isPost() == false){
  532. $this->error('非法请求');
  533. }
  534. $params = Request::instance()->post();
  535. if (!isset($params) || !isset($params[0]['UniqID'])){
  536. $this->error('参数不能为空');
  537. }
  538. //开启事务
  539. db()->startTrans();
  540. try{
  541. foreach($params as $k=>$v){
  542. $v['mod_rq']=date('Y-m-d H:i:s');
  543. $sql=db()->table('人事_关联工资设置')
  544. ->where(['UniqID'=>$v['UniqID']])
  545. ->fetchSql(true)
  546. ->update($v);
  547. $res=Db::query($sql);
  548. }
  549. // 提交事务
  550. db()->commit();
  551. } catch (\Exception $e) {
  552. // 回滚事务
  553. db()->rollback();
  554. $this->error($e->getMessage());
  555. }
  556. if($res===false) $this->error('失败');
  557. $this->success('成功');
  558. }
  559. /**
  560. * 批量删除组员
  561. * @ApiMethod POST
  562. * @params string UniqID
  563. */
  564. public function batchDel(){
  565. if (Request::instance()->isPost() == false){
  566. $this->error('非法请求');
  567. }
  568. $params = Request::instance()->post();
  569. if (!isset($params) || !isset($params[0]['UniqID'])){
  570. $this->error('参数不能为空');
  571. }
  572. //开启事务
  573. db()->startTrans();
  574. try{
  575. foreach($params as $k=>$v){
  576. $v['mod_rq']=date('Y-m-d H:i:s');
  577. $v['关联员工']='';
  578. $sql=db()->table('人事_关联工资设置')
  579. ->where(['UniqID'=>$v['UniqID']])
  580. ->fetchSql(true)
  581. ->update($v);
  582. $res=Db::query($sql);
  583. }
  584. // 提交事务
  585. db()->commit();
  586. } catch (\Exception $e) {
  587. // 回滚事务
  588. db()->rollback();
  589. $this->error($e->getMessage());
  590. }
  591. if($res===false) $this->error('失败');
  592. $this->success('成功');
  593. }
  594. /**
  595. * 关联组员复制
  596. * @ApiMethod POST
  597. * @params string UniqID
  598. */
  599. public function copy(){
  600. if (Request::instance()->isPost() == false){
  601. $this->error('非法请求');
  602. }
  603. $params = Request::instance()->post();
  604. if (!isset($params) || !isset($params[0])){
  605. $this->error('参数不能为空');
  606. }
  607. //开启事务
  608. db()->startTrans();
  609. try{
  610. foreach($params as $v){
  611. $v['old_time']=str_replace('.','-',$v['old_time']).' 00:00:00';
  612. $v['new_time']=str_replace('.','-',$v['new_time']).' 00:00:00';
  613. db()->table('人事_关联工资设置')
  614. ->where(['关联员工'=>$v['关联员工'],'日期'=>$v['new_time']])
  615. ->delete();
  616. $data=Db::table('人事_关联工资设置')
  617. ->field('日期,关联员工,关联系数,被关联员工,权重,sys_id')
  618. ->where(['关联员工'=>$v['关联员工'],'日期'=>$v['old_time']])
  619. ->select();
  620. $id=Db::table('人事_关联工资设置')->order('UniqID desc')->limit(1)->value('UniqID');
  621. $i=1;
  622. foreach($data as &$value){
  623. $value['日期']=$v['new_time'];
  624. $value['UniqID']=$i+$id;
  625. $value['sys_rq']=date('Y-m-d H:i:s');
  626. $i++;
  627. }
  628. $sql=db()->table('人事_关联工资设置')
  629. ->fetchSql(true)
  630. ->insertAll($data);
  631. $res=Db::query($sql);
  632. }
  633. // 提交事务
  634. db()->commit();
  635. } catch (\Exception $e) {
  636. // 回滚事务
  637. db()->rollback();
  638. $this->error($e->getMessage());
  639. }
  640. if($res===false) $this->error('失败');
  641. $this->success('成功');
  642. }
  643. }