prjmanger.php 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  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['wid'];
  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. }