AnnualDailyCompController.java 118 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593
  1. package com.zhcs.dt.controller.information.annualPlan;
  2. import java.io.File;
  3. import java.io.IOException;
  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 java.util.Map.Entry;
  10. import java.util.Set;
  11. import java.util.UUID;
  12. import javax.annotation.Resource;
  13. import javax.servlet.http.HttpServletRequest;
  14. import javax.servlet.http.HttpServletResponse;
  15. import net.sf.json.JSONArray;
  16. import net.sf.json.JSONObject;
  17. import oracle.net.aso.p;
  18. import org.apache.commons.io.FileUtils;
  19. import org.apache.commons.lang.StringUtils;
  20. import org.springframework.stereotype.Controller;
  21. import org.springframework.web.bind.annotation.RequestMapping;
  22. import org.springframework.web.bind.annotation.ResponseBody;
  23. import org.springframework.web.multipart.MultipartFile;
  24. import org.springframework.web.servlet.ModelAndView;
  25. import com.zhcs.dt.controller.base.BaseController;
  26. import com.zhcs.dt.service.information.annualPlan.AnnualPlanManager;
  27. import com.zhcs.dt.service.information.annualPlan.DownloadZip;
  28. import com.zhcs.dt.service.information.annualPlan.ImoprtJson;
  29. import com.zhcs.dt.service.information.annualPlan.ImportDoc;
  30. import com.zhcs.dt.service.information.annualPlan.MultExcelUtils;
  31. import com.zhcs.dt.service.information.annualPlan.WordUtils;
  32. import com.zhcs.dt.service.information.annualPlan.impl.AnnualDailyCompService;
  33. import com.zhcs.dt.util.AppUtil;
  34. import com.zhcs.dt.util.Jurisdiction;
  35. import com.zhcs.dt.util.PageData;
  36. import com.zhcs.dt.util.Tools;
  37. /**
  38. * 类名称:年度日常养护计划完成情况
  39. */
  40. @Controller
  41. @RequestMapping(value="/annualDailyComp")
  42. class AnnualDailyCompController extends BaseController {
  43. @Resource(name="annualDailyCompService")
  44. private AnnualDailyCompService annualDailyCompService;
  45. @Resource(name="annualPlanService")
  46. private AnnualPlanManager annualPlanService;
  47. private ShowTableRecodUtil showTableRecodUtil = new ShowTableRecodUtil();
  48. private int actulItemIndex = 0;
  49. /**显示、编辑子表格
  50. * @param
  51. * @throws Exception
  52. */
  53. @RequestMapping(value="/showTableRecod")
  54. public ModelAndView showTableRecod()throws Exception{
  55. ModelAndView mv = this.getModelAndView();
  56. PageData pd = new PageData();
  57. pd = this.getPageData();
  58. int viewType = setViewType(pd.getString("TABLETYPE"));
  59. List<PageData> varList = new ArrayList<PageData>();
  60. PageData monPlanList = new PageData();
  61. String name = pd.getString("NAME");
  62. String projectName = "";
  63. if(name.contains("---")){
  64. projectName = name.split("---")[1];
  65. }
  66. pd.put("PROJECT_NAME", projectName);
  67. if (viewType == 1 || viewType == 2) varList = showTableRecodUtil.showTableRecod(annualDailyCompService, pd);
  68. else if (viewType == 3){
  69. varList = annualDailyCompService.showTableRecod2(pd);
  70. monPlanList = annualDailyCompService.getMonPlan(pd);
  71. }
  72. String mode = "edit";
  73. if (varList == null || varList.size() == 0) {
  74. //设置查询oa_department的动态表名
  75. pd.put("table", "oa_department_"+pd.getString("YEAR").toString());
  76. if (viewType == 1) varList = annualDailyCompService.showRoad(pd);
  77. else if (viewType == 3) {
  78. if (pd.get("TABLETYPE").equals("highway_prevention_project_dettable")
  79. ||pd.get("TABLETYPE").equals("highway_repair_project_dettable")
  80. ||pd.get("TABLETYPE").equals("highway_test_project_dettable")
  81. ||pd.get("TABLETYPE").equals("highway_emergency_project_dettable")
  82. ||pd.get("TABLETYPE").equals("highway_scientific_project_dettable")
  83. ||pd.get("TABLETYPE").equals("highway_special_project_dettable")) {
  84. List<PageData> sublist = new ArrayList<PageData>();
  85. PageData nulldata = new PageData();
  86. nulldata.put("ITEM_NAME", "");
  87. nulldata.put("UNIT", "");
  88. nulldata.put("UNIT_PRICE", "");
  89. nulldata.put("NUMBER", "");
  90. nulldata.put("TOTAL_COST", "");
  91. for (int i = 0; i < 3; i++) {
  92. sublist.add(nulldata);
  93. }
  94. mv.addObject("sublist", sublist);
  95. mv.addObject("listSize", 6);
  96. }
  97. }
  98. mode = "add";
  99. }else if (viewType == 2){
  100. mv.addObject("dataMap", JSONObject.fromObject(varList.get(0)));
  101. }else if (viewType == 3){
  102. mv.addObject("dataMap", JSONObject.fromObject(varList.get(0)));
  103. if (pd.get("TABLETYPE").equals("highway_prevention_project_dettable")
  104. ||pd.get("TABLETYPE").equals("highway_repair_project_dettable")
  105. ||pd.get("TABLETYPE").equals("highway_special_project_dettable")
  106. ||pd.get("TABLETYPE").equals("highway_emergency_project_dettable")
  107. ||pd.get("TABLETYPE").equals("highway_test_project_dettable")
  108. ||pd.get("TABLETYPE").equals("highway_scientific_project_dettable")) {
  109. pd.put("PROJECT_NAME", varList.get(0).get("PROJECT_NAME"));
  110. pd.put("subtable", pd.get("TABLETYPE")+"_cost");
  111. List<PageData> sublist = annualDailyCompService.wordListRecorde(pd);
  112. // PageData nulldata = new PageData();
  113. // nulldata.put("ITEM_NAME", "");
  114. // nulldata.put("UNIT", "");
  115. // nulldata.put("UNIT_PRICE", "");
  116. // nulldata.put("NUMBER", "");
  117. // nulldata.put("TOTAL_COST", "");
  118. // int size = 3-sublist.size();
  119. // for (int i = 0; i < size; i++) {
  120. // sublist.add(nulldata);
  121. // }
  122. int listSize = sublist.size()+3;
  123. mv.addObject("sublist", JSONArray.fromObject(sublist));
  124. mv.addObject("listSize", listSize);
  125. }
  126. }
  127. JSONArray arr = JSONArray.fromObject(varList);
  128. mv.addObject("varList", arr);
  129. mv.addObject("monPlanList", monPlanList==null?pd:JSONObject.fromObject(monPlanList));
  130. pd.put("mode", mode);
  131. mv.setViewName("information/annualPlan/annualTableRecord/"+pd.getString("TABLETYPE"));
  132. mv.addObject("pd", pd);
  133. mv.addObject("QX",Jurisdiction.getHC()); //按钮权限
  134. return mv;
  135. }
  136. @RequestMapping(value="/saveData")
  137. @ResponseBody
  138. public Object saveData(String data,String TABLETYPE,String COMPANY_ID,String YEAR,String ROAD_ID,String COMPANY,String ROAD) throws Exception{
  139. ModelAndView mv = this.getModelAndView();
  140. PageData pd = new PageData();
  141. pd.put("data", data);
  142. pd.put("TABLETYPE", TABLETYPE);
  143. pd.put("COMPANY_ID", COMPANY_ID);
  144. pd.put("YEAR", YEAR);
  145. pd.put("ROAD_ID", ROAD_ID);
  146. pd.put("COMPANY", COMPANY);
  147. pd.put("ROAD", ROAD);
  148. JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
  149. int viewType = setViewType(pd.getString("TABLETYPE"));
  150. List<PageData> varList = new ArrayList<PageData>();
  151. if (viewType == 1){
  152. varList = annualDailyCompService.hasTableRecod(pd);
  153. }
  154. else if (viewType == 2){
  155. varList = annualDailyCompService.hasTableRecod2(pd);
  156. }
  157. Map<String,Object> map = dealWithData(pd,varList,jsonarray);
  158. if(pd.getString("TABLETYPE").equals("highway_annual_plan_sumtable")){
  159. //需要把预备费合入预备费表highway_reserve_fees_sumtable_total
  160. if (jsonarray.size()>0) {
  161. Object reserve = jsonarray.getJSONObject(0).get("RESERVE_DESIGN");
  162. pd.put("RESERVE_DESIGN", reserve);
  163. }
  164. dealReserveRecod(pd);
  165. }
  166. return AppUtil.returnObject(new PageData(), map);
  167. }
  168. private void dealReserveRecod(PageData pd) throws Exception{
  169. pd.put("TABLETYPE", "highway_reserve_fees_sumtable_total");
  170. List<PageData> varList = annualDailyCompService.hasTableRecod2(pd);
  171. if((varList == null || varList.size() == 0) && (pd.get("RESERVE_DESIGN") != null && !"".equals(pd.get("RESERVE_DESIGN")))){
  172. annualDailyCompService.saveRecodToReserve(pd);
  173. }else{
  174. if("".equals(pd.get("RESERVE_DESIGN"))){
  175. pd.put("RESERVE_DESIGN",null);
  176. }
  177. annualDailyCompService.updateRecodToReserve(pd);
  178. }
  179. }
  180. @RequestMapping(value="/saveDocData")
  181. @ResponseBody
  182. public Object saveDocData(String data,String dataYDFJ) throws Exception{
  183. ModelAndView mv = this.getModelAndView();
  184. PageData pd = new PageData();
  185. pd = this.getPageData();
  186. JSONArray jsonarray = JSONArray.fromObject(data);
  187. Map<String,Object> map = new HashMap<String,Object>();
  188. // JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
  189. List<PageData> varList = new ArrayList<PageData>();
  190. if (pd.get("TABLETYPE").equals("highway_technica_statable")||pd.get("TABLETYPE").equals("highway_traiffcinfo_sumtable")) {
  191. varList = annualDailyCompService.hasTableRecod2(pd);
  192. }else {
  193. varList = annualDailyCompService.hasTableRecod3(pd);
  194. }
  195. if(!(pd.get("TABLETYPE").equals("highway_technica_statable") || pd.get("TABLETYPE").equals("highway_traiffcinfo_sumtable"))
  196. && pd.get("mode").equals("add")){
  197. if(varList.size() >0){
  198. map.put("msg", "已存在相同立项表");
  199. return AppUtil.returnObject(new PageData(), map);
  200. }else{
  201. pd.put("CTIME", Tools.date2Str(new Date())); //创建时间
  202. pd.put("MTIME", Tools.date2Str(new Date())); //修改时间
  203. pd.put("STATUS", "编制中"); //修改时间
  204. pd.put("COMPILER", Jurisdiction.getUsername());
  205. pd.put("COMPILE_TIME", Tools.date2Str(new Date()));
  206. List<PageData> tableVarList = annualDailyCompService.hasTableRecodFormTableList(pd); //查找annual_table_list是否已存在该立项表记录
  207. if(tableVarList.size() == 0){
  208. annualPlanService.addNewTableInfo(pd); //insert annual_table_list新增立项详表
  209. }
  210. }
  211. }
  212. JSONArray dataArray = new JSONArray();
  213. if (jsonarray.size() > 0 && jsonarray != null) {
  214. dataArray.add(jsonarray.get(0));
  215. }
  216. map = dealWithData(pd,varList,dataArray);
  217. if (jsonarray.size() > 0 && map.get("msg").equals("success") && !pd.get("TABLETYPE").equals("highway_scientific_project_dettable")
  218. && !pd.get("TABLETYPE").equals("highway_technica_statable") && !pd.get("TABLETYPE").equals("highway_traiffcinfo_sumtable")) {
  219. JSONObject jsonmap = JSONObject.fromObject(dataYDFJ);
  220. map = dealWithYDFJData(pd,jsonmap);
  221. }
  222. if (jsonarray.size() > 1 && map.get("msg").equals("success")) {
  223. JSONArray sublistArray = jsonarray.discard(0);
  224. pd.put("TABLETYPE", pd.get("TABLETYPE")+"_cost");
  225. map = dealWithSubListData(pd,sublistArray);
  226. }
  227. return AppUtil.returnObject(new PageData(), map);
  228. }
  229. /**
  230. * 处理新增编辑数据
  231. */
  232. @ResponseBody
  233. public Map<String,Object> dealWithData(PageData pd,List<PageData> varList,JSONArray jsonarray) throws Exception{
  234. Map<String,Object> map = new HashMap<String,Object>();
  235. try {
  236. for (Object object : jsonarray) {
  237. JSONObject arrMap = JSONObject.fromObject(object);
  238. Set entryarray = arrMap.entrySet();
  239. ArrayList<Object> keyarray = new ArrayList<Object>();
  240. ArrayList<Object> valuearray = new ArrayList<Object>();
  241. for (Object entry : entryarray) {
  242. Object[] arr = entry.toString().split("=");
  243. boolean saveFlag = true;
  244. //编辑
  245. if (varList != null && varList.size() != 0)
  246. saveFlag = !"ROAD".equals(arr[0])&&!"YEAR".equals(arr[0])&&!"COMPANY".equals(arr[0])
  247. &&!"ROAD_ID".equals(arr[0])&&!"COMPANY_ID".equals(arr[0])&&!"PROJECT_NAME".equals(arr[0]);
  248. saveFlag = saveFlag && !"STATUS".equals(arr[0]);
  249. if (saveFlag) {
  250. keyarray.add(arr[0]);
  251. if (arr.length > 1) {
  252. valuearray.add(arr[1]);
  253. }else {
  254. valuearray.add(null);
  255. }
  256. }
  257. }
  258. pd.put("KEYS", StringUtils.join(keyarray.toArray(), ","));
  259. pd.put("KEYARRAY", keyarray);
  260. pd.put("VALUEARRAY", valuearray);
  261. pd.put("ROAD_ID", arrMap.get("ROAD_ID"));
  262. pd.put("PROJECT_NAME", arrMap.get("PROJECT_NAME"));
  263. pd.put("viewtype", setViewType(pd.getString("TABLETYPE")));
  264. if (pd.getString("TABLETYPE").equals("highway_technica_statable")||pd.getString("TABLETYPE").equals("highway_traiffcinfo_sumtable"))
  265. pd.put("viewtype", 1);
  266. //新增
  267. if (varList == null || varList.size() == 0) annualDailyCompService.saveTableRecod(pd);
  268. //编辑
  269. else if (keyarray.size() > 0) annualDailyCompService.editTableRecod(pd);
  270. }
  271. map.put("msg","success");
  272. } catch (Exception e) {
  273. map.put("msg","保存失败!");
  274. logger.warn(e);
  275. }
  276. return map;
  277. }
  278. /**
  279. * 处理立项表子表新增编辑数据
  280. */
  281. @ResponseBody
  282. public Map<String,Object> dealWithSubListData(PageData pd,JSONArray jsonarray) throws Exception{
  283. List<Map<String, String>> idlist = new ArrayList<Map<String,String>>();
  284. //List<String> SubListid = annualDailyCompService.selectSubListIdByRoad(pd);
  285. List<String> delSubListuid = new ArrayList<String>();
  286. for (Object object : jsonarray) {
  287. JSONObject arrMap = JSONObject.fromObject(object);
  288. Set entryarray = arrMap.entrySet();
  289. boolean flag = true;
  290. /*if(SubListid.contains(arrMap.get("ID"))){
  291. //TODU
  292. }*/
  293. if (!pd.get("TABLETYPE").equals("highway_scientific_project_dettable_cost")) {
  294. if ((!arrMap.get("ID").equals(""))&&arrMap.get("ITEM_NAME").equals("")&&arrMap.get("UNIT").equals("")
  295. &&arrMap.get("UNIT_PRICE").equals("")&&arrMap.get("NUMBER").equals("")){
  296. arrMap.put("TABLETYPE", pd.get("TABLETYPE"));
  297. annualDailyCompService.deleteSubListDataById(arrMap);
  298. annualDailyCompService.deleteRecodInfo(arrMap);
  299. flag = false;
  300. }else if (arrMap.get("ITEM_NAME").equals("")) {
  301. flag = false;
  302. }
  303. }else if ((!arrMap.get("ID").equals(""))&&arrMap.get("SUBJECT").equals("")&&arrMap.get("COSET").equals("")
  304. &&arrMap.get("EXPENDITURE_SUBJECT").equals("")&&arrMap.get("EXPENDITURE_COST").equals("")) {
  305. arrMap.put("TABLETYPE", pd.get("TABLETYPE"));
  306. annualDailyCompService.deleteSubListDataById(arrMap);
  307. flag = false;
  308. }else if (arrMap.get("SUBJECT").equals("")&&arrMap.get("COSET").equals("")
  309. &&arrMap.get("EXPENDITURE_SUBJECT").equals("")&&arrMap.get("EXPENDITURE_COST").equals("")) {
  310. flag = false;
  311. }
  312. if (flag) {
  313. ArrayList<Object> keyarray = new ArrayList<Object>();
  314. ArrayList<Object> valuearray = new ArrayList<Object>();
  315. for (Object entry : entryarray) {
  316. Object[] arr = entry.toString().split("=");
  317. if (arr.length > 1) {
  318. boolean saveFlag = true;
  319. //编辑
  320. if (!arrMap.get("ID").equals(""))
  321. saveFlag = !"ROAD".equals(arr[0])&&!"YEAR".equals(arr[0])&&!"COMPANY".equals(arr[0])&&!"ROAD_ID".equals(arr[0])
  322. &&!"COMPANY_ID".equals(arr[0])&&!"ID".equals(arr[0])&&!"PROJECT_NAME".equals(arr[0]);
  323. else saveFlag = !"ID".equals(arr[0]);
  324. if (saveFlag) {
  325. keyarray.add(arr[0]);
  326. if(arr.length>2){
  327. String valueStr="";
  328. for(int k=1;k<arr.length;k++){
  329. valueStr+="="+arr[k];
  330. }
  331. valuearray.add(valueStr.subSequence(1, valueStr.length()));
  332. System.out.println(valueStr);
  333. }
  334. else{
  335. valuearray.add(arr[1]);
  336. }
  337. }
  338. }
  339. }
  340. if (arrMap.get("ID").equals("")){
  341. String id = UUID.randomUUID().toString().replaceAll("-", "");
  342. keyarray.add("ID");
  343. valuearray.add(id);
  344. Map<String, String> idmap = new HashMap<String, String>();
  345. idmap.put("id", id);
  346. idmap.put("name", (String)arrMap.get("ITEM_NAME"));
  347. idlist.add(idmap);
  348. }
  349. pd.put("KEYS", StringUtils.join(keyarray.toArray(), ","));
  350. pd.put("KEYARRAY", keyarray);
  351. pd.put("VALUEARRAY", valuearray);
  352. pd.put("ROAD_ID", arrMap.get("ROAD_ID"));
  353. pd.put("ID", arrMap.get("ID"));
  354. //新增
  355. if (arrMap.get("ID").equals("")) annualDailyCompService.saveSubListData(pd);
  356. //编辑
  357. else if (keyarray.size() > 0) annualDailyCompService.editSubListData(pd);
  358. }
  359. }
  360. Map<String,Object> map = new HashMap<String,Object>();
  361. map.put("msg","success");
  362. map.put("idlist",idlist);
  363. return map;
  364. }
  365. /**
  366. * 处理立项表进度月度分解新增编辑数据
  367. */
  368. @ResponseBody
  369. public Map<String,Object> dealWithYDFJData(PageData pd,JSONObject jsonmap) throws Exception{
  370. annualDailyCompService.deleteMonthRecord(pd);
  371. for (int i = 1; i < 13; i++) {
  372. pd.put("MONTH",i);
  373. if ((!jsonmap.get("PLAN_COST_"+i).equals(""))||(!jsonmap.get("PLAN_QUANTITIES_"+i).equals(""))) {
  374. pd.put("PLAN_COST", jsonmap.get("PLAN_COST_"+i).equals("")?null:jsonmap.get("PLAN_COST_"+i));
  375. pd.put("PLAN_QUANTITIES", jsonmap.get("PLAN_QUANTITIES_"+i).equals("")?null:jsonmap.get("PLAN_QUANTITIES_"+i));
  376. annualDailyCompService.insertMonthRecord(pd);
  377. }
  378. }
  379. Map<String,Object> map = new HashMap<String,Object>();
  380. map.put("msg","success");
  381. return map;
  382. }
  383. @RequestMapping(value="/saveRecordInfo")
  384. @ResponseBody
  385. public Object saveRecordInfo(String recordData,String recordBeforeValue) throws Exception{
  386. ModelAndView mv = this.getModelAndView();
  387. PageData pd = new PageData();
  388. pd = this.getPageData();
  389. //{"102":{"PLAN_COST":"212"},"104":{"PLAN_COST":"44456"}}
  390. JSONObject datamap = JSONObject.fromObject(recordData);
  391. JSONObject datamapb = JSONObject.fromObject(recordBeforeValue);
  392. // JSONObject datamap = JSONObject.fromObject(pd.get("recordData"));
  393. // JSONObject datamapb = JSONObject.fromObject(pd.get("recordBeforeValue"));
  394. //[102={"PLAN_COST":" 00"}, 104={"PLAN_COST":"777"}]
  395. Set entryarray = datamap.entrySet();
  396. Set entryarrayb = datamapb.entrySet();
  397. // pd.put("MODIFIER", "admin");
  398. pd.put("MODIFIER", Jurisdiction.getU_name());
  399. for (Object entry : entryarray) {
  400. //102={"PLAN_COST":" 00"}
  401. Object[] arr = entry.toString().split("=");
  402. pd.put(pd.get("type"), arr[0]);
  403. if(arr.length>2){
  404. String valueStr="";
  405. for(int k=1;k<arr.length;k++){
  406. valueStr+="="+arr[k];
  407. }
  408. arr[1] = valueStr.subSequence(1, valueStr.length());
  409. }
  410. JSONObject columnmap = JSONObject.fromObject(arr[1]);
  411. Set columnentry = columnmap.entrySet();
  412. for (Object column : columnentry) {
  413. Object[] columnarr = column.toString().split("=");
  414. pd.put("TABLE_FIELDS", columnarr[0]);
  415. if(columnarr.length>2){
  416. String columnStr="";
  417. for(int k=1;k<columnarr.length;k++){
  418. columnStr+="="+columnarr[k];
  419. }
  420. columnarr[1] = columnStr.subSequence(1, columnStr.length());
  421. }
  422. if (columnarr.length > 1) pd.put("AFTER", columnarr[1]);
  423. else pd.put("AFTER", null);
  424. for (Object entryb : entryarrayb) {
  425. if (entryb.toString().indexOf((String) arr[0]) == 0) {
  426. Object[] arrb = entryb.toString().split("=");
  427. if(arrb.length>2){
  428. String arrbStr="";
  429. for(int k=1;k<arrb.length;k++){
  430. arrbStr+="="+arrb[k];
  431. }
  432. arrb[1] = arrbStr.subSequence(1, arrbStr.length());
  433. }
  434. JSONObject columnmapb = JSONObject.fromObject(arrb[1]);
  435. Set columnentryb = columnmapb.entrySet();
  436. for (Object columnb : columnentryb) {
  437. if (columnb.toString().indexOf((String) columnarr[0]) == 0) {
  438. Object[] columnarrb = columnb.toString().split("=");
  439. if(columnarrb.length>2){
  440. String columnarrbStr="";
  441. for(int k=1;k<columnarrb.length;k++){
  442. columnarrbStr+="="+columnarrb[k];
  443. }
  444. columnarrb[1] = columnarrbStr.subSequence(1, columnarrbStr.length());
  445. }
  446. pd.put("BEFORE", columnarrb[1]);
  447. break;
  448. }
  449. }
  450. break;
  451. }
  452. }
  453. annualDailyCompService.insertRecodInfo(pd);
  454. }
  455. }
  456. Map<String,Object> map = new HashMap<String,Object>();
  457. map.put("msg","success");
  458. return AppUtil.returnObject(new PageData(), map);
  459. }
  460. @RequestMapping(value="/showRecodInfo")
  461. @ResponseBody
  462. public Object showRecodInfo() throws Exception{
  463. PageData pd = new PageData();
  464. pd = this.getPageData();
  465. // pd.put("MODIFIER", "admin");
  466. Map<String,Object> map = new HashMap<String,Object>();
  467. List<PageData> rocordInfoList = annualDailyCompService.showRecodInfo(pd);
  468. JSONArray rocordInfoListarr = JSONArray.fromObject(rocordInfoList);
  469. map.put("rocordInfoList", rocordInfoList);
  470. return AppUtil.returnObject(new PageData(), map);
  471. }
  472. //多sheet
  473. // @RequestMapping(value="/export")
  474. // @ResponseBody
  475. // public ModelAndView export(HttpServletRequest request, HttpServletResponse response) throws Exception {
  476. // ModelAndView mv = this.getModelAndView();
  477. // PageData pd = new PageData();
  478. // pd = this.getPageData();
  479. // List<PageData> exceldata = setMultExcelData(pd);
  480. // String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
  481. // MultExcelUtils ex = new MultExcelUtils();
  482. // ex.exportExcel("高管中心数据.xlsx",path,response,exceldata);
  483. // return mv;
  484. // }
  485. //单sheet
  486. // @RequestMapping(value="/export")
  487. // @ResponseBody
  488. // public ModelAndView export(HttpServletRequest request, HttpServletResponse response) throws Exception {
  489. // ModelAndView mv = this.getModelAndView();
  490. // PageData pd = new PageData();
  491. // pd = this.getPageData();
  492. // List<PageData> list = annualDailyCompService.showTableRecod(pd);
  493. // String fileName = "单位日常养护计划完成情况汇总表.xlsx";
  494. // String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
  495. // ExcelUtils ex = new ExcelUtils();
  496. // ex.exportExcel(fileName, path, response, list, (String)pd.get("keyStr"));
  497. // return mv;
  498. // }
  499. /**
  500. * 计划
  501. * @param param
  502. * @return
  503. * @throws Exception
  504. */
  505. public List<PageData> setPlanMultExcelData(PageData param) throws Exception {
  506. List<PageData> result = new ArrayList<PageData>();
  507. String[] modelNames = {
  508. "高速公路预备费使用情况汇总表","高速公路年度养护计划汇总表","高速公路日常养护计划统计表",
  509. //分报告
  510. "高速公路预防养护计划统计表","高速公路修复养护计划统计表","高速公路专项养护计划统计表",
  511. "高速公路试验检测项目计划统计表","高速公路科研项目计划统计表","高速公路设备大修项目计划统计表"
  512. //无模板
  513. ,"高速公路养护质量目标表(SRI)","高速公路养护质量目标表(PWI)"
  514. };
  515. String[] keyStrs = {
  516. "","","",
  517. //分报告
  518. "PROJECT_NAME,PROJECT_TYPE,SCALE,QUANTITIES,ESTIMATION,REMARKS"//1
  519. ,"PROJECT_NAME,PROJECT_TYPE,SCALE,QUANTITY,ESTIMATION,REMARKS"//2
  520. ,"PROJECT_NAME,QUANTITIES,PROJECT_COST,OTHER_MATTER"//9
  521. ,"PROJECT_NAME,PROJECT_TYPE,CONTENTS,COST_ESTIMAT,REMARKS"//7
  522. ,"PROJECT_NAME,PROJECT_TYPE,RESEARCH_CONTENTS,COST_ESTIMAT,REMARKS"//3
  523. ,"PROJECT_NAME,PROJECT_TYPE,PROJECT_DESCRIBE,ESTIMATE_COST,REMARKS" //5
  524. //无模板
  525. ,"",""
  526. };
  527. String[] tableNames = {
  528. "highway_reserve_fees_sumtable","highway_annual_plan_sumtable","highway_daily_plan_statable",
  529. //分报告
  530. "highway_prevention_plan_statable","highway_repair_plan_statable","highway_special_plan_statable","highway_test_plan_statable",
  531. "highway_scientific_plan_statable",
  532. "highway_equipment_overhaul_plan_statable"
  533. //无模板
  534. ,"highway_quality_goals_table","highway_quality_goals_table"
  535. };
  536. int[] startRowIndexs = {0,0,0,3,3,3,3,3,3,0,0};
  537. int[] tabletype = {0,0,0,2,2,2,2,2,2,0,0};
  538. int[] totalRange = {0,0,0,4,4,2,3,3,3,0,0};
  539. String[][][] funcArrys = {
  540. {},{},{},
  541. //分报告
  542. {},{},{},{},{},{}
  543. //无模板
  544. ,{},{}
  545. };
  546. PageData pd = new PageData();
  547. pd.put("COMPANY_ID", param.get("COMPANY_ID"));
  548. pd.put("ROAD_ID", param.get("ROAD_ID"));
  549. pd.put("ROAD", param.get("ROAD"));
  550. for (int i = 0; i < tableNames.length; i++) {
  551. PageData data = new PageData();
  552. data.put("modelName", modelNames[i]);
  553. data.put("keyStr", keyStrs[i]);
  554. data.put("startRowIndex", startRowIndexs[i]);
  555. data.put("funcArry", funcArrys[i]);
  556. data.put("tabletype", tabletype[i]);
  557. data.put("totalRange", totalRange[i]);
  558. pd.put("TABLETYPE", tableNames[i]);
  559. pd.put("YEAR", param.get("YEAR"));
  560. int viewType = setViewType(pd.getString("TABLETYPE"));
  561. List<PageData> list = new ArrayList<PageData>();
  562. if (viewType == 1 || viewType == 2) list = showTableRecodUtil.showTableRecod(annualDailyCompService, pd);
  563. else if (viewType == 3) list = annualDailyCompService.showTableRecod2(pd);
  564. // List<PageData> list = annualDailyCompService.selectAllRecod(pd);
  565. // List<PageData> list = annualDailyCompService.exportTableRecod(pd);
  566. data.put("list", list);
  567. data.put("pd", pd);
  568. result.add(data);
  569. }
  570. return result;
  571. }
  572. /**
  573. * 完成情况 excel 数据准备
  574. * @param param
  575. * @return
  576. * @throws Exception
  577. */
  578. public List<PageData> setCompleteMultExcelData(PageData param) throws Exception {
  579. List<PageData> result = new ArrayList<PageData>();
  580. String[] modelNames = {
  581. "高速公路养护计划完成情况汇总表","高速公路日常养护计划完成情况汇总表","高速公路日常养护计划完成情况详表"
  582. ,"高速公路预防养护计划完成情况汇总表","高速公路修复养护计划完成情况汇总表","高速专项养护计划完成情况汇总表"
  583. ,"高速公路试验检测项目计划完成情况汇总表","高速公路科研项目计划完成情况汇总表","高速公路设备大修项目计划完成情况汇总表"
  584. };
  585. String[] keyStrs = {
  586. "","",""
  587. ,"PROJECT_NAME,PROJECT_TYPE,SCALE,PLAN_QUANTITIES,PLAN_COST,ACTUAL_QUANTITIES,ACTUAL_COST,COMPLETE_RATIO,REMARKS"
  588. ,"PROJECT_NAME,PROJECT_TYPE,SCALE,PLAN_QUANTITIES,PLAN_COST,ACTUAL_QUANTITIES,ACTUAL_COST,COST_COMPLETE_RATIO,REMARKS"
  589. ,"SPECIAL_PROJECT_NAME,PLAN_COST,ACTUAL_COST,COST_COMPLETE_RATIO,COMPLETE_DESCRIBE,REMARKS"
  590. ,"PROJECT_NAME,PROJECT_TYPE,PLAN_COST,ACTUAL_COST,COMPLETE_RATIO,XMWCQKSM,REMARKS"
  591. ,"PROJECT_NAME,PROJECT_TYPE,PLAN_COST,ACTUAL_COST,COST_COMPLETE_RATIO,XMWCQKSM,REMARKS"
  592. ,"PROJECT_NAME,PROJECT_TYPE,PLAN_COST,ACTUAL_COST,COMPLETE_RATIO,XMWCQKSM,REMARKS"
  593. };
  594. String[] tableNames = {
  595. "highway_plan_comp_sumtable","highway_daily_comp_sumtable","highway_daily_comp_dettable"
  596. ,"highway_prevention_plan_sumtable","highway_repair_comp_sumtable","highway_special_comp_sumtable"
  597. ,"highway_test_comp_sumtable","highway_scientific_comp_sumtable","highway_equipment_overhaul_comp_sumtable"
  598. };
  599. int[] startRowIndexs = {0,0,0,4,4,3,3,3,3};
  600. int[] tabletype = {0,0,0,2,2,2,2,2,2};
  601. int[] totalRange = {0,0,0,4,4,1,2,2,2};
  602. String[][][] funcArrys = {
  603. //分报告
  604. {},{},{}
  605. ,{{"percent","COMPLETE_RATIO","IF(ISERROR((H#row#/F#row#)),\"\",(H#row#/F#row#))"}} //11 highway_prevention_plan_sumtable
  606. ,{{"percent","COST_COMPLETE_RATIO","IF(ISERROR((H#row#/F#row#)),\"\",(H#row#/F#row#))"}} //10 highway_repair_comp_sumtable
  607. ,{{"percent","COST_COMPLETE_RATIO","IF(ISERROR((D#row#/C#row#)),\"\",(D#row#/C#row#))"}} //12 highway_special_comp_sumtable
  608. ,{{"percent","COMPLETE_RATIO","IF(ISERROR((E#row#/D#row#)),\"\",(E#row#/D#row#))"}} //8 highway_test_comp_sumtable
  609. ,{{"percent","COST_COMPLETE_RATIO","IF(ISERROR((E#row#/D#row#)),\"\",(E#row#/D#row#))"}} //4 highway_scientific_comp_sumtable
  610. ,{{"percent","COMPLETE_RATIO","IF(ISERROR((E#row#/D#row#)),\"\",(E#row#/D#row#))"}} //6 highway_equipment_overhaul_comp_sumtable
  611. };
  612. PageData pd = new PageData();
  613. pd.put("COMPANY_ID", param.get("COMPANY_ID"));
  614. pd.put("ROAD_ID", param.get("ROAD_ID"));
  615. pd.put("ROAD", param.get("ROAD"));
  616. for (int i = 0; i < tableNames.length; i++) {
  617. PageData data = new PageData();
  618. data.put("modelName", modelNames[i]);
  619. data.put("keyStr", keyStrs[i]);
  620. data.put("startRowIndex", startRowIndexs[i]);
  621. data.put("funcArry", funcArrys[i]);
  622. data.put("tabletype", tabletype[i]);
  623. data.put("totalRange", totalRange[i]);
  624. pd.put("TABLETYPE", tableNames[i]);
  625. pd.put("YEAR", param.get("YEAR"));
  626. int viewType = setViewType(pd.getString("TABLETYPE"));
  627. List<PageData> list = new ArrayList<PageData>();
  628. if (viewType == 1 || viewType == 2) list = showTableRecodUtil.showTableRecod(annualDailyCompService, pd);
  629. else if (viewType == 3) list = annualDailyCompService.showTableRecod2(pd);
  630. // List<PageData> list = annualDailyCompService.selectAllRecod(pd);
  631. // List<PageData> list = annualDailyCompService.exportTableRecod(pd);
  632. data.put("list", list);
  633. data.put("pd", pd);
  634. result.add(data);
  635. }
  636. return result;
  637. }
  638. public List<PageData> setMultExcelData2(PageData param) throws Exception {
  639. List<PageData> result = new ArrayList<PageData>();
  640. String[] modelNames = {"单位养护计划完成情况汇总表","单位日常养护计划完成情况汇总表","单位预防养护计划完成情况汇总表",
  641. "单位修复养护计划完成情况汇总表","单位养护计划汇总表","单位日常养护计划汇总表",
  642. "单位预防养护计划汇总表","单位修复养护计划汇总表"};
  643. String[] keyStrs = {
  644. "ROAD,DESIGN_KM,CARE_KM,DAILY_DESIGN,DAILY_COMPLETE,DAILY_PROPORTION,DAILY_KM,"
  645. + "MINOR_PREVENTION_DESIGN,MINOR_PREVENTION_COMPLETE,MINOR_PREVENTION_PROPORTION,MIDDLE_PREVENTION_DESIGN,MIDDLE_PREVENTION_COMPLETE,MIDDLE_PREVENTION_PROPORTION,OVERHAUL_PREVENTION_DESIGN,OVERHAUL_PREVENTION_COMPLETE,OVERHAUL_PREVENTION_PROPORTION,SUM_PREVENTION_DESIGN,SUM_PREVENTION_COMPLETE,SUM_PREVENTION_PROPORTION,"
  646. + "MINOR_REPAIR_DESIGN,MINOR_REPAIR_COMPLETE,MINOR_REPAIR_PROPORTION,MIDDLE_REPAIR_DESIGN,MIDDLE_REPAIR_COMPLETE,MIDDLE_REPAIR_PROPORTION,OVERHAUL_DESIGN,OVERHAUL_COMPLETE,OVERHAUL_PROPORTION,SUM_REPAIR_DESIGN,SUM_REPAIR_COMPLETE,SUM_REPAIR_PROPORTION,"
  647. + "SPECIAL_DESIGN,SPECIAL_COMPLETE,SPECIAL_PROPORTION,"
  648. + "EMERGENCY_DESIGN,EMERGENCY_COMPLETE,EMERGENCY_PROPORTION,"
  649. + "TEST_DESIGN,TEST_COMPLETE,TEST_PROPORTION,"
  650. + "SCIENTIFIC_DESIGN,SCIENTIFIC_COMPLETE,SCIENTIFIC_PROPORTION,"
  651. + "DEVICE_DESIGN,DEVICE_COMPLETE,DEVICE_PROPORTION,"
  652. + "RESERVE_DESIGN,RESERVE_COMPLETE,RESERVE_PROPORTION,"
  653. + "TOTAL_DESIGN,TOTAL_COMPLETE,TOTAL_PROPORTION"
  654. ,"ROAD,DESIGN_KM,CARE_KM,PLAN_COST,CLEAN_COST,PATROL_COST,SUBGRADE_COST,PAVEMENT_COST,BRIDGE_COST,CULVERT_COST,TUNNEL_COST,TRAFFIC_SAFE_COST,ROADSIDE_COST,GREEN_COST,MAINT_COST,EMERGENCY_COST,TOTAL_COST,COST_KM,COM_RETIO"
  655. ,"ROAD,DESIGN_KM,CARE_KM,PLAN_COST,SUBGRADE_COST,PAVEMENT_COST,BRIDGE_COST,TUNNEL_COST,TRAFFIC_SAFE_COST,ROADSIDE_COST,GREEN_COST,OTHER_COST,SUM_COST,COM_RETIO"
  656. ,"ROAD,DESIGN_MK,MAINTAIN_KM,PLAN_COST,"
  657. + "MIN_SUBGRADE_COST,MIN_PAVEMENT_COST,MIN_BRIDGE_COST,MIN_TUNNEL_COST,MIN_TRAFFIC_SAFE_COST,MIN_ROADSIDE_COST,MIN_GREEN_COST,MIN_OTHER_COST,MIN_SUM_COST,"
  658. + "MID_SUBGRADE_COST,MID_PAVEMENT_COST,MID_BRIDGE_COST,MID_TUNNEL_COST,MID_TRAFFIC_SAFE_COST,MID_ROADSIDE_COST,MID_GREEN_COST,MID_OTHER_COST,MID_SUM_COST,"
  659. + "MAX_SUBGRADE_COST,MAX_PAVEMENT_COST,MAX_BRIDGE_COST,MAX_TUNNEL_COST,MAX_TRAFFIC_SAFE_COST,MAX_ROADSIDE_COST,MAX_GREEN_COST,MAX_OTHER_COST,MAX_SUM_COST,"
  660. + "SUBGRADE_COST,PAVEMENT_COST,BRIDGE_COST,TUNNEL_COST,TRAFFIC_SAFE_COST,ROADSIDE_COST,GREEN_COST,OTHER_COST,TOTAL,COM_RETIO"
  661. ,"ROAD,DESIGN_KM,CARE_KM,DAILY_DESIGN,DAILY_COST_KM,"
  662. + "MINOR_PREVENTION_DESIGN,MIDDLE_PREVENTION_DESIGN,OVERHAUL_PREVENTION_DESIGN,SUM_PREVENTION,"
  663. + "MINOR_REPAIR_DESIGN,MIDDLE_REPAIR,OVERHAUL_DESIGN,SUM_REPAIR,"
  664. + "SPECIAL_DESIGN,TEST_DESIGN,SCIENTIFIC_DESIGN,DEVICE_DESIGN,EMERGENCY_DESIGN,RESERVE_DESIGN,TOTAL_COST,TOTAL_COST_KM"
  665. ,"ROAD,DESIGN_KM,CARE_KM,CLEAN,PATROL,SUBGRADE,PAVEMENT,BRIDGE,CULVERT,TUNNEL,SAFE,LINE,GREEN,CAR,EMERGENCY,TOTAL_COST,COST_KM"
  666. ,"ROAD,DESIGN_KM,CARE_KM,MIN_SUBGRADE,MIN_PAVEMENT,MIN_BRIDGE,MIN_TUNNEL,MIN_TOTAL,MID_SUBGRADE,MID_PAVEMENT,MID_BRIDGE,MID_TUNNEL,MID_TOTAL,"
  667. + "MAX_SUBGRADE,MAX_PAVEMENT,MAX_BRIDGE,MAX_TUNNEL,MAX_TOTAL,TOTAL_SUBGRADE,TOTAL_PAVEMENT,TOTAL_BRIDGE,TOTAL_TUNNEL,TOTAL"
  668. ,"ROAD,DESIGN_MK,MAINTAIN_KM,"
  669. + "MIN_SUBGRADE,MIN_PAVEMENT,MIN_BRIDGE,MIN_TUNNEL,MIN_TRAFFIC_SAFE,MIN_ROADSIDE,MIN_GREEN,MIN_OTHER,MIN_SUM,"
  670. + "MID_SUBGRADE,MID_PAVEMENT,MID_BRIDGE,MID_TUNNEL,MID_TRAFFIC_SAFE,MID_ROADSIDE,MID_GREEN,MID_OTHER,MID_SUM,"
  671. + "MAX_SUBGRADE,MAX_PAVEMENT,MAX_BRIDGE,MAX_TUNNEL,MAX_TRAFFIC_SAFE,MAX_ROADSIDE,MAX_GREEN,MAX_OTHER,MAX_SUM,"
  672. + "SUBGRADE,PAVEMENT,BRIDGE,TUNNEL,TRAFFIC_SAFE,ROADSIDE,GREEN,OTHER,TOTAL"
  673. };
  674. String[] tableNames = {"annual_comp_sumtable","annual_daily_comp_sumtable","annual_prevention_comp_sumtable",
  675. "annual_repair_comp_sumtable","annual_plan_sumtable","annual_daily_plan_sumtable",
  676. "annual_prevention_plan_sumtable","annual_repair_plan_sumtable"};
  677. int[] startRowIndexs = {4,3,3, 4,3,2, 3,3};
  678. int[] tabletype = {1,1,1, 1,1,1, 1,1};
  679. int[] totalRange = {0,0,0, 0,0,0, 0,0};
  680. String[][][] funcArrys = {
  681. {{"percent","DAILY_PROPORTION","IF(ISERROR((G#row#/F#row#)),\"\",(G#row#/F#row#))"}
  682. ,{"percent","DAILY_KM","IF(ISERROR((G#row#/E#row#)),\"\",(G#row#/E#row#))"}
  683. ,{"percent","MINOR_PREVENTION_PROPORTION","IF(ISERROR((K#row#/J#row#)),\"\",(K#row#/J#row#))"}
  684. ,{"percent","MIDDLE_PREVENTION_PROPORTION","IF(ISERROR((N#row#/M#row#)),\"\",(N#row#/M#row#))"}
  685. ,{"percent","OVERHAUL_PREVENTION_PROPORTION","IF(ISERROR((Q#row#/P#row#)),\"\",(Q#row#/P#row#))"}
  686. ,{"sum","SUM_PREVENTION_DESIGN","SUM(J#row#,M#row#,P#row#)"}
  687. ,{"sum","SUM_PREVENTION_COMPLETE","SUM(K#row#,N#row#,Q#row#)"}
  688. ,{"percent","SUM_PREVENTION_PROPORTION","IF(ISERROR((T#row#/S#row#)),\"\",(T#row#/S#row#))"}
  689. ,{"percent","MINOR_REPAIR_PROPORTION","IF(ISERROR((W#row#/V#row#)),\"\",(W#row#/V#row#))"}
  690. ,{"percent","MIDDLE_REPAIR_PROPORTION","IF(ISERROR((Z#row#/Y#row#)),\"\",(Z#row#/Y#row#))"}
  691. ,{"percent","OVERHAUL_PROPORTION","IF(ISERROR((AC#row#/AB#row#)),\"\",(AC#row#/AB#row#))"}
  692. ,{"sum","SUM_REPAIR_DESIGN","SUM(V#row#,Y#row#,AB#row#)"}
  693. ,{"sum","SUM_REPAIR_COMPLETE","SUM(W#row#,Z#row#,AC#row#)"}
  694. ,{"percent","SUM_REPAIR_PROPORTION","IF(ISERROR((AF#row#/AE#row#)),\"\",(AF#row#/AE#row#))"}
  695. ,{"percent","SPECIAL_PROPORTION","IF(ISERROR((AI#row#/AH#row#)),\"\",(AI#row#/AH#row#))"}
  696. ,{"percent","EMERGENCY_PROPORTION","IF(ISERROR((AL#row#/AK#row#)),\"\",(AL#row#/AK#row#))"}
  697. ,{"percent","TEST_PROPORTION","IF(ISERROR((AO#row#/AN#row#)),\"\",(AO#row#/AN#row#))"}
  698. ,{"percent","SCIENTIFIC_PROPORTION","IF(ISERROR((AR#row#/AQ#row#)),\"\",(AR#row#/AQ#row#))"}
  699. ,{"percent","DEVICE_PROPORTION","IF(ISERROR((AU#row#/AT#row#)),\"\",(AU#row#/AT#row#))"}
  700. ,{"percent","RESERVE_PROPORTION","IF(ISERROR((AX#row#/AW#row#)),\"\",(AX#row#/AW#row#))"}
  701. ,{"sum","TOTAL_DESIGN","IF(ISNUMBER(F#row#),F#row#,0)+IF(ISNUMBER(S#row#),S#row#,0)+IF(ISNUMBER(AE#row#),AE#row#,0)+IF(ISNUMBER(AN#row#),AN#row#,0)+IF(ISNUMBER(AQ#row#),AQ#row#,0)+IF(ISNUMBER(AT#row#),AT#row#,0)+IF(ISNUMBER(AW#row#),AW#row#,0)+IF(ISNUMBER(AH#row#),AH#row#,0)+IF(ISNUMBER(AK#row#),AK#row#,0)"}
  702. ,{"sum","TOTAL_COMPLETE","IF(ISNUMBER(G#row#),G#row#,0)+IF(ISNUMBER(T#row#),T#row#,0)+IF(ISNUMBER(AF#row#),AF#row#,0)+IF(ISNUMBER(AO#row#),AO#row#,0)+IF(ISNUMBER(AR#row#),AR#row#,0)+IF(ISNUMBER(AU#row#),AU#row#,0)+IF(ISNUMBER(AX#row#),AX#row#,0)+IF(ISNUMBER(AI#row#),AI#row#,0)+IF(ISNUMBER(AL#row#),AL#row#,0)"}
  703. ,{"percent","TOTAL_PROPORTION","IF(ISERROR((BA#row#/AZ#row#)),\"\",(BA#row#/AZ#row#))"}
  704. }
  705. ,{{"sum","TOTAL_COST","SUM(G#row#:R#row#)"}
  706. ,{"percent","COST_KM","IF(ISERROR((S#row#/E#row#)),\"\",(S#row#/E#row#))"}
  707. ,{"percent","COM_RETIO","IF(ISERROR((S#row#/F#row#)),\"\",(S#row#/F#row#))"}
  708. }
  709. ,{{"sum","SUM_COST","SUM(G#row#:N#row#)"}}
  710. ,{{"sum","MIN_SUM_COST","SUM(G#row#:N#row#)"}
  711. ,{"sum","MID_SUM_COST","SUM(P#row#:W#row#)"}
  712. ,{"sum","MAX_SUM_COST","SUM(Y#row#:AF#row#)"}
  713. ,{"sum","SUBGRADE_COST","SUM(G#row#,P#row#,Y#row#)"}
  714. ,{"sum","PAVEMENT_COST","SUM(H#row#,Q#row#,Z#row#)"}
  715. ,{"sum","BRIDGE_COST","SUM(I#row#,R#row#,AA#row#)"}
  716. ,{"sum","TUNNEL_COST","SUM(J#row#,S#row#,AB#row#)"}
  717. ,{"sum","TRAFFIC_SAFE_COST","SUM(K#row#,T#row#,AC#row#)"}
  718. ,{"sum","ROADSIDE_COST","SUM(L#row#,U#row#,AD#row#)"}
  719. ,{"sum","GREEN_COST","SUM(M#row#,V#row#,AE#row#)"}
  720. ,{"sum","OTHER_COST","SUM(N#row#,W#row#,AF#row#)"}
  721. ,{"sum","TOTAL","SUM(AH#row#:AO#row#)"}
  722. }
  723. ,{{"percent","DAILY_COST_KM","IF(ISERROR((F#row#/E#row#)),\"\",(F#row#/E#row#))"}
  724. ,{"sum","SUM_PREVENTION","SUM(H#row#:J#row#)"}
  725. ,{"sum","SUM_REPAIR","SUM(L#row#:N#row#)"}
  726. ,{"sum","TOTAL_COST","IF(ISNUMBER(F#row#),F#row#,0)+IF(ISNUMBER(K#row#),K#row#,0)+IF(ISNUMBER(O#row#),O#row#,0)+IF(ISNUMBER(Q#row#),Q#row#,0)+IF(ISNUMBER(R#row#),R#row#,0)+IF(ISNUMBER(S#row#),S#row#,0)+IF(ISNUMBER(T#row#),T#row#,0)+IF(ISNUMBER(U#row#),U#row#,0)+IF(ISNUMBER(P#row#),P#row#,0)"}
  727. ,{"percent","TOTAL_COST_KM","IF(ISERROR((V#row#/E#row#)),\"\",(V#row#/E#row#))"}
  728. }
  729. ,{{"sum","TOTAL_COST","SUM(F#row#:Q#row#)"}
  730. ,{"percent","COST_KM","IF(ISERROR((R#row#/E#row#)),\"\",(R#row#/E#row#))"}
  731. }
  732. ,{{"sum","MIN_TOTAL","SUM(F#row#:I#row#)"}
  733. ,{"sum","MID_TOTAL","SUM(K#row#:N#row#)"}
  734. ,{"sum","MAX_TOTAL","SUM(P#row#:S#row#)"}
  735. ,{"sum","TOTAL_SUBGRADE","SUM(F#row#,K#row#,P#row#)"}
  736. ,{"sum","TOTAL_PAVEMENT","SUM(G#row#,L#row#,Q#row#)"}
  737. ,{"sum","TOTAL_BRIDGE","SUM(H#row#,M#row#,R#row#)"}
  738. ,{"sum","TOTAL_TUNNEL","SUM(I#row#,N#row#,S#row#)"}
  739. ,{"sum","TOTAL","SUM(U#row#:X#row#)"}}
  740. ,{{"sum","MIN_SUM","SUM(F#row#:M#row#)"}
  741. ,{"sum","MID_SUM","SUM(O#row#:V#row#)"}
  742. ,{"sum","MAX_SUM","SUM(X#row#:AE#row#)"}
  743. ,{"sum","SUBGRADE","SUM(F#row#,O#row#,X#row#)"}
  744. ,{"sum","PAVEMENT","SUM(G#row#,P#row#,Y#row#)"}
  745. ,{"sum","BRIDGE","SUM(H#row#,Q#row#,Z#row#)"}
  746. ,{"sum","TUNNEL","SUM(I#row#,R#row#,AA#row#)"}
  747. ,{"sum","TRAFFIC_SAFE","SUM(J#row#,S#row#,AB#row#)"}
  748. ,{"sum","ROADSIDE","SUM(K#row#,T#row#,AC#row#)"}
  749. ,{"sum","GREEN","SUM(L#row#,U#row#,AD#row#)"}
  750. ,{"sum","OTHER","SUM(M#row#,V#row#,AE#row#)"}
  751. ,{"sum","TOTAL","SUM(AG#row#:AN#row#)"}
  752. }
  753. };
  754. PageData pd = new PageData();
  755. pd.put("COMPANY_ID", param.get("COMPANY_ID"));
  756. pd.put("ROAD_ID", param.get("ROAD_ID"));
  757. for (int i = 0; i < tableNames.length; i++) {
  758. PageData data = new PageData();
  759. data.put("modelName", modelNames[i]);
  760. data.put("keyStr", keyStrs[i]);
  761. data.put("startRowIndex", startRowIndexs[i]);
  762. data.put("funcArry", funcArrys[i]);
  763. data.put("tabletype", tabletype[i]);
  764. data.put("totalRange", totalRange[i]);
  765. pd.put("TABLETYPE", tableNames[i]);
  766. pd.put("YEAR", param.get("YEAR"));
  767. int viewType = setViewType(pd.getString("TABLETYPE"));
  768. List<PageData> list = new ArrayList<PageData>();
  769. if (viewType == 1 || viewType == 2) list = showTableRecodUtil.showTableRecod(annualDailyCompService, pd);
  770. else if (viewType == 3) list = annualDailyCompService.showTableRecod2(pd);
  771. // List<PageData> list = annualDailyCompService.selectAllRecod(pd);
  772. // List<PageData> list = annualDailyCompService.exportTableRecod(pd);
  773. data.put("list", list);
  774. data.put("pd", pd);
  775. result.add(data);
  776. }
  777. return result;
  778. }
  779. // public List<PageData> setMultExcelData(PageData param) throws Exception {
  780. // List<PageData> result = new ArrayList<PageData>();
  781. // String[] modelNames = {"单位日常养护计划完成情况汇总表","单位养护计划完成情况汇总表"};
  782. // String[] keyStrs = {"ROAD,DESIGN_KM,CARE_KM,PLAN_COST,CLEAN_COST,PATROL_COST,SUBGRADE_COST,PAVEMENT_COST,BRIDGE_COST,CULVERT_COST,TUNNEL_COST,TRAFFIC_SAFE_COST,ROADSIDE_COST,GREEN_COST,MAINT_COST,EMERGENCY_COST,TOTAL_COST,COST_KM,COM_RETIO",
  783. // "ROAD,DESIGN_KM,CARE_KM,DAILY_DESIGN,DAILY_COMPLETE,DAILY_PROPORTION,DAILY_KM,PREVENTION_DESIGN,PREVENTION_COMPLETE,PREVENTION_PROPORTION,MINOR_REPAIR_DESIGN,MINOR_REPAIR_COMPLETE,MINOR_REPAIR_PROPORTION,MIDDLE_REPAIR_DESIGN,MIDDLE_REPAIR_COMPLETE,MIDDLE_REPAIR_PROPORTION,OVERHAULD_ESIGN,OVERHAUL_COMPLETE,OVERHAUL_PROPORTION,SPECIAL_DESIGN,SPECIAL_COMPLETE,SPECIAL_PROPORTION,TEST_DESIGN,TEST_COMPLETE,TEST_PROPORTION,SCIENTIFIC_DESIGN,SCIENTIFIC_COMPLETE,SCIENTIFIC_PROPORTION,DEVICE_DESIGN,DEVICE_COMPLETE,DEVICE_PROPORTION,RESERVE_DESIGN,RESERVE_COMPLETE,RESERVE_PROPORTION,TOTAL_DESIGN,TOTAL_COMPLETE,TOTAL_PROPORTION"};
  784. // String[] tableNames = {"annual_daily_comp_sumtable","annual_comp_sumtable"};
  785. // int[] startRowIndexs = {3,4};
  786. // String[][][] funcArrys = {{},
  787. // {{"percent","DAILY_PROPORTION","IF(ISERROR((G#row#/F#row#)),\"\",(G#row#/F#row#))"},
  788. // {"percent","PREVENTION_PROPORTION","IF(ISERROR((K#row#/J#row#)),\"\",(K#row#/J#row#))"}}};
  789. // PageData pd = new PageData();
  790. // pd.put("YEAR", param.get("YEAR"));
  791. // pd.put("COMPANY_ID", param.get("COMPANY_ID"));
  792. // for (int i = 0; i < tableNames.length; i++) {
  793. // PageData data = new PageData();
  794. // data.put("modelName", modelNames[i]);
  795. // data.put("keyStr", keyStrs[i]);
  796. // data.put("startRowIndex", startRowIndexs[i]);
  797. // data.put("funcArry", funcArrys[i]);
  798. // pd.put("TABLETYPE", tableNames[i]);
  799. // List<PageData> list = annualDailyCompService.selectAllRecod(pd);
  800. // data.put("list", list);
  801. // result.add(data);
  802. // }
  803. // return result;
  804. // }
  805. // @RequestMapping("/exportDoc")
  806. // public String exportDoc(HttpServletRequest request,HttpServletResponse response) throws Exception{
  807. // ModelAndView mv = this.getModelAndView();
  808. // PageData pd = new PageData();
  809. // pd = this.getPageData();
  810. // List<PageData> list = annualDailyCompService.wordRecorde(pd);
  811. // if (list != null && list.size() > 0) {
  812. // Map<String,Object> map = list.get(0);
  813. // if (pd.get("TABLETYPE").equals("highway_prevention_project_dettable")
  814. // ||pd.get("TABLETYPE").equals("highway_repair_project_dettable")
  815. // ||pd.get("TABLETYPE").equals("highway_special_project_dettable")
  816. // ||pd.get("TABLETYPE").equals("highway_test_project_dettable")
  817. // ||pd.get("TABLETYPE").equals("highway_scientific_project_dettable")) {
  818. // pd.put("PROJECT_NAME", map.get("PROJECT_NAME"));
  819. // pd.put("subtable", pd.get("TABLETYPE")+"_cost");
  820. // List<PageData> sublist = annualDailyCompService.wordListRecorde(pd);
  821. // PageData nulldata = new PageData();
  822. // nulldata.put("ITEM_NAME", "");
  823. // nulldata.put("UNIT", "");
  824. // nulldata.put("UNIT_PRICE", "");
  825. // nulldata.put("NUMBER", "");
  826. // nulldata.put("TOTAL_COST", "");
  827. // int size = 8-sublist.size();
  828. // for (int i = 0; i < size; i++) {
  829. // sublist.add(nulldata);
  830. // }
  831. // map.put("list", sublist);
  832. // }
  833. // String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
  834. // String fileName = "highwayl_equipment_overhaul_project_dettable";
  835. // WordUtils.exportDoc(request,response,map,pd.getString("modelName"),path,fileName);
  836. // }
  837. // return null;
  838. // }
  839. public String exportDoc(HttpServletRequest request,HttpServletResponse response,PageData pd) throws Exception{
  840. List<PageData> list = annualDailyCompService.wordRecorde(pd);
  841. if (list != null && list.size() > 0) {
  842. for (PageData map : list) {
  843. exportPerDoc(request,response,pd,map);
  844. }
  845. }
  846. return null;
  847. }
  848. public String exportPerDoc(HttpServletRequest request,HttpServletResponse response,PageData pd,PageData map) throws Exception{
  849. if (pd.get("TABLETYPE").equals("highway_prevention_project_dettable")
  850. ||pd.get("TABLETYPE").equals("highway_repair_project_dettable")
  851. ||pd.get("TABLETYPE").equals("highway_special_project_dettable")
  852. ||pd.get("TABLETYPE").equals("highway_emergency_project_dettable")
  853. ||pd.get("TABLETYPE").equals("highway_test_project_dettable")
  854. ||pd.get("TABLETYPE").equals("highway_scientific_project_dettable")) {
  855. pd.put("PROJECT_NAME", map.get("PROJECT_NAME"));
  856. pd.put("subtable", pd.get("TABLETYPE")+"_cost");
  857. List<PageData> sublist = annualDailyCompService.wordListRecorde(pd);
  858. // PageData nulldata = new PageData();
  859. // nulldata.put("ITEM_NAME", "");
  860. // nulldata.put("UNIT", "");
  861. // nulldata.put("UNIT_PRICE", "");
  862. // nulldata.put("NUMBER", "");
  863. // nulldata.put("TOTAL_COST", "");
  864. // int size = 8-sublist.size();
  865. // for (int i = 0; i < size; i++) {
  866. // sublist.add(nulldata);
  867. // }
  868. map.put("list", sublist);
  869. }
  870. String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
  871. String fileName = map.getString("NAME");
  872. WordUtils.exportDoc(request,response,map,pd.getString("modelName"),path,fileName);
  873. return null;
  874. }
  875. public List<String> creatDoc(HttpServletRequest request,HttpServletResponse response,PageData pd) throws Exception{
  876. List<PageData> list = annualDailyCompService.wordRecorde(pd);
  877. List<String> paths = new ArrayList<String>();
  878. String filepath = "";
  879. if (list != null && list.size() > 0) {
  880. for (PageData map : list) {
  881. if (pd.get("modelName").equals("101_highway_technica_statable(SRI).ftl")) {
  882. map.put("PQI", Double.parseDouble(map.get("PCI").toString())*0.35+Double.parseDouble(map.get("RQI").toString())*0.3
  883. +Double.parseDouble(map.get("RDI").toString())*0.15+Double.parseDouble(map.get("PBI").toString())*0.1
  884. +Double.parseDouble(map.get("SRI").toString())*0.1);
  885. map.put("MQI", Double.parseDouble(map.get("SCI").toString())*0.08+Double.parseDouble(map.get("PQI").toString())*0.7
  886. +Double.parseDouble(map.get("BCI").toString())*0.12+Double.parseDouble(map.get("TCI").toString())*0.1);
  887. map.put("NAME", map.getString("NAME")+"(SRI)");
  888. }else if (pd.get("modelName").equals("101_highway_technica_statable(PWI).ftl")) {
  889. map.put("PQI", Double.parseDouble(map.get("PCI").toString())*0.35+Double.parseDouble(map.get("RQI").toString())*0.3
  890. +Double.parseDouble(map.get("RDI").toString())*0.15+Double.parseDouble(map.get("PBI").toString())*0.1
  891. +Double.parseDouble(map.get("PWI").toString())*0.1);
  892. map.put("MQI", Double.parseDouble(map.get("SCI").toString())*0.08+Double.parseDouble(map.get("PQI").toString())*0.7
  893. +Double.parseDouble(map.get("BCI").toString())*0.12+Double.parseDouble(map.get("TCI").toString())*0.1);
  894. map.put("NAME", map.getString("NAME")+"(PWI)");
  895. }
  896. List<String> keywords = getKeywordsJson(request,pd.getString("TABLETYPE"),map.getString("CATEGORY"));
  897. map.put("keywords", keywords);
  898. filepath = creatPerDoc(request,response,pd,map);
  899. paths.add(filepath);
  900. }
  901. }
  902. return paths;
  903. }
  904. public String creatPerDoc(HttpServletRequest request,HttpServletResponse response,PageData pd,PageData map) throws Exception{
  905. if (pd.get("TABLETYPE").equals("highway_prevention_project_dettable")
  906. ||pd.get("TABLETYPE").equals("highway_repair_project_dettable")
  907. ||pd.get("TABLETYPE").equals("highway_special_project_dettable")
  908. ||pd.get("TABLETYPE").equals("highway_emergency_project_dettable")
  909. ||pd.get("TABLETYPE").equals("highway_test_project_dettable")
  910. ||pd.get("TABLETYPE").equals("highway_scientific_project_dettable")) {
  911. pd.put("PROJECT_NAME", map.get("PROJECT_NAME"));
  912. pd.put("subtable", pd.get("TABLETYPE")+"_cost");
  913. List<PageData> sublist = annualDailyCompService.wordListRecorde(pd);
  914. PageData nulldata = new PageData();
  915. nulldata.put("ITEM_NAME", "");
  916. nulldata.put("UNIT", "");
  917. nulldata.put("UNIT_PRICE", "");
  918. nulldata.put("NUMBER", "");
  919. nulldata.put("TOTAL_COST", "");
  920. // int size = 8-sublist.size();
  921. // for (int i = 0; i < size; i++) {
  922. // sublist.add(nulldata);
  923. // }
  924. map.put("list", sublist);
  925. if (map.get("KEY_WORDS") == null) {
  926. map.put("KEY_WORDS", "");
  927. }
  928. }
  929. String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
  930. String fileName = map.getString("NAME");
  931. String filepath = WordUtils.creatDoc(request,response,map,pd.getString("modelName"),path,fileName);
  932. return filepath;
  933. }
  934. @RequestMapping("/exportFiles")
  935. public String exportFiles(HttpServletRequest request,HttpServletResponse response) throws Exception{
  936. String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
  937. ModelAndView mv = this.getModelAndView();
  938. PageData pd = new PageData();
  939. pd = this.getPageData();
  940. List<String> paths = new ArrayList<String>();
  941. List<String> result = new ArrayList<String>();
  942. if (pd.getString("exportname").indexOf("总报告") > 0) {
  943. //年度报告
  944. List<PageData> exceldata = setMultExcelData2(pd);
  945. MultExcelUtils ex = new MultExcelUtils();
  946. String excelpath = ex.exportExcel(pd.getString("exportname")+".xlsx",path,response,exceldata);
  947. result.add(excelpath);
  948. }else {
  949. List<PageData> exceldata = new ArrayList<PageData>();
  950. //导出计划、完成情况分卡
  951. if(null != pd.get("type")){
  952. //完成情况
  953. if(pd.get("type").toString().equals("COMPLETE")){
  954. exceldata = setCompleteMultExcelData(pd);
  955. }
  956. //计划
  957. else if(pd.get("type").toString().equals("PLAN")){
  958. //word文档
  959. pd.put("modelName", "306_highway_prevention_project_dettable.ftl");
  960. pd.put("TABLETYPE", "highway_prevention_project_dettable");
  961. paths = creatDoc(request,response,pd);
  962. result.addAll(paths);
  963. pd.put("modelName", "306_highway_special_project_dettable.ftl");
  964. pd.put("TABLETYPE", "highway_special_project_dettable");
  965. paths = creatDoc(request,response,pd);
  966. result.addAll(paths);
  967. pd.put("modelName", "306_highway_repair_project_dettable.ftl");
  968. pd.put("TABLETYPE", "highway_repair_project_dettable");
  969. paths = creatDoc(request,response,pd);
  970. result.addAll(paths);
  971. pd.put("modelName", "101_highway_technica_statable(SRI).ftl");
  972. pd.put("TABLETYPE", "highway_technica_statable");
  973. paths = creatDoc(request,response,pd);
  974. result.addAll(paths);
  975. pd.put("modelName", "101_highway_technica_statable(PWI).ftl");
  976. pd.put("TABLETYPE", "highway_technica_statable");
  977. paths = creatDoc(request,response,pd);
  978. result.addAll(paths);
  979. pd.put("modelName", "102_highway_traiffcinfo_sumtable.ftl");
  980. pd.put("TABLETYPE", "highway_traiffcinfo_sumtable");
  981. paths = creatDoc(request,response,pd);
  982. result.addAll(paths);
  983. pd.put("modelName", "309_highway_test_project_dettable.ftl");
  984. pd.put("TABLETYPE", "highway_test_project_dettable");
  985. paths = creatDoc(request,response,pd);
  986. result.addAll(paths);
  987. pd.put("modelName", "311_highway_scientific_project_dettable.ftl");
  988. pd.put("TABLETYPE", "highway_scientific_project_dettable");
  989. paths = creatDoc(request,response,pd);
  990. result.addAll(paths);
  991. pd.put("modelName", "313_highway_equipment_overhaul_project_dettable.ftl");
  992. pd.put("TABLETYPE", "highway_equipment_overhaul_project_dettable");
  993. paths = creatDoc(request,response,pd);
  994. result.addAll(paths);
  995. exceldata = setPlanMultExcelData(pd);
  996. }
  997. }
  998. //excel文档
  999. MultExcelUtils ex = new MultExcelUtils();
  1000. String excelpath = ex.exportExcel(pd.getString("exportname")+".xlsx",path,response,exceldata);
  1001. result.add(excelpath);
  1002. }
  1003. //zip压缩下载
  1004. DownloadZip.downloadZip(response,request,result,path);
  1005. return null;
  1006. }
  1007. // @RequestMapping("/exportFiles")
  1008. // public String exportFiles(HttpServletRequest request,HttpServletResponse response) throws Exception{
  1009. // ModelAndView mv = this.getModelAndView();
  1010. // PageData pd = new PageData();
  1011. // pd = this.getPageData();
  1012. // //modelName=311_highway_scientific_project_dettable.ftl&COMPANY_ID=001&YEAR=2018&ROAD_ID=111&TABLETYPE=highway_scientific_project_dettable
  1013. // pd.put("modelName", "306_highway_prevention_project_dettable.ftl");
  1014. // pd.put("TABLETYPE", "highway_prevention_project_dettable");
  1015. // exportDoc(request,response,pd);
  1016. // pd.put("modelName", "306_highway_prevention_project_dettable.ftl");
  1017. // pd.put("TABLETYPE", "highway_repair_project_dettable");
  1018. // exportDoc(request,response,pd);
  1019. // pd.put("modelName", "306_highway_prevention_project_dettable.ftl");
  1020. // pd.put("TABLETYPE", "highway_special_project_dettable");
  1021. // exportDoc(request,response,pd);
  1022. // return null;
  1023. // }
  1024. @RequestMapping(value="/getProJectName",produces = "application/json; charset=utf-8")
  1025. @ResponseBody
  1026. public String getProJectName(HttpServletRequest request) throws Exception {
  1027. try {
  1028. PageData pd = this.getPageData();
  1029. List<PageData> pdList =annualDailyCompService.hasTableRecod2(pd);
  1030. PageData pd1 = pdList.get(0);
  1031. String proJectName = pd1.getString("PROJECT_NAME");
  1032. return "{\"projectname\":\""+proJectName+"\"}";
  1033. } catch (Exception e) {
  1034. }
  1035. return null;
  1036. }
  1037. @RequestMapping(value = "/importExcel",produces={"text/html;charset=UTF-8;","application/json;"})
  1038. @ResponseBody
  1039. public String importExcel(HttpServletResponse response,HttpServletRequest request, MultipartFile file) throws Exception {
  1040. String msg = new String();
  1041. try {
  1042. PageData pd = this.getPageData();
  1043. System.out.println("开始");
  1044. String path = request.getSession().getServletContext().getRealPath("upload");
  1045. String fileName = ImportDoc.getNowTime()+"-"+file.getOriginalFilename();
  1046. File targetFile = new File(path, fileName);
  1047. String filePath = targetFile.getAbsolutePath();
  1048. System.out.println(filePath);
  1049. if (!targetFile.exists()) {
  1050. targetFile.mkdirs();
  1051. }
  1052. file.transferTo(targetFile);
  1053. ImportDoc doc = new ImportDoc();
  1054. HashMap<Object, Object> m = doc.ReadByExcel(filePath);
  1055. msg = this.checkData(pd, m).toString();
  1056. //如果错误信息list有值直接返回信息给前台,不操作数据库
  1057. if(!(msg.isEmpty())) {
  1058. return msg;
  1059. }
  1060. this.importExcelData(pd, m);
  1061. return msg;//Msg.msg.toString();
  1062. } catch (Exception e) {
  1063. msg = e.getMessage();
  1064. return msg;
  1065. }
  1066. }
  1067. //处理Ecxel数据存入数据库
  1068. public void importExcelData(PageData pd, HashMap<Object, Object> m) throws Exception {
  1069. String jsonPath = (String) pd.get("TABLETYPE");
  1070. JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
  1071. int viewType = setViewType(pd.getString("TABLETYPE"));
  1072. List<PageData> varList = new ArrayList<PageData>();
  1073. if (viewType == 1){
  1074. varList = annualDailyCompService.hasTableRecod(pd);
  1075. }
  1076. else if (viewType == 2){
  1077. varList = annualDailyCompService.hasTableRecod2(pd);
  1078. }
  1079. JSONArray dataArray = new JSONArray();
  1080. if (jsonarray.size() > 0 && jsonarray != null) {
  1081. List<ImoprtJson> docJson = ImportDoc.importJson(jsonPath);
  1082. JSONObject jsondate = (JSONObject) jsonarray.get(0);
  1083. for(ImoprtJson ijson : docJson) {
  1084. jsondate.put(ijson.getColumn(), (String) m.get(ijson.getIndex()));
  1085. }
  1086. dataArray.add(jsondate);
  1087. }
  1088. Map<String, Object> map = dealWithData(pd, varList, dataArray);
  1089. if(map.get("msg").equals("success")){
  1090. pd.put("STATUS", "编制中");
  1091. annualDailyCompService.updateStatus(pd);
  1092. annualDailyCompService.updatePlanStatus(pd);
  1093. }
  1094. }
  1095. /**
  1096. * 获取登陆账号所属的角色
  1097. *
  1098. * @param
  1099. * @return RoleName
  1100. * @throws Exception
  1101. */
  1102. public String getRoleName() throws Exception {
  1103. PageData userInfo = annualDailyCompService.getCompanyAndRoad(Jurisdiction.getUsername().toString()); // 通过username获取公司和路段
  1104. // 通过ROLE_ID获取角色
  1105. String roleName = annualDailyCompService.getRoleName(userInfo.get("ROLE_ID").toString());
  1106. return roleName;
  1107. }
  1108. /**
  1109. * 根据角色来处理word导入的数据
  1110. *
  1111. * @param m
  1112. * @throws Exception
  1113. */
  1114. public void checkm(HashMap<Object, Object> m,HashMap<Object, Object> m1) throws Exception {
  1115. if(m1.containsKey("AUDIT_FEE")) {
  1116. m.remove(m1.get("AUDIT_FEE"));
  1117. }
  1118. if(m1.containsKey("AUDIT_MAKER")) {
  1119. m.remove(m1.get("AUDIT_MAKER"));
  1120. }
  1121. if(m1.containsKey("MATTER_YEAR")) {
  1122. m.remove(m1.get("MATTER_YEAR"));
  1123. }
  1124. if(m1.containsKey("MATTER_NEW_CARRY")) {
  1125. m.remove(m1.get("MATTER_NEW_CARRY"));
  1126. }
  1127. if(m1.containsKey("MATTER_CONSULT")) {
  1128. m.remove(m1.get("MATTER_CONSULT"));
  1129. }
  1130. }
  1131. @RequestMapping("/importDoc")
  1132. @ResponseBody
  1133. public Map<String, String> importDoc(HttpServletRequest request, MultipartFile file,String data,String TABLETYPE,
  1134. String COMPANY_ID,String YEAR,String ROAD_ID,String COMPANY,String ROAD,String REPORTID) throws Exception {
  1135. Map<String, String> msgMap = new HashMap<String, String>();
  1136. List<String> msgList = new ArrayList<String>();
  1137. try {
  1138. PageData pd = new PageData();// this.getPageData();
  1139. pd.put("data", data);
  1140. pd.put("TABLETYPE", TABLETYPE);
  1141. pd.put("COMPANY_ID", COMPANY_ID);
  1142. pd.put("YEAR", YEAR);
  1143. pd.put("ROAD_ID", ROAD_ID);
  1144. pd.put("COMPANY", COMPANY);
  1145. pd.put("ROAD", ROAD);
  1146. pd.put("REPORTID", REPORTID);
  1147. System.out.println("开始");
  1148. System.out.println( "***TABLETYPE"+TABLETYPE);
  1149. String path = request.getSession().getServletContext().getRealPath("upload");
  1150. String fileName = ImportDoc.getNowTime() + "-" + file.getOriginalFilename();
  1151. System.out.println(path);
  1152. // 获取当前登陆用户角色信息
  1153. String roleName = this.getRoleName();
  1154. System.out.println(roleName);
  1155. // String fileName = new Date().getTime()+".jpg";
  1156. File targetFile = new File(path, fileName);
  1157. String filePath = targetFile.getAbsolutePath();
  1158. System.out.println(filePath);
  1159. if (!targetFile.exists()) {
  1160. targetFile.mkdirs();
  1161. }
  1162. file.transferTo(targetFile);
  1163. ImportDoc doc = new ImportDoc();
  1164. HashMap<Object, Object> m = doc.ReadByDoc(filePath);
  1165. /* //导入项目是否已存在
  1166. String projectName = checkProjectName(pd, m);
  1167. if(projectName.isEmpty()){
  1168. msgList.add("项目已存在,请检查项目名称");
  1169. msgMap.put("error", msgList);
  1170. return msgMap;
  1171. }*/
  1172. // 校验方法
  1173. String msg = this.checkData(pd, m).toString();
  1174. // 如果错误信息list有值直接返回信息给前台,不操作数据库
  1175. if (!(msg.isEmpty())) {
  1176. msgMap.put("error", msg);
  1177. return msgMap;
  1178. }
  1179. // 如果角色是控股管理员全部导入
  1180. String jsonPath = (String) pd.get("TABLETYPE");
  1181. List<ImoprtJson> docJson = ImportDoc.importJson(jsonPath);
  1182. HashMap<Object, Object> m1 = doc.ReadByDoc(filePath);
  1183. for (ImoprtJson ijson : docJson) {
  1184. m1.put(ijson.getColumn(), ijson.getIndex());
  1185. }
  1186. /*if (roleName.equals("控股集团管理员") || roleName.equals("系统管理组")) {
  1187. } else {
  1188. // 不是就有选择导入
  1189. this.checkm(m, m1);
  1190. }*/
  1191. Map<String, Object> map = this.importDocData(pd, m);
  1192. String projectName = (String) m.get("1,2");
  1193. if(map.get("msg").equals("success")){
  1194. // msgList.add(projectName);
  1195. msgMap.put("projectName", projectName);
  1196. }else{
  1197. // msgList.add(map.get("msg").toString());
  1198. msgMap.put("error", map.get("msg").toString());
  1199. }
  1200. return msgMap;// Msg.msg.toString();
  1201. } catch (Exception e) {
  1202. // msgList.add(e.getMessage());
  1203. if("The document is really a OOXML file".equalsIgnoreCase(e.getMessage())
  1204. || "The document is really a UNKNOWN file".equalsIgnoreCase(e.getMessage())){
  1205. String msg = "导入文件格式不正确";
  1206. msgMap.put("error", msg);
  1207. }else{
  1208. msgMap.put("error", e.getMessage());
  1209. }
  1210. return msgMap;
  1211. }
  1212. }
  1213. /* public String checkProjectName(PageData pd, HashMap<Object, Object> m) throws Exception {
  1214. String projectName = "";
  1215. List<PageData> varList = annualDailyCompService.hasTableRecod2(pd);
  1216. projectName = (String) m.get("1,2");
  1217. for(PageData temppd : varList){
  1218. if(temppd.get("PROJECT_NAME") != null){
  1219. if(projectName.equalsIgnoreCase(temppd.get("PROJECT_NAME").toString())){
  1220. projectName = "";
  1221. break;
  1222. }
  1223. }
  1224. }
  1225. return projectName;
  1226. }*/
  1227. private void addNewTableInfo(PageData pd, String name, String tabletype) throws Exception{
  1228. //根据TYPE得到NAME
  1229. String ProjectName = annualDailyCompService.getTableName(tabletype);
  1230. pd.put("TYPE", pd.get("TABLETYPE"));
  1231. pd.put("COMPANY_NAME", pd.get("COMPANY"));
  1232. pd.put("ROAD_NAME", pd.get("ROAD"));
  1233. pd.put("NAME", ProjectName+"---"+name);
  1234. pd.put("CTIME", Tools.date2Str(new Date())); //创建时间
  1235. pd.put("MTIME", Tools.date2Str(new Date())); //修改时间
  1236. pd.put("STATUS", "编制中"); //修改时间
  1237. pd.put("PROJECT_NAME", name);
  1238. annualPlanService.addNewTableInfo(pd); //insert annual_table_list新增立项详表
  1239. }
  1240. public StringBuffer checkData(PageData pd, HashMap<Object, Object> m) throws IOException {
  1241. StringBuffer msgBuff = new StringBuffer();
  1242. String jsonPath = (String) pd.get("TABLETYPE");
  1243. JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
  1244. JSONObject jsondate = (JSONObject) jsonarray.get(0);
  1245. //获取页面传来的项目名称
  1246. String project_name = (String) jsondate.get("PROJECT_NAME");
  1247. //获取字段的项目名称
  1248. String project_name_doc = (String) m.get("1,2");
  1249. if(project_name != null && project_name.length() != 0) {
  1250. if(!project_name.equals(project_name_doc) )
  1251. {
  1252. String str ="项目名和页面项目不一致,请检查后上传。"+"\n";
  1253. msgBuff.append(str);
  1254. return msgBuff;
  1255. }
  1256. }
  1257. String okey = ""; //其他说明事项的实际位置
  1258. for(Object getKey: m.keySet()){
  1259. if(m.get(getKey).equals("其它说明事项")){
  1260. okey = getKey.toString();
  1261. }
  1262. }
  1263. String moindex = okey.split(",")[0];
  1264. // 子表路径存放
  1265. StringBuffer jsonPathz = new StringBuffer(jsonPath);
  1266. List<ImoprtJson> docJson = ImportDoc.importJson(jsonPath);
  1267. String qindex1 = "";
  1268. String oindex1 = "";
  1269. String indexs="";
  1270. String[] index = null;
  1271. String index1 = "";
  1272. String index2 = "";
  1273. for (ImoprtJson ijson : docJson) {
  1274. if(ijson.getColumn().equals("QUALITY_PROGRESS") || ijson.getColumn().equals("RESEARCH_BASE")){
  1275. String [] qindex = ijson.getIndex().split(",");
  1276. qindex1 = qindex[0];
  1277. actulItemIndex = Integer.parseInt(moindex) - Integer.parseInt(qindex1) -4;
  1278. }
  1279. indexs = ijson.getIndex();
  1280. if(!indexs.isEmpty()){
  1281. // 获得单元格里面的内容
  1282. String value = (String) m.get(ijson.getIndex());
  1283. if(value==null) {
  1284. value = "";
  1285. }
  1286. // 获取单元格所在位置
  1287. index = ijson.getIndex().split(",");
  1288. index1 = index[0];
  1289. index2 = index[index.length-1];
  1290. if(ijson.getColumn().equals("OTHER_MATTER") || ijson.getColumn().equals("MATTER_YEAR")
  1291. || ijson.getColumn().equals("MATTER_NEW_CARRY") || ijson.getColumn().equals("MATTER_CONSULT")){ //"OTHER_MATTER"取实际位置的DOC值
  1292. okey = String.valueOf(Integer.parseInt(ijson.getIndex().split(",")[0]) + actulItemIndex) + "," + ijson.getIndex().split(",")[1];
  1293. if(!okey.isEmpty()){
  1294. // 获得单元格里面的内容
  1295. value = (String) m.get(okey);
  1296. if(value==null) {
  1297. value = "";
  1298. }
  1299. }
  1300. }
  1301. checkNoNullData(ijson, value.trim(), index1, index2, msgBuff);
  1302. }
  1303. }
  1304. // 检查子表
  1305. if (jsonPath.equals("highway_equipment_overhaul_project_dettable")
  1306. || jsonPath.equals("highway_traiffcinfo_sumtable") || jsonPath.equals("highway_technica_statable")
  1307. || jsonPath.equals("highway_daily_plan_statable"))
  1308. {
  1309. System.out.println("没有子表无需检查");
  1310. }else if(jsonPath.equals("highway_scientific_project_dettable"))
  1311. { //科研分费用来源和费用支出
  1312. jsonPathz = jsonPathz.append("_cost");
  1313. List<ImoprtJson> docJsonz = ImportDoc.importJson(jsonPathz.toString());
  1314. //费用来源(科目)存放List
  1315. List<String> cList1 = new ArrayList<String>() ;
  1316. //费用支出(科目)存放List
  1317. List<String> cList2 = new ArrayList<String>() ;
  1318. for(int i =0;i<docJsonz.size();i++) {
  1319. List<ImoprtJson> docJson1 = (List<ImoprtJson>) docJsonz.get(i);
  1320. for (ImoprtJson ijson : docJson1) {
  1321. // 获得单元格里面的内容
  1322. String column = ijson.getColumn();
  1323. String value = (String) m.get(ijson.getIndex());
  1324. if(value==null) {
  1325. value = "";
  1326. }
  1327. if(column.equals("SUBJECT")) {
  1328. cList1.add(value);
  1329. }
  1330. if(column.equals("EXPENDITURE_SUBJECT")) {
  1331. cList2.add(value);
  1332. }
  1333. // 获取单元格所在位置
  1334. //String index = ijson.getIndex();
  1335. index = ijson.getIndex().split(",");
  1336. index1 = index[0];
  1337. index2 = index[index.length-1];
  1338. checkNoNullData(ijson, value.trim(), index1, index2, msgBuff);
  1339. }
  1340. }
  1341. List<String> checkList1 = ImportDoc.removeString(cList1);
  1342. // long count1 = checkList1.stream().distinct().count();
  1343. //boolean isRepeat1 = count1 < checkList1.size();
  1344. boolean isRepeat1 = ImportDoc.repeatList(checkList1);
  1345. if(isRepeat1) {
  1346. String str = "费用来源(科目)有重复,请检查!"+"\n";
  1347. msgBuff.append(str);
  1348. }
  1349. List<String> checkList2 = ImportDoc.removeString(cList2);
  1350. //long count2 = checkList2.stream().distinct().count();
  1351. //boolean isRepeat2 = count2 < checkList2.size();
  1352. boolean isRepeat2 = ImportDoc.repeatList(checkList2);
  1353. if(isRepeat2) {
  1354. String str = "费用支出(科目)有重复,请检查!"+"\n";
  1355. msgBuff.append(str);
  1356. }
  1357. }else {
  1358. jsonPathz = jsonPathz.append("_cost");
  1359. List<ImoprtJson> docJsonz = ImportDoc.importJson(jsonPathz.toString());
  1360. //分项名称存放List
  1361. List<String> cList = new ArrayList<String>() ;
  1362. for(int i =0;i<docJsonz.size();i++) {
  1363. List<ImoprtJson> docJson1 = (List<ImoprtJson>) docJsonz.get(i);
  1364. for(ImoprtJson ijson : docJson1) {
  1365. // 获得单元格里面的内容
  1366. String column = ijson.getColumn();
  1367. index = ijson.getIndex().split(",");
  1368. index1 = index[0];
  1369. index2 = index[index.length-1];
  1370. for(int j = 0; j < actulItemIndex; j++){
  1371. String newIndex = (Integer.parseInt(index1) + j) + ","+index2;
  1372. String value = (String) m.get(newIndex);
  1373. if(value==null) {
  1374. value = "";
  1375. }
  1376. if(column.equals("ITEM_NAME")) {
  1377. cList.add(value);
  1378. }
  1379. checkNoNullData(ijson, value, index1, index2, msgBuff);
  1380. }
  1381. // 获取单元格所在位置
  1382. //String index = ijson.getIndex();
  1383. }
  1384. }
  1385. //判断子表分项名称是否有重复
  1386. List<String> checkList = ImportDoc.removeString(cList);
  1387. // long count = checkList.stream().distinct().count();
  1388. // boolean isRepeat = count < checkList.size();
  1389. boolean isRepeat = ImportDoc.repeatList(checkList);
  1390. if(isRepeat) {
  1391. String str = "分项名称有重复,请检查!"+"\n";
  1392. msgBuff.append(str);
  1393. }
  1394. }
  1395. return msgBuff;
  1396. }
  1397. private StringBuffer checkNoNullData(ImoprtJson ijson, String value, String index1, String index2,StringBuffer msgBuff){
  1398. // 获得单元格字符串长度
  1399. int valueSize = value.length();
  1400. // 字符串规则
  1401. String type = ijson.getType();
  1402. // 长度规则
  1403. int typeLength = Integer.valueOf(ijson.getLength()).intValue();
  1404. // 长度String类型
  1405. String typeLengthS = ijson.getLength();
  1406. // 小数个数
  1407. String scale = ijson.getScale();
  1408. //判断能否为空,1代表不为空
  1409. String notnull = ijson.getNotnull();
  1410. //如果notnull是空的情况下处理,说明可以为空
  1411. if(notnull==null||notnull.equals("")) {
  1412. if(value==null||value.equals("")) {
  1413. }else {
  1414. if (type.equals("String")) {
  1415. if (value.length() > typeLength) {
  1416. String str = "第" + index1+"行"+index2+"列"+ "单元格长度超过" + typeLengthS + "位。"+"\n";
  1417. msgBuff.append(str);
  1418. }
  1419. }
  1420. if (type.equals("int")) {
  1421. if (ImportDoc.isNumeric(value) || value.length() > typeLength) {
  1422. String str = "第" + index1+"行"+index2+"列"+ "单元格要填数字" + "长度不超过" + typeLengthS + "位。"+"\n";
  1423. msgBuff.append(str);
  1424. }
  1425. }
  1426. if (type.equals("decimal")) {
  1427. if (ImportDoc.isNumber(value.trim(), scale) || value.length() > typeLength) {
  1428. String str = "第"+ index1+"行"+index2+"列"+ "单元格要填数字! 长度不超过" + typeLengthS+ "位,小数点不超过" + scale + "位。"+"\n";
  1429. msgBuff.append(str);
  1430. }
  1431. }
  1432. }
  1433. }else {
  1434. int notnullt = Integer.parseInt(ijson.getNotnull().trim()) ;
  1435. if(notnullt==1) {
  1436. if(value==null||value.equals("")) {
  1437. String str = "第" + index1+"行"+index2+"列" + "不能为空"+"\n";
  1438. msgBuff.append(str);
  1439. }else {
  1440. if (type.equals("String")) {
  1441. if (value.length() > typeLength) {
  1442. String str = "第" + index1+"行"+index2+"列"+ "单元格长度超过" + typeLengthS + "位。"+"\n";
  1443. msgBuff.append(str);
  1444. }
  1445. }
  1446. if (type.equals("int")) {
  1447. if (ImportDoc.isNumeric(value) || value.length() > typeLength) {
  1448. String str = "第" + index1+"行"+index2+"列"+ "单元格要填数字" + "长度不超过" + typeLengthS + "位。"+"\n";
  1449. msgBuff.append(str);
  1450. }
  1451. }
  1452. if (type.equals("decimal")) {
  1453. if (ImportDoc.isNumber(value, scale) || value.length() > typeLength) {
  1454. String str = "第"+ index1+"行"+index2+"列"+ "单元格要填数字! 长度不超过" + typeLengthS+ "位小数点不超过" + scale + "位。"+"\n";
  1455. msgBuff.append(str);
  1456. }
  1457. }
  1458. }
  1459. }
  1460. }
  1461. return msgBuff;
  1462. }
  1463. /**
  1464. * 处理新增编辑数据
  1465. */
  1466. @ResponseBody
  1467. public Map<String,Object> dealWithImportData(PageData pd,List<PageData> varList,JSONArray jsonarray) throws Exception{
  1468. Map<String,Object> map = new HashMap<String,Object>();
  1469. try {
  1470. for (Object object : jsonarray) {
  1471. JSONObject arrMap = JSONObject.fromObject(object);
  1472. Set entryarray = arrMap.entrySet();
  1473. ArrayList<Object> keyarray = new ArrayList<Object>();
  1474. ArrayList<Object> valuearray = new ArrayList<Object>();
  1475. for (Object entry : entryarray) {
  1476. Object[] arr = entry.toString().split("=");
  1477. boolean saveFlag = true;
  1478. //编辑
  1479. if (varList != null && varList.size() != 0)
  1480. saveFlag = !"ROAD".equals(arr[0])&&!"YEAR".equals(arr[0])&&!"COMPANY".equals(arr[0])
  1481. &&!"ROAD_ID".equals(arr[0])&&!"COMPANY_ID".equals(arr[0])&&!"PROJECT_NAME".equals(arr[0]);
  1482. saveFlag = saveFlag && !"STATUS".equals(arr[0]);
  1483. if (saveFlag) {
  1484. keyarray.add(arr[0]);
  1485. if (arr.length > 1) {
  1486. valuearray.add(arr[1]);
  1487. }else {
  1488. valuearray.add(null);
  1489. }
  1490. }
  1491. }
  1492. pd.put("KEYS", StringUtils.join(keyarray.toArray(), ","));
  1493. pd.put("KEYARRAY", keyarray);
  1494. pd.put("VALUEARRAY", valuearray);
  1495. pd.put("ROAD_ID", arrMap.get("ROAD_ID"));
  1496. pd.put("PROJECT_NAME", arrMap.get("PROJECT_NAME"));
  1497. pd.put("viewtype", setViewType(pd.getString("TABLETYPE")));
  1498. if (pd.getString("TABLETYPE").equals("highway_technica_statable")||pd.getString("TABLETYPE").equals("highway_traiffcinfo_sumtable"))
  1499. pd.put("viewtype", 1);
  1500. //新增
  1501. if (varList == null || varList.size() == 0) {
  1502. annualDailyCompService.saveTableRecod(pd);
  1503. }
  1504. //编辑
  1505. else if (keyarray.size() > 0) annualDailyCompService.editTableRecod(pd);
  1506. }
  1507. map.put("msg","success");
  1508. } catch (Exception e) {
  1509. map.put("msg","保存失败!");
  1510. }
  1511. return map;
  1512. }
  1513. /**
  1514. * 处理导入的word数据
  1515. */
  1516. @ResponseBody
  1517. public Map<String,Object> dealWithImportWordData(boolean flag, PageData pd, JSONObject jsonObject) throws Exception{
  1518. Map<String,Object> map = new HashMap<String,Object>();
  1519. try {
  1520. JSONObject arrMap = jsonObject;
  1521. Set entryarray = arrMap.entrySet();
  1522. ArrayList<Object> keyarray = new ArrayList<Object>();
  1523. ArrayList<Object> valuearray = new ArrayList<Object>();
  1524. for (Object entry : entryarray) {
  1525. Object[] arr = entry.toString().split("=");
  1526. keyarray.add(arr[0]);
  1527. if (arr.length > 1) {
  1528. valuearray.add(arr[1]);
  1529. }else {
  1530. valuearray.add(null);
  1531. }
  1532. }
  1533. pd.put("KEYS", StringUtils.join(keyarray.toArray(), ","));
  1534. pd.put("KEYARRAY", keyarray);
  1535. pd.put("VALUEARRAY", valuearray);
  1536. pd.put("PROJECT_NAME", arrMap.get("PROJECT_NAME"));
  1537. pd.put("viewtype", setViewType(pd.getString("TABLETYPE")));
  1538. if (pd.getString("TABLETYPE").equals("highway_technica_statable")||pd.getString("TABLETYPE").equals("highway_traiffcinfo_sumtable"))
  1539. pd.put("viewtype", 1);
  1540. //新增
  1541. if (flag) {
  1542. annualDailyCompService.saveTableRecod(pd);
  1543. }else{
  1544. //编辑
  1545. annualDailyCompService.editTableRecod(pd);
  1546. }
  1547. map.put("msg","success");
  1548. } catch (Exception e) {
  1549. System.out.println(e.toString());
  1550. map.put("msg","保存失败!");
  1551. }
  1552. return map;
  1553. }
  1554. /**
  1555. * 处理导入的立项表子表word数据
  1556. */
  1557. @ResponseBody
  1558. public Map<String,Object> dealWithWordSubListData(PageData pd,JSONArray jsonarray) throws Exception{
  1559. Map<String,Object> map = new HashMap<String,Object>();
  1560. boolean flag = true;
  1561. List<PageData> pdList = new ArrayList<PageData>();
  1562. try{
  1563. if ("highway_equipment_overhaul_project_dettable".equals(pd.get("TABLE_NAME"))) {
  1564. flag = false;
  1565. }else{
  1566. annualDailyCompService.deleteSubListDataWord(pd);
  1567. }
  1568. for (Object object : jsonarray) {
  1569. PageData newpd = new PageData();
  1570. JSONObject arrMap = JSONObject.fromObject(object);
  1571. Set entryarray = arrMap.entrySet();
  1572. if (flag) {
  1573. ArrayList<Object> keyarray = new ArrayList<Object>();
  1574. ArrayList<Object> valuearray = new ArrayList<Object>();
  1575. for (Object entry : entryarray) {
  1576. Object[] arr = entry.toString().split("=");
  1577. if (arr.length > 1) {
  1578. keyarray.add(arr[0]);
  1579. valuearray.add(arr[1]);
  1580. }
  1581. }
  1582. newpd.put("TABLE_NAME", pd.get("TABLE_NAME"));
  1583. newpd.put("KEYS", StringUtils.join(keyarray.toArray(), ","));
  1584. newpd.put("KEYARRAY", keyarray);
  1585. newpd.put("VALUEARRAY", valuearray);
  1586. if(!"highway_scientific_project_dettable_cost".equals(pd.get("TABLE_NAME"))){
  1587. if(newpd.get("KEYARRAY").toString().contains("TOTAL_COST")){
  1588. pdList.add(newpd);
  1589. }
  1590. }else{
  1591. if(newpd.get("KEYARRAY").toString().contains("SUBJECT")){
  1592. pdList.add(newpd);
  1593. }
  1594. }
  1595. }
  1596. }
  1597. for(PageData tpd : pdList){
  1598. //新增
  1599. annualDailyCompService.saveSubListDataWord(tpd);
  1600. }
  1601. map.put("msg","success");
  1602. }catch(Exception e){
  1603. map.put("msg", e.toString());
  1604. }
  1605. return map;
  1606. }
  1607. //将导入word提取的数据入库
  1608. public Map<String, Object> importDocData(PageData pd, HashMap<Object, Object> m) throws Exception {
  1609. //判断是否是已存在的立项表
  1610. boolean flag = true;
  1611. List<PageData> varList = annualDailyCompService.hasTableRecod2(pd);
  1612. if("highway_technica_statable".equals(pd.get("TABLETYPE"))
  1613. || "highway_traiffcinfo_sumtable".equals(pd.get("TABLETYPE"))){
  1614. if(varList.size() > 0){
  1615. flag = false; //新导入的项目属于原项目
  1616. }
  1617. }else{
  1618. for(PageData varpd : varList){
  1619. if(varpd.get("PROJECT_NAME") != null){
  1620. if(m.get("1,2").equals(varpd.get("PROJECT_NAME"))){
  1621. flag = false; //新导入的项目属于原项目
  1622. break;
  1623. }
  1624. }
  1625. }
  1626. }
  1627. //先处理子表数据,得到总表的规模和估算金额
  1628. JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
  1629. String jsonPath = (String) pd.get("TABLETYPE") + "_cost";
  1630. double totalCost = (double)0;
  1631. String PROJECT_SCALE = "小修";
  1632. Map<String, Object> map = new HashMap<String, Object>();
  1633. if(!("highway_equipment_overhaul_project_dettable_cost".equalsIgnoreCase(jsonPath)
  1634. || "highway_quality_goals_table_cost".equalsIgnoreCase(jsonPath)
  1635. || "highway_technica_statable_cost".equalsIgnoreCase(jsonPath)
  1636. || "highway_traiffcinfo_sumtable_cost".equalsIgnoreCase(jsonPath)
  1637. || "highway_scientific_project_dettable_cost".equalsIgnoreCase(jsonPath))){ //排除没有子表的
  1638. List subdocJson = ImportDoc.importJson(jsonPath);
  1639. JSONObject jsondate = jsonarray.getJSONObject(1);
  1640. JSONArray sublistArray = new JSONArray();
  1641. subdocJson = ImportDoc.importJson(jsonPath);
  1642. boolean isAddFlag = true;
  1643. for(int i =0;i<actulItemIndex;i++) {
  1644. List docJsonArray = (List) subdocJson.get(0);
  1645. jsondate.put("PROJECT_NAME", m.get("1,2"));
  1646. for(int j=0; j<docJsonArray.size();j++) {
  1647. ImoprtJson ijson = (ImoprtJson) docJsonArray.get(j);
  1648. String jsonIndex = String.valueOf(Integer.parseInt(ijson.getIndex().split(",")[0]) + i) + "," + ijson.getIndex().split(",")[1];
  1649. jsondate.put(ijson.getColumn(), (String) m.get(jsonIndex));
  1650. if(!"highway_scientific_project_dettable_cost".equalsIgnoreCase(jsonPath)){
  1651. if(j == docJsonArray.size()-1 && !"".equalsIgnoreCase(jsondate.get("UNIT_PRICE").toString())){
  1652. double tCost = (double)0;
  1653. tCost = Double.parseDouble(jsondate.get("UNIT_PRICE").toString()) * Double.parseDouble(jsondate.get("NUMBER").toString());
  1654. jsondate.put("TOTAL_COST", String.valueOf(tCost));
  1655. String id = UUID.randomUUID().toString().replaceAll("-", "");
  1656. jsondate.put("ID", id);
  1657. totalCost += tCost;
  1658. }
  1659. if("".equalsIgnoreCase(jsondate.get("ITEM_NAME").toString())){
  1660. isAddFlag = false;
  1661. break;
  1662. }
  1663. }else{
  1664. if((!"".equals(jsondate.get("SUBJECT")) || !"".equals(jsondate.get("EXPENDITURE_SUBJECT")))){
  1665. if(jsondate.get("ID").equals("")){
  1666. String id = UUID.randomUUID().toString().replaceAll("-", "");
  1667. jsondate.put("ID", id);
  1668. }
  1669. }else{
  1670. isAddFlag = false;
  1671. break;
  1672. }
  1673. }
  1674. }
  1675. if(isAddFlag){
  1676. sublistArray.add(jsondate);
  1677. jsondate.put("ID", "");
  1678. }
  1679. }
  1680. pd.put("TABLE_NAME", jsonPath);
  1681. pd.put("PROJECT_NAME", m.get("1,2"));
  1682. map = dealWithWordSubListData(pd, sublistArray); //立项表子表合入数据
  1683. }else{
  1684. map.put("msg","success");
  1685. }
  1686. if(!("highway_scientific_project_dettable_cost".equalsIgnoreCase(jsonPath)
  1687. || "highway_equipment_overhaul_project_dettable_cost".equalsIgnoreCase(jsonPath)
  1688. || "highway_quality_goals_table_cost".equalsIgnoreCase(jsonPath)
  1689. || "highway_technica_statable_cost".equalsIgnoreCase(jsonPath)
  1690. || "highway_traiffcinfo_sumtable_cost".equalsIgnoreCase(jsonPath)
  1691. || "highway_scientific_project_dettable_cost".equalsIgnoreCase(jsonPath))){
  1692. if(totalCost/10000 < 500){
  1693. PROJECT_SCALE = "小修";
  1694. }else if(totalCost/10000 > 5000){
  1695. PROJECT_SCALE = "大修";
  1696. }else{
  1697. PROJECT_SCALE = "中修";
  1698. }
  1699. }
  1700. jsonPath = (String) pd.get("TABLETYPE");
  1701. JSONObject dataObject = new JSONObject();
  1702. if (jsonarray.size() > 0 && jsonarray != null) {
  1703. List<ImoprtJson> docJson = ImportDoc.importJson(jsonPath);
  1704. //JSONObject jsondate = (JSONObject) jsonarray.get(0);
  1705. for(ImoprtJson ijson : docJson) {
  1706. if(ijson.getColumn().equals("KEY_WORDS")) {
  1707. String a= (String) m.get(ijson.getIndex());
  1708. String b = a.replace(",", ",");
  1709. dataObject.put(ijson.getColumn(), b);
  1710. continue;
  1711. }
  1712. if(!("highway_scientific_project_dettable".equalsIgnoreCase(jsonPath)
  1713. || "highway_equipment_overhaul_project_dettable".equalsIgnoreCase(jsonPath)
  1714. || "highway_quality_goals_table".equalsIgnoreCase(jsonPath)
  1715. || "highway_technica_statable".equalsIgnoreCase(jsonPath)
  1716. || "highway_traiffcinfo_sumtable".equalsIgnoreCase(jsonPath)
  1717. || "highway_scientific_project_dettable".equalsIgnoreCase(jsonPath))){
  1718. if("PROJECT_COST".equalsIgnoreCase(ijson.getColumn()) || "TOTAL_COST".equalsIgnoreCase(ijson.getColumn())){
  1719. dataObject.put(ijson.getColumn(), String.valueOf(totalCost/10000));
  1720. }else if("PROJECT_SCALE".equalsIgnoreCase(ijson.getColumn())){
  1721. dataObject.put(ijson.getColumn(), PROJECT_SCALE);
  1722. }else if("OTHER_MATTER".equalsIgnoreCase(ijson.getColumn())){
  1723. dataObject.put(ijson.getColumn(), (String) m.get(String.valueOf(Integer.parseInt(ijson.getIndex().split(",")[0]) + actulItemIndex) + "," + ijson.getIndex().split(",")[1]));
  1724. }else{
  1725. dataObject.put(ijson.getColumn(), (String) m.get(ijson.getIndex()));
  1726. }
  1727. }else if("highway_scientific_project_dettable".equalsIgnoreCase(jsonPath)){
  1728. if("OTHER_MATTER".equalsIgnoreCase(ijson.getColumn()) || "MATTER_YEAR".equalsIgnoreCase(ijson.getColumn())
  1729. || "MATTER_NEW_CARRY".equalsIgnoreCase(ijson.getColumn()) || "MATTER_CONSULT".equalsIgnoreCase(ijson.getColumn())){
  1730. dataObject.put(ijson.getColumn(), (String) m.get(String.valueOf(Integer.parseInt(ijson.getIndex().split(",")[0]) + actulItemIndex) + "," + ijson.getIndex().split(",")[1]));
  1731. }else{
  1732. dataObject.put(ijson.getColumn(), (String) m.get(ijson.getIndex()));
  1733. }
  1734. }else{
  1735. dataObject.put(ijson.getColumn(), (String) m.get(ijson.getIndex()));
  1736. }
  1737. }
  1738. if(dataObject.get("TOTAL_COST") == null){
  1739. dataObject.put("TOTAL_COST", dataObject.get("PROJECT_COST"));
  1740. }
  1741. dataObject.put("YEAR", pd.get("YEAR"));
  1742. dataObject.put("COMPANY", pd.get("COMPANY"));
  1743. dataObject.put("COMPANY_ID", pd.get("COMPANY_ID"));
  1744. dataObject.put("ROAD_ID", pd.get("ROAD_ID"));
  1745. dataObject.put("ROAD", pd.get("ROAD"));
  1746. }
  1747. if (map.get("msg").equals("success")){
  1748. map = dealWithImportWordData(flag, pd, dataObject);
  1749. if("highway_technica_statable".equalsIgnoreCase(jsonPath)
  1750. || "highway_traiffcinfo_sumtable".equalsIgnoreCase(jsonPath)){
  1751. pd.put("STATUS", "编制中");
  1752. annualDailyCompService.updateStatus(pd);
  1753. annualDailyCompService.updatePlanStatus(pd);
  1754. }
  1755. }
  1756. if (map.get("msg").equals("success")) {
  1757. //主表插入数据成功再添加table表
  1758. if(flag && !("highway_technica_statable".equalsIgnoreCase(jsonPath)
  1759. || "highway_traiffcinfo_sumtable".equalsIgnoreCase(jsonPath))){
  1760. varList = null; //新导入的项目不属于原项目,执行insert操作
  1761. String projectName = (String) m.get("1,2");
  1762. addNewTableInfo(pd, projectName, jsonPath);
  1763. annualDailyCompService.updatePlanStatus(pd);
  1764. }
  1765. }
  1766. return map;
  1767. }
  1768. public int setViewType(String tableType) {
  1769. int viewType = 1;
  1770. if (tableType.equals("highway_plan_comp_sumtable")||tableType.equals("highway_annual_plan_sumtable")
  1771. ||tableType.equals("highway_quality_goals_table")|| tableType.equals("highway_daily_plan_statable")
  1772. ||tableType.equals("highway_reserve_fees_sumtable") || tableType.equals("highway_daily_plan_statable")
  1773. ||tableType.equals("highway_daily_comp_sumtable") || tableType.equals("highway_daily_comp_dettable")) {
  1774. viewType = 2;
  1775. }else if (tableType.equals("highway_technica_statable")
  1776. ||tableType.equals("highway_traiffcinfo_sumtable")
  1777. ||tableType.equals("highway_prevention_project_dettable")
  1778. ||tableType.equals("highway_emergency_project_dettable")
  1779. ||tableType.equals("highway_repair_project_dettable")
  1780. ||tableType.equals("highway_test_project_dettable")
  1781. ||tableType.equals("highway_scientific_project_dettable")
  1782. ||tableType.equals("highway_equipment_overhaul_project_dettable")
  1783. ||tableType.equals("highway_special_project_dettable")) {
  1784. viewType = 3;
  1785. }
  1786. return viewType;
  1787. }
  1788. @RequestMapping(value="/updateStatus")
  1789. @ResponseBody
  1790. public Object updateStatus() throws Exception{
  1791. String username = Jurisdiction.getUsername();
  1792. ModelAndView mv = this.getModelAndView();
  1793. PageData pd = new PageData();
  1794. pd = this.getPageData();
  1795. int intStatus = Integer.parseInt(pd.getString("STATUS"));
  1796. String pdStatus = "";
  1797. switch(intStatus){
  1798. case 0:
  1799. pdStatus = "新建";break;
  1800. case 1:
  1801. pdStatus = "编制中";
  1802. pd.put("MTIME", Tools.date2Str(new Date()));
  1803. pd.put("COMPILER", username);
  1804. pd.put("COMPILE_TIME", Tools.date2Str(new Date()));
  1805. break;
  1806. case 2:
  1807. pdStatus = "待审核";break;
  1808. case 3:
  1809. pd.put("MTIME", Tools.date2Str(new Date()));
  1810. pdStatus = "审核中";break;
  1811. case 4:
  1812. pdStatus = "审核通过";
  1813. pd.put("AUDITOR", username);
  1814. pd.put("AUDIT_TIME", Tools.date2Str(new Date()));
  1815. break;
  1816. case 5:
  1817. pdStatus = "审核不通过";
  1818. pd.put("AUDITOR", username);
  1819. pd.put("AUDIT_TIME", Tools.date2Str(new Date()));
  1820. break;
  1821. case 6:
  1822. pdStatus = "路公司驳回";break;
  1823. case 7:
  1824. pdStatus = "待审批";break;
  1825. case 8:
  1826. pd.put("MTIME", Tools.date2Str(new Date()));
  1827. pdStatus = "审批中";break;
  1828. case 9:
  1829. pdStatus = "审批通过";
  1830. pd.put("APPROVER", username);
  1831. pd.put("APPROVE_TIME", Tools.date2Str(new Date()));
  1832. break;
  1833. case 10:
  1834. pdStatus = "审批不通过";
  1835. pd.put("APPROVER", username);
  1836. pd.put("APPROVE_TIME", Tools.date2Str(new Date()));
  1837. break;
  1838. case 11:
  1839. pdStatus = "控股驳回";break;
  1840. default:
  1841. pdStatus = "新建";break;
  1842. }
  1843. pd.put("STATUS", pdStatus);
  1844. if("undefined".equals(pd.get("PROJECT_NAME"))){
  1845. pd.remove("PROJECT_NAME");
  1846. }
  1847. annualDailyCompService.updateStatus(pd); //update annual_table_list 表状态
  1848. //List<PageData> tableInfo = annualDailyCompService.getAllTableStatus(pd); //查询 annual_table_list中同一个plan下的表状态
  1849. String planStatus = dealStatus(pd);
  1850. if(!planStatus.isEmpty()){
  1851. pd.put("STATUS", planStatus);
  1852. annualDailyCompService.updatePlanStatus(pd); //update annual_plan_list 表状态
  1853. }
  1854. Map<String,Object> map = new HashMap<String,Object>();
  1855. map.put("msg", pdStatus);
  1856. return AppUtil.returnObject(new PageData(), map);
  1857. }
  1858. @RequestMapping(value="/updatePlanStatus")
  1859. @ResponseBody
  1860. public Object updatePlanStatus() throws Exception{
  1861. String username = Jurisdiction.getUsername();
  1862. ModelAndView mv = this.getModelAndView();
  1863. PageData pd = new PageData();
  1864. pd = this.getPageData();
  1865. pd.put("STATUS", "删除");
  1866. String planStatus = dealStatus(pd);
  1867. if(!planStatus.isEmpty()){
  1868. pd.put("STATUS", planStatus);
  1869. annualDailyCompService.updatePlanStatus(pd); //update annual_plan_list 表状态
  1870. }
  1871. Map<String,Object> map = new HashMap<String,Object>();
  1872. map.put("msg","success");
  1873. return AppUtil.returnObject(new PageData(), map);
  1874. }
  1875. private String dealStatus(PageData pd) throws Exception{
  1876. String annualPlanStatus = "";
  1877. if(pd.get("TABLETYPE") !=null){
  1878. if("highway_reserve_fees_sumtable".equalsIgnoreCase(pd.get("TABLETYPE").toString())){
  1879. pd.put("YEAR", String.valueOf(Integer.parseInt(pd.get("YEAR").toString()) + 1));
  1880. }
  1881. }
  1882. String planid = annualDailyCompService.getPlanId(pd); //通过companyid和year获取 annual_plan_list对应的id
  1883. //String planStatus = annualDailyCompService.getPlanStatus(pd); //查询 annual_table_list对应的plan状态
  1884. List<PageData> reportIds = annualDailyCompService.getReportsInfo(planid); //通过planid获取对应的reportids,所有的路段
  1885. Map<PageData, List<PageData>> reportAndTableMap = new HashMap<PageData, List<PageData>>();
  1886. for(PageData reportid : reportIds){
  1887. List<PageData> tableInfoList = annualDailyCompService.getUserTableInfo(reportid);
  1888. reportAndTableMap.put(reportid, tableInfoList);
  1889. if(isXJstatus(reportAndTableMap)){
  1890. annualPlanStatus = "新建";
  1891. }else if(isBZstatus(reportAndTableMap)){
  1892. annualPlanStatus = "编制中";
  1893. }else if(isDSHstatus(reportAndTableMap)){
  1894. annualPlanStatus = "待审核";
  1895. }else if(isSHTGstatus(reportAndTableMap)){
  1896. annualPlanStatus = "审核通过";
  1897. }else if("".equalsIgnoreCase(isBFSHTGstatus(reportAndTableMap))){
  1898. annualPlanStatus = isBFSHTGstatus(reportAndTableMap);
  1899. }else if("".equalsIgnoreCase(isSHBTGstatus(reportAndTableMap))){
  1900. annualPlanStatus = isSHBTGstatus(reportAndTableMap);
  1901. }else if(isDSPstatus(reportAndTableMap)){
  1902. annualPlanStatus = "待审批";
  1903. }else if(isSPTGstatus(reportAndTableMap)){
  1904. annualPlanStatus = "审批通过";
  1905. }else if(isSPBTGstatus(reportAndTableMap)){
  1906. annualPlanStatus = "控股驳回";
  1907. }
  1908. }
  1909. return annualPlanStatus;
  1910. }
  1911. //新建
  1912. private boolean isXJstatus(Map<PageData, List<PageData>> reportAndTableMap){
  1913. boolean flag = false;
  1914. for (Entry<PageData, List<PageData>> entry : reportAndTableMap.entrySet()) {
  1915. //System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
  1916. for(PageData tablepd : entry.getValue()){
  1917. String status = tablepd.get("STATUS").toString();
  1918. if(!("新建".equalsIgnoreCase(status) || "自动统计".equalsIgnoreCase(status))){
  1919. return false;
  1920. }else{
  1921. flag = true;
  1922. }
  1923. }
  1924. }
  1925. return flag;
  1926. }
  1927. //编制中
  1928. private boolean isBZstatus(Map<PageData, List<PageData>> reportAndTableMap){
  1929. boolean flag = false;
  1930. for (Entry<PageData, List<PageData>> entry : reportAndTableMap.entrySet()) {
  1931. //System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
  1932. for(PageData tablepd : entry.getValue()){
  1933. String status = tablepd.get("STATUS").toString();
  1934. if("待审核".equalsIgnoreCase(status) || "审核通过".equalsIgnoreCase(status) ||"审核不通过".equalsIgnoreCase(status)
  1935. || "待审批".equalsIgnoreCase(status) || "审批通过".equalsIgnoreCase(status) || "审批不通过".equalsIgnoreCase(status)){
  1936. return false;
  1937. }else if("编制中".equalsIgnoreCase(status)){
  1938. flag = true;
  1939. }
  1940. }
  1941. }
  1942. return flag;
  1943. }
  1944. //待审核
  1945. private boolean isDSHstatus(Map<PageData, List<PageData>> reportAndTableMap){
  1946. boolean flag = false;
  1947. for (Entry<PageData, List<PageData>> entry : reportAndTableMap.entrySet()) {
  1948. for(PageData tablepd : entry.getValue()){
  1949. String status = tablepd.get("STATUS").toString();
  1950. if("待审核".equalsIgnoreCase(status)){
  1951. return true;
  1952. }
  1953. }
  1954. }
  1955. return flag;
  1956. }
  1957. //审核通过
  1958. private boolean isSHTGstatus(Map<PageData, List<PageData>> reportAndTableMap){
  1959. boolean flag = false;
  1960. for (Entry<PageData, List<PageData>> entry : reportAndTableMap.entrySet()) {
  1961. for(PageData tablepd : entry.getValue()){
  1962. String status = tablepd.get("STATUS").toString();
  1963. if(!"审核通过".equalsIgnoreCase(status) && !"自动统计".equalsIgnoreCase(status)){
  1964. return false;
  1965. }else{
  1966. flag = true;
  1967. }
  1968. }
  1969. }
  1970. return flag;
  1971. }
  1972. //部分审核通过(路段1,路段2)
  1973. private String isBFSHTGstatus(Map<PageData, List<PageData>> reportAndTableMap){
  1974. String shtgRoads = "";
  1975. for (Entry<PageData, List<PageData>> entry : reportAndTableMap.entrySet()) {
  1976. for(PageData tablepd : entry.getValue()){
  1977. String status = tablepd.get("STATUS").toString();
  1978. if("待审核".equalsIgnoreCase(status)){
  1979. return "待审核";
  1980. }else if("审核通过".equalsIgnoreCase(status) && !shtgRoads.contains(entry.getKey().get("ROAD_NAME").toString())){
  1981. shtgRoads += entry.getKey().get("ROAD_NAME") + ",";
  1982. }
  1983. }
  1984. }
  1985. return "部分审核通过("+shtgRoads.indexOf(0, shtgRoads.length()-1)+")";
  1986. }
  1987. //审核不通过
  1988. private String isSHBTGstatus(Map<PageData, List<PageData>> reportAndTableMap){
  1989. String shbtgRoads = "";
  1990. for (Entry<PageData, List<PageData>> entry : reportAndTableMap.entrySet()) {
  1991. for(PageData tablepd : entry.getValue()){
  1992. String status = tablepd.get("STATUS").toString();
  1993. if("待审核".equalsIgnoreCase(status)){
  1994. return "待审核";
  1995. }else if("审核不通过".equalsIgnoreCase(status) && !shbtgRoads.contains(entry.getKey().get("ROAD_NAME").toString())){
  1996. shbtgRoads += entry.getKey().get("ROAD_NAME") + ",";
  1997. }
  1998. }
  1999. }
  2000. return "路公司驳回("+shbtgRoads.indexOf(0, shbtgRoads.length()-1)+")";
  2001. }
  2002. //待审批
  2003. private boolean isDSPstatus(Map<PageData, List<PageData>> reportAndTableMap){
  2004. boolean flag = false;
  2005. for (Entry<PageData, List<PageData>> entry : reportAndTableMap.entrySet()) {
  2006. for(PageData tablepd : entry.getValue()){
  2007. String status = tablepd.get("STATUS").toString();
  2008. if("待审批".equalsIgnoreCase(status)){
  2009. return true;
  2010. }
  2011. }
  2012. }
  2013. return flag;
  2014. }
  2015. //审批通过
  2016. private boolean isSPTGstatus(Map<PageData, List<PageData>> reportAndTableMap){
  2017. boolean flag = false;
  2018. for (Entry<PageData, List<PageData>> entry : reportAndTableMap.entrySet()) {
  2019. for(PageData tablepd : entry.getValue()){
  2020. String status = tablepd.get("STATUS").toString();
  2021. if(!"审批通过".equalsIgnoreCase(status) && !"自动统计".equalsIgnoreCase(status)){
  2022. return false;
  2023. }else{
  2024. flag = true;
  2025. }
  2026. }
  2027. }
  2028. return flag;
  2029. }
  2030. //审批不通过
  2031. private boolean isSPBTGstatus(Map<PageData, List<PageData>> reportAndTableMap){
  2032. boolean flag = true;
  2033. for (Entry<PageData, List<PageData>> entry : reportAndTableMap.entrySet()) {
  2034. for(PageData tablepd : entry.getValue()){
  2035. String status = tablepd.get("STATUS").toString();
  2036. if("审批不通过".equalsIgnoreCase(status)){
  2037. return true;
  2038. }else if("待审批".equalsIgnoreCase(status) || "新建".equalsIgnoreCase(status)
  2039. || "待审核".equalsIgnoreCase(status) || "审核通过".equalsIgnoreCase(status) ||"审核不通过".equalsIgnoreCase(status)){
  2040. flag = false;
  2041. }
  2042. }
  2043. }
  2044. return flag;
  2045. }
  2046. /* private String dealStatus(PageData pd) throws Exception{
  2047. String annualPlanStatus = "";
  2048. if(pd.get("TABLETYPE") !=null){
  2049. if("highway_reserve_fees_sumtable".equalsIgnoreCase(pd.get("TABLETYPE").toString())){
  2050. pd.put("YEAR", String.valueOf(Integer.parseInt(pd.get("YEAR").toString()) + 1));
  2051. }
  2052. }
  2053. String planid = annualDailyCompService.getPlanId(pd); //通过companyid和year获取 annual_plan_list对应的id
  2054. String planStatus = annualDailyCompService.getPlanStatus(pd); //查询 annual_table_list对应的plan状态
  2055. List<String> reportIds = annualDailyCompService.getReportIds(planid); //通过planid获取对应的reportids,所有的路段
  2056. //PageData reportInfo = annualDailyCompService.getReportId(pd); //通过pd获取当前修改的table对应的report信息,一条路段
  2057. //年计划状态为“新建”,进行“编制”操作,年计划和对应表状态都为“编制中”
  2058. if("新建".equalsIgnoreCase(planStatus)){
  2059. annualPlanStatus = "编制中";
  2060. }
  2061. PageData userInfo = annualPlanService.getCompanyAndRoad(Jurisdiction.getUsername().toString()); //通过username获取公司和路段
  2062. //通过ROLE_ID获取角色
  2063. String roleName = annualPlanService.getRoleName(userInfo.get("ROLE_ID").toString());
  2064. if("路桥公司管理员".equalsIgnoreCase(roleName)){
  2065. if("待审核".equalsIgnoreCase(planStatus) && "审核通过".equalsIgnoreCase(pd.get("STATUS").toString())){
  2066. annualPlanStatus = "审核中";
  2067. }else if(("待审核".equalsIgnoreCase(planStatus) || "审核中".equalsIgnoreCase(planStatus))
  2068. && "审核不通过".equalsIgnoreCase(pd.get("STATUS").toString())){
  2069. annualPlanStatus = "路公司驳回(" + pd.get("ROAD").toString() + ")";
  2070. }
  2071. if("审核中".equalsIgnoreCase(planStatus) && "审核通过".equalsIgnoreCase(pd.get("STATUS").toString())){
  2072. if(hasAllPassStatus(reportIds,"审核通过")){
  2073. annualPlanStatus = "审核通过";
  2074. }
  2075. }
  2076. if(planStatus.contains("路公司驳回") && "审核不通过".equalsIgnoreCase(pd.get("STATUS").toString())){
  2077. String roadnames = planStatus.replace(")", "").trim();
  2078. if(!roadnames.contains(pd.get("ROAD").toString())){
  2079. roadnames += "," + pd.get("ROAD").toString();
  2080. annualPlanStatus = roadnames + ")";
  2081. }
  2082. }
  2083. //路公司用户直接修改保存原来审核不通过的表格
  2084. if(planStatus.contains("路公司驳回") && "编制中".equalsIgnoreCase(pd.get("STATUS").toString())){
  2085. annualPlanStatus = hasAllPassOrEditStatus(reportIds, planStatus, "审核通过", "编制中");
  2086. }
  2087. //路公司用户直接删除审核不通过的表格
  2088. if(planStatus.contains("路公司驳回") && "删除".equalsIgnoreCase(pd.get("STATUS").toString())){
  2089. annualPlanStatus = hasAllPassOrEditStatus(reportIds, planStatus, "审核通过", "编制中");
  2090. }
  2091. if(planStatus.contains("控股驳回") && "审核不通过".equalsIgnoreCase(pd.get("STATUS").toString())){
  2092. annualPlanStatus = "路公司驳回(" + pd.get("ROAD").toString() + ")";
  2093. }
  2094. if(planStatus.contains("控股驳回") && "待审批".equalsIgnoreCase(pd.get("STATUS").toString())){
  2095. annualPlanStatus = "待审批";
  2096. }
  2097. if((("审核中").equalsIgnoreCase(planStatus)||("审核通过").equalsIgnoreCase(planStatus))
  2098. && "待审批".equalsIgnoreCase(pd.get("STATUS").toString())){
  2099. annualPlanStatus = "待审批";
  2100. }
  2101. if(("编制中").equalsIgnoreCase(planStatus) && "待审批".equalsIgnoreCase(pd.get("STATUS").toString())){
  2102. annualPlanStatus = "待审批";
  2103. }
  2104. }
  2105. if("路段管理员".equalsIgnoreCase(roleName)){
  2106. if(planStatus.contains("编制中") && "待审核".equalsIgnoreCase(pd.get("STATUS").toString())){
  2107. annualPlanStatus = "待审核";
  2108. }
  2109. if(planStatus.contains("路公司驳回") && "待审核".equalsIgnoreCase(pd.get("STATUS").toString())){
  2110. String[] roadnames = planStatus.replace("路公司驳回(", "").replace(")", "").trim().split(",");
  2111. String roads = "";
  2112. for(String road : roadnames){
  2113. if(pd.get("ROAD") != null){
  2114. if(!road.trim().equalsIgnoreCase(pd.get("ROAD").toString().trim())){
  2115. roads += road.trim() + ",";
  2116. }
  2117. }
  2118. if(pd.get("ROADS") != null){
  2119. String[] tempRoads = (String[])pd.get("ROADS");
  2120. for(String tempRoad : tempRoads){
  2121. if(!road.trim().equalsIgnoreCase(tempRoad.trim())){
  2122. roads += road.trim() + ",";
  2123. }
  2124. }
  2125. }
  2126. }
  2127. if(roads.isEmpty()){
  2128. annualPlanStatus = "待审核";
  2129. }else{
  2130. annualPlanStatus = "路公司驳回(" + roads.substring(0, roads.length()-1) + ")";
  2131. }
  2132. }
  2133. //路段用户删除(审核不通过)的表格
  2134. if("删除".equalsIgnoreCase(pd.get("STATUS").toString())){
  2135. annualPlanStatus = getAllTableStatus(reportIds);
  2136. }
  2137. }
  2138. if("控股集团管理员".equalsIgnoreCase(roleName)){
  2139. if("待审批".equalsIgnoreCase(planStatus) && "审批通过".equalsIgnoreCase(pd.get("STATUS").toString())){
  2140. annualPlanStatus = "审批中";
  2141. }else if(("待审批".equalsIgnoreCase(planStatus) || "审批中".equalsIgnoreCase(planStatus))
  2142. && "审批不通过".equalsIgnoreCase(pd.get("STATUS").toString())){
  2143. annualPlanStatus = "控股驳回";
  2144. }
  2145. if("审批中".equalsIgnoreCase(planStatus) && "审批通过".equalsIgnoreCase(pd.get("STATUS").toString())){
  2146. if(hasAllPassStatus(reportIds,"审批通过")){
  2147. annualPlanStatus = "审批通过";
  2148. }
  2149. }
  2150. if("待审批".equalsIgnoreCase(planStatus) && "待审批".equalsIgnoreCase(pd.get("STATUS").toString())){
  2151. annualPlanStatus = "待审批";
  2152. }
  2153. }
  2154. return annualPlanStatus;
  2155. }*/
  2156. /* //判断同一年报告下的所有表状态(除“自动统计”)
  2157. private String getAllTableStatus(List<String> reportIds) throws Exception{
  2158. String status = "";
  2159. PageData pd = new PageData();
  2160. for(String reportid : reportIds){
  2161. pd.put("REPORTID", reportid);
  2162. List<PageData> tableInfoList = annualDailyCompService.getUserTableInfo(pd);
  2163. int i = 0;
  2164. for(PageData tableInfo : tableInfoList){
  2165. if(tableInfo.get("STATUS").toString().equalsIgnoreCase("审核通过")
  2166. || tableInfo.get("STATUS").toString().equalsIgnoreCase("自动统计")){
  2167. i++;
  2168. }
  2169. }
  2170. if(i == tableInfoList.size()){
  2171. status = "审核通过";
  2172. }
  2173. }
  2174. return status;
  2175. }*/
  2176. //判断同一年报告下的所有表状态是否都为“审核通过”(除“自动统计”)
  2177. /* private boolean hasAllPassStatus(List<String> reportIds, String status) throws Exception{
  2178. boolean hasAllPassStatus = true;
  2179. PageData pd = new PageData();
  2180. for(String reportid : reportIds){
  2181. pd.put("REPORTID", reportid);
  2182. List<PageData> tableInfoList = annualDailyCompService.getUserTableInfo(pd);
  2183. int i = 0;
  2184. for(PageData tableInfo : tableInfoList){
  2185. if(tableInfo.get("STATUS").toString().equalsIgnoreCase(status)
  2186. || tableInfo.get("STATUS").toString().equalsIgnoreCase("自动统计")){
  2187. i++;
  2188. }
  2189. }
  2190. if(i != tableInfoList.size()){
  2191. hasAllPassStatus = false;
  2192. break;
  2193. }
  2194. }
  2195. return hasAllPassStatus;
  2196. }*/
  2197. //路桥用户点击"保存",判断同一年报告下的所有表状态是否都为“审核通过”或者编制人为路桥公司管理员,编制中状态(除“自动统计”)
  2198. /* private String hasAllPassOrEditStatus(List<String> reportIds, String planStatus, String status1, String status2) throws Exception{
  2199. PageData pd = new PageData();
  2200. List<String> delRoad = new ArrayList<String>();
  2201. for(String reportid : reportIds){
  2202. pd.put("REPORTID", reportid);
  2203. List<PageData> tableInfoList = annualDailyCompService.getUserTableInfo(pd);
  2204. int i = 0;
  2205. for(PageData tableInfo : tableInfoList){
  2206. if(tableInfo.get("STATUS").toString().equalsIgnoreCase(status1)
  2207. || (tableInfo.get("STATUS").toString().equalsIgnoreCase(status2)
  2208. && "路桥公司管理员".equalsIgnoreCase(getRoleName(tableInfo.get("COMPILER").toString())))
  2209. || tableInfo.get("STATUS").toString().equalsIgnoreCase("自动统计")){
  2210. i++;
  2211. }
  2212. }
  2213. if(i == tableInfoList.size()){ //路段报告中没有审核不通过的
  2214. if(tableInfoList.get(0).get("ROAD_NAME") != null){
  2215. delRoad.add(tableInfoList.get(0).get("ROAD_NAME").toString().trim());
  2216. }
  2217. }
  2218. }
  2219. String[] roadnames = planStatus.replace("路公司驳回(", "").replace(")", "").trim().split(",");
  2220. if(delRoad.size() > 0){ //路段报告中没有审核不通过的
  2221. for(String delR : delRoad){
  2222. for(int j = 0; j < roadnames.length; j++){
  2223. if(roadnames[j].trim().equalsIgnoreCase(delR)){
  2224. roadnames = (String[]) ArrayUtils.remove(roadnames, j);
  2225. }
  2226. }
  2227. }
  2228. }
  2229. if(roadnames.length > 0){
  2230. StringBuffer str = new StringBuffer();
  2231. for (String s : roadnames) {
  2232. str.append(s);
  2233. }
  2234. planStatus = "路公司驳回(" + str.toString() + ")";
  2235. }else{
  2236. planStatus = "审核中";
  2237. }
  2238. return planStatus;
  2239. }*/
  2240. /* private String getRoleName(String name) throws Exception{
  2241. PageData userInfo = annualPlanService.getCompanyAndRoad(name); //通过username获取公司和路段
  2242. //通过ROLE_ID获取角色
  2243. String roleName = annualPlanService.getRoleName(userInfo.get("ROLE_ID").toString());
  2244. return roleName;
  2245. }*/
  2246. /**完成审核和审批
  2247. * @param
  2248. * @throws Exception
  2249. */
  2250. @RequestMapping(value="/updateAllStatus")
  2251. @ResponseBody
  2252. public Object updateAllStatus()throws Exception{
  2253. String username = Jurisdiction.getUsername();
  2254. ModelAndView mv = this.getModelAndView();
  2255. PageData pd = new PageData();
  2256. pd = this.getPageData();
  2257. String msg = "提交成功";
  2258. PageData userInfo = annualPlanService.getCompanyAndRoad(Jurisdiction.getUsername().toString()); //通过username获取公司和路段
  2259. //通过ROLE_ID获取角色
  2260. String roadUser = "";
  2261. String roleName = annualPlanService.getRoleName(userInfo.get("ROLE_ID").toString());
  2262. if("路段管理员".equalsIgnoreCase(roleName)){
  2263. String[] roadnames = userInfo.get("ROAD").toString().replace("","").split(",");
  2264. String[] roads = new String[roadnames.length];
  2265. for(int i = 0; i < roadnames.length ; i++){
  2266. //String roadid = annualPlanService.getRoadId(roadnames[i].trim());
  2267. roads[i] = roadnames[i].trim();
  2268. }
  2269. pd.put("ROADS", roads);
  2270. pd.put("USERNAME", username);
  2271. roadUser = username;
  2272. }
  2273. // JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
  2274. int intStatus = Integer.parseInt(pd.getString("STATUS"));
  2275. String pdStatus = "";
  2276. switch(intStatus){
  2277. case 0:
  2278. pdStatus = "新建";break;
  2279. case 1:
  2280. pdStatus = "编制中";
  2281. pd.put("COMPILER", username);
  2282. pd.put("COMPILE_TIME", Tools.date2Str(new Date()));
  2283. break;
  2284. case 2:
  2285. pdStatus = "待审核";break;
  2286. case 3:
  2287. pdStatus = "审核中";break;
  2288. case 4:
  2289. pdStatus = "审核通过";
  2290. pd.put("AUDITOR", username);
  2291. pd.put("AUDIT_TIME", Tools.date2Str(new Date()));
  2292. break;
  2293. case 5:
  2294. pdStatus = "审核不通过";
  2295. pd.put("AUDITOR", username);
  2296. pd.put("AUDIT_TIME", Tools.date2Str(new Date()));
  2297. break;
  2298. case 6:
  2299. pdStatus = "路公司驳回";break;
  2300. case 7:
  2301. pd.put("SPTIME", Tools.date2Str(new Date()));
  2302. pdStatus = "待审批";break;
  2303. case 8:
  2304. pdStatus = "审批中";break;
  2305. case 9:
  2306. pdStatus = "审批通过";
  2307. pd.put("APPROVER", username);
  2308. pd.put("APPROVE_TIME", Tools.date2Str(new Date()));
  2309. break;
  2310. case 10:
  2311. pdStatus = "审批不通过";
  2312. pd.put("APPROVER", username);
  2313. pd.put("APPROVE_TIME", Tools.date2Str(new Date()));
  2314. break;
  2315. case 11:
  2316. pdStatus = "审核完成";break;
  2317. case 12:
  2318. pdStatus = "审批完成";break;
  2319. case 13:
  2320. pdStatus = "控股驳回";break;
  2321. default:
  2322. pdStatus = "新建";break;
  2323. }
  2324. pd.put("STATUS", pdStatus);
  2325. String planid = annualDailyCompService.getPlanId(pd); //通过companyid和year获取 annual_plan_list对应的id
  2326. List<String> reportIds = annualDailyCompService.getReportIds(planid); //通过planid获取对应的reportids,所有的路段
  2327. if(intStatus == 2){
  2328. if(roadUser.isEmpty()){
  2329. msg = "只有路段管理员需要提交审核";
  2330. }else{
  2331. pd.put("PLANID", planid);
  2332. List<String> userReportIds = annualDailyCompService.getUserReportIds(pd); //获取该路段用户所有报告
  2333. for(String reportid : userReportIds){
  2334. pd.put("REPORTID", reportid);
  2335. List<PageData> tableInfoList = annualDailyCompService.getUserTableInfo(pd);
  2336. for(PageData tableInfo : tableInfoList){
  2337. if(!("编制中".equalsIgnoreCase(tableInfo.get("STATUS").toString())
  2338. || "审核通过".equalsIgnoreCase(tableInfo.get("STATUS").toString())
  2339. || "审批通过".equalsIgnoreCase(tableInfo.get("STATUS").toString())
  2340. || "自动统计".equalsIgnoreCase(tableInfo.get("STATUS").toString()))){
  2341. msg = "不符合条件,不能提交审核";
  2342. break;
  2343. }
  2344. }
  2345. }
  2346. if("提交成功".equalsIgnoreCase(msg)){
  2347. msg = "已提交审核";
  2348. for(String reportid : userReportIds){
  2349. pd.put("REPORTID", reportid);
  2350. annualDailyCompService.updateAllTablesStatus(pd); //update 该plan下所有table表状态(编制中的所有表)
  2351. }
  2352. String planStatus = dealStatus(pd);
  2353. if(!planStatus.isEmpty()){ //不修改状态
  2354. pd.put("STATUS", planStatus);
  2355. annualDailyCompService.updatePlanStatus(pd); //update annual_plan_list 表状态 ,更新计划修改时间(每次提交时更新)
  2356. }
  2357. }
  2358. }
  2359. }else if(intStatus == 7){ //提交年度计划
  2360. List<PageData> companyUserList = annualDailyCompService.getCompanyUserInfo(pd); //通过公司名获取该公司下所有user信息
  2361. Map<String, String> userMap = new HashMap<String, String>();
  2362. for(PageData user : companyUserList){
  2363. String userRoleName = annualDailyCompService.getRoleName(user.get("ROLE_ID").toString());
  2364. userMap.put(user.get("USERNAME").toString(), userRoleName);
  2365. }
  2366. msg = getMsg(pd, reportIds, userMap);
  2367. if("success".equalsIgnoreCase(msg)){
  2368. msg = "提交年度计划成功";
  2369. for(String reportid : reportIds){
  2370. pd.put("REPORTID", reportid);
  2371. annualDailyCompService.updateAllTablesStatus1(pd); //update 该plan下所有table表状态(自动统计外的所有表)
  2372. }
  2373. String planStatus = dealStatus(pd);
  2374. if(!planStatus.isEmpty()){ //不修改状态
  2375. pd.put("STATUS", planStatus);
  2376. annualDailyCompService.updatePlanStatus(pd); //update annual_plan_list 表状态
  2377. }
  2378. }
  2379. }
  2380. Map<String,Object> map = new HashMap<String,Object>();
  2381. map.put("msg", msg);
  2382. map.put("status",pd.get("STATUS").toString());
  2383. return AppUtil.returnObject(new PageData(), map);
  2384. }
  2385. public String getMsg(PageData pd, List<String> reportIds, Map<String, String> userMap){
  2386. String msg = "success";
  2387. try{
  2388. for(String reportid : reportIds){
  2389. pd.put("REPORTID", reportid);
  2390. List<PageData> tableInfoList = annualDailyCompService.getUserTableInfo(pd);
  2391. for(PageData tableInfo : tableInfoList){
  2392. if(tableInfo.get("STATUS").toString().equalsIgnoreCase("新建")){
  2393. msg = "存在状态为“新建”的表,不能提交年度计划";
  2394. return msg;
  2395. }
  2396. if(tableInfo.get("COMPILER") != null){
  2397. for(Entry<String, String> um : userMap.entrySet()){
  2398. if((um.getKey().equalsIgnoreCase(tableInfo.get("COMPILER").toString())
  2399. && um.getValue().equalsIgnoreCase("路段管理员")
  2400. && !tableInfo.get("STATUS").toString().equalsIgnoreCase("审核通过"))){
  2401. msg = "路桥公司管理员还有表未审核通过,不能提交年度计划";
  2402. return msg;
  2403. }else if(tableInfo.get("STATUS").toString().equalsIgnoreCase("待审批")){
  2404. msg = "控股集团管理员还有表未审批,不能提交年度计划";
  2405. return msg;
  2406. }
  2407. }
  2408. }
  2409. }
  2410. }
  2411. return msg;
  2412. }catch(Exception e){
  2413. return e.toString();
  2414. }
  2415. }
  2416. //判断table状态,获得plan状态
  2417. public boolean getAllTableStatus(PageData pd) throws Exception{
  2418. List<PageData> tableStatus = annualDailyCompService.getAllTableStatus(pd);
  2419. boolean planStatus = true;
  2420. for(PageData tableStatu : tableStatus){
  2421. if("审核不通过".equalsIgnoreCase(tableStatu.get("STATUS").toString()) || "审批不通过".equalsIgnoreCase(tableStatu.get("STATUS").toString())){
  2422. planStatus = false;
  2423. break;
  2424. }
  2425. }
  2426. return planStatus;
  2427. }
  2428. @RequestMapping(value="/getValidateJson")
  2429. @ResponseBody
  2430. public Object getValidateJson() throws Exception{
  2431. Map<String,Object> result = new HashMap<String,Object>();
  2432. PageData pd = new PageData();
  2433. pd = this.getPageData();
  2434. String jsonPath = (String) pd.get("TABLETYPE");
  2435. List<ImoprtJson> list = ImportDoc.importJson(jsonPath);
  2436. Map<String, Object> map = jsonListToObj(list);
  2437. result.put("map", map);
  2438. if (jsonPath.equals("highway_prevention_project_dettable")
  2439. ||jsonPath.equals("highway_repair_project_dettable")
  2440. ||jsonPath.equals("highway_special_project_dettable")
  2441. ||jsonPath.equals("highway_emergency_project_dettable")
  2442. ||jsonPath.equals("highway_test_project_dettable")
  2443. ||jsonPath.equals("highway_scientific_project_dettable")) {
  2444. String subjsonPath = jsonPath + "_cost";
  2445. List<List<ImoprtJson>> sublist = ImportDoc.importJson(subjsonPath);
  2446. if (sublist != null && sublist.size() > 0) {
  2447. Map<String, Object> submap = jsonListToObj(sublist.get(0));
  2448. result.put("submap", submap);
  2449. }
  2450. }
  2451. return AppUtil.returnObject(new PageData(), result);
  2452. }
  2453. public Map<String, Object> jsonListToObj(List<ImoprtJson> list){
  2454. Map<String, Object> result = new HashMap<String, Object>();
  2455. for (ImoprtJson imoprtJson : list) {
  2456. Map<String, Object> map = new HashMap<String, Object>();
  2457. map.put("type", imoprtJson.getType());
  2458. map.put("length", imoprtJson.getLength());
  2459. map.put("scale", imoprtJson.getScale());
  2460. map.put("notnull", imoprtJson.getNotnull());
  2461. result.put(imoprtJson.getColumn(), map);
  2462. }
  2463. return result;
  2464. }
  2465. public List<String> getKeywordsJson(HttpServletRequest request,String tabletype,String category){
  2466. String path = request.getSession().getServletContext().getRealPath("/static/ace/json/keywords.json");
  2467. List<String> keywords = new ArrayList<String>();
  2468. if (category!=null) {
  2469. if (!category.equals("")) {
  2470. try {
  2471. String keywordsJson = FileUtils.readFileToString(new File(path), "UTF-8");
  2472. JSONObject typeMap = JSONObject.fromObject(keywordsJson);
  2473. if (typeMap != null) {
  2474. JSONObject categoryMap = typeMap.getJSONObject(tabletype);
  2475. if (categoryMap != null) {
  2476. JSONArray keywordsArray = categoryMap.getJSONArray(category);
  2477. if (keywordsArray != null) {
  2478. keywords = JSONArray.toList(keywordsArray);
  2479. }
  2480. }
  2481. }
  2482. } catch (Exception e) {
  2483. keywords = null;
  2484. }
  2485. }
  2486. }
  2487. return keywords;
  2488. }
  2489. @RequestMapping(value="/delelLastRow")
  2490. @ResponseBody
  2491. public Object delelLastRow(String data) throws Exception{
  2492. String result="success";
  2493. PageData pd = new PageData();
  2494. pd = this.getPageData();
  2495. pd.remove("data");
  2496. JSONObject jsonobject = JSONObject.fromObject(data);
  2497. pd.put("ID", jsonobject.get("ID").toString());
  2498. try {
  2499. annualDailyCompService.deleteTableRecod(pd);
  2500. } catch (Exception e) {
  2501. result = "error";
  2502. }
  2503. Map<String,Object> map = new HashMap<String,Object>();
  2504. map.put("msg", result);
  2505. return AppUtil.returnObject(new PageData(), map);
  2506. }
  2507. }