DpyhDepartmentAction.class.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471
  1. <?php
  2. class DpyhDepartmentAction extends CommonAction {
  3. const tableName = 'dpyh_department';
  4. const pkName = 'ID';
  5. function sys_base_list( ){
  6. $list = new \Jms\Gui\ClGrid();
  7. $list->sql_sort = 'Sort asc';
  8. $list->right_filter = function($right,$type){
  9. $page = $_SERVER['PATH_INFO'];
  10. return \Jms\Ucenter\Right::defaultFilter($page,$right,$type);
  11. };
  12. $list->sql_filter = function($search,&$cond){
  13. $id = I('get.id');
  14. if( $id ){ // 有上一级
  15. $cond['ParentID'] = $id;
  16. }else{ // 没有上一级
  17. $cond['ParentID'] = $this->userinfo['OrganizationId'];
  18. }
  19. $cond['Level'] = \Zndp\User\DepartEnum::PLANT_BASE;//种植基地
  20. //搜索条件
  21. if($search['DepartName']){ //按部门名称搜索
  22. $cond['DepartName'] = array('LIKE',"%{$search['DepartName']}%");
  23. }
  24. if($search['Charger']){ //按负责人搜索
  25. $cond['Charger'] = $search['Charger'];
  26. }
  27. if($search['Mobile']){ //按负责人电话搜索
  28. $cond['Mobile'] = $search['Mobile'];
  29. }
  30. };
  31. $list->row_filter = function(&$row)use($list){
  32. $row['Comment'] = $list->renderXEditableTextarea('编辑备注',$row,'Comment');
  33. //$row['Sort'] = $list->renderXEditableInput('排序',$row,'Sort');
  34. };
  35. $list->toolbar_filter = function(&$button){
  36. if($button['icon'] == 'add'){
  37. $button['url'] .= '&parent_id=' .I('get.id');
  38. }
  39. };
  40. $list->display($this);
  41. }
  42. function sys_company_list( ){
  43. $list = new \Jms\Gui\ClGrid();
  44. $list->sql_sort = 'Sort asc';
  45. //权限回调
  46. $list->right_filter = function($right,$type){
  47. $page = $_SERVER['PATH_INFO'];
  48. return \Jms\Ucenter\Right::defaultFilter($page,$right,$type);
  49. };
  50. $list->sql_filter = function($search,&$cond){
  51. $cond['Level'] = \Zndp\User\DepartEnum::PARENT_COMPANY;//总公司
  52. //搜索条件
  53. if($search['DepartName']){ //按公司名称搜索
  54. $cond['DepartName'] = array('LIKE',"%{$search['DepartName']}%");
  55. }
  56. if($search['Charger']){ //按负责人搜索
  57. $cond['Charger'] = $search['Charger'];
  58. }
  59. if($search['Mobile']){ //按负责人电话搜索
  60. $cond['Mobile'] = $search['Mobile'];
  61. }
  62. };
  63. $list->row_filter = function(&$row)use($list){
  64. $row['Comment'] = $list->renderXEditableTextarea('编辑备注',$row,'Comment');
  65. //$row['Sort'] = $list->renderXEditableInput('排序',$row,'Sort');
  66. };
  67. $list->display($this);
  68. }
  69. function sys_service_station_list( ){
  70. $list = new \Jms\Gui\ClGrid();
  71. $list->sql_sort = 'Sort asc';
  72. $list->right_filter = function($right,$type){
  73. $page = $_SERVER['PATH_INFO'];
  74. return \Jms\Ucenter\Right::defaultFilter($page,$right,$type);
  75. };
  76. $list->sql_filter = function($search,&$cond){
  77. $id = I('get.id');
  78. if( $id ){ // 有上一级
  79. $cond['ParentID'] = $id;
  80. }else{ // 没有上一级
  81. $cond['ParentID'] = $this->userinfo['OrganizationId'];
  82. }
  83. $cond['Level'] = \Zndp\User\DepartEnum::SERVICE_STATION; //服务部
  84. //搜索条件
  85. if($search['DepartName']){ //按部门名称搜索
  86. $cond['DepartName'] = array('LIKE',"%{$search['DepartName']}%");
  87. }
  88. if($search['Charger']){ //按负责人搜索
  89. $cond['Charger'] = $search['Charger'];
  90. }
  91. if($search['Mobile']){ //按负责人电话搜索
  92. $cond['Mobile'] = $search['Mobile'];
  93. }
  94. };
  95. $list->row_filter = function(&$row)use($list){
  96. $row['Comment'] = $list->renderXEditableTextarea('编辑备注',$row,'Comment');
  97. //$row['Sort'] = $list->renderXEditableInput('排序',$row,'Sort');
  98. };
  99. $list->toolbar_filter = function(&$button){
  100. if($button['icon'] == 'add'){
  101. $button['url'] .= '&parent_id=' .I('get.id');
  102. }
  103. };
  104. $list->display($this);
  105. }
  106. function sys_workstation_list( ){
  107. $list = new \Jms\Gui\ClGrid();
  108. $list->sql_sort = 'Sort asc';
  109. $list->right_filter = function($right,$type){
  110. $page = $_SERVER['PATH_INFO'];
  111. return \Jms\Ucenter\Right::defaultFilter($page,$right,$type);
  112. };
  113. $list->sql_filter = function($search,&$cond){
  114. $id = I('get.id');
  115. if( $id ){ // 有上一级
  116. $cond['ParentID'] = $id;
  117. }else{ // 没有上一级
  118. $cond['ParentID'] = $this->userinfo['OrganizationId'];
  119. }
  120. $cond['Level'] = \Zndp\User\DepartEnum::WORK_STATION;//工作站
  121. //搜索条件
  122. if($search['DepartName']){ //按部门名称搜索
  123. $cond['DepartName'] = array('LIKE',"%{$search['DepartName']}%");
  124. }
  125. if($search['Charger']){ //按负责人搜索
  126. $cond['Charger'] = $search['Charger'];
  127. }
  128. if($search['Mobile']){ //按负责人电话搜索
  129. $cond['Mobile'] = $search['Mobile'];
  130. }
  131. };
  132. $list->row_filter = function(&$row)use($list){
  133. $row['Comment'] = $list->renderXEditableTextarea('编辑备注',$row,'Comment');
  134. //$row['Sort'] = $list->renderXEditableInput('排序',$row,'Sort');
  135. };
  136. $list->toolbar_filter = function(&$button){
  137. $parent_id = I('get.id');
  138. if($button['icon'] == 'add'){ // 添加工作站
  139. $button['url'] .= '&parent_id=' .$parent_id;
  140. }
  141. if($button['icon'] == 'import'){ // 导入设备
  142. $button['url'] .= '&parent_id=' .$parent_id;
  143. }
  144. };
  145. $list->display($this);
  146. }
  147. function sys_list_nav( ){
  148. //菜单组
  149. $menus = array(
  150. //array('id'=>'depart','text'=>'机构管理','expand'=>true),
  151. array('id'=>'com','text' => '公司列表','url' => 'dpyh_department/sys_company_list','active'=>true),
  152. //array('pid'=>'depart','text' => '工作站列表','url' => 'dpyh_department/sys_workstation_list'),
  153. //array('pid'=>'depart','text' => '服务部列表','url' => 'dpyh_department/sys_service_station_list'),
  154. //array('pid'=>'depart','text' => '基站列表','url' => 'dpyh_department/sys_base_list'),
  155. //array('id'=>'right','text' => '权限列表','url' => 'uc_right/sys_list'),
  156. array('id'=>'role','text' => '角色列表','url' => 'dpyh_depart_role/sys_list'),
  157. //array('pid'=>'depart','text' => '用户列表','url' => 'dpyh_user/sys_list'),
  158. );
  159. //导航树配置数据
  160. $data = array(
  161. 'page' => '机构管理',
  162. 'title' => '机构管理',
  163. 'menus' => $menus
  164. );
  165. //生成导航树
  166. $nav = new \Jiaruan\ClNavTree;
  167. //权限回调
  168. $nav->right_filter = function($right,$type){
  169. $page = $_SERVER['PATH_INFO'];
  170. return \Jms\Ucenter\Right::defaultFilter($page,$right,$type);
  171. };
  172. $nav->setData($data);
  173. $nav->display($this);
  174. }
  175. function sys_addedit_comp( ){
  176. $form = new \Jms\Gui\ClForm();
  177. $form->before_add = function(&$data){
  178. //检查公司是否存在
  179. $where = array('DepartName'=>$data['DepartName']);
  180. $count = M('uc_organization')->where($where)->count();
  181. if($count > 0){
  182. json_fail('公司已存在');
  183. }
  184. $data['ParentID'] = 0;
  185. $data['Level'] = 0;
  186. };
  187. $form->after_save = function(&$data){
  188. };
  189. /*
  190. $form->after_save = function(&$data){
  191. //新增负责人时,同时生成部门负责人账号信息(账号,密码默认都是手机号码)
  192. $where = array('UserName|Mobile' => $data['Mobile']);
  193. $count = M('uc_user')->where($where)->count();
  194. if($count > 0){
  195. json_fail('部门添加成功,因手机号码已注册,部门负责人账号自动添加失败,请稍后手动添加');
  196. }
  197. $save_data = array(
  198. 'ID' => create_guid(),
  199. 'UserName' => $data['Mobile'],
  200. 'Password' => \Zndp\User\Util::encPwd($data['Mobile']),
  201. 'RealName' => $data['Charger'],
  202. 'Mobile' => $data['Mobile'],
  203. 'RoleId' => \Zndp\User\RoleEnum::COMPANY_LEADER,
  204. 'OrganizationId' => $data['ID'],
  205. 'AddTime' => date('Y-m-d H:i:s'),
  206. );
  207. $result = M('uc_user')->createAdd($save_data);
  208. if(!$result){
  209. json_fail('部门添加成功,但部门负责人账号自动添加失败,请稍后手动添加');
  210. }
  211. };
  212. */
  213. $form->display($this);
  214. }
  215. function sys_addedit_depart( ){
  216. $form = new \Jms\Gui\ClForm();
  217. $form->before_add = function(&$data){ //添加前回调
  218. $parent_id = I('get.parent_id');
  219. if(!$parent_id){
  220. json_fail('暂不支持添加同级部门,请使用更高权限账号添加');
  221. }
  222. $data['ParentID'] = $parent_id;
  223. $parent_lv = M('uc_organization')->where(array('ID'=>$parent_id))->getField('Level');
  224. $data['Level'] = $parent_lv + 1;
  225. };
  226. $form->after_save = function(&$data){
  227. /*
  228. //新增负责人时,同时生成部门负责人账号信息(账号,密码默认手机号码)
  229. $where = array('UserName|Mobile' => $data['Mobile']);
  230. $count = M('uc_user')->where($where)->count();
  231. if($count == 0){
  232. $leader_list = \Zndp\User\RoleEnum::get_leader_list();
  233. $save_data = array(
  234. 'ID' => create_guid(),
  235. 'UserName' => $data['Mobile'],
  236. 'Password' => \Zndp\User\Util::encPwd($data['Mobile']),
  237. 'RealName' => $data['Charger'],
  238. 'Mobile' => $data['Mobile'],
  239. 'RoleId' => $leader_list[$data['Level']],
  240. 'OrganizationId' => $data['ID'],
  241. 'AddTime' => date('Y-m-d H:i:s'),
  242. );
  243. $result1 = M('uc_user')->createAdd($save_data);
  244. if(!$result1){
  245. $msg .= '部门负责人账号自动添加失败,';
  246. }
  247. }
  248. */
  249. // 如果是基地,则默认添加设备组
  250. $group_name = $data['DepartName'] .'设备组1';
  251. $where = array('OrgName'=>$group_name);
  252. $group_count = M('dpsb_group')->where($where)->count();
  253. if($data['Level'] == \Zndp\User\DepartEnum::PLANT_BASE && $group_count == 0){// 如果是基地,默认添加一个设备组
  254. $group_data = array(
  255. 'OrgName' => $data['DepartName'] .'设备组1',
  256. 'FarmId' => $data['ID'],
  257. );
  258. $result2 = M('dpsb_group')->createAdd($group_data);
  259. if(!$result2){
  260. $msg .= '设备组自动添加失败,请稍后手动添加';
  261. json_success($msg);
  262. }
  263. }
  264. };
  265. $form->display($this);
  266. }
  267. public function sys_del( ){
  268. $grid = new \Jiaruan\GridData();
  269. $grid->before_delete = function(&$data){
  270. $where = array('ParentID'=>$data['ID']);
  271. $count = M('uc_organization')->where($where)->count();
  272. if($count > 0){
  273. json_fail('尚有子部门存在,无法删除!');
  274. }
  275. if($data['Level'] == \Zndp\User\DepartEnum::PLANT_BASE){//基地,查看是否有设备组
  276. $where = array('FarmId'=>$data['ID']);
  277. $count = M('dpsb_group')->where($where)->count();
  278. if($count > 0){
  279. json_fail('基地下有设备组存在,请先删除设备组');
  280. }
  281. }
  282. };
  283. $grid->deleteByPk($this);
  284. }
  285. function sys_import_excel( ){
  286. $form = new \Jms\Gui\ClForm();
  287. $form->import_excel = function($path){
  288. $im = new \Jms\Excel\Import();
  289. // 初始化计数
  290. $im->total = 0;
  291. $im->success = 0;
  292. $im->skipped = 0;
  293. $im->row_filter = function(&$data) use($im){ // 行过滤
  294. // 计数开始
  295. $im->total++;
  296. // 工作站、服务部、基地必须都要有数据
  297. if($data['WorkStation'] && $data['ServiceStation'] && $data['Base'] && $data['FarmlandNum']){
  298. $parent_id = I('get.parent_id'); //公司id
  299. $organization = M('uc_organization');
  300. // 检查工作站是否存在
  301. $where = array('DepartName'=>$data['WorkStation'],'ParentID'=>$parent_id);
  302. $workstation_id = $organization->where($where)->getField('ID');
  303. if( $workstation_id ){
  304. // 检查服务部是否存在
  305. $where = array('DepartName'=>$data['ServiceStation'], 'ParentID'=>$workstation_id );
  306. $service_id = $organization->where($where)->getField('ID');
  307. if($service_id){
  308. // 检查基地是否存在
  309. $where = array('DepartName'=>$data['Base'],'ParentID'=>$service_id);
  310. $base_id = $organization->where($where)->getField('ID');
  311. if($base_id){
  312. // 检查通道组是否存在,不存在则添加一个
  313. $where = array('FarmId'=>$base_id);
  314. $group = M('dpsb_group');
  315. $group_id = $group->where($where)->getField('ID');
  316. if(!$group_id){
  317. $group_name = $data['Base'].'设备组1';
  318. $group_data = array('OrgName'=>$group_name,'FarmId'=>$base_id);
  319. $group_id = $group->createAdd($group_data);
  320. }
  321. // 检查设备序列号是否已存在
  322. $where = array('DeviceAddr'=> $data['DeviceAddr']);
  323. $device = M('dpsb_device');
  324. $count = $device->where($where)->count();
  325. if($count > 0){//已存在则跳过
  326. $im->skipped++;
  327. }else{
  328. // 添加设备
  329. $device_data = array(
  330. 'DeviceAddr' => $data['DeviceAddr'],
  331. 'DeviceGroupId' => $group_id,
  332. 'CellPhone' => $data['CellPhone'],
  333. 'IccId' => $data['IccId'],
  334. 'AddTime' => date('Y-m-d H:i:s'),
  335. );
  336. $result = $device->createAdd($device_data);
  337. if($result){
  338. $im->success++;
  339. }else{
  340. $im->failed++;
  341. }
  342. }
  343. }else{ //不存在基地则失败
  344. $im->failed++;
  345. }
  346. }else{ //不存在服务部则失败
  347. $im->failed++;
  348. }
  349. }else{ //不存在工作站则失败
  350. $im->failed++;
  351. }
  352. }else{// 否则失败
  353. $im->failed++;
  354. }
  355. };
  356. $option = array( // 导入选项
  357. 'column_fields' => array(
  358. 'A' => 'Number', //序号
  359. 'B' => 'WorkStation', //工作站
  360. 'C' => 'ServiceStation', //服务部
  361. 'D' => 'Base', //基地
  362. 'E' => 'FarmlandNum', //大棚编号
  363. 'F' => 'Manager', //大棚管理员
  364. 'G' => 'CellPhone', //管理员手机
  365. 'H' => 'DeviceAddr', //控制器序列号
  366. 'I' => 'IccId', //SIM卡号
  367. //'J' => 'TempAddr', //温湿度传感器序列号
  368. //'K' => 'IlluminationAddr', //光照传感器序列号
  369. ),
  370. 'header_row' => 1,
  371. 'data_start_row' => 2,
  372. 'max_allow_rows' => 10000, //最大允许行数
  373. );
  374. M()->startTrans();
  375. $result = $im->import( $path ,$option ); // 导入
  376. M()->commit();
  377. if(!$result['success']){
  378. json_fail($result['message']);
  379. }
  380. else{
  381. json_success("共{$im->total},导入成功{$im->success},失败{$im->failed},跳过{$im->skipped}");
  382. }
  383. };
  384. $form->before_add = function(&$data) use($form) {
  385. if(!$data['FilePath']){
  386. json_fail('上传文件不能为空');
  387. }
  388. $form->import_excel( CACHE_PATH . $data['FilePath'] );
  389. };
  390. $form->display($this);
  391. }
  392. function sys_nav_tree( ){
  393. //获取导航树数据
  394. $fields = 'ID as id,ParentID as pId,DepartName as name,Level as level';
  395. $zndp_util = new \Zndp\User\Util();
  396. $depart_id = $this->userinfo['OrganizationId'];
  397. $depart_list = $zndp_util->get_depart_option($depart_id,$fields,'name',false);
  398. if(empty($depart_list)){
  399. //没有数据,显示该
  400. $depart_list[0] = array('id'=>'','pid'=>'','name'=>'没有组织','direct_url'=>'');
  401. }else{
  402. for($i=0; $i<count($depart_list); $i++){// 放入链接
  403. /*if($depart_list[$i]['level'] <= \Zndp\User\DepartEnum::WORK_STATION){
  404. $depart_list[$i]['open']= true;
  405. }*/
  406. $depart_list[$i]['open']= true;//默认展开
  407. if($depart_list[$i]['level'] == 0){ //总公司
  408. $depart_list[$i]['direct_url'] = '?s=dpyh_department/sys_workstation_list'; //点击显示工作站
  409. }elseif($depart_list[$i]['level'] == 1){ //工作站
  410. $depart_list[$i]['direct_url'] = '?s=dpyh_department/sys_service_station_list'; //点击显示服务部
  411. }elseif($depart_list[$i]['level'] == 2){ //服务部
  412. $depart_list[$i]['direct_url'] = '?s=dpyh_department/sys_base_list'; //点击显示基地
  413. }elseif($depart_list[$i]['level'] == 3){ //基地
  414. $depart_list[$i]['direct_url'] = '?s=dpyh_manager/sys_list'; //点击显示用户
  415. }else{//没有数据
  416. }
  417. }
  418. }
  419. //平台,超级管理员,插入总公司列表
  420. $admin_arr = array(\Zndp\User\RoleEnum::GENERAL_ADMINISTRATOR,\Zndp\User\RoleEnum::SUPER_ADMINISTRATOR);
  421. if( in_array($this->userinfo['RoleId'], $admin_arr) ){
  422. $company_list = array('id'=>'0','pId'=>'','name'=>'公司列表','direct_url'=>'?s=dpyh_department/sys_company_list','open'=>true);
  423. array_unshift($depart_list,$company_list);
  424. }
  425. $this->assign('title','组织机构');
  426. $this->assign('tree_data',$depart_list);
  427. $this->display();
  428. }
  429. function sys_comp_search( ){
  430. }
  431. function sys_depart_search( ){
  432. }
  433. }