package com.hb.proj.car.controller; import java.util.Date; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.hb.proj.car.service.CarService; import com.hb.proj.excel.imp.ExcelDataExtractor; import com.hb.proj.excel.imp.ExcelResult; import com.hb.proj.sysdata.service.OrgService; import com.hb.proj.sysdata.service.SortCodeService; import com.hb.proj.utils.DataAuthUtils; import com.hb.proj.utils.JsonOutUtils; import com.hb.proj.utils.LayGridJsonUtils; import com.hb.proj.utils.MySessionUser; import com.hb.proj.utils.RequestUtils; import com.hb.proj.utils.RptMonthUtil; import com.hb.xframework.dao.util.PageModel; import com.hb.xframework.dao.util.UUIDHexGenerator; import com.hb.xframework.util.DateUtil; import com.hb.xframework.util.MapUtils; import com.hb.xframework.util.SessionThreadLocal; import com.hb.xframework.util.SessionUser; @Controller @RequestMapping("/**/car") public class CarController { @Autowired private CarService service; @Autowired private OrgService orgService; @Autowired private SortCodeService codeService; /** * 分类统计车辆数量 * @param belongOrg //实际传入的是org对应的assistcode * @param response */ @RequestMapping("/rptCount") public void rptCount(String belongOrg,HttpServletResponse response){ try{ MySessionUser su=(MySessionUser)SessionThreadLocal.getSessionUser(); if(su==null){ //测试暂时不用 JsonOutUtils.returnError(response, "缺少登录信息"); return; } String orgAssistCode=null; if(StringUtils.isEmpty(belongOrg)){ orgAssistCode=su.isSysAdmin()?null:su.getOrgAssistCode(); } else{ orgAssistCode=belongOrg; } JsonOutUtils.returnOkWithData(response, service.rptCarCount(orgAssistCode)); } catch(Exception e){ e.printStackTrace(); JsonOutUtils.returnError(response, "服务出现错误"); } } @RequestMapping("/query") public void query(HttpServletRequest request,Integer page,Integer limit,HttpServletResponse response){ try{ MySessionUser su=(MySessionUser)SessionThreadLocal.getSessionUser(); if(su==null){ //测试暂时不用 LayGridJsonUtils.error(response, "缺少登录信息"); return; } Map args=RequestUtils.getParams(request); args.put("showAll", su.isSysAdmin()?"1":null); //系统管理员显示全部 PageModel> pagedData=service.queryCar(args,DataAuthUtils.getAuthOrgAssistCode(su),page, limit); if(pagedData==null||pagedData.getData()==null||pagedData.getData().size()==0){ LayGridJsonUtils.wirte(response, null,0); return; } String crtMonth=DateUtil.format(new Date(), "yyyy-MM-dd"); for(Map car : pagedData.getData()){ car.put("realAge", RptMonthUtil.getWorkAge((String)car.get("wkStart"),crtMonth)); } LayGridJsonUtils.wirte(response, pagedData.getData(),pagedData.getTotalRow(),"yyyy-MM"); } catch(Exception e){ e.printStackTrace(); LayGridJsonUtils.error(response, "服务出现错误"); } } @RequestMapping("/loadTransfer") public void loadTransfer(String carId,String startDate,String endDate,Integer page,Integer limit,HttpServletResponse response){ try{ Date st=StringUtils.isEmpty(startDate)?null:DateUtil.parse(startDate); Date et=StringUtils.isEmpty(endDate)?null:DateUtil.parse(endDate); PageModel> pagedData=service.loadCarTransfer(carId,st,et,page, limit); LayGridJsonUtils.wirte(response, pagedData.getData(),pagedData.getTotalRow(),"yyyy-MM-dd HH:mm:ss"); } catch(Exception e){ e.printStackTrace(); LayGridJsonUtils.error(response, "服务出现错误"); } } @RequestMapping("/get") public void get(String carId,HttpServletResponse response) throws Exception{ Map mapping=service.getCar(carId); if(mapping!=null&&mapping.get("workStart")!=null){ mapping.put("workStart", DateUtil.format((Date)mapping.get("workStart"), "yyyy-MM")); } JsonOutUtils.returnOkWithData(response, mapping); } @RequestMapping("/add") public void add(HttpServletRequest request,HttpServletResponse response){ try{ Map car=RequestUtils.getParams(request); car.remove("belongOrgName"); car.remove("oldCustomNum"); MapUtils.blankValToNull(car); if(StringUtils.isEmpty((String)car.get("belongOrg"))){ JsonOutUtils.returnError(response, "该车牌未填写所属单位"); return ; } if(service.existsCar(request.getParameter("carNum"),null)){ JsonOutUtils.returnError(response, "该车牌已经登记过,请更换"); return ; } String customNum=(String)car.get("customNum"); if(StringUtils.isNotEmpty(customNum)&&service.existsCustomNum(customNum,(String)car.get("carNum"))){ JsonOutUtils.returnError(response, "该车辆自编号已存在,请更换"); return ; } SessionUser su=SessionThreadLocal.getSessionUser(); car.put("creator", su!=null?su.getUserName():"unknow"); car.put("modifier", car.get("creator")); car.put("workStart", car.get("workStart")+"-01"); service.addCar(car); JsonOutUtils.returnOk(response); } catch(Exception e){ e.printStackTrace(); JsonOutUtils.returnError(response, "服务出现错误"); } } @RequestMapping("/update") public void update(HttpServletRequest request,HttpServletResponse response){ try{ Map car=RequestUtils.getParams(request); car.remove("belongOrgName"); car.remove("oldCustomNum"); MapUtils.blankValToNull(car); if(service.existsCar(request.getParameter("carNum"),request.getParameter("carId"))){ JsonOutUtils.returnError(response, "该车牌已经登记过,请更换"); return ; } String customNum=(String)car.get("customNum"); if(StringUtils.isNotEmpty(customNum)&&service.existsCustomNum(customNum,(String)car.get("carNum"))){ JsonOutUtils.returnError(response, "该车辆自编号已存在,请更换"); return ; } SessionUser su=SessionThreadLocal.getSessionUser(); car.put("modifier", su!=null?su.getUserName():"unknow"); car.put("workStart", car.get("workStart")+"-01"); service.updateCar(car); /* if(oldCustomNum!=null&&!oldCustomNum.equals(customNum)){ //自编号更改了,写入流转记录中的对应快照字段 service.updateTransferSnapshot((String)car.get("carId"),customNum); }*/ JsonOutUtils.returnOk(response); } catch(Exception e){ e.printStackTrace(); JsonOutUtils.returnError(response, "服务出现错误"); } } @RequestMapping("/delete") public void delete(String carId,HttpServletResponse response){ try{ service.deleteCar(carId); JsonOutUtils.returnOk(response); } catch(Exception e){ e.printStackTrace(); JsonOutUtils.returnError(response, "服务出现错误"); } } @RequestMapping("/discard") public void discard(String carId,String discard,HttpServletResponse response){ try{ service.updateForDiscard(carId,discard); JsonOutUtils.returnOk(response); } catch(Exception e){ e.printStackTrace(); JsonOutUtils.returnError(response, "服务出现错误"); } } @RequestMapping("/setTag") public void setTag(String carId,String tag,HttpServletResponse response){ try{ service.updateForField(carId,"customTag",tag); JsonOutUtils.returnOk(response); } catch(Exception e){ e.printStackTrace(); JsonOutUtils.returnError(response, "服务出现错误"); } } @RequestMapping("/importCar") public void importCar(HttpServletRequest request,HttpServletResponse response){ try{ ExcelResult importRst=ExcelDataExtractor.extractExcelData(request); if(importRst==null||importRst.getException()!=null){ JsonOutUtils.returnError(response,(importRst==null?"导入失败":importRst.getException())); return; } else if(importRst.getListDatas()==null||importRst.getListDatas().size()==0){ JsonOutUtils.returnError(response,"未提取到符合格式的数据"); return; } String[] msgs=processImportData(importRst); //carNums+ignorCarNums boolean sameCover="1".equals(importRst.getReqParams().get("sameCover")); //相同车辆是否覆盖库中的 String sameIgnor=service.addCars(importRst.getListDatas(),msgs[0],sameCover); /** * sameIgnor 禁止覆盖时被忽略的车牌 * checkIgnor 业务校验不通过的车牌 * validateError 基本数据校验错误信息 */ Map rtn=MapUtils.build("sameIgnor",sameIgnor,"checkIgnor",msgs[1],"validateError",importRst.getError().toString(),"successCount",importRst.getListDatas().size()); JsonOutUtils.returnOkWithData(response,rtn); } catch(Exception e){ e.printStackTrace(); JsonOutUtils.returnError(response, "导入出现错误"); } } /** * 对上传的原始数据进行处理,业务约束校验、数据转换(名称转编码) * 目前校验设备名称、规格型号是否与定额标准表中的对应; * 单位名称转编码;柴油车类型转编码 */ private String[] processImportData(ExcelResult importRst){ Map orgs=orgService.loadOrgMapping(); Map coilType=codeService.loadSortCodeMapping("402881e8734da7fa01734da7fa600000"); Map deviceNames=service.loadCarDeviceNameMapping(); Iterator> iterator=importRst.getListDatas().iterator(); Map itm=null; String model=null; StringBuilder ignorMsg=new StringBuilder(); UUIDHexGenerator uuid=UUIDHexGenerator.getInstance(); Set carNums=new HashSet(); String carNum=null; while(iterator.hasNext()){ itm=iterator.next(); carNum=(String)itm.get("carNum"); if(StringUtils.isEmpty(carNum)){ iterator.remove(); ignorMsg.append(itm.get("customNum")+";"); continue; } carNum=carNum.replaceAll("\\s+", ""); itm.put("carNum", carNum); carNums.add(carNum); if(!orgs.containsKey((String)itm.get("belongOrg"))){ iterator.remove(); ignorMsg.append(carNum+";"); continue; } if(!coilType.containsKey((String)itm.get("coilCarType"))){ iterator.remove(); ignorMsg.append(carNum+";"); continue; } if(!deviceNames.containsKey((String)itm.get("deviceName"))){ ignorMsg.append(carNum+";"); iterator.remove(); continue; } else{ model=(String)deviceNames.get((String)itm.get("deviceName")); if(StringUtils.isNotEmpty(model)&&!model.equals(itm.get("deviceModel"))){ ignorMsg.append(itm.get("carNum")+";"); iterator.remove(); continue; } } itm.put("belongOrg", orgs.get((String)itm.get("belongOrg"))); itm.put("coilCarType", orgs.get((String)itm.get("coilCarType"))); itm.put("carId", uuid.generate()); itm.put("createTime", new Date()); itm.put("modifyTime", new Date()); } return new String[]{StringUtils.join(carNums,","),(ignorMsg.length()>0?ignorMsg.toString():null)}; } }