CarController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. package com.hb.proj.car.controller;
  2. import java.util.Date;
  3. import java.util.HashSet;
  4. import java.util.Iterator;
  5. import java.util.Map;
  6. import java.util.Set;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import org.apache.commons.lang.StringUtils;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Controller;
  12. import org.springframework.web.bind.annotation.RequestMapping;
  13. import com.hb.proj.car.service.CarService;
  14. import com.hb.proj.excel.imp.ExcelDataExtractor;
  15. import com.hb.proj.excel.imp.ExcelResult;
  16. import com.hb.proj.sysdata.service.OrgService;
  17. import com.hb.proj.sysdata.service.SortCodeService;
  18. import com.hb.proj.utils.DataAuthUtils;
  19. import com.hb.proj.utils.JsonOutUtils;
  20. import com.hb.proj.utils.LayGridJsonUtils;
  21. import com.hb.proj.utils.MySessionUser;
  22. import com.hb.proj.utils.RequestUtils;
  23. import com.hb.proj.utils.RptMonthUtil;
  24. import com.hb.xframework.dao.util.PageModel;
  25. import com.hb.xframework.dao.util.UUIDHexGenerator;
  26. import com.hb.xframework.util.DateUtil;
  27. import com.hb.xframework.util.MapUtils;
  28. import com.hb.xframework.util.SessionThreadLocal;
  29. import com.hb.xframework.util.SessionUser;
  30. @Controller
  31. @RequestMapping("/**/car")
  32. public class CarController {
  33. @Autowired
  34. private CarService service;
  35. @Autowired
  36. private OrgService orgService;
  37. @Autowired
  38. private SortCodeService codeService;
  39. /**
  40. * 分类统计车辆数量
  41. * @param belongOrg //实际传入的是org对应的assistcode
  42. * @param response
  43. */
  44. @RequestMapping("/rptCount")
  45. public void rptCount(String belongOrg,HttpServletResponse response){
  46. try{
  47. MySessionUser su=(MySessionUser)SessionThreadLocal.getSessionUser();
  48. if(su==null){ //测试暂时不用
  49. JsonOutUtils.returnError(response, "缺少登录信息");
  50. return;
  51. }
  52. String orgAssistCode=null;
  53. if(StringUtils.isEmpty(belongOrg)){
  54. orgAssistCode=su.isSysAdmin()?null:su.getOrgAssistCode();
  55. }
  56. else{
  57. orgAssistCode=belongOrg;
  58. }
  59. JsonOutUtils.returnOkWithData(response, service.rptCarCount(orgAssistCode));
  60. }
  61. catch(Exception e){
  62. e.printStackTrace();
  63. JsonOutUtils.returnError(response, "服务出现错误");
  64. }
  65. }
  66. @RequestMapping("/query")
  67. public void query(HttpServletRequest request,Integer page,Integer limit,HttpServletResponse response){
  68. try{
  69. MySessionUser su=(MySessionUser)SessionThreadLocal.getSessionUser();
  70. if(su==null){ //测试暂时不用
  71. LayGridJsonUtils.error(response, "缺少登录信息");
  72. return;
  73. }
  74. Map<String,Object> args=RequestUtils.getParams(request);
  75. args.put("showAll", su.isSysAdmin()?"1":null); //系统管理员显示全部
  76. PageModel<Map<String,Object>> pagedData=service.queryCar(args,DataAuthUtils.getAuthOrgAssistCode(su),page, limit);
  77. if(pagedData==null||pagedData.getData()==null||pagedData.getData().size()==0){
  78. LayGridJsonUtils.wirte(response, null,0);
  79. return;
  80. }
  81. String crtMonth=DateUtil.format(new Date(), "yyyy-MM-dd");
  82. for(Map<String,Object> car : pagedData.getData()){
  83. car.put("realAge", RptMonthUtil.getWorkAge((String)car.get("wkStart"),crtMonth));
  84. }
  85. LayGridJsonUtils.wirte(response, pagedData.getData(),pagedData.getTotalRow(),"yyyy-MM");
  86. }
  87. catch(Exception e){
  88. e.printStackTrace();
  89. LayGridJsonUtils.error(response, "服务出现错误");
  90. }
  91. }
  92. @RequestMapping("/loadTransfer")
  93. public void loadTransfer(String carId,String startDate,String endDate,Integer page,Integer limit,HttpServletResponse response){
  94. try{
  95. Date st=StringUtils.isEmpty(startDate)?null:DateUtil.parse(startDate);
  96. Date et=StringUtils.isEmpty(endDate)?null:DateUtil.parse(endDate);
  97. PageModel<Map<String,Object>> pagedData=service.loadCarTransfer(carId,st,et,page, limit);
  98. LayGridJsonUtils.wirte(response, pagedData.getData(),pagedData.getTotalRow(),"yyyy-MM-dd HH:mm:ss");
  99. }
  100. catch(Exception e){
  101. e.printStackTrace();
  102. LayGridJsonUtils.error(response, "服务出现错误");
  103. }
  104. }
  105. @RequestMapping("/get")
  106. public void get(String carId,HttpServletResponse response) throws Exception{
  107. Map<String,Object> mapping=service.getCar(carId);
  108. if(mapping!=null&&mapping.get("workStart")!=null){
  109. mapping.put("workStart", DateUtil.format((Date)mapping.get("workStart"), "yyyy-MM"));
  110. }
  111. JsonOutUtils.returnOkWithData(response, mapping);
  112. }
  113. @RequestMapping("/add")
  114. public void add(HttpServletRequest request,HttpServletResponse response){
  115. try{
  116. Map<String,Object> car=RequestUtils.getParams(request);
  117. car.remove("belongOrgName");
  118. car.remove("oldCustomNum");
  119. MapUtils.blankValToNull(car);
  120. if(StringUtils.isEmpty((String)car.get("belongOrg"))){
  121. JsonOutUtils.returnError(response, "该车牌未填写所属单位");
  122. return ;
  123. }
  124. if(service.existsCar(request.getParameter("carNum"),null)){
  125. JsonOutUtils.returnError(response, "该车牌已经登记过,请更换");
  126. return ;
  127. }
  128. String customNum=(String)car.get("customNum");
  129. if(StringUtils.isNotEmpty(customNum)&&service.existsCustomNum(customNum,(String)car.get("carNum"))){
  130. JsonOutUtils.returnError(response, "该车辆自编号已存在,请更换");
  131. return ;
  132. }
  133. SessionUser su=SessionThreadLocal.getSessionUser();
  134. car.put("creator", su!=null?su.getUserName():"unknow");
  135. car.put("modifier", car.get("creator"));
  136. car.put("workStart", car.get("workStart")+"-01");
  137. service.addCar(car);
  138. JsonOutUtils.returnOk(response);
  139. }
  140. catch(Exception e){
  141. e.printStackTrace();
  142. JsonOutUtils.returnError(response, "服务出现错误");
  143. }
  144. }
  145. @RequestMapping("/update")
  146. public void update(HttpServletRequest request,HttpServletResponse response){
  147. try{
  148. Map<String,Object> car=RequestUtils.getParams(request);
  149. car.remove("belongOrgName");
  150. car.remove("oldCustomNum");
  151. MapUtils.blankValToNull(car);
  152. if(service.existsCar(request.getParameter("carNum"),request.getParameter("carId"))){
  153. JsonOutUtils.returnError(response, "该车牌已经登记过,请更换");
  154. return ;
  155. }
  156. String customNum=(String)car.get("customNum");
  157. if(StringUtils.isNotEmpty(customNum)&&service.existsCustomNum(customNum,(String)car.get("carNum"))){
  158. JsonOutUtils.returnError(response, "该车辆自编号已存在,请更换");
  159. return ;
  160. }
  161. SessionUser su=SessionThreadLocal.getSessionUser();
  162. car.put("modifier", su!=null?su.getUserName():"unknow");
  163. car.put("workStart", car.get("workStart")+"-01");
  164. service.updateCar(car);
  165. /* if(oldCustomNum!=null&&!oldCustomNum.equals(customNum)){ //自编号更改了,写入流转记录中的对应快照字段
  166. service.updateTransferSnapshot((String)car.get("carId"),customNum);
  167. }*/
  168. JsonOutUtils.returnOk(response);
  169. }
  170. catch(Exception e){
  171. e.printStackTrace();
  172. JsonOutUtils.returnError(response, "服务出现错误");
  173. }
  174. }
  175. @RequestMapping("/delete")
  176. public void delete(String carId,HttpServletResponse response){
  177. try{
  178. service.deleteCar(carId);
  179. JsonOutUtils.returnOk(response);
  180. }
  181. catch(Exception e){
  182. e.printStackTrace();
  183. JsonOutUtils.returnError(response, "服务出现错误");
  184. }
  185. }
  186. @RequestMapping("/discard")
  187. public void discard(String carId,String discard,HttpServletResponse response){
  188. try{
  189. service.updateForDiscard(carId,discard);
  190. JsonOutUtils.returnOk(response);
  191. }
  192. catch(Exception e){
  193. e.printStackTrace();
  194. JsonOutUtils.returnError(response, "服务出现错误");
  195. }
  196. }
  197. @RequestMapping("/setTag")
  198. public void setTag(String carId,String tag,HttpServletResponse response){
  199. try{
  200. service.updateForField(carId,"customTag",tag);
  201. JsonOutUtils.returnOk(response);
  202. }
  203. catch(Exception e){
  204. e.printStackTrace();
  205. JsonOutUtils.returnError(response, "服务出现错误");
  206. }
  207. }
  208. @RequestMapping("/importCar")
  209. public void importCar(HttpServletRequest request,HttpServletResponse response){
  210. try{
  211. ExcelResult importRst=ExcelDataExtractor.extractExcelData(request);
  212. if(importRst==null||importRst.getException()!=null){
  213. JsonOutUtils.returnError(response,(importRst==null?"导入失败":importRst.getException()));
  214. return;
  215. }
  216. else if(importRst.getListDatas()==null||importRst.getListDatas().size()==0){
  217. JsonOutUtils.returnError(response,"未提取到符合格式的数据");
  218. return;
  219. }
  220. String[] msgs=processImportData(importRst); //carNums+ignorCarNums
  221. boolean sameCover="1".equals(importRst.getReqParams().get("sameCover")); //相同车辆是否覆盖库中的
  222. String sameIgnor=service.addCars(importRst.getListDatas(),msgs[0],sameCover);
  223. /**
  224. * sameIgnor 禁止覆盖时被忽略的车牌
  225. * checkIgnor 业务校验不通过的车牌
  226. * validateError 基本数据校验错误信息
  227. */
  228. Map<String,Object> rtn=MapUtils.build("sameIgnor",sameIgnor,"checkIgnor",msgs[1],"validateError",importRst.getError().toString(),"successCount",importRst.getListDatas().size());
  229. JsonOutUtils.returnOkWithData(response,rtn);
  230. }
  231. catch(Exception e){
  232. e.printStackTrace();
  233. JsonOutUtils.returnError(response, "导入出现错误");
  234. }
  235. }
  236. /**
  237. * 对上传的原始数据进行处理,业务约束校验、数据转换(名称转编码)
  238. * 目前校验设备名称、规格型号是否与定额标准表中的对应;
  239. * 单位名称转编码;柴油车类型转编码
  240. */
  241. private String[] processImportData(ExcelResult importRst){
  242. Map<String,Object> orgs=orgService.loadOrgMapping();
  243. Map<String,Object> coilType=codeService.loadSortCodeMapping("402881e8734da7fa01734da7fa600000");
  244. Map<String,Object> deviceNames=service.loadCarDeviceNameMapping();
  245. Iterator<Map<String,Object>> iterator=importRst.getListDatas().iterator();
  246. Map<String,Object> itm=null;
  247. String model=null;
  248. StringBuilder ignorMsg=new StringBuilder();
  249. UUIDHexGenerator uuid=UUIDHexGenerator.getInstance();
  250. Set<String> carNums=new HashSet<String>();
  251. String carNum=null;
  252. while(iterator.hasNext()){
  253. itm=iterator.next();
  254. carNum=(String)itm.get("carNum");
  255. if(StringUtils.isEmpty(carNum)){
  256. iterator.remove();
  257. ignorMsg.append(itm.get("customNum")+";");
  258. continue;
  259. }
  260. carNum=carNum.replaceAll("\\s+", "");
  261. itm.put("carNum", carNum);
  262. carNums.add(carNum);
  263. if(!orgs.containsKey((String)itm.get("belongOrg"))){
  264. iterator.remove();
  265. ignorMsg.append(carNum+";");
  266. continue;
  267. }
  268. if(!coilType.containsKey((String)itm.get("coilCarType"))){
  269. iterator.remove();
  270. ignorMsg.append(carNum+";");
  271. continue;
  272. }
  273. if(!deviceNames.containsKey((String)itm.get("deviceName"))){
  274. ignorMsg.append(carNum+";");
  275. iterator.remove();
  276. continue;
  277. }
  278. else{
  279. model=(String)deviceNames.get((String)itm.get("deviceName"));
  280. if(StringUtils.isNotEmpty(model)&&!model.equals(itm.get("deviceModel"))){
  281. ignorMsg.append(itm.get("carNum")+";");
  282. iterator.remove();
  283. continue;
  284. }
  285. }
  286. itm.put("belongOrg", orgs.get((String)itm.get("belongOrg")));
  287. itm.put("coilCarType", orgs.get((String)itm.get("coilCarType")));
  288. itm.put("carId", uuid.generate());
  289. itm.put("createTime", new Date());
  290. itm.put("modifyTime", new Date());
  291. }
  292. return new String[]{StringUtils.join(carNums,","),(ignorMsg.length()>0?ignorMsg.toString():null)};
  293. }
  294. }