diff --git a/src/main/java/com/casic/accessControl/marker/web/MarkerController.java b/src/main/java/com/casic/accessControl/marker/web/MarkerController.java index c33cd54..136cb81 100644 --- a/src/main/java/com/casic/accessControl/marker/web/MarkerController.java +++ b/src/main/java/com/casic/accessControl/marker/web/MarkerController.java @@ -49,11 +49,11 @@ private MarkerManager markerManager; @Resource private UserManager userInfoManager; - @Resource - private CsvExportor exportor; + /** * 获取标识器列表,前端展示列表使用 + * * @param jsonParam * @param markerDto * @param session @@ -64,10 +64,10 @@ public String list(String jsonParam, String markerDto, HttpSession session) { try { User currentUser = (User) session.getAttribute(StringUtils.SYS_USER); - DataTable markerList = markerManager.pageQueryMarker(jsonParam, markerDto,currentUser.getCompany().getId()); + DataTable markerList = markerManager.pageQueryMarker(jsonParam, markerDto, currentUser.getCompany().getId()); Gson gson = new Gson(); String json = gson.toJson(markerList); - return json; + return json; } catch (Exception e) { e.printStackTrace(); @@ -77,6 +77,7 @@ /** * 查询出要编辑的标签信息 + * * @param id * @param model * @param session @@ -103,28 +104,16 @@ } User user = (User) session.getAttribute(StringUtils.SYS_USER);//获取当前登录用户 Long companyId = user.getCompany().getId(); -// if (markerDto.getId() == null) {//新增 -// User user = (User) session.getAttribute(StringUtils.SYS_USER);//获取当前登录用户 -// marker.setValid(1); -// marker.setCompanyId(user.getCompany().getId()); -// markerManager.saveMarker(marker); -// map.put("success", true); -// map.put("message", "新增成功"); - try { -// Marker marker0 = markerManager.get(markerDto.getId()); - List markerDtos = new ArrayList(); - markerDtos.add(markerDto); - markerManager.batchSave(markerDtos,companyId); -// if (null != marker0) {//编辑marker,下面要增加页面展示项 -//// marker0.setMarkerObjectType(markerDto.getMarkerObjectType()); -// markerManager.saveMarker(marker0); -// } - map.put("success", true); - map.put("message", "编辑成功"); - } catch (Exception e) { - map.put("success", false); - map.put("message", "编辑失败"); - } + try { + List markerDtos = new ArrayList(); + markerDtos.add(markerDto); + markerManager.batchSave(markerDtos, companyId); + map.put("success", true); + map.put("message", "编辑成功"); + } catch (Exception e) { + map.put("success", false); + map.put("message", "编辑失败"); + } return map; @@ -190,11 +179,11 @@ return map; } User user1 = userInfoManager.getUserById(markers.get(0).getUserId()); - User user = (User) session.getAttribute(StringUtils.SYS_USER); Long companyId = null; if (user1 != null) { companyId = user1.getCompany().getId(); } else { + User user = (User) session.getAttribute(StringUtils.SYS_USER); companyId = user.getCompany().getId(); } @@ -226,15 +215,8 @@ return map; } -// User user1 = userInfoManager.getUserById(markers.get(0).getUserId()); -// Long companyId = null; -// if (user1 != null) { -// companyId = user1.getCompany().getId(); -// } else { -// return map; -// } Long companyId = markers.get(0).getCompanyId(); - if(companyId==null){ + if (companyId == null) { return map; } boolean result = markerManager.batchSave(markers, companyId); @@ -258,7 +240,7 @@ MarkerDto markerDto = new Gson().fromJson(strMarkerDto, MarkerDto.class); Company company = user.getCompany(); - List res = markerManager.getMarkerDtosByCondition(markerDto, company); + List res = markerManager.getMarkerDtosByCondition(markerDto, company,0); if (res.size() == 0) { map.put("data", Collections.emptyList()); map.put("message", "没有搜到标识器信息"); @@ -270,62 +252,13 @@ return map; } -//列表的导出和地图上的导出有区别了……,下面是列表的导出 + //列表的导出和地图上的导出有区别了……,下面是列表的导出 @RequestMapping("export") - public void export2Excel(@RequestParam(required = false) String strMarkerDto, HttpServletRequest request, HttpServletResponse response, HttpSession session) { + public void export2Excel(@RequestParam(required = false) String strMarkerDto, + HttpServletRequest request, HttpServletResponse response, HttpSession session) { User user = (User) session.getAttribute(StringUtils.SYS_USER);//获取当前登录用户 - List markerDtos = null; - int type=0; - String excelName="管线信息"; - String excelColumns = ""; - if (StringUtils.isNotBlank(strMarkerDto)) { - MarkerDto markerDto = new Gson().fromJson(strMarkerDto, MarkerDto.class); - type = markerDto.getRecordType()==null?0:markerDto.getRecordType(); - markerDtos = markerManager.getMarkerDtosByCondition(markerDto, user.getCompany()); - } else { - markerDtos = markerManager.getAllPoint(user); - } - if(type==1){ - excelName = "管线信息"; - excelColumns = "id,markerObjectType,pipeMaterial,pipeDiameter,layStyle,depth," + - "road,constructTime,ownerComp,markerObjectId," + - "markerId,markerType,creator,markerDepth,createTime,memo"; - }else if(type==2){ - excelName = "管线附属物信息"; - excelColumns = "id,markerObjectType,depth," + - "road,constructTime,ownerComp,markerObjectId," + - "markerId,markerType,creator,markerDepth,createTime,memo"; - }else if(type==3){ - excelName ="管线特征管点信息"; - excelColumns = "id,markerObjectType,depth," + - "road,constructTime,ownerComp,markerObjectId," + - "markerId,markerType,creator,markerDepth,createTime,memo"; - }else if(type==4){ - excelName = "交叉穿越点信息"; - excelColumns = "id,markerObjectType,pipeMaterial,pipeDiameter,depth,belowType," + - "belowDepth,belowDiameter,belowMaterial,road,constructTime,ownerComp,markerObjectId," + - "markerId,markerType,creator,markerDepth,createTime,memo"; - }else{//全部导出的,在地图上 - excelName = "标识器信息"; - excelColumns = "id,markerObjectType,pipeMaterial,pipeDiameter,depth,layStyle,belowType," + - "belowDepth,belowDiameter,belowMaterial,road,constructTime,ownerComp,markerObjectId," + - "markerId,markerType,creator,markerDepth,createTime,memo"; - } - String [] columns= excelColumns.split(","); - TableModel tableModel = new TableModel(); - tableModel.setName(excelName); -// tableModel.addHeaders("id", "markerObjectType", "pipeMaterial", "pipeDiameter", "layStyle", "depth", "belowType", -// "belowDepth", "belowDiameter", "belowMaterial", "road", "constructTime", "ownerComp","markerObjectId", -// "markerId", "markerType","creator","markerDepth","createTime","memo"); - tableModel.addHeaders(columns); - tableModel.setData(markerDtos); - response.setCharacterEncoding("UTF-8"); - try { - exportor.export(request, response, tableModel); - } catch (IOException e) { - e.printStackTrace(); - } + markerManager.exportClientExcel(request,response,user,strMarkerDto); } @@ -336,100 +269,56 @@ @ResponseBody public Map exportMarker(@RequestParam(required = true) Long userId, HttpServletRequest request) {//用户id前端传的companyId Map result = new HashMap(); - List markerDtos = null; -// User user = userInfoManager.getUserById(userId); - markerDtos = markerManager.getAllPointByCompanyId(userId); - try { - //打开文件 -// System.out.println(request.getServletContext().getRealPath("/")); - WritableWorkbook book = Workbook.createWorkbook(new File(request.getServletContext().getRealPath("/") + "/xls/marker" + userId + ".xls")); - WritableSheet sheet = book.createSheet("第一页", 0); - Label[][] labels = new Label[markerDtos.size() + 1][22]; - labels[0][0] = new Label(0, 0, "管线种类"); - labels[0][1] = new Label(1, 0, "管线直径");//管线种类 - labels[0][2] = new Label(2, 0, "管线材质"); - labels[0][3] = new Label(3, 0, "埋设方式"); - labels[0][4] = new Label(4, 0, "管线埋深"); - labels[0][5] = new Label(5, 0, "所属道路"); - labels[0][6] = new Label(6, 0, "建设年代"); - labels[0][7] = new Label(7, 0, "所属单位"); - labels[0][8] = new Label(8, 0, "标示对象ID"); - labels[0][9] = new Label(9, 0, "标识器ID"); - labels[0][10] = new Label(10, 0, "标识器类型"); - labels[0][11] = new Label(11, 0, "标识器埋深"); - labels[0][12] = new Label(12, 0, "安装人员"); - labels[0][13] = new Label(13, 0, "经度"); - labels[0][14] = new Label(14, 0, "纬度"); - labels[0][15] = new Label(15, 0, "最后修改时间"); - labels[0][16] = new Label(16, 0, "备注"); - labels[0][17] = new Label(17, 0, "下层管种类"); - labels[0][18] = new Label(18, 0, "下层管埋深"); - labels[0][19] = new Label(19, 0, "下层管直径"); - labels[0][20] = new Label(20, 0, "下层管材料"); - labels[0][21] = new Label(21, 0, "标识对象类别"); - for (int i = 0; i < markerDtos.size(); i++) { - MarkerDto markerDto = markerDtos.get(i); - labels[i + 1][0] = new Label(0, i + 1,markerDto.getMarkerObjectType()); - labels[i + 1][1] = new Label(1, i + 1, markerDto.getPipeDiameter()); - labels[i + 1][2] = new Label(2, i + 1, markerDto.getPipeMaterial()); - labels[i + 1][3] = new Label(3, i + 1, markerDto.getLayStyle()); - labels[i + 1][4] = new Label(4, i + 1, markerDto.getDepth()); - labels[i + 1][5] = new Label(5, i + 1, markerDto.getRoad()); - labels[i + 1][6] = new Label(6, i + 1, markerDto.getConstructTime()); - labels[i + 1][7] = new Label(7, i + 1, markerDto.getOwnerComp()); - labels[i + 1][8] = new Label(8, i + 1, markerDto.getMarkerObjectId()); - labels[i + 1][9] = new Label(9, i + 1, markerDto.getMarkerId()); - labels[i + 1][10] = new Label(10, i + 1, markerDto.getMarkerType()); - labels[i + 1][11] = new Label(11, i + 1, markerDto.getMarkerDepth()); - labels[i + 1][12] = new Label(12, i + 1, markerDto.getCreator()); - labels[i + 1][13] = new Label(13, i + 1, markerDto.getLongitude().toString()); - labels[i + 1][14] = new Label(14, i + 1, markerDto.getLatitude().toString()); - labels[i + 1][15] = new Label(15, i + 1, markerDto.getCreateTime()); - labels[i + 1][16] = new Label(16, i + 1, markerDto.getMemo()); - labels[i + 1][17] = new Label(17, i + 1, markerDto.getBelowType()); - labels[i + 1][18] = new Label(18, i + 1, markerDto.getBelowDepth()); - labels[i + 1][19] = new Label(19, i + 1, markerDto.getBelowDiameter()); - labels[i + 1][20] = new Label(20, i + 1, markerDto.getBelowMaterial()); - labels[i + 1][21] = new Label(21, i + 1, markerDto.getRecordType().toString()); - } - for (int i = 0; i < markerDtos.size() + 1; i++) { - for (int j = 0; j < 22; j++) { - sheet.addCell(labels[i][j]); - } - } - book.write(); - book.close(); //最好在finally中关闭,此处仅作为示例不太规范 - } catch (Exception e) { -// System.out.println(e); - e.printStackTrace(); + boolean flag = markerManager.exportServerExcel(userId, request.getServletContext().getRealPath("/") + "/xls/marker" + userId + ".xls"); + if (!flag) { result.put("message", "导出失败"); - return result; + result.put("success", false); } result.put("message", "导出成功"); result.put("success", true); return result; } - + /** + * 批量导入功能 + * @param file 导入的Excel文件,.xls格式 + * @param session + * @return + */ @RequestMapping(value = "excelMarkers") @ResponseBody - public Map test(@RequestParam(value = "excelFile", required = true) MultipartFile file) { + public Map test(@RequestParam(value = "excelFile", required = true) MultipartFile file, HttpSession session) { + User user = (User) session.getAttribute(StringUtils.SYS_USER);//获取当前登录用户 + Long companyId = user.getCompany().getId(); + String fileName = file.getOriginalFilename(); Map res = new HashMap(); res.put("message", "导入失败"); + res.put("success", false); + if (companyId == null) { + res.put("message", "用户未登录,导入失败!"); + return res; + } if (!fileName.endsWith(".xls")) {//仅支持xls格式的导入 res.put("message", "导入失败,系统仅支持xls格式文件上传"); return res; } + int flag = 0; //保存 try { -// file.transferTo(targetFile); - markerManager.readExcel(file.getInputStream()); - } catch (Exception e) { + flag = markerManager.readExcel(file.getInputStream(), companyId); + } catch (IOException e) { e.printStackTrace(); return res; } + //提示友好改进 + if (flag == 1) {//Excel表不含内容返回1 + res.put("message", "Excel表无有效内容,导入失败"); + return res; + } else if (flag > 1) { + return res; + } res.put("success", true); res.put("message", "导入成功"); return res;