DepartmentController.java 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771
  1. package com.zhcs.dt.controller.fhoa.department;
  2. import java.text.DateFormat;
  3. import java.text.SimpleDateFormat;
  4. import java.util.ArrayList;
  5. import java.util.Date;
  6. import java.util.HashMap;
  7. import java.util.List;
  8. import java.util.Map;
  9. import javax.annotation.Resource;
  10. import net.sf.json.JSONArray;
  11. import org.springframework.beans.propertyeditors.CustomDateEditor;
  12. import org.springframework.stereotype.Controller;
  13. import org.springframework.ui.Model;
  14. import org.springframework.web.bind.WebDataBinder;
  15. import org.springframework.web.bind.annotation.InitBinder;
  16. import org.springframework.web.bind.annotation.RequestMapping;
  17. import org.springframework.web.bind.annotation.RequestParam;
  18. import org.springframework.web.bind.annotation.ResponseBody;
  19. import org.springframework.web.servlet.ModelAndView;
  20. import com.zhcs.dt.controller.base.BaseController;
  21. import com.zhcs.dt.entity.Page;
  22. import com.zhcs.dt.service.fhoa.department.DepartmentManager;
  23. import com.zhcs.dt.service.information.annualPlan.impl.AnnualPlanService;
  24. import com.zhcs.dt.util.AppUtil;
  25. import com.zhcs.dt.util.Jurisdiction;
  26. import com.zhcs.dt.util.PageData;
  27. /**
  28. * 说明:组织机构
  29. * 创建人:FH Q313596790
  30. * 创建时间:2015-12-16
  31. */
  32. @Controller
  33. @RequestMapping(value="/department")
  34. public class DepartmentController extends BaseController {
  35. String menuUrl = "department/list.do"; //菜单地址(权限用)
  36. @Resource(name="departmentService")
  37. private DepartmentManager departmentService;
  38. @Resource(name="annualPlanService")
  39. private AnnualPlanService annualPlanService;
  40. /**保存
  41. * @param
  42. * @throws Exception
  43. */
  44. @RequestMapping(value="/save")
  45. public ModelAndView save() throws Exception{
  46. logBefore(logger, Jurisdiction.getUsername()+"新增department");
  47. if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
  48. ModelAndView mv = this.getModelAndView();
  49. PageData pd = new PageData();
  50. pd = this.getPageData();
  51. pd.put("DEPARTMENT_ID", this.get32UUID()); //主键
  52. pd.put("STATUS", "1");
  53. pd.put("CREATETIME", new Date());
  54. pd.put("UPDATETIME", new Date());
  55. departmentService.save(pd);
  56. //对应年份表新增数据
  57. //pd.put("table", "oa_department_"+pd.get("YEAR").toString());
  58. //departmentService.saveYear(pd);
  59. mv.addObject("msg","success");
  60. mv.setViewName("save_result");
  61. return mv;
  62. }
  63. /**
  64. * 删除
  65. * @param DEPARTMENT_ID
  66. * @param
  67. * @throws Exception
  68. */
  69. @RequestMapping(value="/delete")
  70. @ResponseBody
  71. public Object delete(@RequestParam String DEPARTMENT_ID,@RequestParam String YEAR) throws Exception{
  72. if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
  73. logBefore(logger, Jurisdiction.getUsername()+"删除department");
  74. Map<String,String> map = new HashMap<String,String>();
  75. PageData pd = new PageData();
  76. pd.put("DEPARTMENT_ID", DEPARTMENT_ID);
  77. pd.put("YEAR", YEAR);
  78. String errInfo = "success";
  79. if(departmentService.listSubDepartmentByParentId(DEPARTMENT_ID).size() > 0){//判断是否有子级,是:不允许删除
  80. errInfo = "false";
  81. }else{
  82. //departmentService.delete(pd); //执行删除
  83. departmentService.updateStatus(pd);//逻辑删除
  84. //物理删除动态表
  85. pd.put("table", "oa_department_"+YEAR);
  86. departmentService.delete(pd);
  87. }
  88. map.put("result", errInfo);
  89. return AppUtil.returnObject(new PageData(), map);
  90. }
  91. /**修改
  92. * @param
  93. * @throws Exception
  94. */
  95. @RequestMapping(value="/countPlan")
  96. @ResponseBody
  97. public Object countPlan() throws Exception{
  98. logBefore(logger, Jurisdiction.getUsername()+"修改department");
  99. Map<String,String> map = new HashMap<String,String>();
  100. String message="success";
  101. if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;}
  102. PageData pd = new PageData();
  103. pd = this.getPageData();
  104. //判断年度计划是否存在
  105. int count_num = annualPlanService.getPlanCountByCompanyAndYear(pd);
  106. if(count_num==0){
  107. message = "success";
  108. }
  109. else{
  110. message = "exist";
  111. //departmentService.edit(pd);
  112. }
  113. map.put("msg", message);
  114. return AppUtil.returnObject(new PageData(), map);
  115. }
  116. /**修改
  117. * @param
  118. * @throws Exception
  119. */
  120. @RequestMapping(value="/edit")
  121. @ResponseBody
  122. public Object edit() throws Exception{
  123. logBefore(logger, Jurisdiction.getUsername()+"修改department");
  124. if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;}
  125. Map<String,String> map = new HashMap<String,String>();
  126. PageData pd = new PageData();
  127. pd = this.getPageData();
  128. departmentService.edit(pd);
  129. //修改对应年份
  130. if(null != pd.get("YEAR") && !pd.get("YEAR").toString().isEmpty()){
  131. pd.put("table", "oa_department_"+pd.get("YEAR").toString());
  132. }
  133. else{
  134. SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
  135. Date date = new Date();
  136. String currentYear = sdf.format(date);
  137. pd.put("table", "oa_department_"+currentYear);
  138. }
  139. departmentService.editYear(pd);
  140. map.put("msg", "success");
  141. //mv.setViewName("save_result");
  142. return AppUtil.returnObject(new PageData(), map);
  143. }
  144. /**列表
  145. * @param page
  146. * @throws Exception
  147. */
  148. @RequestMapping(value="/list")
  149. public ModelAndView list(Page page) throws Exception{
  150. logBefore(logger, Jurisdiction.getUsername()+"列表department");
  151. ModelAndView mv = this.getModelAndView();
  152. PageData pd = new PageData();
  153. pd = this.getPageData();
  154. String keywords = pd.getString("keywords"); //检索条件
  155. if(null != keywords && !"".equals(keywords)){
  156. pd.put("keywords", keywords.trim());
  157. }
  158. String DEPARTMENT_ID = null == pd.get("DEPARTMENT_ID")?"":pd.get("DEPARTMENT_ID").toString();
  159. if(null != pd.get("id") && !"".equals(pd.get("id").toString())){
  160. DEPARTMENT_ID = pd.get("id").toString();
  161. }
  162. pd.put("DEPARTMENT_ID", DEPARTMENT_ID); //上级ID
  163. page.setPd(pd);
  164. List<PageData> varList = departmentService.list(page); //列出Dictionaries列表
  165. mv.addObject("pd", departmentService.findById(pd)); //传入上级所有信息
  166. mv.addObject("DEPARTMENT_ID", DEPARTMENT_ID); //上级ID
  167. mv.setViewName("fhoa/department/department_list");
  168. mv.addObject("varList", varList);
  169. mv.addObject("QX",Jurisdiction.getHC()); //按钮权限
  170. return mv;
  171. }
  172. /**列表
  173. * @param page
  174. * @throws Exception
  175. */
  176. @RequestMapping(value="/getdep2")
  177. @ResponseBody
  178. public Object getdep2(Page page,Model model) throws Exception{
  179. logBefore(logger, Jurisdiction.getUsername()+"列表department");
  180. ModelAndView mv = this.getModelAndView();
  181. PageData pd = new PageData();
  182. pd = this.getPageData();
  183. String DEPARTMENT_ID = null == pd.get("DEPARTMENT_ID")?"":pd.get("DEPARTMENT_ID").toString();
  184. if(null != pd.get("id") && !"".equals(pd.get("id").toString())){
  185. DEPARTMENT_ID = pd.get("id").toString();
  186. }
  187. //pd.put("DEPARTMENT_ID", DEPARTMENT_ID); //上级ID
  188. //page.setPd(pd);
  189. //List<PageData> varList = departmentService.getdep2(DEPARTMENT_ID); //列出Dictionaries列表
  190. // mv.addObject("pd", departmentService.findById(pd)); //传入上级所有信息
  191. mv.addObject("DEPARTMENT_ID", DEPARTMENT_ID); //上级ID
  192. // mv.setViewName("fhoa/department/department_list");
  193. // mv.addObject("varList", varList);
  194. // mv.addObject("QX",Jurisdiction.getHC()); //按钮权限
  195. // return mv;
  196. try{
  197. JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartment3("0",DEPARTMENT_ID));
  198. String json = arr.toString();
  199. System.out.println("json1:" + json);
  200. json = json.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "children").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url");
  201. System.out.println("json11:" + json);
  202. List<String> varList = departmentService.getdep2(DEPARTMENT_ID);
  203. Map<String,Object> map = new HashMap<String,Object>();
  204. map.put("varList", varList);
  205. return AppUtil.returnObject(new PageData(), map);
  206. } catch(Exception e){
  207. logger.error(e.toString(), e);
  208. }
  209. return mv;
  210. }
  211. /**列表
  212. * @param page
  213. * @throws Exception
  214. */
  215. @RequestMapping(value="/saveNodes")
  216. @ResponseBody
  217. public Object saveNodes(Model model) throws Exception{
  218. logBefore(logger, Jurisdiction.getUsername()+"列表department");
  219. ModelAndView mv = this.getModelAndView();
  220. PageData pd = new PageData();
  221. pd = this.getPageData();
  222. String[] nodes = null;
  223. if(pd.get("rnodes") != null){
  224. nodes = pd.get("rnodes").toString().split(",");
  225. }
  226. departmentService.dealDepartments(pd.get("lnodes"), nodes);
  227. try{
  228. // JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartment3("0",DEPARTMENT_ID));
  229. // String json = arr.toString();
  230. // System.out.println("json1:" + json);
  231. // json = json.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "children").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url");
  232. // System.out.println("json11:" + json);
  233. //
  234. // List<String> varList = departmentService.getdep2(DEPARTMENT_ID);
  235. Map<String,Object> map = new HashMap<String,Object>();
  236. // map.put("varList", varList);
  237. return AppUtil.returnObject(new PageData(), map);
  238. } catch(Exception e){
  239. logger.error(e.toString(), e);
  240. }
  241. return mv;
  242. }
  243. /**列表
  244. * @param page
  245. * @throws Exception
  246. */
  247. @RequestMapping(value="/departmentConfig")
  248. public ModelAndView departmentConfig(Model model) throws Exception{
  249. ModelAndView mv = this.getModelAndView();
  250. PageData pd = new PageData();
  251. pd = this.getPageData();
  252. try{
  253. JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartment3("0",""));
  254. String json = arr.toString();
  255. System.out.println("json1:" + json);
  256. json = json.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "children").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url");
  257. System.out.println("json11:" + json);
  258. JSONArray arr2 = JSONArray.fromObject(departmentService.listAllDepartment2("0",""));
  259. if(arr2.size()>0){
  260. for(int i=0;i<arr2.size();i++){
  261. arr2.getJSONObject(i).put("nocheck","false");
  262. }
  263. }
  264. String json2 = arr2.toString();
  265. System.out.println("json2:" + json2);
  266. json2 = json2.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "children").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url");
  267. System.out.println("json22:" + json2);
  268. model.addAttribute("zTreeNodes", json);
  269. model.addAttribute("zTreeNodes2", json2);
  270. mv.addObject("DEPARTMENT_ID", "0");
  271. mv.addObject("pd", pd);
  272. mv.setViewName("fhoa/department/department_config");
  273. } catch(Exception e){
  274. logger.error(e.toString(), e);
  275. }
  276. return mv;
  277. }
  278. /**
  279. * 显示列表ztree
  280. * @param model
  281. * @return
  282. */
  283. @RequestMapping(value="/listAllDepartment")
  284. public ModelAndView listAllDepartment(Model model,String DEPARTMENT_ID)throws Exception{
  285. ModelAndView mv = this.getModelAndView();
  286. PageData pd = new PageData();
  287. pd = this.getPageData();
  288. try{
  289. JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartment("0"));
  290. String json = arr.toString();
  291. json = json.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "nodes").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url");
  292. model.addAttribute("zTreeNodes", json);
  293. mv.addObject("DEPARTMENT_ID",DEPARTMENT_ID);
  294. mv.addObject("pd", pd);
  295. mv.setViewName("fhoa/department/department_ztree");
  296. } catch(Exception e){
  297. logger.error(e.toString(), e);
  298. }
  299. return mv;
  300. }
  301. /**去新增页面
  302. * @param
  303. * @throws Exception
  304. */
  305. @RequestMapping(value="/goAdd")
  306. public ModelAndView goAdd()throws Exception{
  307. ModelAndView mv = this.getModelAndView();
  308. PageData pd = new PageData();
  309. pd = this.getPageData();
  310. String DEPARTMENT_ID = null == pd.get("DEPARTMENT_ID")?"":pd.get("DEPARTMENT_ID").toString();
  311. pd.put("DEPARTMENT_ID", DEPARTMENT_ID); //上级ID
  312. mv.addObject("pds",departmentService.findById(pd)); //传入上级所有信息
  313. mv.addObject("DEPARTMENT_ID", DEPARTMENT_ID); //传入ID,作为子级ID用
  314. mv.setViewName("fhoa/department/department_add");
  315. mv.addObject("msg", "save");
  316. return mv;
  317. }
  318. /**去修改页面
  319. * @param
  320. * @throws Exception
  321. */
  322. @RequestMapping(value="/goEdit")
  323. public ModelAndView goEdit()throws Exception{
  324. ModelAndView mv = this.getModelAndView();
  325. PageData pd = new PageData();
  326. pd = this.getPageData();
  327. String dnowPage = "";
  328. if(null != pd.get("dnowPage")){
  329. dnowPage = pd.get("dnowPage").toString();
  330. }
  331. String DEPARTMENT_ID = pd.getString("DEPARTMENT_ID");
  332. pd = departmentService.findById(pd); //根据ID读取
  333. mv.addObject("pd", pd); //放入视图容器
  334. pd.put("DEPARTMENT_ID",pd.get("PARENT_ID").toString()); //用作上级信息
  335. mv.addObject("pds",departmentService.findById(pd)); //传入上级所有信息
  336. mv.addObject("DEPARTMENT_ID", pd.get("PARENT_ID").toString()); //传入上级ID,作为子ID用
  337. pd.put("DEPARTMENT_ID",DEPARTMENT_ID); //复原本ID
  338. pd.put("dnowPage",dnowPage);
  339. mv.setViewName("fhoa/department/department_edit");
  340. //mv.addObject("msg", "countPlan");
  341. return mv;
  342. }
  343. /**判断编码是否存在
  344. * @return
  345. */
  346. @RequestMapping(value="/hasBianma")
  347. @ResponseBody
  348. public Object hasBianma(){
  349. Map<String,String> map = new HashMap<String,String>();
  350. String errInfo = "success";
  351. PageData pd = new PageData();
  352. try{
  353. pd = this.getPageData();
  354. if(departmentService.findByBianma(pd) != null){
  355. errInfo = "error";
  356. }
  357. } catch(Exception e){
  358. logger.error(e.toString(), e);
  359. }
  360. map.put("result", errInfo); //返回结果
  361. return AppUtil.returnObject(new PageData(), map);
  362. }
  363. /**判断统一编码是否存在
  364. * @return
  365. */
  366. @RequestMapping(value="/hasUniCode")
  367. @ResponseBody
  368. public Object hasUniCode(){
  369. Map<String,String> map = new HashMap<String,String>();
  370. String errInfo = "success";
  371. PageData pd = new PageData();
  372. try{
  373. pd = this.getPageData();
  374. if(departmentService.findByUniCode(pd) != null){
  375. errInfo = "error";
  376. }
  377. } catch(Exception e){
  378. logger.error(e.toString(), e);
  379. }
  380. map.put("result", errInfo); //返回结果
  381. return AppUtil.returnObject(new PageData(), map);
  382. }
  383. @InitBinder
  384. public void initBinder(WebDataBinder binder){
  385. DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  386. binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
  387. }
  388. /**
  389. * 年度树显示列表ztree
  390. * @param model
  391. * @return
  392. */
  393. @RequestMapping(value="/yearListAllDepartment")
  394. public ModelAndView yearListAllDepartment(Model model,String DEPARTMENT_ID,Page page)throws Exception{
  395. ModelAndView mv = this.getModelAndView();
  396. PageData pd = new PageData();
  397. pd = this.getPageData();
  398. try{
  399. SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
  400. Date date = new Date();
  401. String currentYear = sdf.format(date);
  402. if(null != pd.get("YEAR")){
  403. currentYear = pd.get("YEAR").toString();
  404. }
  405. pd.put("table", "oa_department_"+currentYear);
  406. pd.put("parentId", "0");
  407. pd.put("DEPARTMENT_ID", "0");
  408. List<String> yearItems = new ArrayList<String>();
  409. for(int i= -4; i < 6; i++){
  410. Integer intyear = Integer.parseInt(currentYear);
  411. yearItems.add(String.valueOf(intyear + i));
  412. }
  413. //TODO 查询对应表是否存在
  414. int table_num = departmentService.countYearTable(pd);
  415. if(table_num>0){
  416. JSONArray arr = JSONArray.fromObject(departmentService.yearListAllDepartment(pd));
  417. String json = arr.toString();
  418. json = json.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "nodes").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url");
  419. page.setPd(pd);
  420. List<PageData> varList = departmentService.yearList(page); //列出Dictionaries列表
  421. model.addAttribute("zTreeNodes", json);
  422. mv.addObject("varList", varList);
  423. }
  424. mv.addObject("currentYear", currentYear);
  425. mv.addObject("yearList", yearItems);
  426. mv.addObject("DEPARTMENT_ID",DEPARTMENT_ID);
  427. mv.addObject("pd", pd);
  428. mv.setViewName("fhoa/department/department_set_ztree");
  429. mv.addObject("QX",Jurisdiction.getHC());
  430. } catch(Exception e){
  431. logger.error(e.toString(), e);
  432. }
  433. return mv;
  434. }
  435. /**各年度列表数据
  436. * @param page
  437. * @throws Exception
  438. */
  439. @RequestMapping(value="/yearList")
  440. public ModelAndView yearList(Model model,Page page) throws Exception{
  441. logBefore(logger, Jurisdiction.getUsername()+"列表department");
  442. ModelAndView mv = this.getModelAndView();
  443. PageData pd = new PageData();
  444. pd = this.getPageData();
  445. String keywords = pd.getString("keywords"); //检索条件
  446. if(null != keywords && !"".equals(keywords)){
  447. pd.put("keywords", keywords.trim());
  448. }
  449. String DEPARTMENT_ID = null == pd.get("DEPARTMENT_ID")?"":pd.get("DEPARTMENT_ID").toString();
  450. if(null != pd.get("id") && !"".equals(pd.get("id").toString())){
  451. DEPARTMENT_ID = pd.get("id").toString();
  452. }
  453. pd.put("DEPARTMENT_ID", DEPARTMENT_ID); //上级ID
  454. SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
  455. Date date = new Date();
  456. String currentYear = sdf.format(date);
  457. if(null != pd.get("YEAR")){
  458. currentYear = pd.get("YEAR").toString();
  459. }
  460. pd.put("table", "oa_department_"+currentYear);
  461. page.setPd(pd);
  462. mv.addObject("currentYear", currentYear);
  463. List<String> yearItems = new ArrayList<String>();
  464. for(int i= -4; i < 6; i++){
  465. Integer intyear = Integer.parseInt(currentYear);
  466. yearItems.add(String.valueOf(intyear + i));
  467. }
  468. mv.addObject("yearList", yearItems);
  469. mv.addObject("currentYear", currentYear);
  470. List<PageData> varList = departmentService.yearList(page); //列出Dictionaries列表
  471. mv.addObject("pd", departmentService.yearFindById(pd)); //传入上级所有信息
  472. mv.addObject("DEPARTMENT_ID", DEPARTMENT_ID); //上级ID
  473. mv.addObject("varList", varList);
  474. if(null != pd.get("DEPARTMENT_ID") && !pd.get("DEPARTMENT_ID").toString().equals("0")){
  475. pd.remove("DEPARTMENT_ID");
  476. }
  477. pd.put("parentId", "0");
  478. JSONArray arr = JSONArray.fromObject(departmentService.yearListAllDepartment(pd));
  479. String json = arr.toString();
  480. json = json.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "nodes").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url");
  481. model.addAttribute("zTreeNodes", json);
  482. mv.setViewName("fhoa/department/department_set_ztree");
  483. mv.addObject("QX",Jurisdiction.getHC()); //按钮权限
  484. return mv;
  485. }
  486. /**去组织结构年度设置页面
  487. * @param
  488. * @throws Exception
  489. */
  490. @RequestMapping(value="/gset")
  491. public ModelAndView gset(Model model)throws Exception{
  492. ModelAndView mv = this.getModelAndView();
  493. PageData pd = new PageData();
  494. pd = this.getPageData();
  495. pd.put("parentId", "0");
  496. SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
  497. Date date = new Date();
  498. String currentYear = sdf.format(date);
  499. String selectYear ="";
  500. if(null != pd.get("YEAR")){
  501. currentYear = pd.get("YEAR").toString();
  502. }
  503. Integer selYear = Integer.parseInt(currentYear);
  504. selectYear = String.valueOf(selYear);
  505. pd.put("table", "oa_department");
  506. pd.put("currentYear", currentYear);
  507. //基础数据
  508. JSONArray arr = JSONArray.fromObject(departmentService.yearListAllDepartment(pd));
  509. List<String> yearItems = new ArrayList<String>();
  510. for(int i= -4; i < 6; i++){
  511. Integer intyear = Integer.parseInt(currentYear);
  512. yearItems.add(String.valueOf(intyear + i));
  513. }
  514. //判断选中
  515. if(arr.size()>0 ){
  516. //年份数据
  517. pd.put("table", "oa_department_"+currentYear);
  518. //查询对应表是否存在
  519. int table_num = departmentService.countYearTable(pd);
  520. if(table_num==0){
  521. departmentService.createYearTable(pd);
  522. }
  523. JSONArray yearArr = JSONArray.fromObject(departmentService.yearListAllDepartment(pd));
  524. for(int i=0;i<arr.size();i++){
  525. for(int k=0;k<yearArr.size();k++){
  526. if(arr.getJSONObject(i).get("NAME").toString().equals(yearArr.getJSONObject(k).get("NAME").toString())){
  527. arr.getJSONObject(i).put("checked","true");
  528. //对应的子节点选中
  529. if(null != yearArr.getJSONObject(k).get("subDepartment")
  530. && "" != yearArr.getJSONObject(k).get("subDepartment").toString()){
  531. JSONArray subArray = JSONArray.fromObject(arr.getJSONObject(i).get("subDepartment"));
  532. JSONArray subCheckArray = JSONArray.fromObject(yearArr.getJSONObject(k).get("subDepartment"));
  533. if(subArray.size()>0 && subCheckArray.size()>0){
  534. for(int m=0;m<subArray.size();m++){
  535. for(int n=0;n<subCheckArray.size();n++){
  536. if(subArray.getJSONObject(m).get("NAME").toString().equals(subCheckArray.getJSONObject(n).get("NAME").toString())){
  537. subArray.getJSONObject(m).put("checked","true");
  538. }
  539. }
  540. }
  541. }
  542. arr.getJSONObject(i).put("subDepartment",subArray);
  543. }
  544. }
  545. }
  546. }
  547. }
  548. String json = arr.toString();
  549. json = json.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "children").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url");
  550. model.addAttribute("zTreeNodes", json);//传入ID,作为子级ID用
  551. mv.addObject("DEPARTMENT_ID", "0");
  552. mv.addObject("currentYear", selectYear);
  553. mv.addObject("yearList", yearItems);
  554. mv.addObject("pd", pd);
  555. mv.setViewName("fhoa/department/department_set_year");
  556. mv.addObject("msg", "save");
  557. return mv;
  558. }
  559. /**保存选中树结构
  560. * @param page
  561. * @throws Exception
  562. */
  563. @RequestMapping(value="/saveYearNodes")
  564. @ResponseBody
  565. public Object saveYearNodes(Model model) throws Exception{
  566. logBefore(logger, Jurisdiction.getUsername()+"列表department");
  567. PageData pd = new PageData();
  568. pd = this.getPageData();
  569. Map<String,Object> map = new HashMap<String,Object>();
  570. try{
  571. if(pd.get("rnodes") != null){
  572. String selectYear =pd.get("YEAR").toString();
  573. //页面选中节点
  574. JSONArray selectedNodes = JSONArray.fromObject(pd.get("rnodes").toString());
  575. //数据库已存在节点
  576. pd.put("table", "oa_department_"+pd.get("YEAR").toString());
  577. List<PageData> yearList = departmentService.yearQuery(pd);
  578. //选中数值与原有对比
  579. if(null !=yearList && yearList.size()>0 && null != selectedNodes
  580. && (yearList.size()>selectedNodes.size())){
  581. List<String> selectIdList = new ArrayList<>();
  582. List<String> yearIdList = new ArrayList<>();
  583. for(int a=0;a<selectedNodes.size();a++){
  584. selectIdList.add(selectedNodes.getJSONObject(a).get("id").toString());
  585. }
  586. for(PageData ypd:yearList){
  587. yearIdList.add(ypd.get("DEPARTMENT_ID").toString());
  588. }
  589. List<String> list = getDiffrent(yearIdList,selectIdList);
  590. pd.put("table", "oa_department_"+selectYear);
  591. for(String id:list){
  592. pd.put("DEPARTMENT_ID",id);
  593. departmentService.yearDelete(pd);
  594. }
  595. }
  596. if(null != selectedNodes && selectedNodes.size()>0){
  597. for(int m=0;m<selectedNodes.size();m++){
  598. if(null != selectedNodes.getJSONObject(m)){
  599. PageData selectedpd = new PageData();
  600. selectedpd.put("NAME",selectedNodes.getJSONObject(m).get("name"));
  601. selectedpd.put("NAME_EN",selectedNodes.getJSONObject(m).get("name_EN"));
  602. selectedpd.put("BIANMA",selectedNodes.getJSONObject(m).get("BIANMA"));
  603. selectedpd.put("PARENT_ID",selectedNodes.getJSONObject(m).get("pId"));
  604. selectedpd.put("HEADMAN",selectedNodes.getJSONObject(m).get("HEADMAN"));
  605. selectedpd.put("TEL",selectedNodes.getJSONObject(m).get("TEL"));
  606. selectedpd.put("FUNCTIONS",selectedNodes.getJSONObject(m).get("FUNCTIONS"));
  607. selectedpd.put("ADDRESS",selectedNodes.getJSONObject(m).get("ADDRESS"));
  608. selectedpd.put("BZ",selectedNodes.getJSONObject(m).get("BZ"));
  609. selectedpd.put("DEPARTMENT_ID",selectedNodes.getJSONObject(m).get("id")); //主键
  610. selectedpd.put("YEAR",selectYear);
  611. selectedpd.put("STATUS",selectedNodes.getJSONObject(m).get("STATUS"));
  612. selectedpd.put("UNI_CODE",selectedNodes.getJSONObject(m).get("UNI_CODE"));
  613. selectedpd.put("SHOW_NUM",selectedNodes.getJSONObject(m).get("SHOW_NUM"));
  614. selectedpd.put("CREATETIME", new Date());
  615. selectedpd.put("UPDATETIME", new Date());
  616. selectedpd.put("table", "oa_department_"+pd.get("YEAR").toString());
  617. departmentService.saveYear(selectedpd);
  618. }
  619. }
  620. }
  621. }
  622. map.put("msg", "success");
  623. } catch(Exception e){
  624. map.put("msg", "error");
  625. logger.error(e.toString(), e);
  626. }
  627. return AppUtil.returnObject(new PageData(), map);
  628. }
  629. @RequestMapping(value="/refreshZtree", produces = "application/json; charset=utf-8")
  630. @ResponseBody
  631. public String refreshZtree(Model model)throws Exception{
  632. PageData pd = new PageData();
  633. pd = this.getPageData();
  634. pd.put("parentId", "0");
  635. String currentYear = "";
  636. if(null != pd.get("YEAR")){
  637. currentYear = pd.get("YEAR").toString();
  638. }
  639. pd.put("table", "oa_department");
  640. pd.put("currentYear", currentYear);
  641. //基础数据
  642. JSONArray arr = JSONArray.fromObject(departmentService.yearListAllDepartment(pd));
  643. List<String> yearItems = new ArrayList<String>();
  644. for(int i= 0; i < 5; i++){
  645. Integer intyear = Integer.parseInt(currentYear);
  646. yearItems.add(String.valueOf(intyear + i));
  647. }
  648. //判断选中
  649. if(arr.size()>0 ){
  650. //年份数据
  651. pd.put("table", "oa_department_"+currentYear);
  652. //查询对应表是否存在
  653. int table_num = departmentService.countYearTable(pd);
  654. if(table_num==0){
  655. departmentService.createYearTable(pd);
  656. }
  657. JSONArray yearArr = JSONArray.fromObject(departmentService.yearListAllDepartment(pd));
  658. for(int i=0;i<arr.size();i++){
  659. for(int k=0;k<yearArr.size();k++){
  660. if(arr.getJSONObject(i).get("NAME").toString().equals(yearArr.getJSONObject(k).get("NAME").toString())){
  661. arr.getJSONObject(i).put("checked","true");
  662. //对应的子节点选中
  663. if(null != yearArr.getJSONObject(k).get("subDepartment")
  664. && "" != yearArr.getJSONObject(k).get("subDepartment").toString()){
  665. JSONArray subArray = JSONArray.fromObject(arr.getJSONObject(i).get("subDepartment"));
  666. JSONArray subCheckArray = JSONArray.fromObject(yearArr.getJSONObject(k).get("subDepartment"));
  667. if(subArray.size()>0 && subCheckArray.size()>0){
  668. for(int m=0;m<subArray.size();m++){
  669. for(int n=0;n<subCheckArray.size();n++){
  670. if(subArray.getJSONObject(m).get("NAME").toString().equals(subCheckArray.getJSONObject(n).get("NAME").toString())){
  671. subArray.getJSONObject(m).put("checked","true");
  672. }
  673. }
  674. }
  675. }
  676. arr.getJSONObject(i).put("subDepartment",subArray);
  677. }
  678. }
  679. }
  680. }
  681. }
  682. String json = arr.toString();
  683. json = json.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "children").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url");
  684. return json;
  685. }
  686. /**
  687. * 当前年份是否配置
  688. * @param model
  689. * @return
  690. * @throws Exception
  691. */
  692. @RequestMapping(value="/countYearTable")
  693. @ResponseBody
  694. public String countYearTable(Model model)throws Exception{
  695. PageData pd = new PageData();
  696. pd = this.getPageData();
  697. pd.put("table", "oa_department_"+pd.get("YEAR"));
  698. int table_num = departmentService.countYearTable(pd);
  699. String message="";
  700. //是否存在对年份表
  701. if(table_num ==0 ){
  702. message = "haveno";
  703. }
  704. else{
  705. //是否存在公司对应年份数据
  706. PageData companypd = (PageData)annualPlanService.getCompanyID(pd);
  707. if(null != companypd){
  708. message = "success";
  709. }
  710. else{
  711. message = "haveno";
  712. }
  713. }
  714. return message;
  715. }
  716. /**
  717. * 两个数组中的不同元素。 其中 list1比list2长
  718. * @param list1
  719. * @param list2
  720. * @return
  721. */
  722. private static List<String> getDiffrent(List<String> list1, List<String> list2) {
  723. List<String> diff = new ArrayList<String>();
  724. for(String str:list1)
  725. {
  726. if(!list2.contains(str))
  727. {
  728. diff.add(str);
  729. }
  730. }
  731. return diff;
  732. }
  733. }