prjmanger.php 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: sicilon_IT
  5. * Date: 2020/1/27
  6. * Time: 15:35
  7. */
  8. namespace app\index\logic;
  9. use app\index\model\daycheckinfo;
  10. use app\index\model\gworkermodel;
  11. use app\index\model\pinfomodel;
  12. use app\index\model\prjlocationmodel;
  13. use app\index\model\pwrelationmodel;
  14. use app\index\model\ginfomodel;
  15. use app\index\model\wheadmodel;
  16. use app\index\model\contactmodel;
  17. use app\index\model\gcmodel;
  18. use app\index\model\transfermodel;
  19. class prjmanger {
  20. public function getallprj() {
  21. $t_prj = new pinfomodel();
  22. $prj_list = $t_prj->getallpinfo();
  23. return $prj_list;
  24. }
  25. /*
  26. * 20230214
  27. * 根据 web管理员身份获取接口
  28. */
  29. public function getallprjbycid($arr) {
  30. $cid = $arr['companyid'];
  31. $t_prj = new pinfomodel();
  32. $prj_list = $t_prj->sellistbycid($cid);
  33. return $prj_list;
  34. }
  35. public function addnewprj($prj) {
  36. $t_prj = new pinfomodel();
  37. $datenow = date('Y-m-d ');
  38. $prj['create_date'] = $datenow;
  39. $id = $t_prj->saveprjinfo($prj);
  40. return $id;
  41. }
  42. public function getbyid($id) {
  43. $t_prj = new pinfomodel();
  44. $prjinfo = $t_prj->getbyid($id);
  45. return $prjinfo;
  46. }
  47. //批量设置修改项目关系接口
  48. /*
  49. * 20200204
  50. * steelxu
  51. * 修改用户的对应项目,以批量更改用户项目
  52. * 特别说明,对班组长的迁移目前不自动处理,不在此方法中默认解决
  53. */
  54. public function changerelation($pid, $worker_arr) {
  55. $newdate = date('Y-m-d ');
  56. $r_tale = new pwrelationmodel();
  57. $w_table = new gworkermodel();
  58. $icount = 0;
  59. //var_dump($worker_arr);
  60. foreach ($worker_arr as $k => $v) {
  61. //组织数据
  62. $relation['pid'] = $pid;
  63. $relation['wid'] = $v['wid'];
  64. $relation['startdate'] = $newdate;
  65. $relation['checkstatus'] = 1;
  66. $w_table->updateprj($pid, $v['wid']);
  67. $rid = $r_tale->addnewrelation($relation);
  68. if ($rid > 0) {
  69. $icount++;
  70. }
  71. }
  72. return $icount;
  73. }
  74. /*
  75. * 20200211
  76. * steelxu
  77. * 创建班组
  78. */
  79. public function creategroup($arr) {
  80. $g_tabel = new ginfomodel();
  81. $res = $g_tabel->addnewgroup($arr);
  82. return $res;
  83. }
  84. /*
  85. * 20200211
  86. * steelxu
  87. * 获取项目下所有的班组
  88. * 20200309修改加合同关系
  89. * 20200530
  90. * 增加反回班组长WID
  91. */
  92. public function getglist($pid) {
  93. $g_talbe = new ginfomodel();
  94. $gheadinfo = new wheadmodel();
  95. $work_table = new gworkermodel();
  96. $t_gc = new gcmodel();
  97. $t_ctct = new contactmodel();
  98. //获取所有班组
  99. $res = $g_talbe->getglistbypid($pid);
  100. foreach ($res as &$gitem) {
  101. //取班组长名称
  102. $gid = $gitem['id'];
  103. $gheader = $gheadinfo->getwidbygid($gid);
  104. if ($gheader) {
  105. $wid = $gheader['gwid'];
  106. $winfo = $work_table->getinfobyid($wid);
  107. $gitem['wname'] = $winfo['wname'];
  108. $gitem['gwid'] = $wid;
  109. } else {
  110. $gitem['wname'] = '';
  111. }
  112. //取合同名称
  113. $gcinfo = $t_gc->selcinfobygid($gid);
  114. if ($gcinfo) {
  115. $cid = $gcinfo['cid'];
  116. $cinfo = $t_ctct->selcinfobycid($cid);
  117. $gitem['contactname'] = $cinfo['contactname'];
  118. } else {
  119. $gitem['contactname'] = '';
  120. }
  121. }
  122. return $res;
  123. }
  124. /*
  125. * 20200331
  126. * 更新班组名称,详情
  127. */
  128. public function updategroupinfo($arr) {
  129. $g_tabel = new ginfomodel();
  130. $res = $g_tabel->updatenamebyid($arr);
  131. return $res;
  132. }
  133. /*
  134. * 20210228
  135. * steelxu
  136. * 将用户离职,放到人才库,prjid=3中
  137. * 所有的组长权限清零
  138. */
  139. public function leavejob($worker_arr) {
  140. $newdate = date('Y-m-d ');
  141. $r_tale = new pwrelationmodel();
  142. $w_table = new gworkermodel();
  143. $t_gheader = new wheadmodel();
  144. $icount = 0;
  145. //var_dump($worker_arr);
  146. foreach ($worker_arr as $k => $v) {
  147. //组织数据
  148. $relation['pid'] = 3;
  149. $relation['wid'] = $v['wid'];
  150. $relation['startdate'] = $newdate;
  151. $relation['checkstatus'] = 1;
  152. $w_table->updateprj(3, $v['wid']);
  153. $rid = $r_tale->addnewrelation($relation);
  154. if ($rid > 0) {
  155. $icount++;
  156. }
  157. //如果是组长去掉组长权限
  158. $change = $t_gheader->changeghead($v['wid']);
  159. }
  160. return $icount;
  161. }
  162. /*
  163. * 20250212
  164. * 自动离职,增加调出记录
  165. */
  166. public function autoleavejob($worker_arr) {
  167. $newdate = date('Y-m-d ');
  168. $r_tale = new pwrelationmodel();
  169. $w_table = new gworkermodel();
  170. $t_gheader = new wheadmodel();
  171. $icount = 0;
  172. //var_dump($worker_arr);
  173. foreach ($worker_arr as $k => $v) {
  174. //组织数据
  175. $relation['pid'] = 3;
  176. $relation['wid'] = $v['wid'];
  177. $relation['startdate'] = $newdate;
  178. $relation['checkstatus'] = 1;
  179. $w_table->updateprj(3, $v['wid']);
  180. $rid = $r_tale->addnewrelation($relation);
  181. if ($rid > 0) {
  182. $icount++;
  183. }
  184. //如果是组长去掉组长权限
  185. $change = $t_gheader->changeghead($v['wid']);
  186. //插入调动表记录
  187. $trans['wname'] = $v['wname'];
  188. $trans['wid'] = $v['wid'];
  189. $trans['rectime'] = date('Y-m-d H:i:s');
  190. $trans['telno'] = $v['telno'];
  191. $trans['transoutman'] = '两日未记工';
  192. $trans['transoutid'] = 0;
  193. $rid = $t_trans->insinfo($trans);
  194. }
  195. return $icount;
  196. }
  197. /*
  198. * 20210228
  199. * steelxu
  200. * 将用户离职,放到人才库,prjid=3中
  201. * 所有的组长权限清零
  202. *并插入调动表中
  203. */
  204. public function transferprj($headid, $worker_arr) {
  205. $newdate = date('Y-m-d ');
  206. $r_tale = new pwrelationmodel();
  207. $w_table = new gworkermodel();
  208. $t_gheader = new wheadmodel();
  209. $t_trans = new transfermodel();
  210. $icount = 0;
  211. //获取名字
  212. $headinfo = $w_table->getinfobyid($headid);
  213. $transoutname = $headinfo['wname'];
  214. //var_dump($worker_arr);
  215. foreach ($worker_arr as $k => $v) {
  216. //组织数据
  217. $relation['pid'] = 3;
  218. $relation['wid'] = $v['wid'];
  219. $relation['startdate'] = $newdate;
  220. $relation['checkstatus'] = 1;
  221. $w_table->updateprj(3, $v['wid']);
  222. $rid = $r_tale->addnewrelation($relation);
  223. if ($rid > 0) {
  224. $icount++;
  225. }
  226. //如果是组长去掉组长权限
  227. $change = $t_gheader->changeghead($v['wid']);
  228. //插入调动表记录
  229. $trans['wname'] = $v['wname'];
  230. $trans['wid'] = $v['wid'];
  231. $trans['rectime'] = date('Y-m-d H:i:s');
  232. $trans['telno'] = $v['telno'];
  233. $trans['transoutman'] = $transoutname;
  234. $trans['transoutid'] = $v['transoutid'];
  235. $rid = $t_trans->insinfo($trans);
  236. }
  237. return $icount;
  238. }
  239. /*
  240. * 20210725
  241. * 每个项目的人员统计
  242. */
  243. public function getworkercountbypid() {
  244. $t_p = new pinfomodel();
  245. $plist = $t_p->getallpinfo();
  246. $t_w = new gworkermodel();
  247. $wlist = $t_w->selwcountbyprj();
  248. foreach ($wlist as &$pwinfo) {
  249. $pid = $pwinfo['cprojectid'];
  250. foreach ($plist as $prjinfo) {
  251. if ($pid == $prjinfo['id']) {
  252. $pwinfo['prjname'] = $prjinfo['pname'];
  253. }
  254. }
  255. }
  256. return $wlist;
  257. }
  258. /*
  259. * 20210807
  260. * 七天自动离职
  261. * edit by steelxu5
  262. * 改为2天未记工,自动离开项目
  263. */
  264. public function autoleavejobwithweek() {
  265. $t_gw = new gworkermodel();
  266. $wlist = $t_gw->selinfolistwithprjid();
  267. $unworkerlist = array();
  268. $bdate = date('Y-m-d', strtotime('-2 day')); //20250211 改为2天未记工自动离开,原为7天
  269. $t_d = new daycheckinfo();
  270. foreach ($wlist as $worker) {
  271. $wid = $worker['id'];
  272. $weekcount = $t_d->selscorebyidwithdays($wid, $bdate);
  273. if ($weekcount == 0) {
  274. $nworker = array();
  275. $nworker['wid'] = $wid;
  276. $nworker['tel'] = $worker['telno'];
  277. $nworker['wname'] = $worker['wname'];
  278. array_push($unworkerlist, $nworker);
  279. }
  280. }
  281. if (count($unworkerlist) > 0) {
  282. $this->autoleavejob($unworkerlist);
  283. }
  284. }
  285. /*
  286. * 20230302
  287. */
  288. public function subnewprjlocation($arr) {
  289. $t_pl = new prjlocationmodel();
  290. $rec = $t_pl->insinfo($arr);
  291. return $rec;
  292. }
  293. /*
  294. * 20230302
  295. */
  296. public function getprjlocationinfo($arr) {
  297. $prjid = $arr['prjid'];
  298. $t_pl = new prjlocationmodel();
  299. $rec = $t_pl->selinfobyprjid($prjid);
  300. return $rec;
  301. }
  302. /*
  303. *
  304. */
  305. }