MainController.php 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929
  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. }else{
  439. $version2 = new Version();
  440. $addtime = $version2->getvertime($_POST['verid']);
  441. }
  442. $version->update();
  443. if(isset($_POST['online'])){ //发布版本即改变报表的最新版本号值
  444. $report->edittime = $time;
  445. }
  446. $report->reportid = $_POST['reportid'];
  447. $report->lastedit = isset($_POST['firsttime']) ? $time : time();
  448. $report->lastuser = $this->data['username'];
  449. $report->update();
  450. //调用定义物理路径
  451. $t=DOO::conf()->SITE_PATH."jlbb/".$_POST['reportid'];
  452. $xmlName = $_POST['verid'].'_'.date('YmdHis',$addtime).'.xml';
  453. $editor = iconv("UTF-8", "GB2312", $_POST['editor']);
  454. $xml = trim($editor);
  455. $myfile = fopen($t.'/'.$xmlName, "w");
  456. fwrite($myfile, $xml);
  457. fclose($myfile);
  458. $log->verid = $_POST['verid'];
  459. $log->reportid = $_POST['reportid'];
  460. $log->userid = $this->data['uid'];
  461. $log->addtime = time();
  462. if(isset($_POST['caogao'])){
  463. $log->content = date('Y-m-d H:i:s',time()).' '.$this->data['username'].' 编辑并保存到草稿';
  464. }elseif(isset($_POST['online'])){
  465. $log->content = date('Y-m-d H:i:s',time()).' '.$this->data['username'].' 发布';
  466. }else{
  467. $log->content = date('Y-m-d H:i:s',time()).' '.$this->data['username'].' 修改过版本';
  468. }
  469. $log->insert();
  470. }
  471. return '/versionlist/'.$_POST['reportid'];
  472. }
  473. public function DelVersion(){
  474. $verId = $this->params['verid'];
  475. Doo::loadModel('version');
  476. $version = new Version();
  477. Doo::loadModel('log');
  478. $log = new Log();
  479. $reportid = $version->getreportidbyid($verId);
  480. $addtime = $version->getvertime($verId);
  481. $version->verid = $verId;
  482. $version->delete();
  483. //调整报表更新时间,防止软件接口报错
  484. Doo::loadModel('report');
  485. $report = new Report();
  486. $reportmsg = $report->getRowbyid($reportid);
  487. if($reportmsg['edittime'] == $addtime){
  488. //获取本报表的最新一期版本
  489. $vermsg = $version->getLastVerbyrid($reportid);
  490. if(!empty($vermsg)){
  491. $report->reportid = $reportid;
  492. $report->edittime = $vermsg['addtime'];
  493. $report->update();
  494. }
  495. }
  496. include (DOO::conf()->SITE_PATH . 'protected/plugin/io.han.php');
  497. $this->IoHandler = new IoHandler();
  498. $t=DOO::conf()->SITE_PATH."jlbb/".$reportid;
  499. $xmlName = $verId.'_'.date('YmdHis',$addtime).'.xml';
  500. $this->IoHandler->DeleteFile($t.'/'.$xmlName);
  501. $log->verid = $verId;
  502. $log->delete();
  503. return '/versionlist/'.$reportid;
  504. }
  505. //自动更新报表信息 2分钟执行一次
  506. public function UpdateDataVersion(){
  507. if(isset($this->params['verid']) && is_numeric($this->params['verid'])){
  508. Doo::loadModel('version');
  509. $version = new Version();
  510. $vermsg = $version->getRowbyid($this->params['verid']);
  511. if(!empty($vermsg)){
  512. $version->verid = $vermsg['verid'];
  513. $version->content = $_POST['content'];
  514. $version->xmlbody = trim($_POST['editor']);
  515. $version->edittime = time();
  516. $version->update();
  517. Doo::loadModel('report');
  518. $report = new Report();
  519. $report->reportid = $vermsg['reportid'];
  520. $report->lastedit = time();
  521. $report->lastuser = $this->data['username'];
  522. $report->update();
  523. Doo::loadModel('log');
  524. $log = new Log();
  525. $log->verid = $vermsg['verid'];
  526. $log->reportid = $vermsg['reportid'];
  527. $log->userid = $this->data['uid'];
  528. $log->addtime = time();
  529. $log->content = '';
  530. $log->insert();
  531. //调用定义物理路径
  532. $t=DOO::conf()->SITE_PATH."jlbb/".$vermsg['reportid'];
  533. $xmlName = $vermsg['verid'].'_'.date('YmdHis',$vermsg['addtime']).'.xml';
  534. $editor = iconv("UTF-8", "GB2312", $_POST['editor']);
  535. $xml = trim($editor);
  536. $myfile = fopen($t.'/'.$xmlName, "w");
  537. fwrite($myfile, $xml);
  538. fclose($myfile);
  539. exit(json_encode(array('status' => 200, 'msg' => date('Y-m-d H:i:s').' 自动保存')));
  540. }
  541. }
  542. exit(json_encode(array('status' => 400, 'msg' => '参数有误')));
  543. }
  544. //项目管理
  545. public function ItemList(){
  546. Doo::loadModel('item');
  547. Doo::loadHelper('DooPager');
  548. $item = new Item();
  549. $totalArchive = $item->count();
  550. $pager = new DooPager(Doo::conf()->APP_URL . "itemlist/page", $totalArchive, 15, 10);
  551. if (isset($this->params['pindex']))
  552. $pager->paginate(intval($this->params['pindex']));
  553. else
  554. $pager->paginate(1);
  555. if ($pager->limit != ' -15,15')
  556. $this->data['itemlist'] = $item->getRowbylimit($pager->limit);
  557. if(isset($this->data['itemlist'])){
  558. foreach($this->data['itemlist'] as $k => $v){
  559. Doo::loadModel('category');
  560. $category = new Category();
  561. $catenum = $category->count(array('where' => 'itemid='.$v['itemid']));
  562. $this->data['itemlist'][$k]['catenum'] = $catenum;
  563. Doo::loadModel('report');
  564. $report = new Report();
  565. $reportnum = $report->count(array('where' => 'itemid='.$v['itemid']));
  566. $this->data['itemlist'][$k]['reportnum'] = $reportnum;
  567. }
  568. }
  569. $this->data['pager'] = $pager->output;
  570. $this->render ( "edit-formpoj", $this->data, TRUE);
  571. }
  572. public function AddItem(){
  573. $name = $_POST['itemname'];
  574. Doo::loadModel('item');
  575. $item = new Item();
  576. $code = $this->MadeCode();
  577. $item->itemname = $name;
  578. $item->code = $code;
  579. $item->insert();
  580. return '/itemlist';
  581. }
  582. public function DelItem(){
  583. $itemId = $this->params['itemid'];
  584. Doo::loadModel('category');
  585. $category = new Category();
  586. Doo::loadModel('item');
  587. $catenum = $category->count(array('where' => 'itemid='.$itemId));
  588. if($catenum != 0){
  589. exit('该项目下包含类别,无法删除');
  590. }
  591. Doo::loadModel('report');
  592. $report = new Report();
  593. $reportnum = $report->count(array('where' => 'itemid='.$itemId));
  594. if($reportnum != 0){
  595. exit('该项目下包含报表,无法删除');
  596. }
  597. Doo::loadModel('item');
  598. $item = new Item();
  599. $item->itemid = $itemId;
  600. $item->delete();
  601. return '/itemlist';
  602. }
  603. public function UpdateItem(){
  604. $itemname = $_POST['itemname'];
  605. Doo::loadModel('item');
  606. $item = new Item();
  607. $item->itemname = $itemname;
  608. $item->itemid = $_POST['itemid'];
  609. $result = $item->update();
  610. if($result){
  611. echo 1;
  612. exit;
  613. }
  614. exit;
  615. }
  616. //类别管理
  617. public function CateList(){
  618. Doo::loadHelper('DooPager');
  619. Doo::loadModel('category');
  620. $category = new Category();
  621. if(isset($this->params['status']) && $this->params['status'] == 1){
  622. //定制类别
  623. $this->data['dingzhi'] = true;
  624. Doo::loadModel('item');
  625. $item = new Item();
  626. $itemlist = $item->getAllMsg();
  627. $this->data['itemlist'] = $itemlist;
  628. $this->data['itemid'] = '';
  629. if(isset($this->params['itemid']) && !empty($this->params['itemid'])){
  630. $this->data['item'] = $item->getRowbyid($this->params['itemid']);
  631. $this->data['itemid'] = $this->params['itemid'];
  632. $itemid = $this->params['itemid'];
  633. }else{
  634. $itemid = $item->getfisrtitemid();
  635. $this->data['itemid'] = $itemid;
  636. }
  637. $this->data['itemname'] = $item->getnamebyid($itemid);
  638. $cateparentlist = $category->getparentlist($itemid);
  639. $this->data['cateparentlist'] = $cateparentlist;
  640. $totalArchive = $category->count(array('where' => 'itemid='.$itemid));
  641. $pager = new DooPager(Doo::conf()->APP_URL . "catelist/1/item/".$itemid."/page", $totalArchive, 15, 10);
  642. if (isset($this->params['pindex'])){
  643. $pager->paginate(intval($this->params['pindex']));
  644. $this->data['pindex'] = $this->params['pindex'];
  645. } else
  646. $pager->paginate(1);
  647. if ($pager->limit != ' -15,15')
  648. $this->data['catelist'] = $category->getRowbylimit($pager->limit,$itemid);
  649. if(isset($this->data['catelist'])){
  650. foreach($this->data['catelist'] as $k => $v){
  651. if($v['parentid'] == 0){
  652. $parentname = '';
  653. }else{
  654. $parentname = $category->getnamebyid($v['parentid']);
  655. }
  656. $this->data['catelist'][$k]['parentname'] = $parentname;
  657. $this->data['catelist'][$k]['hadchild'] = $category->hadChild($v['cateid']);
  658. Doo::loadModel('report');
  659. $report = new Report();
  660. $reportnum = $report->count(array('where' => 'cateid='.$v['cateid'].' or parentid='.$v['cateid']));
  661. $this->data['catelist'][$k]['reportnum'] = $reportnum;
  662. }
  663. }
  664. $this->data['pager'] = $pager->output;
  665. }else{
  666. //通用类别
  667. $cateparentlist = $category->getparentlist();
  668. $this->data['cateparentlist'] = $cateparentlist;
  669. $totalArchive = $category->count(array('where' => 'itemid=0'));
  670. $pager = new DooPager(Doo::conf()->APP_URL . "catelist/page", $totalArchive, 15, 10);
  671. if (isset($this->params['pindex'])){
  672. $pager->paginate(intval($this->params['pindex']));
  673. $this->data['pindex'] = $this->params['pindex'];
  674. }else
  675. $pager->paginate(1);
  676. if ($pager->limit != ' -15,15')
  677. $this->data['catelist'] = $category->getRowbylimit($pager->limit);
  678. if(isset($this->data['catelist'])){
  679. foreach($this->data['catelist'] as $k => $v){
  680. if($v['parentid'] == 0){
  681. $parentname = '';
  682. }else{
  683. $parentname = $category->getnamebyid($v['parentid']);
  684. }
  685. $this->data['catelist'][$k]['parentname'] = $parentname;
  686. $this->data['catelist'][$k]['hadchild'] = $category->hadChild($v['cateid']);
  687. Doo::loadModel('report');
  688. $report = new Report();
  689. $reportnum = $report->count(array('where' => 'cateid='.$v['cateid'].' or parentid='.$v['cateid']));
  690. $this->data['catelist'][$k]['reportnum'] = $reportnum;
  691. }
  692. }
  693. $this->data['pager'] = $pager->output;
  694. }
  695. $this->render ( "edit-formcate", $this->data, TRUE);
  696. }
  697. public function AddCate(){
  698. Doo::loadModel('category');
  699. $category = new Category();
  700. $category->catename = $_POST['catename'];
  701. $category->parentid = $_POST['parentselect'];
  702. $category->itemid = isset($_POST['itemselect']) ? $_POST['itemselect'] : 0;
  703. $category->insert();
  704. if(isset($_POST['itemselect'])){
  705. return '/catelist/1/item/'.$_POST['itemselect'];
  706. }else{
  707. return '/catelist';
  708. }
  709. }
  710. public function UpdateCate(){
  711. Doo::loadModel('category');
  712. $category = new Category();
  713. $category->cateid = $_POST['cateid'];
  714. $category->catename = $_POST['catename'];
  715. $category->parentid = $_POST['parentselect'];
  716. $category->itemid = isset($_POST['itemselect']) ? $_POST['itemselect'] : 0;
  717. $category->update();
  718. if(isset($_POST['itemselect']) && isset($_POST['itemid']) && $_POST['itemid'] != $_POST['itemselect']){
  719. Doo::loadModel('category');
  720. $category2 = new Category();
  721. $catechildren = $category2->getchildbyparent($_POST['cateid']);
  722. if(!empty($catechildren)){
  723. foreach($catechildren as $k => $v){
  724. $category2->cateid = $v['cateid'];
  725. $category2->itemid = $_POST['itemselect'];
  726. $category2->update();
  727. }
  728. }
  729. }
  730. $returnurl = '/catelist';
  731. if(isset($_POST['itemselect'])){
  732. $returnurl .= '/1/item/'.$_POST['itemselect'];
  733. }
  734. if(isset($_POST['pindex'])){
  735. $returnurl .= '/page/'.$_POST['pindex'];
  736. }
  737. return $returnurl;
  738. // if(isset($_POST['itemselect']) && isset($_POST['itemid']) && $_POST['itemid'] == $_POST['itemselect'] && isset($_POST['pindex'])){
  739. // return '/catelist/1/item/'.$_POST['itemselect'].'/page/'.$_POST['pindex'];
  740. // }elseif(isset($_POST['itemselect']) && isset($_POST['itemid']) && $_POST['itemid'] != $_POST['itemselect'] && isset($_POST['pindex'])){
  741. // return '/catelist/1/item/'.$_POST['itemselect'];
  742. // }elseif(isset($_POST['itemselect']) && !isset($_POST['pindex'])){
  743. // return '/catelist/1/item/'.$_POST['itemselect'];
  744. // }elseif(!isset($_POST['itemselect']) && isset($_POST['pindex'])){
  745. // return '/catelist/page/'.$_POST['pindex'];
  746. // }else{
  747. // return '/catelist';
  748. // }
  749. }
  750. public function DelCate(){
  751. $cateId = $this->params['cateid'];
  752. Doo::loadModel('category');
  753. $category = new Category();
  754. $bool = $category->hadChild($cateId);
  755. if($bool != 0){
  756. exit('该类别下包含子类别,无法删除');
  757. }
  758. Doo::loadModel('report');
  759. $report = new Report();
  760. $reportnum = $report->count(array('where' => 'cateid='.$cateId.' or parentid='.$cateId));
  761. if($reportnum != 0){
  762. exit('该类别下包含报表,无法删除');
  763. }
  764. $category->cateid = $cateId;
  765. $category->delete();
  766. if(isset($this->params['itemid']) && isset($this->params['pindex'])){
  767. return '/catelist/1/item/'.$this->params['itemid'].'/page/'.$this->params['pindex'];
  768. }elseif(isset($this->params['itemid']) && !isset($this->params['pindex'])){
  769. return '/catelist/1/item/'.$this->params['itemid'];
  770. }elseif(!isset($this->params['itemid']) && isset($this->params['pindex'])){
  771. return '/catelist/page/'.$this->params['pindex'];
  772. }else{
  773. return '/catelist';
  774. }
  775. }
  776. public function CateParentList(){
  777. if(isset($_GET['itemid'])) {
  778. Doo::loadModel('category');
  779. $category = new Category();
  780. $cateparentlist = $category->getparentlist($_GET['itemid']);
  781. if (!empty($cateparentlist)) {
  782. echo json_encode(array('code' => 200, 'parentlist' => $cateparentlist));
  783. exit;
  784. }
  785. }
  786. echo json_encode(array('code' => 400)),
  787. exit;
  788. }
  789. public function GetCateChild(){
  790. if(isset($_GET['cateid'])){
  791. Doo::loadModel('category');
  792. $category = new Category();
  793. $hadchild = $category->hadChild($_GET['cateid']);
  794. if($hadchild){
  795. echo true;
  796. exit;
  797. }
  798. }
  799. exit;
  800. }
  801. public function GetCateChildList(){
  802. if(isset($_GET['parentid']) && $_GET['parentid'] != 0){
  803. Doo::loadModel('category');
  804. $category = new Category();
  805. $childlist = $category->getChildList($_GET['parentid']);
  806. if(!empty($childlist)){
  807. echo json_encode(array('code' => 200, 'childlist' => $childlist));
  808. exit;
  809. }
  810. }
  811. echo json_encode(array('code' => 400));
  812. exit;
  813. }
  814. public function GetCateParentList(){
  815. if(isset($_GET['itemid']) && $_GET['itemid'] != 0){
  816. Doo::loadModel('category');
  817. $category = new Category();
  818. $parentlist = $category->getparentlist($_GET['itemid']);
  819. if(!empty($parentlist)){
  820. echo json_encode(array('code' => 200, 'parentlist' => $parentlist));
  821. exit;
  822. }
  823. }
  824. echo json_encode(array('code' => 400));
  825. exit;
  826. }
  827. //随机生成6位的项目领取码
  828. private function MadeCode(){
  829. $string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  830. $code = '';
  831. for($i = 0; $i < 6; $i++){
  832. $index = rand(0,61);
  833. var_dump($index);
  834. $code .= substr($string,$index,1);
  835. }
  836. return $code;
  837. }
  838. }