SyjcMonthProgressController.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  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.RequestBody;
  14. import org.springframework.web.bind.annotation.RequestMapping;
  15. import org.springframework.web.bind.annotation.RequestMethod;
  16. import org.springframework.web.bind.annotation.ResponseBody;
  17. import org.springframework.web.servlet.ModelAndView;
  18. import com.zhcs.dt.controller.base.BaseController;
  19. import com.zhcs.dt.entity.Page;
  20. import com.zhcs.dt.service.information.annualPlan.DownloadZip;
  21. import com.zhcs.dt.service.information.annualPlan.MultExcelUtils;
  22. import com.zhcs.dt.service.information.monthProgress.MonthProgressManager;
  23. import com.zhcs.dt.service.information.monthProgress.SyjcMonthProgressManager;
  24. import com.zhcs.dt.service.information.monthProgress.YjMonthProgressManager;
  25. import com.zhcs.dt.util.AppUtil;
  26. import com.zhcs.dt.util.Jurisdiction;
  27. import com.zhcs.dt.util.PageData;
  28. import com.zhcs.dt.util.Tools;
  29. /**
  30. * @author yuanfei
  31. * @date 2019年2月22日
  32. * @desc 预防养护
  33. */
  34. @Controller
  35. @RequestMapping(value="/test")
  36. public class SyjcMonthProgressController extends BaseController{
  37. @Resource(name="syjcmonthProgressService")
  38. private SyjcMonthProgressManager syjcmonthProgressService;
  39. @Resource(name="monthProgressService")
  40. private MonthProgressManager monthProgressService;
  41. /**月度列表
  42. * @param page
  43. * @throws Exception
  44. */
  45. @RequestMapping(value="/list")
  46. public ModelAndView list(Page page) throws Exception{
  47. logBefore(logger, Jurisdiction.getUsername()+"应急养护月度报告");
  48. //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
  49. ModelAndView mv = this.getModelAndView();
  50. PageData pd = new PageData();
  51. pd = this.getPageData();
  52. PageData userInfo = monthProgressService.getCompanyAndRoad(Jurisdiction.getUsername().toString()); //通过username获取公司和路段
  53. //通过ROLE_ID获取角色
  54. String roleName = monthProgressService.getRoleName(userInfo.get("ROLE_ID").toString());
  55. pd = this.getPageData();
  56. String keywords = pd.getString("keywords"); //关键词检索条件
  57. if(null != keywords && !"".equals(keywords)){
  58. pd.put("keywords", keywords.trim());
  59. }
  60. if(userInfo.get("COMPANY") != null){
  61. pd.put("COMPANY", userInfo.get("COMPANY"));
  62. }
  63. //page.setPd(pd);
  64. List<PageData> varList = syjcmonthProgressService.getReportlist(pd); //列出月度报告
  65. mv.setViewName("information/monthProgress/syjc/monthProgress_list");
  66. mv.addObject("varList", varList);
  67. mv.addObject("pd", pd);
  68. mv.addObject("userInfo", userInfo);
  69. mv.addObject("roleName", roleName);
  70. mv.addObject("QX",Jurisdiction.getHC()); //按钮权限
  71. return mv;
  72. }
  73. /**去新增页面
  74. * @param
  75. * @throws Exception
  76. */
  77. @RequestMapping(value="/goAdd")
  78. public ModelAndView goAdd()throws Exception{
  79. ModelAndView mv = this.getModelAndView();
  80. PageData pd = new PageData();
  81. pd = this.getPageData();
  82. String company = pd.get("COMPANY").toString();
  83. mv.setViewName("information/monthProgress/syjc/monthProgress_add");
  84. mv.addObject("company", company);
  85. mv.addObject("msg", "save");
  86. mv.addObject("pd", pd);
  87. return mv;
  88. }
  89. /**新增报告
  90. * @param
  91. * @throws Exception
  92. */
  93. @RequestMapping(value="/saveNewReport")
  94. public ModelAndView saveNewReport() throws Exception{
  95. logBefore(logger, Jurisdiction.getUsername()+"新增预防养护月报");
  96. //List<PageData> reportList = new ArrayList<PageData>();
  97. ModelAndView mv = this.getModelAndView();
  98. PageData pd = new PageData();
  99. pd = this.getPageData();
  100. String planID = this.get32UUID();
  101. String companyid = monthProgressService.getCompanyid(pd.get("COMPANY"));
  102. pd.put("COMPANY_ID", companyid);
  103. pd.put("ID", planID);//主键
  104. pd.put("NAME", pd.get("YEAR")+"年"+pd.get("COMPANY")+"月度养护报告");
  105. pd.put("CTIME", Tools.date2Str(new Date())); //创建时间
  106. pd.put("MTIME", Tools.date2Str(new Date())); //修改时间
  107. pd.put("STATUS", "新建"); //创建时间
  108. syjcmonthProgressService.addMonthlyReport(pd); //新建月度养护报告
  109. mv.addObject("pd", pd);
  110. mv.addObject("msg","success");
  111. mv.setViewName("save_result");
  112. return mv;
  113. }
  114. /**列表
  115. * @param page
  116. * @throws Exception
  117. */
  118. @RequestMapping(value="/showTable")
  119. public ModelAndView showTable() throws Exception{
  120. logBefore(logger, Jurisdiction.getUsername()+"月度预防养护");
  121. //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
  122. ModelAndView mv = this.getModelAndView();
  123. PageData pd = new PageData();
  124. pd = this.getPageData();
  125. PageData userInfo = monthProgressService.getCompanyAndRoad(Jurisdiction.getUsername().toString()); //通过username获取公司和路段
  126. //通过ROLE_ID获取角色
  127. String roleName = monthProgressService.getRoleName(userInfo.get("ROLE_ID").toString());
  128. if("路段管理员".equalsIgnoreCase(roleName)){
  129. pd.put("ROADS", userInfo.get("ROAD").toString().split(","));
  130. }
  131. List<PageData> varList = syjcmonthProgressService.getReportInfo(pd); //获取月报相应数据
  132. mv.setViewName("information/monthProgress/syjc/testCompletion_list");
  133. mv.addObject("varList", varList);
  134. mv.addObject("pd", pd);
  135. mv.addObject("QX",Jurisdiction.getHC());
  136. return mv;
  137. }
  138. /**
  139. * 保存
  140. * @throws Exception
  141. */
  142. @RequestMapping(value = "/saveData")
  143. @ResponseBody
  144. public Object saveData(String data) throws Exception{
  145. ModelAndView mv = this.getModelAndView();
  146. PageData pd = new PageData();
  147. pd = this.getPageData();
  148. // JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
  149. JSONArray jsonarray = JSONArray.fromObject(data);
  150. Map<String,Object> map = dealWithData(pd,jsonarray);
  151. return AppUtil.returnObject(new PageData(), map);
  152. }
  153. /**
  154. * 处理新增编辑数据
  155. */
  156. @ResponseBody
  157. public Map<String,Object> dealWithData(PageData pd,JSONArray jsonarray) throws Exception{
  158. for (Object object : jsonarray) {
  159. JSONObject arrMap = JSONObject.fromObject(object);
  160. pd.put("YEAR", arrMap.get("YEAR"));
  161. pd.put("COMPANY", arrMap.get("COMPANY"));
  162. pd.put("COMPANY_ID", arrMap.get("COMPANY_ID"));
  163. pd.put("ROAD", arrMap.get("ROAD"));
  164. pd.put("ROAD_ID", arrMap.get("ROAD_ID"));
  165. pd.put("PROJECT_NAME", arrMap.get("PROJECT_NAME"));
  166. pd.put("SJWCGCL", arrMap.get("SJWCGCL"));
  167. String type = pd.get("TABLETYPE").toString();
  168. if("monthly_test_project_completion".equalsIgnoreCase(type)){
  169. pd.put("TABLE_NAME", "highway_test_project_dettable");
  170. }
  171. else if("monthly_equipment_overhaul_completion".equalsIgnoreCase(type)){
  172. pd.put("TABLE_NAME", "highway_equipment_overhaul_project_dettable");
  173. }
  174. syjcmonthProgressService.updateWCQKRecord(pd);
  175. syjcmonthProgressService.deleteMonthRecord(pd);
  176. for (int i = 1; i < 13; i++) {
  177. pd.put("MONTH",i);
  178. if ((!arrMap.get("ACTUAL_COST_"+i).equals(""))||(!arrMap.get("PAY_COST_"+i).equals(""))
  179. ||(!arrMap.get("ACTUAL_QUANTITIES_"+i).equals(""))) {
  180. pd.put("ACTUAL_QUANTITIES", arrMap.get("ACTUAL_QUANTITIES_"+i).equals("")?null:arrMap.get("ACTUAL_QUANTITIES_"+i));
  181. pd.put("ACTUAL_COST", arrMap.get("ACTUAL_COST_"+i).equals("")?null:arrMap.get("ACTUAL_COST_"+i));
  182. pd.put("PAY_COST", arrMap.get("PAY_COST_"+i).equals("")?null:arrMap.get("PAY_COST_"+i));
  183. pd.put("RATIO", arrMap.get("RATIO_"+i).equals("")?null:arrMap.get("RATIO_"+i));
  184. syjcmonthProgressService.insertMonthRecord(pd);
  185. }
  186. }
  187. }
  188. Map<String,Object> map = new HashMap<String,Object>();
  189. map.put("msg","success");
  190. return map;
  191. }
  192. /**删除月度报告
  193. * @param
  194. * @throws Exception
  195. */
  196. @RequestMapping(value="/delMonthlyReport")
  197. @ResponseBody
  198. public Object delMonthlyReport()throws Exception{
  199. Map<String,String> map = new HashMap<String,String>();
  200. PageData pd = new PageData();
  201. pd = this.getPageData();
  202. syjcmonthProgressService.delMonthlyReport(pd); //删除月度报告
  203. syjcmonthProgressService.delMonthlyCompletion(pd); //删除对应月度完成情况
  204. map.put("result", "success");
  205. return AppUtil.returnObject(new PageData(), map);
  206. }
  207. @RequestMapping("/excelExport")
  208. public String excelExport(HttpServletRequest request,HttpServletResponse response) throws Exception{
  209. String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
  210. ModelAndView mv = this.getModelAndView();
  211. PageData pd = new PageData();
  212. pd = this.getPageData();
  213. List<String> paths = new ArrayList<String>();
  214. List<String> result = new ArrayList<String>();
  215. List<PageData> exceldata = setExcelData(pd);
  216. MultExcelUtils ex = new MultExcelUtils();
  217. String excelpath = ex.exportExcel(pd.getString("exportname")+".xlsx",path,response,exceldata);
  218. result.add(excelpath);
  219. //zip压缩下载
  220. DownloadZip.downloadZip(response,request,result,path);
  221. return null;
  222. }
  223. public List<PageData> setExcelData(PageData param) throws Exception {
  224. List<PageData> result = new ArrayList<PageData>();
  225. PageData data = new PageData();
  226. if (param.get("TABLETYPE").equals("monthly_test_project_completion")) {
  227. param.put("subtable", "highway_test_project_dettable");
  228. data.put("modelName", "试验检测项目月度完成情况");
  229. data.put("keyStr", "num,PROJECT_NAME,CATEGORY,CONTENT,PROJECT_COST,AUDIT_FEE,AUDIT_MAKER"
  230. + ",ACTUAL_COST_1,PAY_COST_1,RATIO_1,ACTUAL_COST_2,PAY_COST_2,RATIO_2,ACTUAL_COST_3,PAY_COST_3,RATIO_3"
  231. + ",ACTUAL_COST_4,PAY_COST_4,RATIO_4,ACTUAL_COST_5,PAY_COST_5,RATIO_5,ACTUAL_COST_6,PAY_COST_6,RATIO_6"
  232. + ",ACTUAL_COST_7,PAY_COST_7,RATIO_7,ACTUAL_COST_8,PAY_COST_8,RATIO_8,ACTUAL_COST_9,PAY_COST_9,RATIO_9"
  233. + ",ACTUAL_COST_10,PAY_COST_10,RATIO_10,ACTUAL_COST_11,PAY_COST_11,RATIO_11,ACTUAL_COST_12,PAY_COST_12,RATIO_12"
  234. + ",ACTUAL_COST,PAY_COST,RATIO");
  235. String[][] funcArry = {
  236. {"percent","RATIO_1","IF(ISERROR((J#row#/G#row#)),\"\",(J#row#/G#row#))"}
  237. ,{"percent","RATIO_2","IF(ISERROR((M#row#/G#row#)),\"\",(M#row#/G#row#))"}
  238. ,{"percent","RATIO_3","IF(ISERROR((P#row#/G#row#)),\"\",(P#row#/G#row#))"}
  239. ,{"percent","RATIO_4","IF(ISERROR((S#row#/G#row#)),\"\",(S#row#/G#row#))"}
  240. ,{"percent","RATIO_5","IF(ISERROR((V#row#/G#row#)),\"\",(V#row#/G#row#))"}
  241. ,{"percent","RATIO_6","IF(ISERROR((Y#row#/G#row#)),\"\",(Y#row#/G#row#))"}
  242. ,{"percent","RATIO_7","IF(ISERROR((AB#row#/G#row#)),\"\",(AB#row#/G#row#))"}
  243. ,{"percent","RATIO_8","IF(ISERROR((AE#row#/G#row#)),\"\",(AE#row#/G#row#))"}
  244. ,{"percent","RATIO_9","IF(ISERROR((AH#row#/G#row#)),\"\",(AH#row#/G#row#))"}
  245. ,{"percent","RATIO_10","IF(ISERROR((AK#row#/G#row#)),\"\",(AK#row#/G#row#))"}
  246. ,{"percent","RATIO_11","IF(ISERROR((AN#row#/G#row#)),\"\",(AN#row#/G#row#))"}
  247. ,{"percent","RATIO_12","IF(ISERROR((AQ#row#/G#row#)),\"\",(AQ#row#/G#row#))"}
  248. ,{"sum","ACTUAL_COST","SUM(I#row#,L#row#,O#row#,R#row#,U#row#,X#row#,AA#row#,AD#row#,AG#row#,AJ#row#,AM#row#,AP#row#)"}
  249. ,{"sum","PAY_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#)"}
  250. ,{"percent","RATIO","IF(ISERROR((AT#row#/G#row#)),\"\",(AT#row#/G#row#))"}
  251. };
  252. data.put("funcArry", funcArry);
  253. data.put("tabletype", 3);
  254. data.put("totalRange", 4);
  255. data.put("startRowIndex", 3);
  256. }
  257. List<PageData> list = syjcmonthProgressService.getReportInfo(param);
  258. data.put("list", list);
  259. result.add(data);
  260. return result;
  261. }
  262. }