YjMonthProgressController.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. package com.zhcs.dt.controller.information.monthProgress;
  2. import java.util.ArrayList;
  3. import java.util.Date;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import javax.annotation.Resource;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10. import net.sf.json.JSONArray;
  11. import net.sf.json.JSONObject;
  12. import org.springframework.stereotype.Controller;
  13. import org.springframework.web.bind.annotation.RequestMapping;
  14. import org.springframework.web.bind.annotation.ResponseBody;
  15. import org.springframework.web.servlet.ModelAndView;
  16. import com.sun.xml.internal.ws.policy.EffectiveAlternativeSelector;
  17. import com.zhcs.dt.controller.base.BaseController;
  18. import com.zhcs.dt.entity.Page;
  19. import com.zhcs.dt.service.information.annualPlan.DownloadZip;
  20. import com.zhcs.dt.service.information.annualPlan.MultExcelUtils;
  21. import com.zhcs.dt.service.information.annualPlan.impl.AnnualDailyCompService;
  22. import com.zhcs.dt.service.information.monthProgress.MonthProgressManager;
  23. import com.zhcs.dt.service.information.monthProgress.YjMonthProgressManager;
  24. import com.zhcs.dt.util.AppUtil;
  25. import com.zhcs.dt.util.Jurisdiction;
  26. import com.zhcs.dt.util.PageData;
  27. import com.zhcs.dt.util.Tools;
  28. /**
  29. * 类名称:年度养护计划
  30. * 创建人:Yuanf
  31. * 创建时间:2018-11-12
  32. */
  33. @Controller
  34. @RequestMapping(value="/yjmonthProgress")
  35. class YjMonthProgressController extends BaseController {
  36. String menuUrl = "yjmonthProgress/list.do"; //菜单地址(权限用)
  37. @Resource(name="yjmonthProgressService")
  38. private YjMonthProgressManager yjmonthProgressService;
  39. @Resource(name="annualDailyCompService")
  40. private AnnualDailyCompService annualDailyCompService;
  41. @Resource(name="monthProgressService")
  42. private MonthProgressManager monthProgressService;
  43. /**列表
  44. * @param page
  45. * @throws Exception
  46. */
  47. @RequestMapping(value="/list")
  48. public ModelAndView list(Page page) throws Exception{
  49. logBefore(logger, Jurisdiction.getUsername()+"应急养护月度报告");
  50. //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
  51. ModelAndView mv = this.getModelAndView();
  52. PageData pd = new PageData();
  53. pd = this.getPageData();
  54. PageData userInfo = yjmonthProgressService.getCompanyAndRoad(Jurisdiction.getUsername().toString()); //通过username获取公司和路段
  55. //通过ROLE_ID获取角色
  56. String roleName = yjmonthProgressService.getRoleName(userInfo.get("ROLE_ID").toString());
  57. pd = this.getPageData();
  58. String keywords = pd.getString("keywords"); //关键词检索条件
  59. if(null != keywords && !"".equals(keywords)){
  60. pd.put("keywords", keywords.trim());
  61. }
  62. page.setPd(pd);
  63. List<PageData> varList = yjmonthProgressService.list(page); //列出月度报告
  64. mv.setViewName("information/monthProgress/yj/monthProgress_list");
  65. mv.addObject("varList", varList);
  66. mv.addObject("pd", pd);
  67. mv.addObject("userInfo", userInfo);
  68. mv.addObject("roleName", roleName);
  69. mv.addObject("QX",Jurisdiction.getHC()); //按钮权限
  70. return mv;
  71. }
  72. /**去新增页面
  73. * @param
  74. * @throws Exception
  75. */
  76. @RequestMapping(value="/goAdd")
  77. public ModelAndView goAdd()throws Exception{
  78. ModelAndView mv = this.getModelAndView();
  79. PageData pd = new PageData();
  80. pd = this.getPageData();
  81. String company = pd.get("COMPANY").toString();
  82. mv.setViewName("information/monthProgress/yj/monthProgress_add");
  83. mv.addObject("company", company);
  84. mv.addObject("msg", "save");
  85. mv.addObject("pd", pd);
  86. return mv;
  87. }
  88. /**新增报告
  89. * @param
  90. * @throws Exception
  91. */
  92. @RequestMapping(value="/save")
  93. public ModelAndView save() throws Exception{
  94. logBefore(logger, Jurisdiction.getUsername()+"新增monthProgress report");
  95. List<PageData> reportList = new ArrayList<PageData>();
  96. ModelAndView mv = this.getModelAndView();
  97. PageData pd = new PageData();
  98. pd = this.getPageData();
  99. String planID = this.get32UUID();
  100. //设置查询oa_department的动态表名
  101. pd.put("table", "oa_department_"+pd.getString("YEAR").toString());
  102. String companyid = yjmonthProgressService.getCompanyid(pd.get("COMPANY"));
  103. pd.put("COMPANY_ID", companyid);
  104. pd.put("ID", planID);//主键
  105. pd.put("NAME", pd.get("YEAR")+"年"+pd.get("COMPANY")+"月度养护报告");
  106. pd.put("CTIME", Tools.date2Str(new Date())); //创建时间
  107. pd.put("MTIME", Tools.date2Str(new Date())); //修改时间
  108. pd.put("STATUS", "新建"); //创建时间
  109. yjmonthProgressService.addMonthlyReport(pd); //新建月度养护报告
  110. mv.addObject("pd", pd);
  111. mv.addObject("msg","success");
  112. mv.setViewName("save_result");
  113. return mv;
  114. }
  115. /**显示、编辑月度报表
  116. * @param
  117. * @throws Exception
  118. */
  119. @RequestMapping(value="/showTable")
  120. public ModelAndView showTable()throws Exception{
  121. ModelAndView mv = this.getModelAndView();
  122. PageData pd = new PageData();
  123. pd = this.getPageData();
  124. PageData userInfo = monthProgressService.getCompanyAndRoad(Jurisdiction.getUsername().toString()); //通过username获取公司和路段
  125. //通过ROLE_ID获取角色
  126. String roleName = monthProgressService.getRoleName(userInfo.get("ROLE_ID").toString());
  127. if("路段管理员".equalsIgnoreCase(roleName)){
  128. pd.put("ROADS", userInfo.get("ROAD").toString().split(","));
  129. }
  130. List<PageData> varList = yjmonthProgressService.getReportInfo(pd); //获取月报相应数据
  131. mv.setViewName("information/monthProgress/yj/monthProgress_table");
  132. mv.addObject("varList", varList);
  133. mv.addObject("pd", pd);
  134. mv.addObject("QX",Jurisdiction.getHC());
  135. return mv;
  136. }
  137. @RequestMapping(value="/showTableRecod")
  138. public ModelAndView showTableRecod()throws Exception{
  139. ModelAndView mv = this.getModelAndView();
  140. PageData pd = new PageData();
  141. pd = this.getPageData();
  142. String mode = "add";
  143. PageData data = new PageData();
  144. List<PageData> sublist = new ArrayList<PageData>();
  145. PageData monPlanList = new PageData();
  146. if (pd.get("PROJECT_NAME") != null && !pd.get("PROJECT_NAME").equals("")) {
  147. mode = "edit";
  148. data = yjmonthProgressService.showTableRecod(pd);
  149. sublist = yjmonthProgressService.wordListRecorde(pd);
  150. pd.put("TABLETYPE", "highway_emergency_project_dettable");
  151. monPlanList = annualDailyCompService.getMonPlan(pd);
  152. }
  153. //增加动态表名
  154. pd.put("table", "oa_department_"+pd.get("YEAR").toString());
  155. List<PageData> roadList = annualDailyCompService.showRoad(pd);
  156. mv.addObject("roadList", JSONArray.fromObject(roadList));
  157. JSONArray arr = JSONArray.fromObject(data);
  158. mv.addObject("varList", arr);
  159. mv.addObject("dataMap", JSONObject.fromObject(data));
  160. mv.addObject("monPlanList", monPlanList==null?pd:JSONObject.fromObject(monPlanList));
  161. PageData nulldata = new PageData();
  162. nulldata.put("ITEM_NAME", "");
  163. nulldata.put("UNIT", "");
  164. nulldata.put("UNIT_PRICE", "");
  165. nulldata.put("NUMBER", "");
  166. nulldata.put("TOTAL_COST", "");
  167. int size = 8-sublist.size();
  168. for (int i = 0; i < size; i++) {
  169. sublist.add(nulldata);
  170. }
  171. mv.addObject("sublist", JSONArray.fromObject(sublist));
  172. pd.put("mode", mode);
  173. mv.setViewName("information/monthProgress/yj/highway_emergency_project_dettable");
  174. mv.addObject("pd", pd);
  175. mv.addObject("QX",Jurisdiction.getHC());
  176. return mv;
  177. }
  178. @RequestMapping(value="/deleteData")
  179. @ResponseBody
  180. public Object deleteData() throws Exception{
  181. ModelAndView mv = this.getModelAndView();
  182. PageData pd = new PageData();
  183. pd = this.getPageData();
  184. Map<String,Object> map = new HashMap<String,Object>();
  185. try {
  186. String[] roads = ((String) pd.get("roads")).split(",");
  187. String[] pnames = ((String) pd.get("pnames")).split(",");
  188. for (int i = 0; i < roads.length; i++) {
  189. pd.put("ROAD_ID", roads[i]);
  190. pd.put("PROJECT_NAME", pnames[i]);
  191. yjmonthProgressService.deleteEmergencyProjectRecord(pd);
  192. yjmonthProgressService.deleteEmergencyProjectCostRecord(pd);
  193. yjmonthProgressService.deleteMonthRecord(pd);
  194. pd.put("TABLETYPE", "highway_emergency_project_dettable");
  195. annualDailyCompService.deleteMonthRecord(pd);
  196. annualDailyCompService.deleteProjectRecodInfo(pd);
  197. pd.put("TABLETYPE", "highway_emergency_project_dettable_cost");
  198. annualDailyCompService.deleteProjectRecodInfo(pd);
  199. }
  200. map.put("msg","success");
  201. } catch (Exception e) {
  202. map.put("msg","false");
  203. }
  204. return AppUtil.returnObject(new PageData(), map);
  205. }
  206. @RequestMapping(value="/saveData")
  207. @ResponseBody
  208. public Object saveData(String data) throws Exception{
  209. ModelAndView mv = this.getModelAndView();
  210. PageData pd = new PageData();
  211. pd = this.getPageData();
  212. JSONArray jsonarray = JSONArray.fromObject(data);
  213. // JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
  214. Map<String,Object> map = dealWithData(pd,jsonarray);
  215. return AppUtil.returnObject(new PageData(), map);
  216. }
  217. /**
  218. * 处理新增编辑数据
  219. */
  220. @ResponseBody
  221. public Map<String,Object> dealWithData(PageData pd,JSONArray jsonarray) throws Exception{
  222. for (Object object : jsonarray) {
  223. JSONObject arrMap = JSONObject.fromObject(object);
  224. pd.put("YEAR", arrMap.get("YEAR"));
  225. pd.put("COMPANY", arrMap.get("COMPANY"));
  226. pd.put("COMPANY_ID", arrMap.get("COMPANY_ID"));
  227. pd.put("ROAD", arrMap.get("ROAD"));
  228. pd.put("ROAD_ID", arrMap.get("ROAD_ID"));
  229. pd.put("PROJECT_NAME", arrMap.get("PROJECT_NAME"));
  230. pd.put("SJWCGCL", arrMap.get("SJWCGCL"));
  231. String type = pd.get("TABLETYPE").toString();
  232. if("monthly_prevention_completion".equalsIgnoreCase(type)){
  233. pd.put("TABLE_NAME", "highway_prevention_project_dettable");
  234. }
  235. else if("monthly_repair_completion".equalsIgnoreCase(type)){
  236. pd.put("TABLE_NAME", "highway_repair_project_dettable");
  237. }
  238. else if("monthly_special_completion".equalsIgnoreCase(type)){
  239. pd.put("TABLE_NAME", "highway_special_project_dettable");
  240. }
  241. else if("monthly_emergency_completion".equalsIgnoreCase(type)){
  242. pd.put("TABLE_NAME", "highway_emergency_project_dettable");
  243. }
  244. yjmonthProgressService.updateWCQKRecord(pd);
  245. yjmonthProgressService.deleteMonthRecord(pd);
  246. for (int i = 1; i < 13; i++) {
  247. pd.put("MONTH",i);
  248. if ((!arrMap.get("ACTUAL_COST_"+i).equals(""))||(!arrMap.get("PAY_COST_"+i).equals(""))||(!arrMap.get("ACTUAL_QUANTITIES_"+i).equals(""))) {
  249. pd.put("ACTUAL_COST", arrMap.get("ACTUAL_COST_"+i).equals("")?null:arrMap.get("ACTUAL_COST_"+i));
  250. pd.put("PAY_COST", arrMap.get("PAY_COST_"+i).equals("")?null:arrMap.get("PAY_COST_"+i));
  251. pd.put("RATIO", arrMap.get("RATIO_"+i).equals("")?null:arrMap.get("RATIO_"+i));
  252. pd.put("ACTUAL_QUANTITIES", arrMap.get("ACTUAL_QUANTITIES_"+i).equals("")?null:arrMap.get("ACTUAL_QUANTITIES_"+i));
  253. yjmonthProgressService.insertMonthRecord(pd);
  254. }
  255. }
  256. }
  257. Map<String,Object> map = new HashMap<String,Object>();
  258. map.put("msg","success");
  259. return map;
  260. }
  261. @RequestMapping("/excelExport")
  262. public String excelExport(HttpServletRequest request,HttpServletResponse response) throws Exception{
  263. String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
  264. ModelAndView mv = this.getModelAndView();
  265. PageData pd = new PageData();
  266. pd = this.getPageData();
  267. List<String> paths = new ArrayList<String>();
  268. List<String> result = new ArrayList<String>();
  269. List<PageData> exceldata = setExcelData(pd);
  270. MultExcelUtils ex = new MultExcelUtils();
  271. String excelpath = ex.exportExcel(pd.getString("exportname")+".xlsx",path,response,exceldata);
  272. result.add(excelpath);
  273. //zip压缩下载
  274. DownloadZip.downloadZip(response,request,result,path);
  275. return null;
  276. }
  277. public List<PageData> setExcelData(PageData param) throws Exception {
  278. List<PageData> result = new ArrayList<PageData>();
  279. PageData data = new PageData();
  280. if (param.get("TABLETYPE").equals("monthly_emergency_completion")) {
  281. param.put("subtable", "highway_emergency_project_dettable");
  282. data.put("modelName", "应急养护计划月度完成情况");
  283. }else if (param.get("TABLETYPE").equals("monthly_prevention_completion")) {
  284. param.put("subtable", "highway_prevention_project_dettable");
  285. data.put("modelName", "预防养护计划月度完成情况");
  286. }else if (param.get("TABLETYPE").equals("monthly_repair_completion")) {
  287. param.put("subtable", "highway_repair_project_dettable");
  288. data.put("modelName", "修复养护计划月度完成情况");
  289. }else if (param.get("TABLETYPE").equals("monthly_special_completion")) {
  290. param.put("subtable", "highway_special_project_dettable");
  291. data.put("modelName", "专项养护计划月度完成情况");
  292. }
  293. data.put("keyStr", "num,PROJECT_NAME,CATEGORY,PROJECT_SCALE,QUANTITIES,PROJECT_COST,AUDIT_FEE,OTHER_MATTER"
  294. + ",ACTUAL_COST_1,PAY_COST_1,RATIO_1,ACTUAL_COST_2,PAY_COST_2,RATIO_2,ACTUAL_COST_3,PAY_COST_3,RATIO_3"
  295. + ",ACTUAL_COST_4,PAY_COST_4,RATIO_4,ACTUAL_COST_5,PAY_COST_5,RATIO_5,ACTUAL_COST_6,PAY_COST_6,RATIO_6"
  296. + ",ACTUAL_COST_7,PAY_COST_7,RATIO_7,ACTUAL_COST_8,PAY_COST_8,RATIO_8,ACTUAL_COST_9,PAY_COST_9,RATIO_9"
  297. + ",ACTUAL_COST_10,PAY_COST_10,RATIO_10,ACTUAL_COST_11,PAY_COST_11,RATIO_11,ACTUAL_COST_12,PAY_COST_12,RATIO_12"
  298. + ",ACTUAL_COST,PAY_COST,RATIO");
  299. String[][] funcArry = {
  300. {"percent","RATIO_1","IF(ISERROR((K#row#/H#row#)),\"\",(K#row#/H#row#))"}
  301. ,{"percent","RATIO_2","IF(ISERROR((N#row#/H#row#)),\"\",(N#row#/H#row#))"}
  302. ,{"percent","RATIO_3","IF(ISERROR((Q#row#/H#row#)),\"\",(Q#row#/H#row#))"}
  303. ,{"percent","RATIO_4","IF(ISERROR((T#row#/H#row#)),\"\",(T#row#/H#row#))"}
  304. ,{"percent","RATIO_5","IF(ISERROR((W#row#/H#row#)),\"\",(W#row#/H#row#))"}
  305. ,{"percent","RATIO_6","IF(ISERROR((Z#row#/H#row#)),\"\",(Z#row#/H#row#))"}
  306. ,{"percent","RATIO_7","IF(ISERROR((AC#row#/H#row#)),\"\",(AC#row#/H#row#))"}
  307. ,{"percent","RATIO_8","IF(ISERROR((AF#row#/H#row#)),\"\",(AF#row#/H#row#))"}
  308. ,{"percent","RATIO_9","IF(ISERROR((AI#row#/H#row#)),\"\",(AI#row#/H#row#))"}
  309. ,{"percent","RATIO_10","IF(ISERROR((AL#row#/H#row#)),\"\",(AL#row#/H#row#))"}
  310. ,{"percent","RATIO_11","IF(ISERROR((AO#row#/H#row#)),\"\",(AO#row#/H#row#))"}
  311. ,{"percent","RATIO_12","IF(ISERROR((AR#row#/H#row#)),\"\",(AR#row#/H#row#))"}
  312. ,{"sum","ACTUAL_COST","SUM(J#row#,M#row#,P#row#,S#row#,V#row#,Y#row#,AB#row#,AE#row#,AH#row#,AK#row#,AN#row#,AQ#row#)"}
  313. ,{"sum","PAY_COST","SUM(K#row#,N#row#,Q#row#,T#row#,W#row#,Z#row#,AC#row#,AF#row#,AI#row#,AL#row#,AO#row#,AR#row#)"}
  314. ,{"percent","RATIO","IF(ISERROR((AU#row#/H#row#)),\"\",(AU#row#/H#row#))"}
  315. };
  316. data.put("funcArry", funcArry);
  317. data.put("tabletype", 3);
  318. data.put("totalRange", 5);
  319. data.put("startRowIndex", 3);
  320. List<PageData> list = yjmonthProgressService.getReportInfo(param);
  321. data.put("list", list);
  322. result.add(data);
  323. return result;
  324. }
  325. }