workermanger.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: sicilon_IT
  5. * Date: 2020/1/29
  6. * Time: 0:36
  7. */
  8. namespace app\index\logic;
  9. use app\index\model\gworkermodel;
  10. use app\index\model\inventrecmodel;
  11. use app\index\model\paydetailmodel;
  12. use app\index\model\pwrelationmodel;
  13. use app\index\model\daycheckinfo;
  14. use app\index\model\daypricerecodemodel;
  15. use app\index\model\pinfomodel;
  16. use app\index\model\transfermodel;
  17. use app\index\model\userlocationmodel;
  18. use app\index\model\userlocationhismodel;
  19. use app\index\model\prjlocationmodel;
  20. use app\index\model\noticemodel;
  21. use app\index\model\noticereadmodel;
  22. class workermanger {
  23. public function getallworkerlist($pagenum, $pagesize) {
  24. $start = ($pagenum - 1) * $pagesize;
  25. $workertable = new gworkermodel();
  26. $worker_list = $workertable->getallworker($start, $pagesize);
  27. //var_dump($userinfo);
  28. return $worker_list;
  29. }
  30. /*
  31. * 20230214
  32. * 按公司获取所有的项目的工人
  33. */
  34. public function getallworkerlistbycid($pagenum, $pagesize, $cid) {
  35. $start = ($pagenum - 1) * $pagesize;
  36. $workertable = new gworkermodel();
  37. //先获取公司清单
  38. /*
  39. $t_p=new pinfomodel();
  40. $plist=$t_p->sellistbycid($cid);
  41. $strpinfo='';
  42. foreach($plist as $pinfo){
  43. $strpinfo=$strpinfo.$pinfo['id'].",";
  44. }
  45. if($strpinfo>''){
  46. $lenstr=strlen($strpinfo);
  47. $strp=substr($strpinfo,0,-1);
  48. }
  49. */
  50. $worker_list = $workertable->getallworkerbycid($start, $pagesize, $cid);
  51. //var_dump($userinfo);
  52. return $worker_list;
  53. }
  54. /*
  55. * 20200212
  56. * steelxu
  57. * 获取指定项目的员工
  58. */
  59. public function getprjworkerlist($pagenum, $pagesize, $pid) {
  60. $start = ($pagenum - 1) * $pagesize;
  61. $workertable = new gworkermodel();
  62. $worker_list = $workertable->getprjworker($start, $pagesize, $pid);
  63. //var_dump($userinfo);
  64. return $worker_list;
  65. }
  66. public function saveworker($worker) {
  67. $t_worker = new gworkermodel();
  68. $datenow = date('Y-m-d ');
  69. $t_worker['create_date'] = $datenow;
  70. $newid = $t_worker->saveworkerinfo($worker);
  71. //如果重复,直接返回
  72. if ($newid == -1) {
  73. return $newid;
  74. }
  75. //如果插入正常
  76. if ($newid > 0) {
  77. $r_table = new pwrelationmodel();
  78. $relation['pid'] = $worker['cprojectid'];
  79. $relation['wid'] = $newid;
  80. $relation['startdate'] = $datenow;
  81. $relation['checkstatus'] = 1;
  82. $rid = $r_table->savenewrelation($relation);
  83. }
  84. return $newid;
  85. }
  86. /*
  87. * 20200312
  88. * 统计各项目当天记工人数,两天前起,指定天数内的出勤的工人数
  89. * 先处理日期参数
  90. * 获取所有项目,ID和项目名称
  91. * 按项目获取出勤统计、分两次获取,一次是当天的,一次是前一阶段的
  92. * 组装数据
  93. */
  94. public function getcheckcountbydate($arr) {
  95. $daycount = $arr['daycount'];
  96. $strdc = strval($daycount + 2);
  97. $strparam = '-' . $strdc . ' day';
  98. $datenow = date('Y-m-d ');
  99. $dateend = date('Y-m-d', strtotime('-2 day'));
  100. $datestart = date('Y-m-d', strtotime($strparam));
  101. //获取所有项目
  102. $t_p = new pinfomodel();
  103. $p_list = $t_p->getallpinfo();
  104. $t_dc = new daycheckinfo();
  105. foreach ($p_list as &$v) {
  106. $pid = $v['id'];
  107. //获取当天数据
  108. $w_today = $t_dc->selcinfowithdate($datenow, $datenow, $pid);
  109. if ($w_today) {
  110. // var_dump($w_today);
  111. $v['todaycount'] = $w_today[0]['workernumber'];
  112. // echo 'ok<br>';
  113. } else {
  114. $v['todaycount'] = 0;
  115. }
  116. //获取历史记录
  117. $w_history = $t_dc->selcinfowithdate($datestart, $dateend, $pid);
  118. if ($w_history) {
  119. foreach ($w_history as $k) {
  120. $checkdate = strval($k['checkdate']);
  121. $v[$checkdate] = $k['workernumber'];
  122. }
  123. }
  124. }
  125. return $p_list;
  126. }
  127. /*
  128. * 20230214
  129. * 统计本公司各项目的记工人数,两天前起(不可更改)
  130. */
  131. public function getcheckcountbydatecompany($arr) {
  132. $daycount = $arr['daycount'];
  133. $cid = $arr['companyid'];
  134. $strdc = strval($daycount + 2);
  135. $strparam = '-' . $strdc . ' day';
  136. $datenow = date('Y-m-d ');
  137. $dateend = date('Y-m-d', strtotime('-2 day'));
  138. $datestart = date('Y-m-d', strtotime($strparam));
  139. //获取本公司项目
  140. $t_p = new pinfomodel();
  141. //$p_list=$t_p->getallpinfo();
  142. $p_list = $t_p->sellistbycid($cid);
  143. $t_dc = new daycheckinfo();
  144. foreach ($p_list as &$v) {
  145. $pid = $v['id'];
  146. //获取当天数据
  147. $w_today = $t_dc->selcinfowithdate($datenow, $datenow, $pid);
  148. if ($w_today) {
  149. // var_dump($w_today);
  150. $v['todaycount'] = $w_today[0]['workernumber'];
  151. // echo 'ok<br>';
  152. } else {
  153. $v['todaycount'] = 0;
  154. }
  155. //获取历史记录
  156. $w_history = $t_dc->selcinfowithdate($datestart, $dateend, $pid);
  157. if ($w_history) {
  158. foreach ($w_history as $k) {
  159. $checkdate = strval($k['checkdate']);
  160. $v[$checkdate] = $k['workernumber'];
  161. }
  162. }
  163. }
  164. return $p_list;
  165. }
  166. /*
  167. * 20210303
  168. * 获取待安排调出人员
  169. */
  170. public function getuntransworker($arr) {
  171. $t_trans = new transfermodel();
  172. $page = isset($arr['pageNum']) && !empty($arr['pageNum']) && is_numeric($arr['pageNum']) ? $arr['pageNum'] : 1;
  173. $size = isset($arr['pageSize']) && !empty($arr['pageSize']) && is_numeric($arr['pageSize']) ? $arr['pageSize'] : 10;
  174. $wlist = $t_trans->selinfolistbyopr($page, $size);
  175. $data = [
  176. "pageSize" => $size,
  177. "pageNum" => $page,
  178. 'list' => $wlist,
  179. ];
  180. return $data;
  181. }
  182. /*
  183. * 20210303
  184. * steelxu
  185. * 将用户由人才库,调入最终库
  186. * 没有组长权限处理,
  187. *更改调动表数据
  188. */
  189. public function oprtransferlist($prjid, $worker_arr) {
  190. $newdate = date('Y-m-d ');
  191. $r_tale = new pwrelationmodel();
  192. $w_table = new gworkermodel();
  193. $t_trans = new transfermodel();
  194. $icount = 0;
  195. //var_dump($worker_arr);
  196. foreach ($worker_arr as $k => $v) {
  197. //组织数据
  198. $relation['pid'] = $prjid;
  199. $relation['wid'] = $v['wid'];
  200. $relation['startdate'] = $newdate;
  201. $relation['checkstatus'] = 1;
  202. $w_table->updateprj($prjid, $v['wid']);
  203. $rid = $r_tale->addnewrelation($relation);
  204. if ($rid > 0) {
  205. $icount++;
  206. }
  207. //处理调动表
  208. $t_trans->updoprbywid($v['wid'], $prjid);
  209. }
  210. return $icount;
  211. }
  212. /*
  213. * 20210311
  214. * 根据用户姓名获取
  215. */
  216. public function getworkerinfobyname($arr) {
  217. $wname = $arr['wname'];
  218. $t_work = new gworkermodel();
  219. $rlist = $t_work->selinfobyname($wname);
  220. return $rlist;
  221. }
  222. /*
  223. * 20210416
  224. * 过生日更新员工年齿
  225. */
  226. public function updatewaggbybirthday() {
  227. $birthday = date('md');
  228. $t_w = new gworkermodel();
  229. $wlist = $t_w->selworklistbybirthday($birthday);
  230. $year = (int) date('Y');
  231. foreach ($wlist as $worker) {
  232. $byear = substr($worker['shengfengid'], 6, 4);
  233. $nage = $year - (int) $byear;
  234. $t_w->updwagebyid($worker['id'], $nage);
  235. }
  236. }
  237. /*
  238. * 20210427
  239. * 修改工人停止
  240. */
  241. public function updateworkerinfobyid($arr) {
  242. $wid = $arr['id'];
  243. $updarr['telno'] = $arr['telno'];
  244. $updarr['workclass'] = $arr['workclass'];
  245. $updarr['dayprice'] = $arr['dayprice'];
  246. $updarr['wage'] = $arr['wage'];
  247. $t_work = new gworkermodel();
  248. $winfo = $t_work->getinfobyid($wid);
  249. $rcount = $t_work->updinfobyid($wid, $updarr);
  250. if ($rcount > 0) {
  251. $m_dr = new daypricerecodemodel();
  252. $insertarr = [
  253. 'user_id' => $wid,
  254. 'old_dayprice' => $winfo['dayprice'],
  255. 'dayprice' => $arr['dayprice'],
  256. 'createtime' => date("Y-m-d H:i:s"),
  257. 'type' => 1, //修改用户信息
  258. ];
  259. $drid = $m_dr->insinfo($insertarr);
  260. }
  261. return $rcount;
  262. }
  263. /*
  264. * 20210502
  265. *
  266. */
  267. public function getlocationlist() {
  268. $t_ul = new userlocationmodel();
  269. $list = $t_ul->sellist();
  270. return $list;
  271. }
  272. /*
  273. * 20210430
  274. * 存储地址
  275. * 20210510
  276. * 修改为先保存历史
  277. * 当前表如果有,就
  278. */
  279. public function saveuserlocation($arr) {
  280. $t_ul = new userlocationmodel();
  281. $openid = $arr['openid'];
  282. $arr['createdate'] = date('Y-m-d H:i:s');
  283. $t_ulh = new userlocationhismodel();
  284. $t_ulh->insinfo($arr);
  285. $rinfo = $t_ul->selinfobyopenid($openid);
  286. if (empty($rinfo)) {
  287. $rid = $t_ul->insinfo($arr);
  288. return $rid;
  289. } else {
  290. $rid = $rinfo['id'];
  291. $nid = $t_ul->updinfobyid($rid, $arr);
  292. return $nid;
  293. }
  294. }
  295. /*
  296. * 20210511
  297. */
  298. public function getlocationgroupprovince() {
  299. $t_ul = new userlocationmodel();
  300. $tlist = $t_ul->selgroupby_p();
  301. return $tlist;
  302. }
  303. /*
  304. * 20210511
  305. */
  306. public function getlocationgroupcity() {
  307. $t_ul = new userlocationmodel();
  308. $tlist = $t_ul->selgroupby_c();
  309. return $tlist;
  310. }
  311. /*
  312. * 20210515
  313. * 获得项目的地址
  314. */
  315. public function getprjlocation() {
  316. $t_pl = new prjlocationmodel();
  317. $t_p = new pinfomodel();
  318. $plocationlist = $t_pl->sellist();
  319. $plist = $t_p->getallpinfo();
  320. foreach ($plist as $prj) {
  321. foreach ($plocationlist as &$prjlocation) {
  322. if ($prjlocation['prjid'] == $prj['id']) {
  323. $prjlocation['prjname'] = $prj['pname'];
  324. break;
  325. }
  326. }
  327. }
  328. return $plocationlist;
  329. }
  330. /*
  331. * 2030215
  332. * 只获得自己公司的项目位置
  333. */
  334. public function getmyprjlocation($arr) {
  335. $cid = $arr['companyid'];
  336. $t_pl = new prjlocationmodel();
  337. $t_p = new pinfomodel();
  338. $plocationlist = $t_pl->sellist();
  339. $plist = $t_p->sellistbycid($cid);
  340. $myplist = array();
  341. foreach ($plist as $prj) {
  342. foreach ($plocationlist as &$prjlocation) {
  343. if ($prjlocation['prjid'] == $prj['id']) {
  344. $prjlocation['prjname'] = $prj['pname'];
  345. array_push($myplist, $prjlocation);
  346. break;
  347. }
  348. }
  349. }
  350. //return $plocationlist;
  351. return $myplist;
  352. }
  353. /*
  354. * 20210515
  355. * 按项目统计人群
  356. */
  357. public function getworkerlocationcountgprj() {
  358. $t_ul = new userlocationmodel();
  359. $pwlist = $t_ul->selgroupbyprj();
  360. return $pwlist;
  361. }
  362. /*
  363. * 20230215
  364. * 获取自己公司项目的统计人数
  365. */
  366. public function getworkerlocationcountgprjbycid($arr) {
  367. $cid = $arr['companyid'];
  368. $t_ul = new userlocationmodel();
  369. $t_p = new pinfomodel();
  370. $plist = $t_p->sellistbycid($cid);
  371. $pwlist = array();
  372. foreach ($plist as $pinfo) {
  373. $pid = $pinfo['id'];
  374. $pwcount = $t_ul->selgroupcountbypid($pid);
  375. array_push($pwlist, $pwcount);
  376. }
  377. return $pwlist;
  378. }
  379. /*
  380. * 20210516
  381. * 提交公告
  382. */
  383. public function savenewnotice($arr) {
  384. $arr['createdate'] = date('Y-m-d H:i:s');
  385. $t_n = new noticemodel();
  386. $id = $t_n->insinfo($arr);
  387. return $id;
  388. }
  389. /*
  390. * 20210517
  391. *
  392. */
  393. public function getallnotice() {
  394. $t_n = new noticemodel();
  395. $rlist = $t_n->selalllist();
  396. return $rlist;
  397. }
  398. /*
  399. * 20230215
  400. */
  401. public function getnoticebycid($arr) {
  402. $cid = $arr['companyid'];
  403. $t_n = new noticemodel();
  404. $rlist = $t_n->sellistbycid($cid);
  405. return $rlist;
  406. }
  407. /*
  408. * 20210517
  409. * 获得最新消息
  410. */
  411. public function getnewnotice($arr) {
  412. $t_n = new noticemodel();
  413. $wid = $arr['wid'];
  414. $t_w = new gworkermodel();
  415. $winfo = $t_w->getinfobyid($wid);
  416. $pid = $winfo['cprojectid'];
  417. $t_p = new pinfomodel();
  418. $pinfo = $t_p->getbyid($pid);
  419. $cid = $pinfo['companyid'];
  420. $res_info = array();
  421. if (!$cid) {
  422. return $res_info;
  423. }
  424. $rlist = $t_n->selnewmsgbycid($cid);
  425. $t_nr = new noticereadmodel();
  426. $readinfo = $t_nr->selnewinfobywid($wid);
  427. if (!empty($rlist)) {
  428. if (empty($readinfo)) {
  429. $res_info = $rlist[0];
  430. } else {
  431. if ($readinfo[0]['readnoticeid'] < $rlist[0]['id']) {
  432. $res_info = $rlist[0];
  433. }
  434. }
  435. }
  436. return $res_info;
  437. }
  438. /*
  439. * 20210517
  440. */
  441. public function updatenoticereadstatus($arr) {
  442. $readinfo['wid'] = $arr['wid'];
  443. $update = true;
  444. if (array_key_exists('noticeid', $arr)) {
  445. $readinfo['readnoticeid'] = $arr['noticeid'];
  446. } else {
  447. $t_n = new noticemodel();
  448. $rlist = $t_n->selnewmsg();
  449. if (!empty($rlist)) {
  450. $readinfo['readnoticeid'] = $rlist[0]['id'];
  451. } else {
  452. $update = false;
  453. }
  454. }
  455. $readinfo['readtime'] = date("Y-m-d H:i:s");
  456. if ($update) {
  457. $t_nr = new noticereadmodel();
  458. $rid = $t_nr->insinfo($readinfo);
  459. } else {
  460. $rid = 0;
  461. }
  462. return $rid;
  463. }
  464. /*
  465. * 20210517
  466. *
  467. */
  468. public function getpaylistbyuplogid($arr) {
  469. $logid = $arr['logid'];
  470. $t_p = new paydetailmodel();
  471. $list = $t_p->sellistbyuplogid($logid);
  472. return $list;
  473. }
  474. /*
  475. * 20230130
  476. * 从水猫那里增加工人
  477. */
  478. public function savenewworkerfromwatercat($worker) {
  479. $t_worker = new gworkermodel();
  480. $datenow = date('Y-m-d ');
  481. $worker['create_date'] = $datenow;
  482. $worker['cprojectid'] = 1;
  483. if (isset($arr['prjtelno']) || !empty($arr['prjtelno'])) {
  484. $worker['workclass'] = $arr['prjtelno'];
  485. }
  486. $newid = $t_worker->saveworkerinfo($worker);
  487. //如果重复,直接返回
  488. if ($newid == -1) {
  489. return $newid;
  490. }
  491. //如果插入正常
  492. //项目id设置为1
  493. if ($newid > 0) {
  494. $r_table = new pwrelationmodel();
  495. $relation['pid'] = $worker['cprojectid'];
  496. $relation['wid'] = $newid;
  497. $relation['startdate'] = $datenow;
  498. $relation['checkstatus'] = 1;
  499. $rid = $r_table->savenewrelation($relation);
  500. }
  501. return $newid;
  502. }
  503. /*
  504. * 20230126
  505. */
  506. public function getworkerinfobytel($arr) {
  507. $tel = $arr['tel'];
  508. $t_m = new gworkermodel();
  509. $rec = $t_m->seluinfobytel($tel);
  510. $rworker = array();
  511. if ($rec) {
  512. $rworker['wid'] = $rec['id'];
  513. $rworker['wage'] = $rec['wage'];
  514. $rworker['wname'] = $rec['wname'];
  515. $rworker['workclass'] = $rec['workclass'];
  516. }
  517. return $rworker;
  518. }
  519. /*
  520. * 20230131
  521. */
  522. public function addnewinvent($arr) {
  523. $t_i = new inventrecmodel();
  524. $arr['inventdate'] = date('Y-m-d');
  525. $rid = $t_i->insinfo($arr);
  526. return $rid;
  527. }
  528. /*
  529. * 20230131
  530. */
  531. public function getinventinfobywid($arr) {
  532. $t_i = new inventrecmodel();
  533. $wid = $arr['wid'];
  534. $rec = $t_i->selinfobywid($wid);
  535. return $rec;
  536. }
  537. /*
  538. * 20230131
  539. */
  540. public function updateprjbyinvent($arr) {
  541. $newdate = date('Y-m-d ');
  542. $pid = $arr['pid'];
  543. $r_tale = new pwrelationmodel();
  544. $w_table = new gworkermodel();
  545. $i_table = new inventrecmodel();
  546. //检验GPS
  547. $iinfo = $i_table->selinfobyid($arr['id']);
  548. $p_lng = $iinfo['prj_lng'];
  549. $p_lat = $iinfo['prj_lat'];
  550. $m_lat = $arr['my_lat'];
  551. $m_lng = $arr['my_lng'];
  552. if ((abs($p_lng - $m_lng) > 0.1) || (abs($p_lat - $m_lat) > 0.1)) {
  553. return 0;
  554. }
  555. $icount = 0;
  556. //var_dump($worker_arr);
  557. //组织数据
  558. $relation['pid'] = $pid;
  559. $relation['wid'] = $arr['wid'];
  560. $relation['startdate'] = $newdate;
  561. $relation['checkstatus'] = 1;
  562. $w_table->updateprj($pid, $arr['wid']);
  563. $rid = $r_tale->addnewrelation($relation);
  564. //更新inventrec
  565. if ($rid > 0) {
  566. $i_table->updateacceptbyid($arr['id']);
  567. $icount++;
  568. }
  569. return $icount;
  570. }
  571. }