diff --git a/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java b/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java index dd8d064..6ed7eef 100644 --- a/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java +++ b/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java @@ -12,15 +12,25 @@ HttpServletResponse response, TableModel tableModel) throws IOException { StringBuilder buff = new StringBuilder(); + if(tableModel.hasAlias()) {//有设置别名,应该按别名展示 + for (int i = 0; i < tableModel.getHeaderCount(); i++) { + buff.append(tableModel.getHeaderAlias(i)); - for (int i = 0; i < tableModel.getHeaderCount(); i++) { - buff.append(tableModel.getHeader(i)); + if (i != (tableModel.getHeaderCount() - 1)) { + buff.append(","); + } + } + }else{ + for (int i = 0; i < tableModel.getHeaderCount(); i++) { + buff.append(tableModel.getHeader(i)); - if (i != (tableModel.getHeaderCount() - 1)) { - buff.append(","); + if (i != (tableModel.getHeaderCount() - 1)) { + buff.append(","); + } } } + buff.append("\n"); for (int i = 0; i < tableModel.getDataCount(); i++) { diff --git a/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java b/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java index dd8d064..6ed7eef 100644 --- a/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java +++ b/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java @@ -12,15 +12,25 @@ HttpServletResponse response, TableModel tableModel) throws IOException { StringBuilder buff = new StringBuilder(); + if(tableModel.hasAlias()) {//有设置别名,应该按别名展示 + for (int i = 0; i < tableModel.getHeaderCount(); i++) { + buff.append(tableModel.getHeaderAlias(i)); - for (int i = 0; i < tableModel.getHeaderCount(); i++) { - buff.append(tableModel.getHeader(i)); + if (i != (tableModel.getHeaderCount() - 1)) { + buff.append(","); + } + } + }else{ + for (int i = 0; i < tableModel.getHeaderCount(); i++) { + buff.append(tableModel.getHeader(i)); - if (i != (tableModel.getHeaderCount() - 1)) { - buff.append(","); + if (i != (tableModel.getHeaderCount() - 1)) { + buff.append(","); + } } } + buff.append("\n"); for (int i = 0; i < tableModel.getDataCount(); i++) { diff --git a/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java b/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java index 0cbbb66..a214041 100644 --- a/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java +++ b/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java @@ -13,6 +13,10 @@ private List headers = new ArrayList(); private List data; + //wxl新增 + private List headerAlias = new ArrayList(); + private boolean enableAlias = false; + public String getName() { return name; } @@ -34,7 +38,20 @@ headers.add(text); } } + //新增,可展示自定义名称 + public void addHeaderAlias(String... alias) { + if (alias == null) { + return; + } + enableAlias = true; + for (String text : alias) { + if (text == null) { + continue; + } + headerAlias.add(text); + } + } public void setData(List data) { this.data = data; } @@ -51,6 +68,12 @@ return headers.get(index); } + public boolean hasAlias(){ + return this.enableAlias; + } + public String getHeaderAlias(int index) { + return headerAlias.get(index); + } public String getValue(int i, int j) { try { String header = getHeader(j); diff --git a/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java b/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java index dd8d064..6ed7eef 100644 --- a/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java +++ b/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java @@ -12,15 +12,25 @@ HttpServletResponse response, TableModel tableModel) throws IOException { StringBuilder buff = new StringBuilder(); + if(tableModel.hasAlias()) {//有设置别名,应该按别名展示 + for (int i = 0; i < tableModel.getHeaderCount(); i++) { + buff.append(tableModel.getHeaderAlias(i)); - for (int i = 0; i < tableModel.getHeaderCount(); i++) { - buff.append(tableModel.getHeader(i)); + if (i != (tableModel.getHeaderCount() - 1)) { + buff.append(","); + } + } + }else{ + for (int i = 0; i < tableModel.getHeaderCount(); i++) { + buff.append(tableModel.getHeader(i)); - if (i != (tableModel.getHeaderCount() - 1)) { - buff.append(","); + if (i != (tableModel.getHeaderCount() - 1)) { + buff.append(","); + } } } + buff.append("\n"); for (int i = 0; i < tableModel.getDataCount(); i++) { diff --git a/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java b/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java index 0cbbb66..a214041 100644 --- a/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java +++ b/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java @@ -13,6 +13,10 @@ private List headers = new ArrayList(); private List data; + //wxl新增 + private List headerAlias = new ArrayList(); + private boolean enableAlias = false; + public String getName() { return name; } @@ -34,7 +38,20 @@ headers.add(text); } } + //新增,可展示自定义名称 + public void addHeaderAlias(String... alias) { + if (alias == null) { + return; + } + enableAlias = true; + for (String text : alias) { + if (text == null) { + continue; + } + headerAlias.add(text); + } + } public void setData(List data) { this.data = data; } @@ -51,6 +68,12 @@ return headers.get(index); } + public boolean hasAlias(){ + return this.enableAlias; + } + public String getHeaderAlias(int index) { + return headerAlias.get(index); + } public String getValue(int i, int j) { try { String header = getHeader(j); diff --git a/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java b/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java index 7fe7434..d4998d8 100644 --- a/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java +++ b/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java @@ -1,6 +1,8 @@ package com.casic.accessControl.marker.manager; import com.casic.accessControl.common.CommonEnum; +import com.casic.accessControl.core.ext.export.CsvExportor; +import com.casic.accessControl.core.ext.export.TableModel; import com.casic.accessControl.core.hibernate.HibernateEntityDao; import com.casic.accessControl.core.page.Page; import com.casic.accessControl.core.util.StringUtils; @@ -20,6 +22,9 @@ import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; +import jxl.write.Label; +import jxl.write.WritableSheet; +import jxl.write.WritableWorkbook; import org.apache.commons.collections.CollectionUtils; import org.hibernate.Criteria; import org.hibernate.Query; @@ -28,10 +33,13 @@ import org.hibernate.criterion.Restrictions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -46,15 +54,12 @@ @Service public class MarkerManager extends HibernateEntityDao { - @Resource - private UserManager userInfoManager; - private Logger logger = LoggerFactory.getLogger(this.getClass()); + @Resource + private CsvExportor exportor; public DataTable pageQueryMarker(String params, String markerDto, Long companyId) { -// List features = null; -// List lines = null; DataTable result = new DataTable(); DataTableParameter parameter = DataTableUtils.getDataTableParameterByJsonParam(params); int start = parameter.getiDisplayStart(); @@ -68,6 +73,9 @@ if (markerDto1.getRecordType() != null) { criteria1.add(Restrictions.eq("recordType", markerDto1.getRecordType())); } + if (StringUtils.isNotBlank(markerDto1.getMarkerId())) { + criteria1.add(Restrictions.like("markerId", markerDto1.getMarkerId(), MatchMode.ANYWHERE)); + } if (StringUtils.isNotBlank(markerDto1.getMemo())) { criteria1.add(Restrictions.like("memo", markerDto1.getMemo(), MatchMode.ANYWHERE)); } @@ -147,36 +155,6 @@ return Collections.emptyList(); } - //获取marker -// @Cacheable(value = "getMarkerByFeature", key = "#feature.getId()") -// public List getMarkerByFeature(Feature feature) { -// try { -// Criteria criteria = this.createCriteria(Marker.class); -// criteria.add(Restrictions.eq("belongLine", feature)); -// criteria.add(Restrictions.eq("isValid", 1)); -// List markers = criteria.list(); -// return markers; -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return Collections.emptyList(); -// } - -// public List getMarkerByFeature(Feature feature, Feature line) { -// try { -// Criteria criteria = this.createCriteria(Marker.class); -// if (line != null) criteria.add(Restrictions.eq("belongLine", line)); -// if (feature != null) criteria.add(Restrictions.eq("belongFeature", feature)); -// criteria.add(Restrictions.eq("isValid", 1)); -// -// List markers = criteria.list(); -// return markers; -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return Collections.emptyList(); -// } - public boolean saveMarker(Marker marker) { try { if (marker == null) { @@ -273,16 +251,16 @@ /** * 根据条件查询标识器的ID列表 - * // * - * // * @param parentId - * // * @param markerName * * @return */ - public List getMarkerDtosByCondition(MarkerDto markerDto, Company company) { + public List getMarkerDtosByCondition(MarkerDto markerDto, Company company,int type) { Criteria criteria1 = this.getSession().createCriteria(Marker.class); criteria1.add(Restrictions.eq("isValid", 1)).add(Restrictions.eq("companyId", company.getId())); + if(type > 0){//限制记录类型 + criteria1.add(Restrictions.eq("recordType",type)); + } if (StringUtils.isNotBlank(markerDto.getMemo())) { criteria1.add(Restrictions.like("memo", markerDto.getMemo(), MatchMode.ANYWHERE)); } @@ -312,8 +290,6 @@ } -// @Cacheable(value = "getAllPoint", key = "#user.getId()") - public List getAllPoint(User user) { if (user == null) { return Collections.emptyList(); @@ -335,25 +311,26 @@ return MarkerDto.convert2MarkerDtoList(result); } - public boolean readExcel(InputStream inputStream) { + /** + * @param inputStream 文件输入流 + * @param userCompanyId 当前登录用户公司ID + * @return 成功返回0,Excel表不含内容返回1,读取Excel异常返回4 (用户所属公司不匹配返回2,Excel表中ID不正确返回3,将Excel表中的ID删除了) + */ + public int readExcel(InputStream inputStream, Long userCompanyId) { try { Workbook book = Workbook.getWorkbook(inputStream); Sheet sheet = book.getSheet(0); int rows = sheet.getRows(); if (rows < 2) {//Excel中没有数据 - return false; + return 1; } int columns = sheet.getColumns(); Map indexMap = new HashMap(); - Long companyId = null; List markerDtos = new ArrayList(); int recordTypeFlag = 1; for (int i = 0; i < columns; i++) {//解析出来excel的头,找出对应位置,以适应excel文件头部顺序的变化 String name = sheet.getCell(i, 0).getContents(); switch (name) { - case "用户ID": - indexMap.put("userId", i); - break; case "管线种类": indexMap.put("markerObjectType", i); recordTypeFlag = 1; @@ -388,6 +365,9 @@ case "标识器类型": indexMap.put("markerType", i); break; + case "标识器埋深": + indexMap.put("markerDepth", i); + break; case "安装人员": indexMap.put("creator", i); break; @@ -442,18 +422,10 @@ case "下层管材料": indexMap.put("belowMaterial", i); break; -// case "记录类型": -// indexMap.put("recordType",i); -// break; } } - Long userId = Long.valueOf(empty2zero(sheet.getCell(indexMap.get("userId"), 1).getContents())); - User user = userInfoManager.getUserById(userId); - companyId = user.getCompany().getId(); - if (companyId == null) { - return false; - } + for (int i = 1; i < rows; i++) { MarkerDto markerDto = new MarkerDto(); if (recordTypeFlag == 1) { @@ -487,14 +459,162 @@ markerDtos.add(markerDto); } book.close(); - batchSave(markerDtos, companyId); - //System.out.println(new Gson().toJson(markerDtos)); + batchSave(markerDtos, userCompanyId); } catch (BiffException e) { + logger.error(e.getMessage()); + return 4; + } catch (IOException e) { + logger.error(e.getMessage()); + return 4; + } + return 0; + } + + /** + * + * @param companyId 操作用户的公司ID + * @param outPath 输出路径 + * @return + */ + public boolean exportServerExcel(Long companyId,String outPath){ + List markerDtos = null; + markerDtos = getAllPointByCompanyId(companyId); + try { + //打开文件 + WritableWorkbook book = Workbook.createWorkbook(new File(outPath)); + 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) { e.printStackTrace(); + return false; + } + return true; + } + + public void exportClientExcel( HttpServletRequest request, HttpServletResponse response,User user, String strMarkerDto){ + + List markerDtos = null; + int type = 0; + String excelName = "管线信息"; + String excelColumns = ""; + String alias = ""; + if (StringUtils.isNotBlank(strMarkerDto)) { + MarkerDto markerDto = new Gson().fromJson(strMarkerDto, MarkerDto.class); + type = markerDto.getRecordType() == null ? 0 : markerDto.getRecordType(); + markerDtos = getMarkerDtosByCondition(markerDto, user.getCompany(), type); + } else { + markerDtos = getAllPoint(user); + } + if (type == 1) { + excelName = "管线信息"; + excelColumns = "id,markerObjectType,pipeMaterial,pipeDiameter,layStyle,depth," + + "road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,管线种类,管线材质,管线直径,埋设方式,管线埋深," + + "所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else if (type == 2) { + excelName = "管线附属物信息"; + excelColumns = "id,markerObjectType,depth," + + "road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,附属物名称,井深," + + "所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else if (type == 3) { + excelName = "管线特征管点信息"; + excelColumns = "id,markerObjectType,depth," + + "road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,管点特征,特征点埋深," + + "所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else if (type == 4) { + excelName = "交叉穿越点信息"; + excelColumns = "id,markerObjectType,pipeMaterial,pipeDiameter,depth,belowType," + + "belowDepth,belowDiameter,belowMaterial,road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,上层管种类,上层管材料,上层管直径,上层管埋深,下层管种类," + + "下层管埋深,下层管直径,下层管材料,所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else {//全部导出的,在地图上 + excelName = "标识器信息"; + excelColumns = "id,markerObjectType,pipeMaterial,pipeDiameter,depth,layStyle,belowType," + + "belowDepth,belowDiameter,belowMaterial,road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,creator,markerDepth,createTime,memo"; + alias ="编号,上层管种类,上层管材料,上层管直径,上层管埋深,埋设方式,下层管种类," + + "下层管埋深,下层管直径,下层管材料,所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } + String[] columns = excelColumns.split(","); + String[] headerAlias = alias.split(","); + TableModel tableModel = new TableModel(); + tableModel.setName(excelName); + tableModel.addHeaders(columns); + tableModel.addHeaderAlias(headerAlias); + tableModel.setData(markerDtos); + response.setCharacterEncoding("UTF-8"); + try { + exportor.export(request, response, tableModel); } catch (IOException e) { e.printStackTrace(); } - return true; + } private String empty2zero(String str) { diff --git a/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java b/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java index dd8d064..6ed7eef 100644 --- a/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java +++ b/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java @@ -12,15 +12,25 @@ HttpServletResponse response, TableModel tableModel) throws IOException { StringBuilder buff = new StringBuilder(); + if(tableModel.hasAlias()) {//有设置别名,应该按别名展示 + for (int i = 0; i < tableModel.getHeaderCount(); i++) { + buff.append(tableModel.getHeaderAlias(i)); - for (int i = 0; i < tableModel.getHeaderCount(); i++) { - buff.append(tableModel.getHeader(i)); + if (i != (tableModel.getHeaderCount() - 1)) { + buff.append(","); + } + } + }else{ + for (int i = 0; i < tableModel.getHeaderCount(); i++) { + buff.append(tableModel.getHeader(i)); - if (i != (tableModel.getHeaderCount() - 1)) { - buff.append(","); + if (i != (tableModel.getHeaderCount() - 1)) { + buff.append(","); + } } } + buff.append("\n"); for (int i = 0; i < tableModel.getDataCount(); i++) { diff --git a/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java b/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java index 0cbbb66..a214041 100644 --- a/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java +++ b/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java @@ -13,6 +13,10 @@ private List headers = new ArrayList(); private List data; + //wxl新增 + private List headerAlias = new ArrayList(); + private boolean enableAlias = false; + public String getName() { return name; } @@ -34,7 +38,20 @@ headers.add(text); } } + //新增,可展示自定义名称 + public void addHeaderAlias(String... alias) { + if (alias == null) { + return; + } + enableAlias = true; + for (String text : alias) { + if (text == null) { + continue; + } + headerAlias.add(text); + } + } public void setData(List data) { this.data = data; } @@ -51,6 +68,12 @@ return headers.get(index); } + public boolean hasAlias(){ + return this.enableAlias; + } + public String getHeaderAlias(int index) { + return headerAlias.get(index); + } public String getValue(int i, int j) { try { String header = getHeader(j); diff --git a/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java b/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java index 7fe7434..d4998d8 100644 --- a/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java +++ b/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java @@ -1,6 +1,8 @@ package com.casic.accessControl.marker.manager; import com.casic.accessControl.common.CommonEnum; +import com.casic.accessControl.core.ext.export.CsvExportor; +import com.casic.accessControl.core.ext.export.TableModel; import com.casic.accessControl.core.hibernate.HibernateEntityDao; import com.casic.accessControl.core.page.Page; import com.casic.accessControl.core.util.StringUtils; @@ -20,6 +22,9 @@ import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; +import jxl.write.Label; +import jxl.write.WritableSheet; +import jxl.write.WritableWorkbook; import org.apache.commons.collections.CollectionUtils; import org.hibernate.Criteria; import org.hibernate.Query; @@ -28,10 +33,13 @@ import org.hibernate.criterion.Restrictions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -46,15 +54,12 @@ @Service public class MarkerManager extends HibernateEntityDao { - @Resource - private UserManager userInfoManager; - private Logger logger = LoggerFactory.getLogger(this.getClass()); + @Resource + private CsvExportor exportor; public DataTable pageQueryMarker(String params, String markerDto, Long companyId) { -// List features = null; -// List lines = null; DataTable result = new DataTable(); DataTableParameter parameter = DataTableUtils.getDataTableParameterByJsonParam(params); int start = parameter.getiDisplayStart(); @@ -68,6 +73,9 @@ if (markerDto1.getRecordType() != null) { criteria1.add(Restrictions.eq("recordType", markerDto1.getRecordType())); } + if (StringUtils.isNotBlank(markerDto1.getMarkerId())) { + criteria1.add(Restrictions.like("markerId", markerDto1.getMarkerId(), MatchMode.ANYWHERE)); + } if (StringUtils.isNotBlank(markerDto1.getMemo())) { criteria1.add(Restrictions.like("memo", markerDto1.getMemo(), MatchMode.ANYWHERE)); } @@ -147,36 +155,6 @@ return Collections.emptyList(); } - //获取marker -// @Cacheable(value = "getMarkerByFeature", key = "#feature.getId()") -// public List getMarkerByFeature(Feature feature) { -// try { -// Criteria criteria = this.createCriteria(Marker.class); -// criteria.add(Restrictions.eq("belongLine", feature)); -// criteria.add(Restrictions.eq("isValid", 1)); -// List markers = criteria.list(); -// return markers; -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return Collections.emptyList(); -// } - -// public List getMarkerByFeature(Feature feature, Feature line) { -// try { -// Criteria criteria = this.createCriteria(Marker.class); -// if (line != null) criteria.add(Restrictions.eq("belongLine", line)); -// if (feature != null) criteria.add(Restrictions.eq("belongFeature", feature)); -// criteria.add(Restrictions.eq("isValid", 1)); -// -// List markers = criteria.list(); -// return markers; -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return Collections.emptyList(); -// } - public boolean saveMarker(Marker marker) { try { if (marker == null) { @@ -273,16 +251,16 @@ /** * 根据条件查询标识器的ID列表 - * // * - * // * @param parentId - * // * @param markerName * * @return */ - public List getMarkerDtosByCondition(MarkerDto markerDto, Company company) { + public List getMarkerDtosByCondition(MarkerDto markerDto, Company company,int type) { Criteria criteria1 = this.getSession().createCriteria(Marker.class); criteria1.add(Restrictions.eq("isValid", 1)).add(Restrictions.eq("companyId", company.getId())); + if(type > 0){//限制记录类型 + criteria1.add(Restrictions.eq("recordType",type)); + } if (StringUtils.isNotBlank(markerDto.getMemo())) { criteria1.add(Restrictions.like("memo", markerDto.getMemo(), MatchMode.ANYWHERE)); } @@ -312,8 +290,6 @@ } -// @Cacheable(value = "getAllPoint", key = "#user.getId()") - public List getAllPoint(User user) { if (user == null) { return Collections.emptyList(); @@ -335,25 +311,26 @@ return MarkerDto.convert2MarkerDtoList(result); } - public boolean readExcel(InputStream inputStream) { + /** + * @param inputStream 文件输入流 + * @param userCompanyId 当前登录用户公司ID + * @return 成功返回0,Excel表不含内容返回1,读取Excel异常返回4 (用户所属公司不匹配返回2,Excel表中ID不正确返回3,将Excel表中的ID删除了) + */ + public int readExcel(InputStream inputStream, Long userCompanyId) { try { Workbook book = Workbook.getWorkbook(inputStream); Sheet sheet = book.getSheet(0); int rows = sheet.getRows(); if (rows < 2) {//Excel中没有数据 - return false; + return 1; } int columns = sheet.getColumns(); Map indexMap = new HashMap(); - Long companyId = null; List markerDtos = new ArrayList(); int recordTypeFlag = 1; for (int i = 0; i < columns; i++) {//解析出来excel的头,找出对应位置,以适应excel文件头部顺序的变化 String name = sheet.getCell(i, 0).getContents(); switch (name) { - case "用户ID": - indexMap.put("userId", i); - break; case "管线种类": indexMap.put("markerObjectType", i); recordTypeFlag = 1; @@ -388,6 +365,9 @@ case "标识器类型": indexMap.put("markerType", i); break; + case "标识器埋深": + indexMap.put("markerDepth", i); + break; case "安装人员": indexMap.put("creator", i); break; @@ -442,18 +422,10 @@ case "下层管材料": indexMap.put("belowMaterial", i); break; -// case "记录类型": -// indexMap.put("recordType",i); -// break; } } - Long userId = Long.valueOf(empty2zero(sheet.getCell(indexMap.get("userId"), 1).getContents())); - User user = userInfoManager.getUserById(userId); - companyId = user.getCompany().getId(); - if (companyId == null) { - return false; - } + for (int i = 1; i < rows; i++) { MarkerDto markerDto = new MarkerDto(); if (recordTypeFlag == 1) { @@ -487,14 +459,162 @@ markerDtos.add(markerDto); } book.close(); - batchSave(markerDtos, companyId); - //System.out.println(new Gson().toJson(markerDtos)); + batchSave(markerDtos, userCompanyId); } catch (BiffException e) { + logger.error(e.getMessage()); + return 4; + } catch (IOException e) { + logger.error(e.getMessage()); + return 4; + } + return 0; + } + + /** + * + * @param companyId 操作用户的公司ID + * @param outPath 输出路径 + * @return + */ + public boolean exportServerExcel(Long companyId,String outPath){ + List markerDtos = null; + markerDtos = getAllPointByCompanyId(companyId); + try { + //打开文件 + WritableWorkbook book = Workbook.createWorkbook(new File(outPath)); + 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) { e.printStackTrace(); + return false; + } + return true; + } + + public void exportClientExcel( HttpServletRequest request, HttpServletResponse response,User user, String strMarkerDto){ + + List markerDtos = null; + int type = 0; + String excelName = "管线信息"; + String excelColumns = ""; + String alias = ""; + if (StringUtils.isNotBlank(strMarkerDto)) { + MarkerDto markerDto = new Gson().fromJson(strMarkerDto, MarkerDto.class); + type = markerDto.getRecordType() == null ? 0 : markerDto.getRecordType(); + markerDtos = getMarkerDtosByCondition(markerDto, user.getCompany(), type); + } else { + markerDtos = getAllPoint(user); + } + if (type == 1) { + excelName = "管线信息"; + excelColumns = "id,markerObjectType,pipeMaterial,pipeDiameter,layStyle,depth," + + "road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,管线种类,管线材质,管线直径,埋设方式,管线埋深," + + "所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else if (type == 2) { + excelName = "管线附属物信息"; + excelColumns = "id,markerObjectType,depth," + + "road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,附属物名称,井深," + + "所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else if (type == 3) { + excelName = "管线特征管点信息"; + excelColumns = "id,markerObjectType,depth," + + "road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,管点特征,特征点埋深," + + "所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else if (type == 4) { + excelName = "交叉穿越点信息"; + excelColumns = "id,markerObjectType,pipeMaterial,pipeDiameter,depth,belowType," + + "belowDepth,belowDiameter,belowMaterial,road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,上层管种类,上层管材料,上层管直径,上层管埋深,下层管种类," + + "下层管埋深,下层管直径,下层管材料,所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else {//全部导出的,在地图上 + excelName = "标识器信息"; + excelColumns = "id,markerObjectType,pipeMaterial,pipeDiameter,depth,layStyle,belowType," + + "belowDepth,belowDiameter,belowMaterial,road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,creator,markerDepth,createTime,memo"; + alias ="编号,上层管种类,上层管材料,上层管直径,上层管埋深,埋设方式,下层管种类," + + "下层管埋深,下层管直径,下层管材料,所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } + String[] columns = excelColumns.split(","); + String[] headerAlias = alias.split(","); + TableModel tableModel = new TableModel(); + tableModel.setName(excelName); + tableModel.addHeaders(columns); + tableModel.addHeaderAlias(headerAlias); + tableModel.setData(markerDtos); + response.setCharacterEncoding("UTF-8"); + try { + exportor.export(request, response, tableModel); } catch (IOException e) { e.printStackTrace(); } - return true; + } private String empty2zero(String str) { diff --git a/src/main/webapp/content/ems/ems.jsp b/src/main/webapp/content/ems/ems.jsp index 30b3e1f..1b0147b 100644 --- a/src/main/webapp/content/ems/ems.jsp +++ b/src/main/webapp/content/ems/ems.jsp @@ -489,7 +489,7 @@ Ems.initMap(); Ems.initForm(); Ems.initSelect(); -// EmsMarkerOpt.init();//导出Excel,和陈涛交互字段待定,暂时未做 + EmsMarkerOpt.init();//导出Excel,和陈涛交互字段待定,暂时未做 }) diff --git a/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java b/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java index dd8d064..6ed7eef 100644 --- a/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java +++ b/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java @@ -12,15 +12,25 @@ HttpServletResponse response, TableModel tableModel) throws IOException { StringBuilder buff = new StringBuilder(); + if(tableModel.hasAlias()) {//有设置别名,应该按别名展示 + for (int i = 0; i < tableModel.getHeaderCount(); i++) { + buff.append(tableModel.getHeaderAlias(i)); - for (int i = 0; i < tableModel.getHeaderCount(); i++) { - buff.append(tableModel.getHeader(i)); + if (i != (tableModel.getHeaderCount() - 1)) { + buff.append(","); + } + } + }else{ + for (int i = 0; i < tableModel.getHeaderCount(); i++) { + buff.append(tableModel.getHeader(i)); - if (i != (tableModel.getHeaderCount() - 1)) { - buff.append(","); + if (i != (tableModel.getHeaderCount() - 1)) { + buff.append(","); + } } } + buff.append("\n"); for (int i = 0; i < tableModel.getDataCount(); i++) { diff --git a/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java b/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java index 0cbbb66..a214041 100644 --- a/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java +++ b/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java @@ -13,6 +13,10 @@ private List headers = new ArrayList(); private List data; + //wxl新增 + private List headerAlias = new ArrayList(); + private boolean enableAlias = false; + public String getName() { return name; } @@ -34,7 +38,20 @@ headers.add(text); } } + //新增,可展示自定义名称 + public void addHeaderAlias(String... alias) { + if (alias == null) { + return; + } + enableAlias = true; + for (String text : alias) { + if (text == null) { + continue; + } + headerAlias.add(text); + } + } public void setData(List data) { this.data = data; } @@ -51,6 +68,12 @@ return headers.get(index); } + public boolean hasAlias(){ + return this.enableAlias; + } + public String getHeaderAlias(int index) { + return headerAlias.get(index); + } public String getValue(int i, int j) { try { String header = getHeader(j); diff --git a/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java b/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java index 7fe7434..d4998d8 100644 --- a/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java +++ b/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java @@ -1,6 +1,8 @@ package com.casic.accessControl.marker.manager; import com.casic.accessControl.common.CommonEnum; +import com.casic.accessControl.core.ext.export.CsvExportor; +import com.casic.accessControl.core.ext.export.TableModel; import com.casic.accessControl.core.hibernate.HibernateEntityDao; import com.casic.accessControl.core.page.Page; import com.casic.accessControl.core.util.StringUtils; @@ -20,6 +22,9 @@ import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; +import jxl.write.Label; +import jxl.write.WritableSheet; +import jxl.write.WritableWorkbook; import org.apache.commons.collections.CollectionUtils; import org.hibernate.Criteria; import org.hibernate.Query; @@ -28,10 +33,13 @@ import org.hibernate.criterion.Restrictions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -46,15 +54,12 @@ @Service public class MarkerManager extends HibernateEntityDao { - @Resource - private UserManager userInfoManager; - private Logger logger = LoggerFactory.getLogger(this.getClass()); + @Resource + private CsvExportor exportor; public DataTable pageQueryMarker(String params, String markerDto, Long companyId) { -// List features = null; -// List lines = null; DataTable result = new DataTable(); DataTableParameter parameter = DataTableUtils.getDataTableParameterByJsonParam(params); int start = parameter.getiDisplayStart(); @@ -68,6 +73,9 @@ if (markerDto1.getRecordType() != null) { criteria1.add(Restrictions.eq("recordType", markerDto1.getRecordType())); } + if (StringUtils.isNotBlank(markerDto1.getMarkerId())) { + criteria1.add(Restrictions.like("markerId", markerDto1.getMarkerId(), MatchMode.ANYWHERE)); + } if (StringUtils.isNotBlank(markerDto1.getMemo())) { criteria1.add(Restrictions.like("memo", markerDto1.getMemo(), MatchMode.ANYWHERE)); } @@ -147,36 +155,6 @@ return Collections.emptyList(); } - //获取marker -// @Cacheable(value = "getMarkerByFeature", key = "#feature.getId()") -// public List getMarkerByFeature(Feature feature) { -// try { -// Criteria criteria = this.createCriteria(Marker.class); -// criteria.add(Restrictions.eq("belongLine", feature)); -// criteria.add(Restrictions.eq("isValid", 1)); -// List markers = criteria.list(); -// return markers; -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return Collections.emptyList(); -// } - -// public List getMarkerByFeature(Feature feature, Feature line) { -// try { -// Criteria criteria = this.createCriteria(Marker.class); -// if (line != null) criteria.add(Restrictions.eq("belongLine", line)); -// if (feature != null) criteria.add(Restrictions.eq("belongFeature", feature)); -// criteria.add(Restrictions.eq("isValid", 1)); -// -// List markers = criteria.list(); -// return markers; -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return Collections.emptyList(); -// } - public boolean saveMarker(Marker marker) { try { if (marker == null) { @@ -273,16 +251,16 @@ /** * 根据条件查询标识器的ID列表 - * // * - * // * @param parentId - * // * @param markerName * * @return */ - public List getMarkerDtosByCondition(MarkerDto markerDto, Company company) { + public List getMarkerDtosByCondition(MarkerDto markerDto, Company company,int type) { Criteria criteria1 = this.getSession().createCriteria(Marker.class); criteria1.add(Restrictions.eq("isValid", 1)).add(Restrictions.eq("companyId", company.getId())); + if(type > 0){//限制记录类型 + criteria1.add(Restrictions.eq("recordType",type)); + } if (StringUtils.isNotBlank(markerDto.getMemo())) { criteria1.add(Restrictions.like("memo", markerDto.getMemo(), MatchMode.ANYWHERE)); } @@ -312,8 +290,6 @@ } -// @Cacheable(value = "getAllPoint", key = "#user.getId()") - public List getAllPoint(User user) { if (user == null) { return Collections.emptyList(); @@ -335,25 +311,26 @@ return MarkerDto.convert2MarkerDtoList(result); } - public boolean readExcel(InputStream inputStream) { + /** + * @param inputStream 文件输入流 + * @param userCompanyId 当前登录用户公司ID + * @return 成功返回0,Excel表不含内容返回1,读取Excel异常返回4 (用户所属公司不匹配返回2,Excel表中ID不正确返回3,将Excel表中的ID删除了) + */ + public int readExcel(InputStream inputStream, Long userCompanyId) { try { Workbook book = Workbook.getWorkbook(inputStream); Sheet sheet = book.getSheet(0); int rows = sheet.getRows(); if (rows < 2) {//Excel中没有数据 - return false; + return 1; } int columns = sheet.getColumns(); Map indexMap = new HashMap(); - Long companyId = null; List markerDtos = new ArrayList(); int recordTypeFlag = 1; for (int i = 0; i < columns; i++) {//解析出来excel的头,找出对应位置,以适应excel文件头部顺序的变化 String name = sheet.getCell(i, 0).getContents(); switch (name) { - case "用户ID": - indexMap.put("userId", i); - break; case "管线种类": indexMap.put("markerObjectType", i); recordTypeFlag = 1; @@ -388,6 +365,9 @@ case "标识器类型": indexMap.put("markerType", i); break; + case "标识器埋深": + indexMap.put("markerDepth", i); + break; case "安装人员": indexMap.put("creator", i); break; @@ -442,18 +422,10 @@ case "下层管材料": indexMap.put("belowMaterial", i); break; -// case "记录类型": -// indexMap.put("recordType",i); -// break; } } - Long userId = Long.valueOf(empty2zero(sheet.getCell(indexMap.get("userId"), 1).getContents())); - User user = userInfoManager.getUserById(userId); - companyId = user.getCompany().getId(); - if (companyId == null) { - return false; - } + for (int i = 1; i < rows; i++) { MarkerDto markerDto = new MarkerDto(); if (recordTypeFlag == 1) { @@ -487,14 +459,162 @@ markerDtos.add(markerDto); } book.close(); - batchSave(markerDtos, companyId); - //System.out.println(new Gson().toJson(markerDtos)); + batchSave(markerDtos, userCompanyId); } catch (BiffException e) { + logger.error(e.getMessage()); + return 4; + } catch (IOException e) { + logger.error(e.getMessage()); + return 4; + } + return 0; + } + + /** + * + * @param companyId 操作用户的公司ID + * @param outPath 输出路径 + * @return + */ + public boolean exportServerExcel(Long companyId,String outPath){ + List markerDtos = null; + markerDtos = getAllPointByCompanyId(companyId); + try { + //打开文件 + WritableWorkbook book = Workbook.createWorkbook(new File(outPath)); + 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) { e.printStackTrace(); + return false; + } + return true; + } + + public void exportClientExcel( HttpServletRequest request, HttpServletResponse response,User user, String strMarkerDto){ + + List markerDtos = null; + int type = 0; + String excelName = "管线信息"; + String excelColumns = ""; + String alias = ""; + if (StringUtils.isNotBlank(strMarkerDto)) { + MarkerDto markerDto = new Gson().fromJson(strMarkerDto, MarkerDto.class); + type = markerDto.getRecordType() == null ? 0 : markerDto.getRecordType(); + markerDtos = getMarkerDtosByCondition(markerDto, user.getCompany(), type); + } else { + markerDtos = getAllPoint(user); + } + if (type == 1) { + excelName = "管线信息"; + excelColumns = "id,markerObjectType,pipeMaterial,pipeDiameter,layStyle,depth," + + "road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,管线种类,管线材质,管线直径,埋设方式,管线埋深," + + "所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else if (type == 2) { + excelName = "管线附属物信息"; + excelColumns = "id,markerObjectType,depth," + + "road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,附属物名称,井深," + + "所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else if (type == 3) { + excelName = "管线特征管点信息"; + excelColumns = "id,markerObjectType,depth," + + "road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,管点特征,特征点埋深," + + "所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else if (type == 4) { + excelName = "交叉穿越点信息"; + excelColumns = "id,markerObjectType,pipeMaterial,pipeDiameter,depth,belowType," + + "belowDepth,belowDiameter,belowMaterial,road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,上层管种类,上层管材料,上层管直径,上层管埋深,下层管种类," + + "下层管埋深,下层管直径,下层管材料,所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else {//全部导出的,在地图上 + excelName = "标识器信息"; + excelColumns = "id,markerObjectType,pipeMaterial,pipeDiameter,depth,layStyle,belowType," + + "belowDepth,belowDiameter,belowMaterial,road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,creator,markerDepth,createTime,memo"; + alias ="编号,上层管种类,上层管材料,上层管直径,上层管埋深,埋设方式,下层管种类," + + "下层管埋深,下层管直径,下层管材料,所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } + String[] columns = excelColumns.split(","); + String[] headerAlias = alias.split(","); + TableModel tableModel = new TableModel(); + tableModel.setName(excelName); + tableModel.addHeaders(columns); + tableModel.addHeaderAlias(headerAlias); + tableModel.setData(markerDtos); + response.setCharacterEncoding("UTF-8"); + try { + exportor.export(request, response, tableModel); } catch (IOException e) { e.printStackTrace(); } - return true; + } private String empty2zero(String str) { diff --git a/src/main/webapp/content/ems/ems.jsp b/src/main/webapp/content/ems/ems.jsp index 30b3e1f..1b0147b 100644 --- a/src/main/webapp/content/ems/ems.jsp +++ b/src/main/webapp/content/ems/ems.jsp @@ -489,7 +489,7 @@ Ems.initMap(); Ems.initForm(); Ems.initSelect(); -// EmsMarkerOpt.init();//导出Excel,和陈涛交互字段待定,暂时未做 + EmsMarkerOpt.init();//导出Excel,和陈涛交互字段待定,暂时未做 }) diff --git a/src/main/webapp/content/marker/marker-info-list.jsp b/src/main/webapp/content/marker/marker-info-list.jsp index 69a4d42..3ca4763 100644 --- a/src/main/webapp/content/marker/marker-info-list.jsp +++ b/src/main/webapp/content/marker/marker-info-list.jsp @@ -1 +1 @@ -<%@page contentType="text/html;charset=UTF-8" %> <%@include file="/taglibs.jsp" %> <%pageContext.setAttribute("currentMenu", "markerManagerMenu");%> 地下管线电子标识系统 <%----%> <%@include file="/common/layout/header.jsp" %>
<%@include file="/common/layout/menu_new.jsp" %>
<%--<%@include file="/common/layout/second-menu-auth.jsp" %>--%>
标识器管理
<%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%>
id标识器编号标识器名称区域线路类型埋深里程1里程2安装时间安装人员备注编辑删除
<%@include file="/common/layout/footer.jsp" %> <%----%> <%----%> \ No newline at end of file +<%@page contentType="text/html;charset=UTF-8" %> <%@include file="/taglibs.jsp" %> <%pageContext.setAttribute("currentMenu", "markerManagerMenu");%> 地下管线电子标识系统 <%----%> <%@include file="/common/layout/header.jsp" %>
<%@include file="/common/layout/menu_new.jsp" %>
<%--<%@include file="/common/layout/second-menu-auth.jsp" %>--%>
标识器管理
<%--
--%> <%----%> <%--
--%> <%--
--%> <%----%> <%--
--%>
<%--
--%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%--
--%>
<%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%>
id标识器编号标识器名称区域线路类型埋深里程1里程2安装时间安装人员备注编辑删除
<%@include file="/common/layout/footer.jsp" %> <%----%> <%----%> \ No newline at end of file diff --git a/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java b/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java index dd8d064..6ed7eef 100644 --- a/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java +++ b/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java @@ -12,15 +12,25 @@ HttpServletResponse response, TableModel tableModel) throws IOException { StringBuilder buff = new StringBuilder(); + if(tableModel.hasAlias()) {//有设置别名,应该按别名展示 + for (int i = 0; i < tableModel.getHeaderCount(); i++) { + buff.append(tableModel.getHeaderAlias(i)); - for (int i = 0; i < tableModel.getHeaderCount(); i++) { - buff.append(tableModel.getHeader(i)); + if (i != (tableModel.getHeaderCount() - 1)) { + buff.append(","); + } + } + }else{ + for (int i = 0; i < tableModel.getHeaderCount(); i++) { + buff.append(tableModel.getHeader(i)); - if (i != (tableModel.getHeaderCount() - 1)) { - buff.append(","); + if (i != (tableModel.getHeaderCount() - 1)) { + buff.append(","); + } } } + buff.append("\n"); for (int i = 0; i < tableModel.getDataCount(); i++) { diff --git a/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java b/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java index 0cbbb66..a214041 100644 --- a/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java +++ b/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java @@ -13,6 +13,10 @@ private List headers = new ArrayList(); private List data; + //wxl新增 + private List headerAlias = new ArrayList(); + private boolean enableAlias = false; + public String getName() { return name; } @@ -34,7 +38,20 @@ headers.add(text); } } + //新增,可展示自定义名称 + public void addHeaderAlias(String... alias) { + if (alias == null) { + return; + } + enableAlias = true; + for (String text : alias) { + if (text == null) { + continue; + } + headerAlias.add(text); + } + } public void setData(List data) { this.data = data; } @@ -51,6 +68,12 @@ return headers.get(index); } + public boolean hasAlias(){ + return this.enableAlias; + } + public String getHeaderAlias(int index) { + return headerAlias.get(index); + } public String getValue(int i, int j) { try { String header = getHeader(j); diff --git a/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java b/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java index 7fe7434..d4998d8 100644 --- a/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java +++ b/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java @@ -1,6 +1,8 @@ package com.casic.accessControl.marker.manager; import com.casic.accessControl.common.CommonEnum; +import com.casic.accessControl.core.ext.export.CsvExportor; +import com.casic.accessControl.core.ext.export.TableModel; import com.casic.accessControl.core.hibernate.HibernateEntityDao; import com.casic.accessControl.core.page.Page; import com.casic.accessControl.core.util.StringUtils; @@ -20,6 +22,9 @@ import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; +import jxl.write.Label; +import jxl.write.WritableSheet; +import jxl.write.WritableWorkbook; import org.apache.commons.collections.CollectionUtils; import org.hibernate.Criteria; import org.hibernate.Query; @@ -28,10 +33,13 @@ import org.hibernate.criterion.Restrictions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -46,15 +54,12 @@ @Service public class MarkerManager extends HibernateEntityDao { - @Resource - private UserManager userInfoManager; - private Logger logger = LoggerFactory.getLogger(this.getClass()); + @Resource + private CsvExportor exportor; public DataTable pageQueryMarker(String params, String markerDto, Long companyId) { -// List features = null; -// List lines = null; DataTable result = new DataTable(); DataTableParameter parameter = DataTableUtils.getDataTableParameterByJsonParam(params); int start = parameter.getiDisplayStart(); @@ -68,6 +73,9 @@ if (markerDto1.getRecordType() != null) { criteria1.add(Restrictions.eq("recordType", markerDto1.getRecordType())); } + if (StringUtils.isNotBlank(markerDto1.getMarkerId())) { + criteria1.add(Restrictions.like("markerId", markerDto1.getMarkerId(), MatchMode.ANYWHERE)); + } if (StringUtils.isNotBlank(markerDto1.getMemo())) { criteria1.add(Restrictions.like("memo", markerDto1.getMemo(), MatchMode.ANYWHERE)); } @@ -147,36 +155,6 @@ return Collections.emptyList(); } - //获取marker -// @Cacheable(value = "getMarkerByFeature", key = "#feature.getId()") -// public List getMarkerByFeature(Feature feature) { -// try { -// Criteria criteria = this.createCriteria(Marker.class); -// criteria.add(Restrictions.eq("belongLine", feature)); -// criteria.add(Restrictions.eq("isValid", 1)); -// List markers = criteria.list(); -// return markers; -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return Collections.emptyList(); -// } - -// public List getMarkerByFeature(Feature feature, Feature line) { -// try { -// Criteria criteria = this.createCriteria(Marker.class); -// if (line != null) criteria.add(Restrictions.eq("belongLine", line)); -// if (feature != null) criteria.add(Restrictions.eq("belongFeature", feature)); -// criteria.add(Restrictions.eq("isValid", 1)); -// -// List markers = criteria.list(); -// return markers; -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return Collections.emptyList(); -// } - public boolean saveMarker(Marker marker) { try { if (marker == null) { @@ -273,16 +251,16 @@ /** * 根据条件查询标识器的ID列表 - * // * - * // * @param parentId - * // * @param markerName * * @return */ - public List getMarkerDtosByCondition(MarkerDto markerDto, Company company) { + public List getMarkerDtosByCondition(MarkerDto markerDto, Company company,int type) { Criteria criteria1 = this.getSession().createCriteria(Marker.class); criteria1.add(Restrictions.eq("isValid", 1)).add(Restrictions.eq("companyId", company.getId())); + if(type > 0){//限制记录类型 + criteria1.add(Restrictions.eq("recordType",type)); + } if (StringUtils.isNotBlank(markerDto.getMemo())) { criteria1.add(Restrictions.like("memo", markerDto.getMemo(), MatchMode.ANYWHERE)); } @@ -312,8 +290,6 @@ } -// @Cacheable(value = "getAllPoint", key = "#user.getId()") - public List getAllPoint(User user) { if (user == null) { return Collections.emptyList(); @@ -335,25 +311,26 @@ return MarkerDto.convert2MarkerDtoList(result); } - public boolean readExcel(InputStream inputStream) { + /** + * @param inputStream 文件输入流 + * @param userCompanyId 当前登录用户公司ID + * @return 成功返回0,Excel表不含内容返回1,读取Excel异常返回4 (用户所属公司不匹配返回2,Excel表中ID不正确返回3,将Excel表中的ID删除了) + */ + public int readExcel(InputStream inputStream, Long userCompanyId) { try { Workbook book = Workbook.getWorkbook(inputStream); Sheet sheet = book.getSheet(0); int rows = sheet.getRows(); if (rows < 2) {//Excel中没有数据 - return false; + return 1; } int columns = sheet.getColumns(); Map indexMap = new HashMap(); - Long companyId = null; List markerDtos = new ArrayList(); int recordTypeFlag = 1; for (int i = 0; i < columns; i++) {//解析出来excel的头,找出对应位置,以适应excel文件头部顺序的变化 String name = sheet.getCell(i, 0).getContents(); switch (name) { - case "用户ID": - indexMap.put("userId", i); - break; case "管线种类": indexMap.put("markerObjectType", i); recordTypeFlag = 1; @@ -388,6 +365,9 @@ case "标识器类型": indexMap.put("markerType", i); break; + case "标识器埋深": + indexMap.put("markerDepth", i); + break; case "安装人员": indexMap.put("creator", i); break; @@ -442,18 +422,10 @@ case "下层管材料": indexMap.put("belowMaterial", i); break; -// case "记录类型": -// indexMap.put("recordType",i); -// break; } } - Long userId = Long.valueOf(empty2zero(sheet.getCell(indexMap.get("userId"), 1).getContents())); - User user = userInfoManager.getUserById(userId); - companyId = user.getCompany().getId(); - if (companyId == null) { - return false; - } + for (int i = 1; i < rows; i++) { MarkerDto markerDto = new MarkerDto(); if (recordTypeFlag == 1) { @@ -487,14 +459,162 @@ markerDtos.add(markerDto); } book.close(); - batchSave(markerDtos, companyId); - //System.out.println(new Gson().toJson(markerDtos)); + batchSave(markerDtos, userCompanyId); } catch (BiffException e) { + logger.error(e.getMessage()); + return 4; + } catch (IOException e) { + logger.error(e.getMessage()); + return 4; + } + return 0; + } + + /** + * + * @param companyId 操作用户的公司ID + * @param outPath 输出路径 + * @return + */ + public boolean exportServerExcel(Long companyId,String outPath){ + List markerDtos = null; + markerDtos = getAllPointByCompanyId(companyId); + try { + //打开文件 + WritableWorkbook book = Workbook.createWorkbook(new File(outPath)); + 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) { e.printStackTrace(); + return false; + } + return true; + } + + public void exportClientExcel( HttpServletRequest request, HttpServletResponse response,User user, String strMarkerDto){ + + List markerDtos = null; + int type = 0; + String excelName = "管线信息"; + String excelColumns = ""; + String alias = ""; + if (StringUtils.isNotBlank(strMarkerDto)) { + MarkerDto markerDto = new Gson().fromJson(strMarkerDto, MarkerDto.class); + type = markerDto.getRecordType() == null ? 0 : markerDto.getRecordType(); + markerDtos = getMarkerDtosByCondition(markerDto, user.getCompany(), type); + } else { + markerDtos = getAllPoint(user); + } + if (type == 1) { + excelName = "管线信息"; + excelColumns = "id,markerObjectType,pipeMaterial,pipeDiameter,layStyle,depth," + + "road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,管线种类,管线材质,管线直径,埋设方式,管线埋深," + + "所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else if (type == 2) { + excelName = "管线附属物信息"; + excelColumns = "id,markerObjectType,depth," + + "road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,附属物名称,井深," + + "所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else if (type == 3) { + excelName = "管线特征管点信息"; + excelColumns = "id,markerObjectType,depth," + + "road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,管点特征,特征点埋深," + + "所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else if (type == 4) { + excelName = "交叉穿越点信息"; + excelColumns = "id,markerObjectType,pipeMaterial,pipeDiameter,depth,belowType," + + "belowDepth,belowDiameter,belowMaterial,road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,上层管种类,上层管材料,上层管直径,上层管埋深,下层管种类," + + "下层管埋深,下层管直径,下层管材料,所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else {//全部导出的,在地图上 + excelName = "标识器信息"; + excelColumns = "id,markerObjectType,pipeMaterial,pipeDiameter,depth,layStyle,belowType," + + "belowDepth,belowDiameter,belowMaterial,road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,creator,markerDepth,createTime,memo"; + alias ="编号,上层管种类,上层管材料,上层管直径,上层管埋深,埋设方式,下层管种类," + + "下层管埋深,下层管直径,下层管材料,所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } + String[] columns = excelColumns.split(","); + String[] headerAlias = alias.split(","); + TableModel tableModel = new TableModel(); + tableModel.setName(excelName); + tableModel.addHeaders(columns); + tableModel.addHeaderAlias(headerAlias); + tableModel.setData(markerDtos); + response.setCharacterEncoding("UTF-8"); + try { + exportor.export(request, response, tableModel); } catch (IOException e) { e.printStackTrace(); } - return true; + } private String empty2zero(String str) { diff --git a/src/main/webapp/content/ems/ems.jsp b/src/main/webapp/content/ems/ems.jsp index 30b3e1f..1b0147b 100644 --- a/src/main/webapp/content/ems/ems.jsp +++ b/src/main/webapp/content/ems/ems.jsp @@ -489,7 +489,7 @@ Ems.initMap(); Ems.initForm(); Ems.initSelect(); -// EmsMarkerOpt.init();//导出Excel,和陈涛交互字段待定,暂时未做 + EmsMarkerOpt.init();//导出Excel,和陈涛交互字段待定,暂时未做 }) diff --git a/src/main/webapp/content/marker/marker-info-list.jsp b/src/main/webapp/content/marker/marker-info-list.jsp index 69a4d42..3ca4763 100644 --- a/src/main/webapp/content/marker/marker-info-list.jsp +++ b/src/main/webapp/content/marker/marker-info-list.jsp @@ -1 +1 @@ -<%@page contentType="text/html;charset=UTF-8" %> <%@include file="/taglibs.jsp" %> <%pageContext.setAttribute("currentMenu", "markerManagerMenu");%> 地下管线电子标识系统 <%----%> <%@include file="/common/layout/header.jsp" %>
<%@include file="/common/layout/menu_new.jsp" %>
<%--<%@include file="/common/layout/second-menu-auth.jsp" %>--%>
标识器管理
<%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%>
id标识器编号标识器名称区域线路类型埋深里程1里程2安装时间安装人员备注编辑删除
<%@include file="/common/layout/footer.jsp" %> <%----%> <%----%> \ No newline at end of file +<%@page contentType="text/html;charset=UTF-8" %> <%@include file="/taglibs.jsp" %> <%pageContext.setAttribute("currentMenu", "markerManagerMenu");%> 地下管线电子标识系统 <%----%> <%@include file="/common/layout/header.jsp" %>
<%@include file="/common/layout/menu_new.jsp" %>
<%--<%@include file="/common/layout/second-menu-auth.jsp" %>--%>
标识器管理
<%--
--%> <%----%> <%--
--%> <%--
--%> <%----%> <%--
--%>
<%--
--%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%--
--%>
<%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%>
id标识器编号标识器名称区域线路类型埋深里程1里程2安装时间安装人员备注编辑删除
<%@include file="/common/layout/footer.jsp" %> <%----%> <%----%> \ No newline at end of file diff --git a/src/main/webapp/s/app/ems/ems-marker-opt.js b/src/main/webapp/s/app/ems/ems-marker-opt.js index b0c9944..eb8f9c4 100644 --- a/src/main/webapp/s/app/ems/ems-marker-opt.js +++ b/src/main/webapp/s/app/ems/ems-marker-opt.js @@ -5,17 +5,6 @@ return { init: function () { $('#excel_import').live('click', function (e) { -// var filePath = $("#excelFile").val(); -// if (null != filePath && "" != filePath) { -// if (filePath.indexOf(".xls") != filePath.length - 4 && filePath.indexOf(".xls") != filePath.length - 5) { -// alert("请选择*.xls或*.xlsx文件"); -// return; -// } -// importByExcel($("#excelFile").val()); -//// //刷新列表页面就行了 -// location.href = $("#context").val() + "/content/ems/ems.jsp"; -// } - $("#excelForm").ajaxSubmit({ type:"post", url:$("#context").val() +"/marker/excelMarkers.do", @@ -34,86 +23,6 @@ }); -// function importByExcel(filePath) { -// //创建操作EXCEL应用程序的实例 -// try { -// var excelObject = new ActiveXObject("Excel.application"); -// //打开指定路径的excel文件 -// var excelFile = excelObject.Workbooks.open(filePath); -// //操作第一个sheet(从一开始,而非零) -// excelFile.worksheets(1).select(); -// var excelSheet = excelFile.ActiveSheet; -// //文件总行数 -// var totalRows = excelSheet.usedrange.rows.count; -// } catch (e) { -// } -// try { -// //获取属性index -// var userId = getPropertyIndex(excelSheet, "用户ID"); -// var markerNo = getPropertyIndex(excelSheet, "标识器编号"); -// var markerName = getPropertyIndex(excelSheet, "标识器名称"); -// var area = getPropertyIndex(excelSheet, "三级区域"); -// var line = getPropertyIndex(excelSheet, "三级线路"); -// var objType = getPropertyIndex(excelSheet, "类型"); -// var depth = getPropertyIndex(excelSheet, "埋深"); -// var mileage1 = getPropertyIndex(excelSheet, "里程1"); -// var mileage2 = getPropertyIndex(excelSheet, "里程2"); -// var deployTime = getPropertyIndex(excelSheet, "安装时间"); -// var deployUser = getPropertyIndex(excelSheet, "安装人员"); -// var belongComp = getPropertyIndex(excelSheet, "权属单位"); -// var longitudeIndex = getPropertyIndex(excelSheet, "经度"); -// var latitudeIndex = getPropertyIndex(excelSheet, "纬度"); -// var remark = getPropertyIndex(excelSheet, "备注"); -// -// var markerList = new Array(); -// -// //第一行是标题,从2开始 -// for (var i = 2; i <= totalRows; i++) { -// var markerDto = {}; -// // 1.读取excel中的属性信息 -// markerDto.userId = getNotNullNumberValue(excelSheet.Cells(i, userId).value); -// markerDto.markerId = getNotNullValue(excelSheet.Cells(i, markerNo).value); -// markerDto.markerName = getNotNullValue(excelSheet.Cells(i, markerName).value); -// markerDto.featureId = getNotNullNumberValue(excelSheet.Cells(i, area).value); -// markerDto.lineId = getNotNullNumberValue(excelSheet.Cells(i, line).value); -// markerDto.markerObjectType = getNotNullValue(excelSheet.Cells(i, objType).value); -// markerDto.depth = getNotNullNumberValue(excelSheet.Cells(i, depth).value); -// markerDto.mileage = getNotNullValue(excelSheet.Cells(i, mileage1).value); -// markerDto.mileage2 = getNotNullValue(excelSheet.Cells(i, mileage2).value); -// markerDto.createTime = getNotNullValue(excelSheet.Cells(i, deployTime).value); -// markerDto.creator = getNotNullValue(excelSheet.Cells(i, deployUser).value); -// markerDto.ownerComp = getNotNullValue(excelSheet.Cells(i, deployUser).value); -// markerDto.longitude = getNotNullValue(excelSheet.Cells(i, longitudeIndex).value); -// markerDto.latitude = getNotNullValue(excelSheet.Cells(i, latitudeIndex).value); -// markerDto.memo = getNotNullValue(excelSheet.Cells(i, remark).value); -// markerList.push(markerDto); -// } -// // 2.导入到数据库 -// $.ajax({ -// type: "POST", -// async: false, -// url: $("#context").val() + "/marker/batchSave.do", -// data: {"markers": JSON.stringify(markerList)}, -// success: function (result) { -// var result = eval("(" + result + ")"); -// if (!result.success) { -// alert("标识器入库失败," + result.msg); -// } else { -// alert("入库完成"); -// } -// -// } -// }); -// -// -// } catch (e) { -// } -// //退出操作excel的实例对象 -// excelObject.Application.Quit(); -// //手动调用垃圾收集器 -// CollectGarbage(); -// }; - function getPropertyIndex(excelSheet, propertyName) { var index = 1; while (true) { diff --git a/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java b/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java index dd8d064..6ed7eef 100644 --- a/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java +++ b/src/main/java/com/casic/accessControl/core/ext/export/CsvExportor.java @@ -12,15 +12,25 @@ HttpServletResponse response, TableModel tableModel) throws IOException { StringBuilder buff = new StringBuilder(); + if(tableModel.hasAlias()) {//有设置别名,应该按别名展示 + for (int i = 0; i < tableModel.getHeaderCount(); i++) { + buff.append(tableModel.getHeaderAlias(i)); - for (int i = 0; i < tableModel.getHeaderCount(); i++) { - buff.append(tableModel.getHeader(i)); + if (i != (tableModel.getHeaderCount() - 1)) { + buff.append(","); + } + } + }else{ + for (int i = 0; i < tableModel.getHeaderCount(); i++) { + buff.append(tableModel.getHeader(i)); - if (i != (tableModel.getHeaderCount() - 1)) { - buff.append(","); + if (i != (tableModel.getHeaderCount() - 1)) { + buff.append(","); + } } } + buff.append("\n"); for (int i = 0; i < tableModel.getDataCount(); i++) { diff --git a/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java b/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java index 0cbbb66..a214041 100644 --- a/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java +++ b/src/main/java/com/casic/accessControl/core/ext/export/TableModel.java @@ -13,6 +13,10 @@ private List headers = new ArrayList(); private List data; + //wxl新增 + private List headerAlias = new ArrayList(); + private boolean enableAlias = false; + public String getName() { return name; } @@ -34,7 +38,20 @@ headers.add(text); } } + //新增,可展示自定义名称 + public void addHeaderAlias(String... alias) { + if (alias == null) { + return; + } + enableAlias = true; + for (String text : alias) { + if (text == null) { + continue; + } + headerAlias.add(text); + } + } public void setData(List data) { this.data = data; } @@ -51,6 +68,12 @@ return headers.get(index); } + public boolean hasAlias(){ + return this.enableAlias; + } + public String getHeaderAlias(int index) { + return headerAlias.get(index); + } public String getValue(int i, int j) { try { String header = getHeader(j); diff --git a/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java b/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java index 7fe7434..d4998d8 100644 --- a/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java +++ b/src/main/java/com/casic/accessControl/marker/manager/MarkerManager.java @@ -1,6 +1,8 @@ package com.casic.accessControl.marker.manager; import com.casic.accessControl.common.CommonEnum; +import com.casic.accessControl.core.ext.export.CsvExportor; +import com.casic.accessControl.core.ext.export.TableModel; import com.casic.accessControl.core.hibernate.HibernateEntityDao; import com.casic.accessControl.core.page.Page; import com.casic.accessControl.core.util.StringUtils; @@ -20,6 +22,9 @@ import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; +import jxl.write.Label; +import jxl.write.WritableSheet; +import jxl.write.WritableWorkbook; import org.apache.commons.collections.CollectionUtils; import org.hibernate.Criteria; import org.hibernate.Query; @@ -28,10 +33,13 @@ import org.hibernate.criterion.Restrictions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -46,15 +54,12 @@ @Service public class MarkerManager extends HibernateEntityDao { - @Resource - private UserManager userInfoManager; - private Logger logger = LoggerFactory.getLogger(this.getClass()); + @Resource + private CsvExportor exportor; public DataTable pageQueryMarker(String params, String markerDto, Long companyId) { -// List features = null; -// List lines = null; DataTable result = new DataTable(); DataTableParameter parameter = DataTableUtils.getDataTableParameterByJsonParam(params); int start = parameter.getiDisplayStart(); @@ -68,6 +73,9 @@ if (markerDto1.getRecordType() != null) { criteria1.add(Restrictions.eq("recordType", markerDto1.getRecordType())); } + if (StringUtils.isNotBlank(markerDto1.getMarkerId())) { + criteria1.add(Restrictions.like("markerId", markerDto1.getMarkerId(), MatchMode.ANYWHERE)); + } if (StringUtils.isNotBlank(markerDto1.getMemo())) { criteria1.add(Restrictions.like("memo", markerDto1.getMemo(), MatchMode.ANYWHERE)); } @@ -147,36 +155,6 @@ return Collections.emptyList(); } - //获取marker -// @Cacheable(value = "getMarkerByFeature", key = "#feature.getId()") -// public List getMarkerByFeature(Feature feature) { -// try { -// Criteria criteria = this.createCriteria(Marker.class); -// criteria.add(Restrictions.eq("belongLine", feature)); -// criteria.add(Restrictions.eq("isValid", 1)); -// List markers = criteria.list(); -// return markers; -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return Collections.emptyList(); -// } - -// public List getMarkerByFeature(Feature feature, Feature line) { -// try { -// Criteria criteria = this.createCriteria(Marker.class); -// if (line != null) criteria.add(Restrictions.eq("belongLine", line)); -// if (feature != null) criteria.add(Restrictions.eq("belongFeature", feature)); -// criteria.add(Restrictions.eq("isValid", 1)); -// -// List markers = criteria.list(); -// return markers; -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return Collections.emptyList(); -// } - public boolean saveMarker(Marker marker) { try { if (marker == null) { @@ -273,16 +251,16 @@ /** * 根据条件查询标识器的ID列表 - * // * - * // * @param parentId - * // * @param markerName * * @return */ - public List getMarkerDtosByCondition(MarkerDto markerDto, Company company) { + public List getMarkerDtosByCondition(MarkerDto markerDto, Company company,int type) { Criteria criteria1 = this.getSession().createCriteria(Marker.class); criteria1.add(Restrictions.eq("isValid", 1)).add(Restrictions.eq("companyId", company.getId())); + if(type > 0){//限制记录类型 + criteria1.add(Restrictions.eq("recordType",type)); + } if (StringUtils.isNotBlank(markerDto.getMemo())) { criteria1.add(Restrictions.like("memo", markerDto.getMemo(), MatchMode.ANYWHERE)); } @@ -312,8 +290,6 @@ } -// @Cacheable(value = "getAllPoint", key = "#user.getId()") - public List getAllPoint(User user) { if (user == null) { return Collections.emptyList(); @@ -335,25 +311,26 @@ return MarkerDto.convert2MarkerDtoList(result); } - public boolean readExcel(InputStream inputStream) { + /** + * @param inputStream 文件输入流 + * @param userCompanyId 当前登录用户公司ID + * @return 成功返回0,Excel表不含内容返回1,读取Excel异常返回4 (用户所属公司不匹配返回2,Excel表中ID不正确返回3,将Excel表中的ID删除了) + */ + public int readExcel(InputStream inputStream, Long userCompanyId) { try { Workbook book = Workbook.getWorkbook(inputStream); Sheet sheet = book.getSheet(0); int rows = sheet.getRows(); if (rows < 2) {//Excel中没有数据 - return false; + return 1; } int columns = sheet.getColumns(); Map indexMap = new HashMap(); - Long companyId = null; List markerDtos = new ArrayList(); int recordTypeFlag = 1; for (int i = 0; i < columns; i++) {//解析出来excel的头,找出对应位置,以适应excel文件头部顺序的变化 String name = sheet.getCell(i, 0).getContents(); switch (name) { - case "用户ID": - indexMap.put("userId", i); - break; case "管线种类": indexMap.put("markerObjectType", i); recordTypeFlag = 1; @@ -388,6 +365,9 @@ case "标识器类型": indexMap.put("markerType", i); break; + case "标识器埋深": + indexMap.put("markerDepth", i); + break; case "安装人员": indexMap.put("creator", i); break; @@ -442,18 +422,10 @@ case "下层管材料": indexMap.put("belowMaterial", i); break; -// case "记录类型": -// indexMap.put("recordType",i); -// break; } } - Long userId = Long.valueOf(empty2zero(sheet.getCell(indexMap.get("userId"), 1).getContents())); - User user = userInfoManager.getUserById(userId); - companyId = user.getCompany().getId(); - if (companyId == null) { - return false; - } + for (int i = 1; i < rows; i++) { MarkerDto markerDto = new MarkerDto(); if (recordTypeFlag == 1) { @@ -487,14 +459,162 @@ markerDtos.add(markerDto); } book.close(); - batchSave(markerDtos, companyId); - //System.out.println(new Gson().toJson(markerDtos)); + batchSave(markerDtos, userCompanyId); } catch (BiffException e) { + logger.error(e.getMessage()); + return 4; + } catch (IOException e) { + logger.error(e.getMessage()); + return 4; + } + return 0; + } + + /** + * + * @param companyId 操作用户的公司ID + * @param outPath 输出路径 + * @return + */ + public boolean exportServerExcel(Long companyId,String outPath){ + List markerDtos = null; + markerDtos = getAllPointByCompanyId(companyId); + try { + //打开文件 + WritableWorkbook book = Workbook.createWorkbook(new File(outPath)); + 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) { e.printStackTrace(); + return false; + } + return true; + } + + public void exportClientExcel( HttpServletRequest request, HttpServletResponse response,User user, String strMarkerDto){ + + List markerDtos = null; + int type = 0; + String excelName = "管线信息"; + String excelColumns = ""; + String alias = ""; + if (StringUtils.isNotBlank(strMarkerDto)) { + MarkerDto markerDto = new Gson().fromJson(strMarkerDto, MarkerDto.class); + type = markerDto.getRecordType() == null ? 0 : markerDto.getRecordType(); + markerDtos = getMarkerDtosByCondition(markerDto, user.getCompany(), type); + } else { + markerDtos = getAllPoint(user); + } + if (type == 1) { + excelName = "管线信息"; + excelColumns = "id,markerObjectType,pipeMaterial,pipeDiameter,layStyle,depth," + + "road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,管线种类,管线材质,管线直径,埋设方式,管线埋深," + + "所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else if (type == 2) { + excelName = "管线附属物信息"; + excelColumns = "id,markerObjectType,depth," + + "road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,附属物名称,井深," + + "所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else if (type == 3) { + excelName = "管线特征管点信息"; + excelColumns = "id,markerObjectType,depth," + + "road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,管点特征,特征点埋深," + + "所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else if (type == 4) { + excelName = "交叉穿越点信息"; + excelColumns = "id,markerObjectType,pipeMaterial,pipeDiameter,depth,belowType," + + "belowDepth,belowDiameter,belowMaterial,road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,markerDepth,creator,createTime,memo"; + alias ="编号,上层管种类,上层管材料,上层管直径,上层管埋深,下层管种类," + + "下层管埋深,下层管直径,下层管材料,所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } else {//全部导出的,在地图上 + excelName = "标识器信息"; + excelColumns = "id,markerObjectType,pipeMaterial,pipeDiameter,depth,layStyle,belowType," + + "belowDepth,belowDiameter,belowMaterial,road,constructTime,ownerComp,markerObjectId," + + "markerId,markerType,creator,markerDepth,createTime,memo"; + alias ="编号,上层管种类,上层管材料,上层管直径,上层管埋深,埋设方式,下层管种类," + + "下层管埋深,下层管直径,下层管材料,所属道路,建设年代,所属单位,标示对象ID," + + "标识器ID,标识器类型,标识器埋深,安装人员,最后修改时间,备注"; + } + String[] columns = excelColumns.split(","); + String[] headerAlias = alias.split(","); + TableModel tableModel = new TableModel(); + tableModel.setName(excelName); + tableModel.addHeaders(columns); + tableModel.addHeaderAlias(headerAlias); + tableModel.setData(markerDtos); + response.setCharacterEncoding("UTF-8"); + try { + exportor.export(request, response, tableModel); } catch (IOException e) { e.printStackTrace(); } - return true; + } private String empty2zero(String str) { diff --git a/src/main/webapp/content/ems/ems.jsp b/src/main/webapp/content/ems/ems.jsp index 30b3e1f..1b0147b 100644 --- a/src/main/webapp/content/ems/ems.jsp +++ b/src/main/webapp/content/ems/ems.jsp @@ -489,7 +489,7 @@ Ems.initMap(); Ems.initForm(); Ems.initSelect(); -// EmsMarkerOpt.init();//导出Excel,和陈涛交互字段待定,暂时未做 + EmsMarkerOpt.init();//导出Excel,和陈涛交互字段待定,暂时未做 }) diff --git a/src/main/webapp/content/marker/marker-info-list.jsp b/src/main/webapp/content/marker/marker-info-list.jsp index 69a4d42..3ca4763 100644 --- a/src/main/webapp/content/marker/marker-info-list.jsp +++ b/src/main/webapp/content/marker/marker-info-list.jsp @@ -1 +1 @@ -<%@page contentType="text/html;charset=UTF-8" %> <%@include file="/taglibs.jsp" %> <%pageContext.setAttribute("currentMenu", "markerManagerMenu");%> 地下管线电子标识系统 <%----%> <%@include file="/common/layout/header.jsp" %>
<%@include file="/common/layout/menu_new.jsp" %>
<%--<%@include file="/common/layout/second-menu-auth.jsp" %>--%>
标识器管理
<%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%>
id标识器编号标识器名称区域线路类型埋深里程1里程2安装时间安装人员备注编辑删除
<%@include file="/common/layout/footer.jsp" %> <%----%> <%----%> \ No newline at end of file +<%@page contentType="text/html;charset=UTF-8" %> <%@include file="/taglibs.jsp" %> <%pageContext.setAttribute("currentMenu", "markerManagerMenu");%> 地下管线电子标识系统 <%----%> <%@include file="/common/layout/header.jsp" %>
<%@include file="/common/layout/menu_new.jsp" %>
<%--<%@include file="/common/layout/second-menu-auth.jsp" %>--%>
标识器管理
<%--
--%> <%----%> <%--
--%> <%--
--%> <%----%> <%--
--%>
<%--
--%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%--
--%>
<%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%> <%----%>
id标识器编号标识器名称区域线路类型埋深里程1里程2安装时间安装人员备注编辑删除
<%@include file="/common/layout/footer.jsp" %> <%----%> <%----%> \ No newline at end of file diff --git a/src/main/webapp/s/app/ems/ems-marker-opt.js b/src/main/webapp/s/app/ems/ems-marker-opt.js index b0c9944..eb8f9c4 100644 --- a/src/main/webapp/s/app/ems/ems-marker-opt.js +++ b/src/main/webapp/s/app/ems/ems-marker-opt.js @@ -5,17 +5,6 @@ return { init: function () { $('#excel_import').live('click', function (e) { -// var filePath = $("#excelFile").val(); -// if (null != filePath && "" != filePath) { -// if (filePath.indexOf(".xls") != filePath.length - 4 && filePath.indexOf(".xls") != filePath.length - 5) { -// alert("请选择*.xls或*.xlsx文件"); -// return; -// } -// importByExcel($("#excelFile").val()); -//// //刷新列表页面就行了 -// location.href = $("#context").val() + "/content/ems/ems.jsp"; -// } - $("#excelForm").ajaxSubmit({ type:"post", url:$("#context").val() +"/marker/excelMarkers.do", @@ -34,86 +23,6 @@ }); -// function importByExcel(filePath) { -// //创建操作EXCEL应用程序的实例 -// try { -// var excelObject = new ActiveXObject("Excel.application"); -// //打开指定路径的excel文件 -// var excelFile = excelObject.Workbooks.open(filePath); -// //操作第一个sheet(从一开始,而非零) -// excelFile.worksheets(1).select(); -// var excelSheet = excelFile.ActiveSheet; -// //文件总行数 -// var totalRows = excelSheet.usedrange.rows.count; -// } catch (e) { -// } -// try { -// //获取属性index -// var userId = getPropertyIndex(excelSheet, "用户ID"); -// var markerNo = getPropertyIndex(excelSheet, "标识器编号"); -// var markerName = getPropertyIndex(excelSheet, "标识器名称"); -// var area = getPropertyIndex(excelSheet, "三级区域"); -// var line = getPropertyIndex(excelSheet, "三级线路"); -// var objType = getPropertyIndex(excelSheet, "类型"); -// var depth = getPropertyIndex(excelSheet, "埋深"); -// var mileage1 = getPropertyIndex(excelSheet, "里程1"); -// var mileage2 = getPropertyIndex(excelSheet, "里程2"); -// var deployTime = getPropertyIndex(excelSheet, "安装时间"); -// var deployUser = getPropertyIndex(excelSheet, "安装人员"); -// var belongComp = getPropertyIndex(excelSheet, "权属单位"); -// var longitudeIndex = getPropertyIndex(excelSheet, "经度"); -// var latitudeIndex = getPropertyIndex(excelSheet, "纬度"); -// var remark = getPropertyIndex(excelSheet, "备注"); -// -// var markerList = new Array(); -// -// //第一行是标题,从2开始 -// for (var i = 2; i <= totalRows; i++) { -// var markerDto = {}; -// // 1.读取excel中的属性信息 -// markerDto.userId = getNotNullNumberValue(excelSheet.Cells(i, userId).value); -// markerDto.markerId = getNotNullValue(excelSheet.Cells(i, markerNo).value); -// markerDto.markerName = getNotNullValue(excelSheet.Cells(i, markerName).value); -// markerDto.featureId = getNotNullNumberValue(excelSheet.Cells(i, area).value); -// markerDto.lineId = getNotNullNumberValue(excelSheet.Cells(i, line).value); -// markerDto.markerObjectType = getNotNullValue(excelSheet.Cells(i, objType).value); -// markerDto.depth = getNotNullNumberValue(excelSheet.Cells(i, depth).value); -// markerDto.mileage = getNotNullValue(excelSheet.Cells(i, mileage1).value); -// markerDto.mileage2 = getNotNullValue(excelSheet.Cells(i, mileage2).value); -// markerDto.createTime = getNotNullValue(excelSheet.Cells(i, deployTime).value); -// markerDto.creator = getNotNullValue(excelSheet.Cells(i, deployUser).value); -// markerDto.ownerComp = getNotNullValue(excelSheet.Cells(i, deployUser).value); -// markerDto.longitude = getNotNullValue(excelSheet.Cells(i, longitudeIndex).value); -// markerDto.latitude = getNotNullValue(excelSheet.Cells(i, latitudeIndex).value); -// markerDto.memo = getNotNullValue(excelSheet.Cells(i, remark).value); -// markerList.push(markerDto); -// } -// // 2.导入到数据库 -// $.ajax({ -// type: "POST", -// async: false, -// url: $("#context").val() + "/marker/batchSave.do", -// data: {"markers": JSON.stringify(markerList)}, -// success: function (result) { -// var result = eval("(" + result + ")"); -// if (!result.success) { -// alert("标识器入库失败," + result.msg); -// } else { -// alert("入库完成"); -// } -// -// } -// }); -// -// -// } catch (e) { -// } -// //退出操作excel的实例对象 -// excelObject.Application.Quit(); -// //手动调用垃圾收集器 -// CollectGarbage(); -// }; - function getPropertyIndex(excelSheet, propertyName) { var index = 1; while (true) { diff --git a/src/main/webapp/s/app/marker/marker-info-list.js b/src/main/webapp/s/app/marker/marker-info-list.js index 3784077..d63385d 100644 --- a/src/main/webapp/s/app/marker/marker-info-list.js +++ b/src/main/webapp/s/app/marker/marker-info-list.js @@ -24,6 +24,9 @@ "mDataProp": "id" }, { + "mDataProp": "markerId" + }, + { "mDataProp": "markerObjectType" }, { @@ -86,17 +89,17 @@ aoColumnDefs = [ { 'bSortable': false, -// 'bVisible': false, + 'bVisible': false, 'aTargets': [0] }, { 'bSortable': false, - 'aTargets': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,14,15] + 'aTargets': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,14,15,16] } ]; return " " -// + "id" - + "编号" + + "id" + + "标识器ID" + " 管线种类" + " 管线直径" + " 管线材质" @@ -120,6 +123,9 @@ "mDataProp": "id" }, { + "mDataProp": "markerId" + }, + { "mDataProp": "markerObjectType" }, { @@ -170,17 +176,17 @@ aoColumnDefs = [ { 'bSortable': false, -// 'bVisible': false, + 'bVisible': false, 'aTargets': [0] }, { 'bSortable': false, - 'aTargets': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12] + 'aTargets': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12,13] } ]; return " " -// + "id" - + "编号" + + "id" + + "标识器ID" + " 附属物名称" + " 井深" + " 所属道路" @@ -201,6 +207,9 @@ "mDataProp": "id" }, { + "mDataProp": "markerId" + }, + { "mDataProp": "markerObjectType" }, { @@ -251,17 +260,17 @@ aoColumnDefs = [ { 'bSortable': false, -// 'bVisible': false, + 'bVisible': false, 'aTargets': [0] }, { 'bSortable': false, - 'aTargets': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12] + 'aTargets': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12,13] } ]; return " " -// + "id" - + "编号" + + "id" + + "标识器ID" + " 管点特征" + " 特征点埋深" + " 所属道路" @@ -282,6 +291,9 @@ "mDataProp": "id" }, { + "mDataProp": "markerId" + }, + { "mDataProp": "markerObjectType" }, { @@ -356,17 +368,17 @@ aoColumnDefs = [ { 'bSortable': false, -// 'bVisible': false, + 'bVisible': false, 'aTargets': [0] }, { 'bSortable': false, - 'aTargets': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,13,14,15,16,17,18] + 'aTargets': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,13,14,15,16,17,18,19] } ]; return " " -// + "id" - + "编号" + + "id" + + "标识器ID" + " 上层管种类" + " 上层管埋深" + " 上层管直径" @@ -580,6 +592,7 @@ Marker.creator = $("#creator").val(); Marker.sDate = $("#txt_begin_day").val(); Marker.eDate = $("#txt_end_day").val(); + Marker.markerId = $("#markerId").val(); oTable.fnDraw(true); // oTable.fnClearTable(); // oTable.ajax.reload(); @@ -594,6 +607,7 @@ Marker.creator = $("#creator").val(); Marker.sDate = $("#txt_begin_day").val(); Marker.eDate = $("#txt_end_day").val(); + Marker.markerId = $("#markerId").val(); location.href = $('#context').val() + "/marker/export.do?strMarkerDto=" + JSON.stringify(Marker); });