MainController.php 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: ellisran
  5. * Date: 2016/11/17
  6. * Time: 11:48
  7. */
  8. class MainController extends DooController {
  9. public $data;
  10. function __construct() {
  11. $this->data['rootUrl'] = Doo::conf()->APP_URL;
  12. include ('./protected/controller/BaseController.php');
  13. $this->base = new BaseController ();
  14. $userinfo = $this->base->admin_init();
  15. $this->data['uid'] = $userinfo['id'];
  16. $this->data['username'] = $userinfo['username'];
  17. $this->data['currpage'] = 'report';
  18. }
  19. public function fc_exit() {
  20. session_destroy();
  21. setcookie ( "jlzf_main", "", time () + 3600 * 12, "/", COOKIE_WEB_SITE );
  22. return '/';
  23. }
  24. //报表管理
  25. public function ReportList(){
  26. Doo::loadModel('report');
  27. $report = new Report();
  28. Doo::loadModel('category');
  29. $category = new Category();
  30. Doo::loadModel('item');
  31. $item = new Item();
  32. $pagesql = '';
  33. $sql = '';
  34. $sortsql = '';
  35. if(isset($this->params['area']) && is_numeric($this->params['area'])){
  36. $pagesql .= '/area/'.$this->params['area'];
  37. $sql .= ' AND areacate='.$this->params['area'];
  38. $this->data['area'] = $this->params['area'];
  39. }
  40. if(isset($this->params['sort'])){
  41. $pagesql .= '/sort/'.$this->params['sort'];
  42. if($this->params['sort'] == 'report' || $this->params['sort'] == 'edit'){
  43. $sortsql = $this->params['sort'];
  44. }
  45. $this->data['sort'] = $this->params['sort'];
  46. }
  47. if(isset($this->params['status']) && $this->params['status'] == 1){
  48. $this->data['dingzhi'] = true;
  49. $itemlist = $item->getAllMsg();
  50. $this->data['itemlist'] = $itemlist;
  51. $this->data['itemid'] = 0;
  52. if(isset($this->params['itemid']) && $this->params['itemid'] != 0){
  53. $this->data['item'] = $item->getRowbyid($this->params['itemid']);
  54. $this->data['itemid'] = $this->params['itemid'];
  55. $totalArchive = $report->count(array('where' => 'itemid=0', 'asArray' => TRUE));
  56. $pager = new DooPager(Doo::conf()->APP_URL . "reportlist/1/item/".$this->params['itemid'].$pagesql."/page", $totalArchive, 15, 10);
  57. if (isset($this->params['pindex'])){
  58. $this->data['pindex'] = $this->params['pindex'];
  59. $pager->paginate(intval($this->params['pindex']));
  60. } else
  61. $pager->paginate(1);
  62. if ($pager->limit != ' -15,15')
  63. $this->data['reportlist'] = $report->getitemRowbylimit($pager->limit,$this->params['itemid'],$sortsql);
  64. }else{
  65. $totalArchive = $report->count(array('where' => 'itemid!=0', 'asArray' => TRUE));
  66. $pager = new DooPager(Doo::conf()->APP_URL . "reportlist/1".$pagesql."/page", $totalArchive, 15, 10);
  67. if (isset($this->params['pindex'])){
  68. $this->data['pindex'] = $this->params['pindex'];
  69. $pager->paginate(intval($this->params['pindex']));
  70. } else
  71. $pager->paginate(1);
  72. if ($pager->limit != ' -15,15')
  73. $this->data['reportlist'] = $report->getAllitemRowbylimit($pager->limit,$sortsql);
  74. }
  75. }else{
  76. $this->data['catelist'] = $category->getAlllist();
  77. $cateparentlist = $category->getparentlist();
  78. $this->data['cateparentlist'] = $cateparentlist;
  79. $this->data['cateid'] = '';
  80. if(isset($this->params['cate']) && $this->params['cate'] != 0){
  81. $this->data['cateid'] = $this->params['cate'];
  82. $totalArchive = $report->count(array('where' => 'itemid=0 and (cateid='.$this->params['cate'].' or parentid='.$this->params['cate'].')'.$sql, 'asArray' => TRUE));
  83. $pager = new DooPager(Doo::conf()->APP_URL . "reportlist/cate/".$this->params['cate'].$pagesql."page", $totalArchive, 15, 10);
  84. if (isset($this->params['pindex'])){
  85. $this->data['pindex'] = $this->params['pindex'];
  86. $pager->paginate(intval($this->params['pindex']));
  87. } else
  88. $pager->paginate(1);
  89. if ($pager->limit != ' -15,15')
  90. $this->data['reportlist'] = $report->getcateRowbylimit($pager->limit,$this->params['cate'],$sql,$sortsql);
  91. }else{
  92. $totalArchive = $report->count(array('where' => 'itemid=0'.$sql, 'asArray' => TRUE));
  93. $pager = new DooPager(Doo::conf()->APP_URL . "reportlist".$pagesql."/page", $totalArchive, 15, 10);
  94. if (isset($this->params['pindex'])){
  95. $this->data['pindex'] = $this->params['pindex'];
  96. $pager->paginate(intval($this->params['pindex']));
  97. } else
  98. $pager->paginate(1);
  99. if ($pager->limit != ' -15,15')
  100. $this->data['reportlist'] = $report->getitemRowbylimit($pager->limit,0,$sortsql,$sql);
  101. }
  102. }
  103. if(isset($this->data['reportlist'])) {
  104. foreach ($this->data['reportlist'] as $k => $v) {
  105. Doo::loadModel('version');
  106. $version = new Version();
  107. $versionnum = $version->count(array('where' => 'status!=0 and reportid='.$v['reportid'], 'asArray' => TRUE));
  108. $this->data['reportlist'][$k]['versionnum'] = $versionnum;
  109. Doo::loadModel('category');
  110. $category2 = new Category();
  111. if($v['parentid'] != 0){
  112. $catename = $category2->getnamebyid($v['parentid']).'/'.$category2->getnamebyid($v['cateid']);
  113. }else{
  114. $catename = $category2->getnamebyid($v['cateid']);
  115. }
  116. $this->data['reportlist'][$k]['catename'] = $catename;
  117. $this->data['reportlist'][$k]['edittime'] = $versionnum != 0 ? date('YmdHis',$v['edittime']) : '';
  118. if($v['itemid'] != 0){
  119. $this->data['reportlist'][$k]['itemname'] = $item->getnamebyid($v['itemid']);
  120. }
  121. }
  122. }
  123. $this->data['pager'] = $pager->output;
  124. $this->render ( "form-list", $this->data, TRUE);
  125. }
  126. public function AddReport(){
  127. if(isset($this->params['status']) && $this->params['status'] == 1){
  128. //定制添加报表
  129. $this->data['dingzhi'] = true;
  130. Doo::loadModel('item');
  131. $item = new Item();
  132. $itemlist = $item->getAllMsg();
  133. $this->data['itemlist'] = $itemlist;
  134. if(isset($this->params['itemid'])){
  135. $this->data['itemid'] = $this->params['itemid'];
  136. //通用添加报表
  137. Doo::loadModel('category');
  138. $category = new Category();
  139. $cateparentlist = $category->getparentlist($this->params['itemid']);
  140. $this->data['cateparentlist'] = $cateparentlist;
  141. }else{
  142. $this->data['itemid'] = '';
  143. }
  144. }else{
  145. //通用添加报表
  146. Doo::loadModel('category');
  147. $category = new Category();
  148. $cateparentlist = $category->getparentlist();
  149. $this->data['cateparentlist'] = $cateparentlist;
  150. }
  151. $this->render ( "add-form", $this->data, TRUE);
  152. }
  153. public function SetReport(){
  154. if(isset($_POST['itemselect']) && $_POST['itemselect'] == 0){
  155. exit('项目不能为空');
  156. }
  157. if(!isset($_POST['parentselect']) || $_POST['parentselect'] == 0){
  158. exit('类别不能为空');
  159. }
  160. if(!isset($_POST['reportname']) || empty($_POST['reportname'])){
  161. exit('报表名不能为空');
  162. }
  163. Doo::loadModel('report');
  164. $report = new Report();
  165. if(isset($_POST['reportid'])){
  166. $report->reportid = $_POST['reportid'];
  167. $report->itemid = isset($_POST['itemselect']) ? $_POST['itemselect'] : 0;
  168. $report->parentid = isset($_POST['cateselect']) ? $_POST['parentselect'] : 0;
  169. $report->cateid = isset($_POST['cateselect']) ? $_POST['cateselect'] : $_POST['parentselect'];
  170. $report->reportname = $_POST['reportname'];
  171. $report->areacate = isset($_POST['areaselect']) ? $_POST['areaselect'] : 3;
  172. $report->update();
  173. //路由返回
  174. $returnurl = '/reportlist';
  175. if(isset($_POST['itemid'])) {
  176. $returnurl .= '/1';
  177. }
  178. if(isset($_POST['itemid']) && $_POST['itemid'] != 0){
  179. $returnurl .= '/item/'.$_POST['itemid'];
  180. }
  181. if(isset($_POST['cateid']) && !empty($_POST['cateid'])){
  182. $returnurl .= '/cate/'.$_POST['cateid'];
  183. }
  184. if(isset($_POST['area']) && is_numeric($_POST['area'])){
  185. $returnurl .= '/area/'.$_POST['area'];
  186. }
  187. if(isset($_POST['sort']) && $_POST['sort'] == 'report'){
  188. $returnurl .= '/sort/report';
  189. }
  190. if(isset($_POST['pindex'])){
  191. $returnurl .= '/page/'.$_POST['pindex'];
  192. }
  193. return $returnurl;
  194. }else{
  195. $reports = array(
  196. 'reportname' => $_POST['reportname'],
  197. 'areacate' => isset($_POST['areaselect']) ? $_POST['areaselect'] : 3,
  198. 'itemid' => isset($_POST['itemselect']) ? $_POST['itemselect'] : 0,
  199. 'parentid' => isset($_POST['cateselect']) ? $_POST['parentselect'] : 0,
  200. 'cateid' => isset($_POST['cateselect']) ? $_POST['cateselect'] : $_POST['parentselect'],
  201. 'userid' => $this->data['uid'],
  202. 'edittime' => time(),
  203. 'lastedit' => time(),
  204. 'lastuser' => $this->data['username']
  205. );
  206. $reportid = $report->_insertAttributes('report', $reports);
  207. return '/versionlist/'.$reportid;
  208. }
  209. }
  210. public function DelReport(){
  211. $reportId = $this->params['reportid'];
  212. Doo::loadModel('report');
  213. $report = new Report();
  214. $report->reportid = $reportId;
  215. $report->delete();
  216. Doo::loadModel('version');
  217. $version = new Version();
  218. $version->reportid = $reportId;
  219. $version->delete();
  220. Doo::loadModel('log');
  221. $log = new Log();
  222. $log->reportid = $reportId;
  223. $log->delete();
  224. include (DOO::conf()->SITE_PATH . 'protected/plugin/io.han.php');
  225. $this->IoHandler = new IoHandler();
  226. //调用定义物理路径
  227. $t=DOO::conf()->SITE_PATH."jlbb/".$reportId;
  228. $this->IoHandler->RemoveDir($t);
  229. //路由返回
  230. $returnurl = '/reportlist';
  231. if(isset($this->params['itemid'])) {
  232. $returnurl .= '/1';
  233. }
  234. if(isset($this->params['itemid']) && $this->params['itemid'] != 0){
  235. $returnurl .= '/item/'.$this->params['itemid'];
  236. }
  237. if(isset($this->params['cateid']) && !empty($this->params['cateid'])){
  238. $returnurl .= '/cate/'.$this->params['cateid'];
  239. }
  240. if(isset($this->params['area']) && is_numeric($this->params['area'])){
  241. $returnurl .= '/area/'.$this->params['area'];
  242. }
  243. if(isset($this->params['sort']) && $this->params['sort'] == 'report'){
  244. $returnurl .= '/sort/report';
  245. }
  246. if(isset($this->params['pindex'])){
  247. $returnurl .= '/page/'.$this->params['pindex'];
  248. }
  249. return $returnurl;
  250. }
  251. //版本管理
  252. public function VersionList(){
  253. if(isset($this->params['reportid']) && is_numeric($this->params['reportid'])){
  254. Doo::loadModel('report');
  255. $report = new Report();
  256. $reportmsg = $report->getRowbyid($this->params['reportid']);
  257. if(!empty($reportmsg)){
  258. $this->data['report'] = $reportmsg;
  259. Doo::loadModel('category');
  260. $category2 = new Category();
  261. if($reportmsg['parentid'] != 0){
  262. $catename = $category2->getnamebyid($reportmsg['parentid']).'/'.$category2->getnamebyid($reportmsg['cateid']);
  263. }else{
  264. $catename = $category2->getnamebyid($reportmsg['cateid']);
  265. }
  266. $this->data['report']['catename'] = $catename;
  267. Doo::loadModel('version');
  268. $version = new Version();
  269. $versionlist = $version->getRowbyreport($this->params['reportid']);
  270. Doo::loadModel('log');
  271. Doo::loadModel('fcuser');
  272. foreach($versionlist as $k => $v){
  273. $log = new Log();
  274. $user = new Fcuser();
  275. $logmsg = $log->getRowbyVerTime($v['verid'],$v['edittime']);
  276. $versionlist[$k]['editname'] = !empty($logmsg) ? $user->getUsernameByID($logmsg['userid']) : '';
  277. }
  278. $this->data['versionlist'] = $versionlist;
  279. $this->data['reportid'] = $this->params['reportid'];
  280. $this->render('formver-list', $this->data, TRUE);die;
  281. }
  282. }
  283. return '/reportlist';
  284. }
  285. public function AddVersion(){
  286. if(isset($this->params['reportid'])){
  287. echo "生成版本中,请稍后...";
  288. Doo::loadModel('report');
  289. $report = new Report();
  290. $reportmsg = $report->getRowbyid($this->params['reportid']);
  291. Doo::loadModel('item');
  292. $item = new Item();
  293. if($reportmsg['itemid'] != 0){
  294. $reportcate = 1;
  295. $itemname = $item->getnamebyid($reportmsg['itemid']);
  296. }else{
  297. $reportcate = 0;
  298. $itemname = '';
  299. }
  300. Doo::loadModel('category');
  301. $category = new Category();
  302. if($reportmsg['parentid'] != 0){
  303. $parentname = $category->getnamebyid($reportmsg['parentid']);
  304. }else{
  305. $parentname = '';
  306. }
  307. $catename = $category->getnamebyid($reportmsg['cateid']);
  308. $time = time();
  309. $version = array(
  310. 'vername' => date('YmdHis',$time),
  311. 'reportid' => $reportmsg['reportid'],
  312. 'reportname' => $reportmsg['reportname'],
  313. 'reportcate' => $reportcate,
  314. 'itemname' => $itemname,
  315. 'catename' => $catename,
  316. 'parentname' => $parentname
  317. );
  318. if(!empty($version['parentname'])){
  319. $name1 = '分类="1" 分类名称="'.$version['parentname'].'" 子分类="1" 子分类名称="'.$version['catename'].'"';
  320. }else{
  321. $name1 = '分类="1" 分类名称="'.$version['catename'].'" ';
  322. }
  323. $createXML = '';
  324. Doo::loadModel('version');
  325. $version2 = new Version();
  326. $version2->reportid = $version['reportid'];
  327. $version2->vername = date('YmdHis',$time);
  328. $version2->xmlbody = $createXML;
  329. $version2->status = 1;
  330. $version2->addtime = $time;
  331. $version2->edittime = $time;
  332. $verid = $version2->insert();
  333. Doo::loadModel('log');
  334. $log = new Log();
  335. $log->reportid = $version['reportid'];
  336. $log->userid = $this->data['uid'];
  337. $log->verid = $verid;
  338. $log->vername = $version['vername'];
  339. $log->addtime = $time;
  340. $log->content = date('Y-m-d H:i:s',$time).' '.$this->data['username'].' 创建版本'.$version['vername'];
  341. $log->insert();
  342. $report2 = new Report();
  343. $report2->reportid = $version['reportid'];
  344. $report2->edittime = $time;
  345. $report2->lastedit = $time;
  346. $report2->lastuser = $this->data['username'];
  347. $report2->update();
  348. include (DOO::conf()->SITE_PATH . 'protected/plugin/io.han.php');
  349. $this->IoHandler = new IoHandler();
  350. //调用定义物理路径
  351. $t=DOO::conf()->SITE_PATH."jlbb/".$version['reportid'];
  352. $this->IoHandler->MakeDir($t);
  353. $xmlName = $verid.'_'.date('YmdHis',$time).'.xml';
  354. $xml = trim($createXML);
  355. $myfile = fopen($t.'/'.$xmlName, "w");
  356. fwrite($myfile, $xml);
  357. fclose($myfile);
  358. // $this->data['verid'] = $verid;
  359. // $this->data['version'] = $version;
  360. // $this->data['reportid'] = $this->params['reportid'];
  361. // $log2 = new Log();
  362. // $loglist = $log2->getListbyverid($verid);
  363. // $this->data['loglist'] = $loglist;
  364. // $this->render('add-formver', $this->data, TRUE);die;
  365. return '/version/'.$verid.'?status=new';
  366. }
  367. return '/reportlist';
  368. }
  369. public function UpdateVersion(){
  370. if(isset($this->params['verid'])) {
  371. Doo::loadModel('version');
  372. $version = new Version();
  373. $versionmsg = $version->getRowbyid($this->params['verid']);
  374. $this->data['version'] = $versionmsg;
  375. Doo::loadModel('report');
  376. $report = new Report();
  377. $reportmsg = $report->getRowbyid($versionmsg['reportid']);
  378. Doo::loadModel('item');
  379. $item = new Item();
  380. if($reportmsg['itemid'] != 0){
  381. $reportcate = 1;
  382. $itemname = $item->getnamebyid($reportmsg['itemid']);
  383. }else{
  384. $reportcate = 0;
  385. $itemname = '';
  386. }
  387. Doo::loadModel('category');
  388. $category = new Category();
  389. if($reportmsg['parentid'] != 0){
  390. $parentname = $category->getnamebyid($reportmsg['parentid']);
  391. }else{
  392. $parentname = '';
  393. }
  394. $catename = $category->getnamebyid($reportmsg['cateid']);
  395. $this->data['version']['reportid'] = $reportmsg['reportid'];
  396. $this->data['version']['reportname'] = $reportmsg['reportname'];
  397. $this->data['version']['reportcate'] = $reportcate;
  398. $this->data['version']['itemname'] = $itemname;
  399. $this->data['version']['parentname'] = $parentname;
  400. $this->data['version']['catename'] = $catename;
  401. Doo::loadModel('log');
  402. // $log = new Log();
  403. // $log->verid = $this->params['verid'];
  404. // $log->reportid = $versionmsg['reportid'];
  405. // $log->userid = $this->data['uid'];
  406. // $log->addtime = time();
  407. // $log->content = date('Y-m-d H:i:s',time()).' '.$this->data['username'].' 编辑';
  408. // $log->insert();
  409. $log2 = new Log();
  410. $loglist = $log2->getListbyverid($this->params['verid']);
  411. $this->data['loglist'] = $loglist;
  412. if(isset($_GET['status']) && $_GET['status'] == 'new'){
  413. $this->data['status'] = 1;
  414. }
  415. $this->render('edit-formver', $this->data, TRUE);
  416. die;
  417. }
  418. return '/reportlist';
  419. }
  420. public function SetVersion(){
  421. Doo::loadModel('report');
  422. $report = new Report();
  423. Doo::loadModel('version');
  424. $version = new Version();
  425. Doo::loadModel('log');
  426. $log = new Log();
  427. $time = isset($_POST['vername']) ? strtotime($_POST['vername']) : time();
  428. if(isset($_POST['verid']) && !empty($version->getRowbyid($_POST['verid']))){
  429. $version->verid = $_POST['verid'];
  430. $version->content = trim($_POST['content']);
  431. // $version->xmlheader = trim($_POST['editor']);
  432. $version->xmlbody = trim($_POST['editor']);
  433. $version->status = isset($_POST['caogao']) ? 1 : 2;
  434. $version->edittime = time();
  435. if(isset($_POST['firsttime'])){
  436. // $version->addtime = $time;
  437. $addtime = $time;
  438. $report->edittime = $time;
  439. }else{
  440. $version2 = new Version();
  441. $addtime = $version2->getvertime($_POST['verid']);
  442. }
  443. $version->update();
  444. $report->reportid = $_POST['reportid'];
  445. $report->lastedit = isset($_POST['firsttime']) ? $time : time();
  446. $report->lastuser = $this->data['username'];
  447. $report->update();
  448. //调用定义物理路径
  449. $t=DOO::conf()->SITE_PATH."jlbb/".$_POST['reportid'];
  450. $xmlName = $_POST['verid'].'_'.date('YmdHis',$addtime).'.xml';
  451. $editor = iconv("UTF-8", "GB2312", $_POST['editor']);
  452. $xml = trim($editor);
  453. $myfile = fopen($t.'/'.$xmlName, "w");
  454. fwrite($myfile, $xml);
  455. fclose($myfile);
  456. $log->verid = $_POST['verid'];
  457. $log->reportid = $_POST['reportid'];
  458. $log->userid = $this->data['uid'];
  459. $log->addtime = time();
  460. if(isset($_POST['caogao'])){
  461. $log->content = date('Y-m-d H:i:s',time()).' '.$this->data['username'].' 编辑并保存到草稿';
  462. }elseif(isset($_POST['online'])){
  463. $log->content = date('Y-m-d H:i:s',time()).' '.$this->data['username'].' 发布';
  464. }else{
  465. $log->content = date('Y-m-d H:i:s',time()).' '.$this->data['username'].' 修改过版本';
  466. }
  467. $log->insert();
  468. }
  469. return '/versionlist/'.$_POST['reportid'];
  470. }
  471. public function DelVersion(){
  472. $verId = $this->params['verid'];
  473. Doo::loadModel('version');
  474. $version = new Version();
  475. Doo::loadModel('log');
  476. $log = new Log();
  477. $reportid = $version->getreportidbyid($verId);
  478. $addtime = $version->getvertime($verId);
  479. $version->verid = $verId;
  480. $version->delete();
  481. //调整报表更新时间,防止软件接口报错
  482. Doo::loadModel('report');
  483. $report = new Report();
  484. $reportmsg = $report->getRowbyid($reportid);
  485. if($reportmsg['edittime'] == $addtime){
  486. //获取本报表的最新一期版本
  487. $vermsg = $version->getLastVerbyrid($reportid);
  488. if(!empty($vermsg)){
  489. $report->reportid = $reportid;
  490. $report->edittime = $vermsg['addtime'];
  491. $report->update();
  492. }
  493. }
  494. include (DOO::conf()->SITE_PATH . 'protected/plugin/io.han.php');
  495. $this->IoHandler = new IoHandler();
  496. $t=DOO::conf()->SITE_PATH."jlbb/".$reportid;
  497. $xmlName = $verId.'_'.date('YmdHis',$addtime).'.xml';
  498. $this->IoHandler->DeleteFile($t.'/'.$xmlName);
  499. $log->verid = $verId;
  500. $log->delete();
  501. return '/versionlist/'.$reportid;
  502. }
  503. //自动更新报表信息 2分钟执行一次
  504. public function UpdateDataVersion(){
  505. if(isset($this->params['verid']) && is_numeric($this->params['verid'])){
  506. Doo::loadModel('version');
  507. $version = new Version();
  508. $vermsg = $version->getRowbyid($this->params['verid']);
  509. if(!empty($vermsg)){
  510. $version->verid = $vermsg['verid'];
  511. $version->content = $_POST['content'];
  512. $version->xmlbody = trim($_POST['editor']);
  513. $version->edittime = time();
  514. $version->update();
  515. Doo::loadModel('report');
  516. $report = new Report();
  517. $report->reportid = $vermsg['reportid'];
  518. $report->lastedit = time();
  519. $report->lastuser = $this->data['username'];
  520. $report->update();
  521. Doo::loadModel('log');
  522. $log = new Log();
  523. $log->verid = $vermsg['verid'];
  524. $log->reportid = $vermsg['reportid'];
  525. $log->userid = $this->data['uid'];
  526. $log->addtime = time();
  527. $log->content = '';
  528. $log->insert();
  529. //调用定义物理路径
  530. $t=DOO::conf()->SITE_PATH."jlbb/".$vermsg['reportid'];
  531. $xmlName = $vermsg['verid'].'_'.date('YmdHis',$vermsg['addtime']).'.xml';
  532. $editor = iconv("UTF-8", "GB2312", $_POST['editor']);
  533. $xml = trim($editor);
  534. $myfile = fopen($t.'/'.$xmlName, "w");
  535. fwrite($myfile, $xml);
  536. fclose($myfile);
  537. exit(json_encode(array('status' => 200, 'msg' => date('Y-m-d H:i:s').' 自动保存')));
  538. }
  539. }
  540. exit(json_encode(array('status' => 400, 'msg' => '参数有误')));
  541. }
  542. //项目管理
  543. public function ItemList(){
  544. Doo::loadModel('item');
  545. Doo::loadHelper('DooPager');
  546. $item = new Item();
  547. $totalArchive = $item->count();
  548. $pager = new DooPager(Doo::conf()->APP_URL . "itemlist/page", $totalArchive, 15, 10);
  549. if (isset($this->params['pindex']))
  550. $pager->paginate(intval($this->params['pindex']));
  551. else
  552. $pager->paginate(1);
  553. if ($pager->limit != ' -15,15')
  554. $this->data['itemlist'] = $item->getRowbylimit($pager->limit);
  555. if(isset($this->data['itemlist'])){
  556. foreach($this->data['itemlist'] as $k => $v){
  557. Doo::loadModel('category');
  558. $category = new Category();
  559. $catenum = $category->count(array('where' => 'itemid='.$v['itemid']));
  560. $this->data['itemlist'][$k]['catenum'] = $catenum;
  561. Doo::loadModel('report');
  562. $report = new Report();
  563. $reportnum = $report->count(array('where' => 'itemid='.$v['itemid']));
  564. $this->data['itemlist'][$k]['reportnum'] = $reportnum;
  565. }
  566. }
  567. $this->data['pager'] = $pager->output;
  568. $this->render ( "edit-formpoj", $this->data, TRUE);
  569. }
  570. public function AddItem(){
  571. $name = $_POST['itemname'];
  572. Doo::loadModel('item');
  573. $item = new Item();
  574. $code = $this->MadeCode();
  575. $item->itemname = $name;
  576. $item->code = $code;
  577. $item->insert();
  578. return '/itemlist';
  579. }
  580. public function DelItem(){
  581. $itemId = $this->params['itemid'];
  582. Doo::loadModel('category');
  583. $category = new Category();
  584. Doo::loadModel('item');
  585. $catenum = $category->count(array('where' => 'itemid='.$itemId));
  586. if($catenum != 0){
  587. exit('该项目下包含类别,无法删除');
  588. }
  589. Doo::loadModel('report');
  590. $report = new Report();
  591. $reportnum = $report->count(array('where' => 'itemid='.$itemId));
  592. if($reportnum != 0){
  593. exit('该项目下包含报表,无法删除');
  594. }
  595. Doo::loadModel('item');
  596. $item = new Item();
  597. $item->itemid = $itemId;
  598. $item->delete();
  599. return '/itemlist';
  600. }
  601. public function UpdateItem(){
  602. $itemname = $_POST['itemname'];
  603. Doo::loadModel('item');
  604. $item = new Item();
  605. $item->itemname = $itemname;
  606. $item->itemid = $_POST['itemid'];
  607. $result = $item->update();
  608. if($result){
  609. echo 1;
  610. exit;
  611. }
  612. exit;
  613. }
  614. //类别管理
  615. public function CateList(){
  616. Doo::loadHelper('DooPager');
  617. Doo::loadModel('category');
  618. $category = new Category();
  619. if(isset($this->params['status']) && $this->params['status'] == 1){
  620. //定制类别
  621. $this->data['dingzhi'] = true;
  622. Doo::loadModel('item');
  623. $item = new Item();
  624. $itemlist = $item->getAllMsg();
  625. $this->data['itemlist'] = $itemlist;
  626. $this->data['itemid'] = '';
  627. if(isset($this->params['itemid']) && !empty($this->params['itemid'])){
  628. $this->data['item'] = $item->getRowbyid($this->params['itemid']);
  629. $this->data['itemid'] = $this->params['itemid'];
  630. $itemid = $this->params['itemid'];
  631. }else{
  632. $itemid = $item->getfisrtitemid();
  633. $this->data['itemid'] = $itemid;
  634. }
  635. $this->data['itemname'] = $item->getnamebyid($itemid);
  636. $cateparentlist = $category->getparentlist($itemid);
  637. $this->data['cateparentlist'] = $cateparentlist;
  638. $totalArchive = $category->count(array('where' => 'itemid='.$itemid));
  639. $pager = new DooPager(Doo::conf()->APP_URL . "catelist/1/item/".$itemid."/page", $totalArchive, 15, 10);
  640. if (isset($this->params['pindex'])){
  641. $pager->paginate(intval($this->params['pindex']));
  642. $this->data['pindex'] = $this->params['pindex'];
  643. } else
  644. $pager->paginate(1);
  645. if ($pager->limit != ' -15,15')
  646. $this->data['catelist'] = $category->getRowbylimit($pager->limit,$itemid);
  647. if(isset($this->data['catelist'])){
  648. foreach($this->data['catelist'] as $k => $v){
  649. if($v['parentid'] == 0){
  650. $parentname = '';
  651. }else{
  652. $parentname = $category->getnamebyid($v['parentid']);
  653. }
  654. $this->data['catelist'][$k]['parentname'] = $parentname;
  655. $this->data['catelist'][$k]['hadchild'] = $category->hadChild($v['cateid']);
  656. Doo::loadModel('report');
  657. $report = new Report();
  658. $reportnum = $report->count(array('where' => 'cateid='.$v['cateid'].' or parentid='.$v['cateid']));
  659. $this->data['catelist'][$k]['reportnum'] = $reportnum;
  660. }
  661. }
  662. $this->data['pager'] = $pager->output;
  663. }else{
  664. //通用类别
  665. $cateparentlist = $category->getparentlist();
  666. $this->data['cateparentlist'] = $cateparentlist;
  667. $totalArchive = $category->count(array('where' => 'itemid=0'));
  668. $pager = new DooPager(Doo::conf()->APP_URL . "catelist/page", $totalArchive, 15, 10);
  669. if (isset($this->params['pindex'])){
  670. $pager->paginate(intval($this->params['pindex']));
  671. $this->data['pindex'] = $this->params['pindex'];
  672. }else
  673. $pager->paginate(1);
  674. if ($pager->limit != ' -15,15')
  675. $this->data['catelist'] = $category->getRowbylimit($pager->limit);
  676. if(isset($this->data['catelist'])){
  677. foreach($this->data['catelist'] as $k => $v){
  678. if($v['parentid'] == 0){
  679. $parentname = '';
  680. }else{
  681. $parentname = $category->getnamebyid($v['parentid']);
  682. }
  683. $this->data['catelist'][$k]['parentname'] = $parentname;
  684. $this->data['catelist'][$k]['hadchild'] = $category->hadChild($v['cateid']);
  685. Doo::loadModel('report');
  686. $report = new Report();
  687. $reportnum = $report->count(array('where' => 'cateid='.$v['cateid'].' or parentid='.$v['cateid']));
  688. $this->data['catelist'][$k]['reportnum'] = $reportnum;
  689. }
  690. }
  691. $this->data['pager'] = $pager->output;
  692. }
  693. $this->render ( "edit-formcate", $this->data, TRUE);
  694. }
  695. public function AddCate(){
  696. Doo::loadModel('category');
  697. $category = new Category();
  698. $category->catename = $_POST['catename'];
  699. $category->parentid = $_POST['parentselect'];
  700. $category->itemid = isset($_POST['itemselect']) ? $_POST['itemselect'] : 0;
  701. $category->insert();
  702. if(isset($_POST['itemselect'])){
  703. return '/catelist/1/item/'.$_POST['itemselect'];
  704. }else{
  705. return '/catelist';
  706. }
  707. }
  708. public function UpdateCate(){
  709. Doo::loadModel('category');
  710. $category = new Category();
  711. $category->cateid = $_POST['cateid'];
  712. $category->catename = $_POST['catename'];
  713. $category->parentid = $_POST['parentselect'];
  714. $category->itemid = isset($_POST['itemselect']) ? $_POST['itemselect'] : 0;
  715. $category->update();
  716. if(isset($_POST['itemselect']) && isset($_POST['itemid']) && $_POST['itemid'] != $_POST['itemselect']){
  717. Doo::loadModel('category');
  718. $category2 = new Category();
  719. $catechildren = $category2->getchildbyparent($_POST['cateid']);
  720. if(!empty($catechildren)){
  721. foreach($catechildren as $k => $v){
  722. $category2->cateid = $v['cateid'];
  723. $category2->itemid = $_POST['itemselect'];
  724. $category2->update();
  725. }
  726. }
  727. }
  728. $returnurl = '/catelist';
  729. if(isset($_POST['itemselect'])){
  730. $returnurl .= '/1/item/'.$_POST['itemselect'];
  731. }
  732. if(isset($_POST['pindex'])){
  733. $returnurl .= '/page/'.$_POST['pindex'];
  734. }
  735. return $returnurl;
  736. // if(isset($_POST['itemselect']) && isset($_POST['itemid']) && $_POST['itemid'] == $_POST['itemselect'] && isset($_POST['pindex'])){
  737. // return '/catelist/1/item/'.$_POST['itemselect'].'/page/'.$_POST['pindex'];
  738. // }elseif(isset($_POST['itemselect']) && isset($_POST['itemid']) && $_POST['itemid'] != $_POST['itemselect'] && isset($_POST['pindex'])){
  739. // return '/catelist/1/item/'.$_POST['itemselect'];
  740. // }elseif(isset($_POST['itemselect']) && !isset($_POST['pindex'])){
  741. // return '/catelist/1/item/'.$_POST['itemselect'];
  742. // }elseif(!isset($_POST['itemselect']) && isset($_POST['pindex'])){
  743. // return '/catelist/page/'.$_POST['pindex'];
  744. // }else{
  745. // return '/catelist';
  746. // }
  747. }
  748. public function DelCate(){
  749. $cateId = $this->params['cateid'];
  750. Doo::loadModel('category');
  751. $category = new Category();
  752. $bool = $category->hadChild($cateId);
  753. if($bool != 0){
  754. exit('该类别下包含子类别,无法删除');
  755. }
  756. Doo::loadModel('report');
  757. $report = new Report();
  758. $reportnum = $report->count(array('where' => 'cateid='.$cateId.' or parentid='.$cateId));
  759. if($reportnum != 0){
  760. exit('该类别下包含报表,无法删除');
  761. }
  762. $category->cateid = $cateId;
  763. $category->delete();
  764. if(isset($this->params['itemid']) && isset($this->params['pindex'])){
  765. return '/catelist/1/item/'.$this->params['itemid'].'/page/'.$this->params['pindex'];
  766. }elseif(isset($this->params['itemid']) && !isset($this->params['pindex'])){
  767. return '/catelist/1/item/'.$this->params['itemid'];
  768. }elseif(!isset($this->params['itemid']) && isset($this->params['pindex'])){
  769. return '/catelist/page/'.$this->params['pindex'];
  770. }else{
  771. return '/catelist';
  772. }
  773. }
  774. public function CateParentList(){
  775. if(isset($_GET['itemid'])) {
  776. Doo::loadModel('category');
  777. $category = new Category();
  778. $cateparentlist = $category->getparentlist($_GET['itemid']);
  779. if (!empty($cateparentlist)) {
  780. echo json_encode(array('code' => 200, 'parentlist' => $cateparentlist));
  781. exit;
  782. }
  783. }
  784. echo json_encode(array('code' => 400)),
  785. exit;
  786. }
  787. public function GetCateChild(){
  788. if(isset($_GET['cateid'])){
  789. Doo::loadModel('category');
  790. $category = new Category();
  791. $hadchild = $category->hadChild($_GET['cateid']);
  792. if($hadchild){
  793. echo true;
  794. exit;
  795. }
  796. }
  797. exit;
  798. }
  799. public function GetCateChildList(){
  800. if(isset($_GET['parentid']) && $_GET['parentid'] != 0){
  801. Doo::loadModel('category');
  802. $category = new Category();
  803. $childlist = $category->getChildList($_GET['parentid']);
  804. if(!empty($childlist)){
  805. echo json_encode(array('code' => 200, 'childlist' => $childlist));
  806. exit;
  807. }
  808. }
  809. echo json_encode(array('code' => 400));
  810. exit;
  811. }
  812. public function GetCateParentList(){
  813. if(isset($_GET['itemid']) && $_GET['itemid'] != 0){
  814. Doo::loadModel('category');
  815. $category = new Category();
  816. $parentlist = $category->getparentlist($_GET['itemid']);
  817. if(!empty($parentlist)){
  818. echo json_encode(array('code' => 200, 'parentlist' => $parentlist));
  819. exit;
  820. }
  821. }
  822. echo json_encode(array('code' => 400));
  823. exit;
  824. }
  825. //随机生成6位的项目领取码
  826. private function MadeCode(){
  827. $string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  828. $code = '';
  829. for($i = 0; $i < 6; $i++){
  830. $index = rand(0,61);
  831. var_dump($index);
  832. $code .= substr($string,$index,1);
  833. }
  834. return $code;
  835. }
  836. }