EmployeeDailySalary.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405
  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. ->group('sys_ny')
  33. ->order('sys_ny desc')
  34. ->limit(15)
  35. ->column('sys_ny');
  36. foreach($rows as $k=>$v){
  37. $res[$k]['ny']=$v;
  38. $res[$k]['bh']=db()->table('绩效工资汇总')
  39. ->group('bh')
  40. ->where('sys_ny',$v)
  41. ->column('bh');
  42. // $res[$k]['bm']=db()->table('绩效工资汇总')
  43. // ->join('人事_基本资料','人事_基本资料.员工编号=绩效工资汇总.bh','LEFT')
  44. // ->group('人事_基本资料.所在部门')
  45. // ->where('sys_ny',$v)
  46. // ->column('人事_基本资料.所在部门');
  47. }
  48. $rs = db()->table('人事_基本资料')->column('员工编号,所在部门');
  49. foreach($res as $k=>$v){
  50. foreach($v['bh'] as $value){
  51. $res[$k]['bm'][]=$rs[$value];
  52. }
  53. }
  54. foreach($res as &$v){
  55. unset($v['bh']);
  56. $v['bm']=array_unique($v['bm']);
  57. foreach($v['bm'] as &$value){
  58. $value=rtrim($value);
  59. }
  60. usort($v['bm'], function($a, $b) {
  61. $order = array(
  62. '胶印车间',
  63. '凹印车间',
  64. '丝印车间',
  65. '模切车间',
  66. '检验车间',
  67. '精品试验车间',
  68. '品保部',
  69. '人力资源部',
  70. '生产部',
  71. '营销部'
  72. );
  73. $a_index = array_search($a, $order);
  74. $b_index = array_search($b, $order);
  75. return $a_index - $b_index;
  76. });
  77. }
  78. foreach($res as $k=>$v){
  79. $data[$k]['lable']=$v['ny'];
  80. foreach($v['bm'] as $value){
  81. $data[$k]['children'][]['lable']=$value;
  82. }
  83. }
  84. $this->success('成功',$data);
  85. }
  86. /**
  87. * 员工日工资查询列表
  88. * @ApiMethod (GET)
  89. * @param string $date 时间
  90. * @param string $Sczl_bh1 员工编号
  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()->table('绩效工资汇总')
  100. ->join('人事_基本资料','人事_基本资料.员工编号=绩效工资汇总.bh','LEFT')
  101. ->field('bh,xm as 员工姓名,LEFT(sczl_rq, 10) as sczl_rq,sum(个人计件工资) as 计件工资,
  102. sum(个人加班工资) as 加班工资,(sum(个人计件工资)+sum(个人加班工资)) as 日工资合计')
  103. ->group('绩效工资汇总.bh,LEFT(sczl_rq, 10)')
  104. ->where('sys_ny',$req['date'])
  105. ->where('人事_基本资料.所在部门',$req['department'])
  106. ->select();
  107. $year=substr($req['date'],0,4);
  108. $month=substr($req['date'],-2);
  109. if($month==12){
  110. $start_time=$year.'-12-01 00:00:00';
  111. $end_time=($year+1).'-01-01 00:00:00';
  112. }else{
  113. $start_time=$year.'-'.$month.'-01 00:00:00';
  114. $end_time=$year.'-'.($month+1).'-01 00:00:00';
  115. }
  116. $res1=db()->table('db_wgjs1')
  117. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,wgjs_bh1 as wgjs_bh,wgjs_js1 as wgjs_js')
  118. ->join('人事_基本资料','人事_基本资料.员工编号=db_wgjs1.wgjs_bh1','LEFT')
  119. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'人事_基本资料.所在部门'=>$req['department']])
  120. ->select();
  121. $res2=db()->table('db_wgjs1')
  122. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,wgjs_bh2 as wgjs_bh,wgjs_js2 as wgjs_js')
  123. ->join('人事_基本资料','人事_基本资料.员工编号=db_wgjs1.wgjs_bh2','LEFT')
  124. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'人事_基本资料.所在部门'=>$req['department']])
  125. ->select();
  126. $res3=db()->table('db_wgjs1')
  127. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,wgjs_bh3 as wgjs_bh,wgjs_js3 as wgjs_js')
  128. ->join('人事_基本资料','人事_基本资料.员工编号=db_wgjs1.wgjs_bh3','LEFT')
  129. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'人事_基本资料.所在部门'=>$req['department']])
  130. ->select();
  131. $res4=db()->table('db_wgjs1')
  132. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,wgjs_bh4 as wgjs_bh,wgjs_js4 as wgjs_js')
  133. ->join('人事_基本资料','人事_基本资料.员工编号=db_wgjs1.wgjs_bh4','LEFT')
  134. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'人事_基本资料.所在部门'=>$req['department']])
  135. ->select();
  136. $res5=db()->table('db_wgjs1')
  137. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,wgjs_bh5 as wgjs_bh,wgjs_js5 as wgjs_js')
  138. ->join('人事_基本资料','人事_基本资料.员工编号=db_wgjs1.wgjs_bh5','LEFT')
  139. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'人事_基本资料.所在部门'=>$req['department']])
  140. ->select();
  141. $res6=db()->table('db_wgjs1')
  142. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,wgjs_bh6 as wgjs_bh,wgjs_js6 as wgjs_js')
  143. ->join('人事_基本资料','人事_基本资料.员工编号=db_wgjs1.wgjs_bh6','LEFT')
  144. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'人事_基本资料.所在部门'=>$req['department']])
  145. ->select();
  146. $arr=array_merge($res1,$res2,$res3,$res4,$res5,$res6);
  147. foreach($arr as $v){
  148. if(isset($list[$v['wgjs_rq']][$v['wgjs_bh']])){
  149. $list[$v['wgjs_rq']][$v['wgjs_bh']]+=$v['wgjs_js'];
  150. }else{
  151. $list[$v['wgjs_rq']][$v['wgjs_bh']]=$v['wgjs_js'];
  152. }
  153. }
  154. foreach($res as &$v){
  155. if(isset($list[$v['sczl_rq']][$v['bh']])){
  156. $v['计时']=$list[$v['sczl_rq']][$v['bh']];
  157. }else{
  158. $v['计时']='';
  159. }
  160. }
  161. $this->success('成功',$res);
  162. }
  163. /**
  164. * 获取计件工计时单信息
  165. * @ApiMethod (GET)
  166. * @param string $UniqId UniqId
  167. */
  168. public function getInfo()
  169. {
  170. //get请求
  171. if(!$this->request->isGet()){
  172. $this->error('请求方式错误');
  173. }
  174. $req = $this->request->param();
  175. if (isset($req['UniqId']) && !empty($req['UniqId'])){
  176. $UniqId = $req['UniqId'];
  177. }else{
  178. $this->error('参数错误');
  179. }
  180. $rows = db()->table('db_wgjs')->alias('d')
  181. ->field('d.*, ')
  182. ->join('工单_基本资料 g', 'd.')
  183. ->where('d.UniqId',$UniqId)
  184. ->select();
  185. $this->success('成功',$rows);
  186. }
  187. /**
  188. * 定位
  189. * @ApiMethod GET
  190. */
  191. public function search(){
  192. if (Request::instance()->isGet() == false){
  193. $this->error('非法请求');
  194. }
  195. $req = Request::instance()->param();
  196. if (!isset($req['search']) || !isset($req['date'])){
  197. $this->error('参数错误');
  198. }
  199. $page = 1;
  200. $limit = 10;
  201. if (isset($req['page']) && !empty($req['page'])) $page = $req['page'];
  202. if (isset($req['limit']) && !empty($req['limit'])) $limit = $req['limit'];
  203. $year=substr($req['date'],0,4);
  204. $month=substr($req['date'],-2);
  205. if($month==12){
  206. $start_time=$year.'-12-01 00:00:00';
  207. $end_time=($year+1).'-01-01 00:00:00';
  208. }else{
  209. $start_time=$year.'-'.$month.'-01 00:00:00';
  210. $end_time=$year.'-'.($month+1).'-01 00:00:00';
  211. }
  212. $yg = db()->table('人事_基本资料')->where('员工姓名',$req['search'])->value('员工编号');
  213. if($yg){
  214. $req['search']=$yg;
  215. }
  216. $rows = db()->table('db_wgjs1')
  217. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,
  218. wgjs_bh1,rs1.所在部门, CAST(wgjs_js1 AS SIGNED) as wgjs_js1, rtrim(wgjs_yy1) as wgjs_yy1,
  219. wgjs_bh2, CAST(wgjs_js2 AS SIGNED) as wgjs_js2, rtrim(wgjs_yy2) as wgjs_yy2,
  220. wgjs_bh3, CAST(wgjs_js3 AS SIGNED) as wgjs_js3, rtrim(wgjs_yy3) as wgjs_yy3,
  221. wgjs_bh4, CAST(wgjs_js4 AS SIGNED) as wgjs_js4, rtrim(wgjs_yy4) as wgjs_yy4,
  222. wgjs_bh5, CAST(wgjs_js5 AS SIGNED) as wgjs_js5, rtrim(wgjs_yy5) as wgjs_yy5,
  223. wgjs_bh6, CAST(wgjs_js6 AS SIGNED) as wgjs_js6, rtrim(wgjs_yy6) as wgjs_yy6,
  224. rtrim(rs1.员工姓名) as name1,rtrim(rs2.员工姓名) as name2,rtrim(rs3.员工姓名)
  225. as name3,rtrim(rs4.员工姓名) as name4,rtrim(rs5.员工姓名) as name5,rtrim(rs6.员工姓名)
  226. as name6')
  227. ->join('人事_基本资料 rs1','rs1.员工编号=db_wgjs1.wgjs_bh1','LEFT')
  228. ->join('人事_基本资料 rs2','rs2.员工编号=db_wgjs1.wgjs_bh2','LEFT')
  229. ->join('人事_基本资料 rs3','rs3.员工编号=db_wgjs1.wgjs_bh3','LEFT')
  230. ->join('人事_基本资料 rs4','rs4.员工编号=db_wgjs1.wgjs_bh4','LEFT')
  231. ->join('人事_基本资料 rs5','rs5.员工编号=db_wgjs1.wgjs_bh5','LEFT')
  232. ->join('人事_基本资料 rs6','rs6.员工编号=db_wgjs1.wgjs_bh6','LEFT')
  233. ->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'wgjs_bh1'=>$req['search']])
  234. ->select();
  235. $total = db()->table('db_wgjs1')->where(['wgjs_rq'=>['between',"$start_time,$end_time"],'wgjs_bh1'=>$req['search']])->count();
  236. $data = ['total'=> $total,'rows'=> $rows];
  237. if($rows){
  238. $this->success('成功',$data);
  239. }else{
  240. $this->error('失败');
  241. }
  242. }
  243. /**
  244. * 详情
  245. * @ApiMethod (GET)
  246. * @param string $wgjs_rq 日期
  247. * @param string $wgjs_bh1 员工编号
  248. */
  249. public function detail(){
  250. //get请求
  251. if(!$this->request->isGet()){
  252. $this->error('请求方式错误');
  253. }
  254. $req = $this->request->param();
  255. if (!isset($req['wgjs_rq']) || !isset($req['wgjs_bh1']) ){
  256. $this->error('参数错误');
  257. }else{
  258. }
  259. if (empty($req['wgjs_rq']) || empty($req['wgjs_bh1'])){
  260. $this->error('参数不能为空');
  261. }
  262. $rows = db()->table('db_wgjs1')
  263. ->field('LEFT(wgjs_rq, 10) as wgjs_rq,
  264. wgjs_bh1, CAST(wgjs_js1 AS SIGNED) as wgjs_js1, rtrim(wgjs_yy1) as wgjs_yy1,
  265. wgjs_bh2, CAST(wgjs_js2 AS SIGNED) as wgjs_js2, rtrim(wgjs_yy2) as wgjs_yy2,
  266. wgjs_bh3, CAST(wgjs_js3 AS SIGNED) as wgjs_js3, rtrim(wgjs_yy3) as wgjs_yy3,
  267. wgjs_bh4, CAST(wgjs_js4 AS SIGNED) as wgjs_js4, rtrim(wgjs_yy4) as wgjs_yy4,
  268. wgjs_bh5, CAST(wgjs_js5 AS SIGNED) as wgjs_js5, rtrim(wgjs_yy5) as wgjs_yy5,
  269. wgjs_bh6, CAST(wgjs_js6 AS SIGNED) as wgjs_js6, rtrim(wgjs_yy6) as wgjs_yy6,
  270. rtrim(rs1.员工姓名) as name1,rtrim(rs2.员工姓名) as name2,rtrim(rs3.员工姓名)
  271. as name3,rtrim(rs4.员工姓名) as name4,rtrim(rs5.员工姓名) as name5,rtrim(rs6.员工姓名)
  272. as name6,wgjs_冲定额1,wgjs_冲定额2,wgjs_冲定额3,wgjs_冲定额4,wgjs_冲定额5,wgjs_冲定额6')
  273. ->join('人事_基本资料 rs1','rs1.员工编号=db_wgjs1.wgjs_bh1','LEFT')
  274. ->join('人事_基本资料 rs2','rs2.员工编号=db_wgjs1.wgjs_bh2','LEFT')
  275. ->join('人事_基本资料 rs3','rs3.员工编号=db_wgjs1.wgjs_bh3','LEFT')
  276. ->join('人事_基本资料 rs4','rs4.员工编号=db_wgjs1.wgjs_bh4','LEFT')
  277. ->join('人事_基本资料 rs5','rs5.员工编号=db_wgjs1.wgjs_bh5','LEFT')
  278. ->join('人事_基本资料 rs6','rs6.员工编号=db_wgjs1.wgjs_bh6','LEFT')
  279. ->where(['wgjs_rq'=>$req['wgjs_rq'].' 00:00:00','wgjs_bh1'=>$req['wgjs_bh1']])
  280. ->find();
  281. if($rows){
  282. $this->success('成功',$rows);
  283. }else{
  284. $this->error('失败');
  285. }
  286. }
  287. /**
  288. * 修改
  289. * @ApiMethod POST
  290. */
  291. public function edit()
  292. {
  293. if(!$this->request->isPost()){
  294. $this->error('请求方式错误');
  295. }
  296. $req = $this->request->param();
  297. // $req = ['wgjs_js1'=>12,'wgjs_rq'=>'2023-10-12','wgjs_bh1'=>'ZM01269'];
  298. if (!isset($req['wgjs_rq']) || !isset($req['wgjs_bh1']) ){
  299. $this->error('参数错误');
  300. }
  301. if (empty($req['wgjs_rq']) || empty($req['wgjs_bh1'])){
  302. $this->error('参数不能为空');
  303. }
  304. $req['wgjs_rq'] = $req['wgjs_rq'].' 00:00:00';
  305. $req['mod_rq'] = date('Y-m-d H:i:s');
  306. //开启事务
  307. db()->startTrans();
  308. try{
  309. $sql = db()->table('db_wgjs1')->where(['wgjs_rq'=>$req['wgjs_rq'],'wgjs_bh1'=>$req['wgjs_bh1']])
  310. ->fetchSql(true)->update($req);
  311. $res= db()->query($sql);
  312. // 提交事务
  313. db()->commit();
  314. } catch (\Exception $e) {
  315. // 回滚事务
  316. db()->rollback();
  317. $this->error($e->getMessage());
  318. }
  319. if($res===false) $this->error('失败');
  320. $this->success('成功');
  321. }
  322. /**
  323. * 新增
  324. * @ApiMethod POST
  325. */
  326. public function add()
  327. {
  328. if(!$this->request->isPost()){
  329. $this->error('请求方式错误');
  330. }
  331. $req = $this->request->param();
  332. if (!isset($req['wgjs_rq']) || !isset($req['wgjs_bh1']) ){
  333. $this->error('参数错误');
  334. }
  335. if (empty($req['wgjs_rq']) || empty($req['wgjs_bh1'])){
  336. $this->error('参数不能为空');
  337. }
  338. $req['wgjs_rq'] = $req['wgjs_rq'].' 00:00:00';
  339. $req['sys_rq'] = date('Y-m-d H:i:s');
  340. //开启事务
  341. db()->startTrans();
  342. try{
  343. $sql = db()->table('db_wgjs1')->fetchSql(true)->insert($req);
  344. $res= db()->query($sql);
  345. // 提交事务
  346. db()->commit();
  347. } catch (\Exception $e) {
  348. // 回滚事务
  349. db()->rollback();
  350. $this->error($e->getMessage());
  351. }
  352. if($res===false) $this->error('失败');
  353. $this->success('成功');
  354. }
  355. /**
  356. * 删除
  357. * @ApiMethod (GET)
  358. * @param string $wgjs_rq 日期
  359. * @param string $wgjs_bh1 员工编号
  360. */
  361. public function del(){
  362. //get请求
  363. if(!$this->request->isGet()){
  364. $this->error('请求方式错误');
  365. }
  366. $req = $this->request->param();
  367. if (!isset($req['wgjs_rq']) || !isset($req['wgjs_bh1']) ){
  368. $this->error('参数错误');
  369. }else{
  370. }
  371. if (empty($req['wgjs_rq']) || empty($req['wgjs_bh1'])){
  372. $this->error('参数不能为空');
  373. }
  374. $rows = db()->table('db_wgjs1')->where(['wgjs_rq'=>$req['wgjs_rq'].' 00:00:00','wgjs_bh1'=>$req['wgjs_bh1']])
  375. ->delete();
  376. if($rows){
  377. $this->success('成功');
  378. }else{
  379. $this->error('失败');
  380. }
  381. }
  382. }