From 8d2b573ced32e6ca6fab7c1dc45e1fa108030ba1 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期三, 28 八月 2024 17:21:23 +0800 Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV --- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml | 2 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/network/dto/Network.java | 28 + pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoGeneral.java | 33 + pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrNetworkCoordinatesMapper.xml | 108 +++++ pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralCtrl.java | 64 ++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/excel/ReportExportCellWriteHandler.java | 173 ++++++++ pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/network/NetworkCtrl.java | 97 ++++ pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java | 2 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoNetwork.java | 34 + pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoNetworkCoordinates.java | 30 + pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java | 5 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrWaterNetworkMapper.java | 42 ++ pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrWaterNetworkMapper.xml | 81 ++++ pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java | 11 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java | 7 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/network/NetworkSv.java | 129 ++++++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrNetworkCoordinates.java | 58 ++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTradeDetails.java | 61 ++- pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralSv.java | 65 +++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/excel/ExcelUtil.java | 22 + pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java | 8 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoSv.java | 9 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrNetworkCoordinatesMapper.java | 39 + pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml | 4 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrWaterNetwork.java | 45 ++ 25 files changed, 1,111 insertions(+), 46 deletions(-) diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java index 0721be2..1a4779b 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java @@ -133,4 +133,9 @@ */ List<Map<String, Object>> getRoleNamesByUserId(@Param("userId") Long userId); + /** + * 寰楀埌鎵�鏈夋墜鏈哄彿(鐧诲綍璐﹀彿) + * @return + */ + List<String> getPhones(); } diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrNetworkCoordinatesMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrNetworkCoordinatesMapper.java new file mode 100644 index 0000000..7e80ba8 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrNetworkCoordinatesMapper.java @@ -0,0 +1,39 @@ +package com.dy.pipIrrGlobal.daoPr; + +import com.dy.pipIrrGlobal.pojoPr.PrNetworkCoordinates; +import com.dy.pipIrrGlobal.voPr.VoNetworkCoordinates; + +import java.util.List; + +/** + * @author ZhuBaoMin + * @date 2024-08-27 17:23 + * @LastEditTime 2024-08-27 17:23 + * @Description + */ +public interface PrNetworkCoordinatesMapper { + int deleteByPrimaryKey(Long id); + + int insert(PrNetworkCoordinates record); + + int insertSelective(PrNetworkCoordinates record); + + PrNetworkCoordinates selectByPrimaryKey(Long id); + + int updateByPrimaryKeySelective(PrNetworkCoordinates record); + + int updateByPrimaryKey(PrNetworkCoordinates record); + + /** + * 娓呴櫎鍏ㄩ儴绠$綉鍧愭爣 + */ + void clearCoordinates(); + + /** + * 鏍规嵁绠$綉ID鑾峰彇绠$綉鍧愭爣鍒楄〃 + * @param networkId + * @return + */ + List<VoNetworkCoordinates> getCoordinatesByNetworkId(Long networkId); + +} \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrWaterNetworkMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrWaterNetworkMapper.java new file mode 100644 index 0000000..8ac1ae1 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrWaterNetworkMapper.java @@ -0,0 +1,42 @@ +package com.dy.pipIrrGlobal.daoPr; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dy.pipIrrGlobal.pojoPr.PrWaterNetwork; +import com.dy.pipIrrGlobal.voPr.VoNetwork; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @author ZhuBaoMin + * @date 2024-08-27 17:14 + * @LastEditTime 2024-08-27 17:14 + * @Description + */ + +@Mapper +public interface PrWaterNetworkMapper extends BaseMapper<PrWaterNetwork> { + int deleteByPrimaryKey(Long id); + + int insert(PrWaterNetwork record); + + int insertSelective(PrWaterNetwork record); + + PrWaterNetwork selectByPrimaryKey(Long id); + + int updateByPrimaryKeySelective(PrWaterNetwork record); + + int updateByPrimaryKey(PrWaterNetwork record); + + /** + * 娓呴櫎鍏ㄩ儴绠$綉 + */ + void clearNetworks(); + + /** + * 鑾峰彇鍏ㄩ儴绠$綉 + * @return + */ + List<VoNetwork> getAllNewworks(); + +} \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/excel/ExcelUtil.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/excel/ExcelUtil.java new file mode 100644 index 0000000..6674095 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/excel/ExcelUtil.java @@ -0,0 +1,22 @@ +package com.dy.pipIrrGlobal.excel; + +import jakarta.servlet.http.HttpServletResponse; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; + +/** + * @author ZhuBaoMin + * @date 2024-08-26 10:28 + * @LastEditTime 2024-08-26 10:28 + * @Description 璁剧疆excel涓嬭浇鍝嶅簲澶村睘鎬� + */ +public class ExcelUtil { + public static void setExcelRespProp(HttpServletResponse response, String rawFileName) throws UnsupportedEncodingException { + String fileName = URLEncoder.encode(rawFileName, "UTF-8").replaceAll("\\+", "%20"); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + response.setHeader("Content-Disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + } + +} diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/excel/ReportExportCellWriteHandler.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/excel/ReportExportCellWriteHandler.java new file mode 100644 index 0000000..8f3ede8 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/excel/ReportExportCellWriteHandler.java @@ -0,0 +1,173 @@ +package com.dy.pipIrrGlobal.excel; + +import com.alibaba.excel.metadata.Head; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.write.handler.context.CellWriteHandlerContext; +import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; +import com.alibaba.excel.write.metadata.holder.WriteTableHolder; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.metadata.style.WriteFont; +import com.alibaba.excel.write.style.AbstractVerticalCellStyleStrategy; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.DefaultIndexedColorMap; +import org.apache.poi.xssf.usermodel.XSSFCellStyle; +import org.apache.poi.xssf.usermodel.XSSFColor; +import org.springframework.util.PropertyPlaceholderHelper; + +import java.util.List; +import java.util.Objects; +import java.util.Properties; + +/** + * @author ZhuBaoMin + * @date 2024-08-26 14:18 + * @LastEditTime 2024-08-26 14:18 + * @Description + */ + +public class ReportExportCellWriteHandler extends AbstractVerticalCellStyleStrategy { + private String title; + + PropertyPlaceholderHelper propertyPlaceholderHelper = new PropertyPlaceholderHelper("${", "}"); + + public ReportExportCellWriteHandler(String title) { + this.title = title; + } + + // 鍔ㄦ�佸鍏ユ爣棰� + @Override + public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, + Row row, Head head, Integer integer, Integer integer1, Boolean aBoolean) { + if (head != null) { + List<String> headNameList = head.getHeadNameList(); + if (CollectionUtils.isNotEmpty(headNameList)) { + Properties properties = new Properties(); + properties.setProperty("title", title); + headNameList.replaceAll(value -> propertyPlaceholderHelper.replacePlaceholders(value, properties)); + } + } + } + + // 璁剧疆鏍囬鏍峰紡锛屽寘鍚瓧浣撱�佽儗鏅� + @Override + protected void setHeadCellStyle(CellWriteHandlerContext context) { + // 鑾峰彇鍜屽垱寤篊ellStyle + WriteCellData<?> cellData = context.getFirstCellData(); + CellStyle originCellStyle = cellData.getOriginCellStyle(); + Cell cell = context.getCell(); + + if (Objects.isNull(originCellStyle)) { + originCellStyle = context.getWriteWorkbookHolder().getWorkbook().createCellStyle(); + } + + ((XSSFCellStyle) originCellStyle).setFillForegroundColor(new XSSFColor(new java.awt.Color(255, 255, 255), new DefaultIndexedColorMap())); + + // 璁剧疆鎸囧畾鍒楄儗鏅壊 + //if(cell.getColumnIndex() == 10 + //) { + // ((XSSFCellStyle) originCellStyle).setFillForegroundColor(new XSSFColor(new java.awt.Color(237, 237, 237), new DefaultIndexedColorMap())); + //} + + // 璁剧疆鑳屾櫙棰滆壊 + originCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); + // 鐢变簬鍦‵illStyleCellWriteHandler锛屼細鎶奜riginCellStyle鍜學riteCellStyle鍚堝苟锛屼細浠riteCellStyle鏍峰紡涓轰富锛屾墍鏈夊繀椤绘妸WriteCellStyle璁剧疆鐨勮儗鏅壊娓呯┖ + // 鍏蜂綋鍚堝苟瑙勫垯鐪媁riteWorkbookHolder.createCellStyle鏂规硶 + WriteCellStyle writeCellStyle = cellData.getWriteCellStyle(); + writeCellStyle.setFillForegroundColor(null); + // 蹇呴』璁剧疆OriginCellStyle + cellData.setOriginCellStyle(originCellStyle); + + WriteFont headWriteFont = new WriteFont(); + if (cell.getRowIndex() == 0) { + headWriteFont.setFontHeightInPoints((short)14); + headWriteFont.setFontName("Arial"); + headWriteFont.setBold(true); + }else if (cell.getRowIndex() == 1) { + headWriteFont.setFontHeightInPoints((short)12); + headWriteFont.setFontName("Arial"); + headWriteFont.setBold(false); + } + + cellData.getWriteCellStyle().setWriteFont(headWriteFont); + } + + // 璁剧疆鍐呭鍏ず銆佸唴瀹瑰瓧浣撴牱寮忋�佽儗鏅牱寮� + @Override + protected void setContentCellStyle(CellWriteHandlerContext context) { + + // 鑾峰彇鍜屽垱寤篊ellStyle + WriteCellData<?> cellData = context.getFirstCellData(); + CellStyle originCellStyle = cellData.getOriginCellStyle(); + Cell cell = context.getCell(); + + if (Objects.isNull(originCellStyle)) { + originCellStyle = context.getWriteWorkbookHolder().getWorkbook().createCellStyle(); + } + // 璁剧疆鑳屾櫙棰滆壊 + ((XSSFCellStyle) originCellStyle).setFillForegroundColor(new XSSFColor(new java.awt.Color(255, 192, 0), new DefaultIndexedColorMap())); + //System.out.println("Go to row: " + context.getCell().getRowIndex() + ", column: " + context.getCell().getColumnIndex()); + + if (cell.getRowIndex() >= 2){ + ((XSSFCellStyle) originCellStyle).setFillForegroundColor(new XSSFColor(new java.awt.Color(237, 237, 237), new DefaultIndexedColorMap())); + // 绁ㄩ潰鎬讳环 + //if (cell.getColumnIndex() == 10){ + // int actualCellRowNum = context.getCell().getRowIndex() + 1; + // context.getCell().setCellFormula("I" + actualCellRowNum +"+J" + actualCellRowNum); + // System.out.println("绗�" + context.getCell().getRowIndex() + "琛�,绗�" + context.getCell().getColumnIndex() + "绁ㄩ潰鎬讳环鍐欏叆鍏紡瀹屾垚"); + //}else if (cell.getColumnIndex() == 12){ + // // 鏀粯绁ㄦ + // int actualCellRowNum = context.getCell().getRowIndex() + 1; + // context.getCell().setCellFormula("K" + actualCellRowNum +"-L" + actualCellRowNum); + // System.out.println("绗�" + context.getCell().getRowIndex() + "琛�,绗�" + context.getCell().getColumnIndex() + "鏀粯绁ㄦ鍐欏叆鍏紡瀹屾垚"); + //}else if (cell.getColumnIndex() == 15){ + // // 鏀粯鎬婚 + // int actualCellRowNum = context.getCell().getRowIndex() + 1; + // context.getCell().setCellFormula("M" + actualCellRowNum +"+N" + actualCellRowNum +"+O" + actualCellRowNum); + // System.out.println("绗�" + context.getCell().getRowIndex() + "琛�,绗�" + context.getCell().getColumnIndex() + "鏀粯鎬婚鍐欏叆鍏紡瀹屾垚"); + //}else if (cell.getColumnIndex() == 17){ + // // 瀹為檯鍒╂鼎 + // int actualCellRowNum = context.getCell().getRowIndex() + 1; + // context.getCell().setCellFormula("L" + actualCellRowNum +"+Q" + actualCellRowNum); + // System.out.println("绗�" + context.getCell().getRowIndex() + "琛�,绗�" + context.getCell().getColumnIndex() + "瀹為檯鍒╂鼎鍐欏叆鍏紡瀹屾垚"); + //}else if (cell.getColumnIndex() == 18){ + // // 搴旀敹娆� + // int actualCellRowNum = context.getCell().getRowIndex() + 1; + // context.getCell().setCellFormula("P" + actualCellRowNum +"+R" + actualCellRowNum); + // System.out.println("绗�" + context.getCell().getRowIndex() + "琛�,绗�" + context.getCell().getColumnIndex() + "搴旀敹娆惧啓鍏ュ叕寮忓畬鎴�"); + //}else if (cell.getColumnIndex() == 20){ + // // 鏈敹娆� + // int actualCellRowNum = context.getCell().getRowIndex() + 1; + // context.getCell().setCellFormula("S" + actualCellRowNum +"-T" + actualCellRowNum); + // System.out.println("绗�" + context.getCell().getRowIndex() + "琛�,绗�" + context.getCell().getColumnIndex() + "鏈敹娆惧啓鍏ュ叕寮忓畬鎴�"); + //}else if (cell.getColumnIndex() >= 2){ + // ((XSSFCellStyle) originCellStyle).setFillForegroundColor(new XSSFColor(new java.awt.Color(189, 215, 238), new DefaultIndexedColorMap())); + //}else if (cell.getColumnIndex() < 2){ + // ((XSSFCellStyle) originCellStyle).setFillForegroundColor(new XSSFColor(new java.awt.Color(255, 192, 0), new DefaultIndexedColorMap())); + //} + } + + originCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); + originCellStyle.setBorderLeft(BorderStyle.THIN); //宸﹁竟妗嗙嚎 + originCellStyle.setBorderTop(BorderStyle.THIN); //椤堕儴妗嗙嚎 + originCellStyle.setBorderRight(BorderStyle.THIN); //鍙宠竟妗嗙嚎 + originCellStyle.setBorderBottom(BorderStyle.THIN); //搴曢儴妗嗙嚎 + // 鐢变簬鍦‵illStyleCellWriteHandler锛屼細鎶奜riginCellStyle鍜學riteCellStyle鍚堝苟锛屼細浠riteCellStyle鏍峰紡涓轰富锛屾墍鏈夊繀椤绘妸WriteCellStyle璁剧疆鐨勮儗鏅壊娓呯┖ + // 鍏蜂綋鍚堝苟瑙勫垯鐪媁riteWorkbookHolder.createCellStyle鏂规硶 + WriteCellStyle writeCellStyle = cellData.getWriteCellStyle(); + writeCellStyle.setFillForegroundColor(null); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + writeCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + // 蹇呴』璁剧疆OriginCellStyle + cellData.setOriginCellStyle(originCellStyle); + + WriteFont headWriteFont = new WriteFont(); + headWriteFont.setFontHeightInPoints((short)12); + headWriteFont.setFontName("瀹嬩綋"); + headWriteFont.setBold(false); + headWriteFont.setColor(IndexedColors.BLACK.getIndex()); + + cellData.getWriteCellStyle().setWriteFont(headWriteFont); + } +} + diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrNetworkCoordinates.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrNetworkCoordinates.java new file mode 100644 index 0000000..31f3606 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrNetworkCoordinates.java @@ -0,0 +1,58 @@ +package com.dy.pipIrrGlobal.pojoPr; + +import com.alibaba.fastjson2.annotation.JSONField; +import com.alibaba.fastjson2.writer.ObjectWriterImplToString; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.dy.common.po.BaseEntity; +import jakarta.validation.constraints.NotNull; +import lombok.*; + +import java.math.BigDecimal; + +/** + * @author ZhuBaoMin + * @date 2024-08-27 17:23 + * @LastEditTime 2024-08-27 17:23 + * @Description + */ + +/** + * 绠$綉鍧愭爣琛� + */ + +@TableName(value="pr_network_coordinates", autoResultMap = true) +@Data +@Builder +@ToString +@NoArgsConstructor +@AllArgsConstructor +public class PrNetworkCoordinates implements BaseEntity { + public static final long serialVersionUID = 202408271720001L; + + /** + * 涓婚敭 + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) + @TableId(type = IdType.INPUT) + private Long id; + + /** + * 绠$綉ID + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) + @NotNull(message = "鎵�灞炵缃戜笉鑳戒负绌�") + private Long networkId; + + /** + * 绾害 + */ + private BigDecimal lat; + + /** + * 缁忓害 + */ + private BigDecimal lng; + +} \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrWaterNetwork.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrWaterNetwork.java new file mode 100644 index 0000000..80cb636 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrWaterNetwork.java @@ -0,0 +1,45 @@ +package com.dy.pipIrrGlobal.pojoPr; + +/** + * @author ZhuBaoMin + * @date 2024-08-27 17:14 + * @LastEditTime 2024-08-27 17:14 + * @Description + */ + +import com.alibaba.fastjson2.annotation.JSONField; +import com.alibaba.fastjson2.writer.ObjectWriterImplToString; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.dy.common.po.BaseEntity; +import jakarta.validation.constraints.NotNull; +import lombok.*; + +/** + * 杈撻厤姘寸缃戣〃 + */ + +@TableName(value="pr_water_network", autoResultMap = true) +@Data +@Builder +@ToString +@NoArgsConstructor +@AllArgsConstructor +public class PrWaterNetwork implements BaseEntity { + public static final long serialVersionUID = 202408271719001L; + + /** + * 涓婚敭 + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) + @TableId(type = IdType.INPUT) + private Long id; + + /** + * 绠$綉绫诲瀷;1-杈撴按锛�2-閰嶆按 + */ + @NotNull(message = "绠$綉绫诲瀷涓嶈兘涓虹┖") + private Byte networkType; + +} \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoNetwork.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoNetwork.java new file mode 100644 index 0000000..173d7f9 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoNetwork.java @@ -0,0 +1,34 @@ +package com.dy.pipIrrGlobal.voPr; + +import com.alibaba.fastjson2.JSONObject; +import com.alibaba.fastjson2.annotation.JSONField; +import com.alibaba.fastjson2.writer.ObjectWriterImplToString; +import lombok.Data; + +/** + * @author ZhuBaoMin + * @date 2024-08-28 11:42 + * @LastEditTime 2024-08-28 11:42 + * @Description + */ + +@Data +public class VoNetwork { + private static final long serialVersionUID = 202408281143001L; + + /** + * 绠$綉ID + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) + private Long networkId; + + /** + * 绠$綉绫诲瀷锛�1-杈撴按锛�2-閰嶆按 + */ + private Byte type; + + /** + * 绠$綉瀵硅薄锛屽寘鍚缃戝潗鏍� + */ + private JSONObject data; +} diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoNetworkCoordinates.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoNetworkCoordinates.java new file mode 100644 index 0000000..3996ae6 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoNetworkCoordinates.java @@ -0,0 +1,30 @@ +package com.dy.pipIrrGlobal.voPr; + +import com.alibaba.fastjson2.annotation.JSONField; +import com.alibaba.fastjson2.writer.ObjectWriterImplToString; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author ZhuBaoMin + * @date 2024-08-28 14:06 + * @LastEditTime 2024-08-28 14:06 + * @Description + */ +@Data +public class VoNetworkCoordinates { + private static final long serialVersionUID = 202408281407001L; + + /** + * 绾害 + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) + private BigDecimal lat; + + /** + * 缁忓害 + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) + private BigDecimal lng; +} diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoGeneral.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoGeneral.java index 49ef7bb..264803d 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoGeneral.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoGeneral.java @@ -1,5 +1,10 @@ package com.dy.pipIrrGlobal.voSe; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.writer.ObjectWriterImplToString; import com.dy.common.po.BaseEntity; @@ -16,40 +21,50 @@ @Data @JsonPropertyOrder({ "generalId", "cashierId", "cashierName", "tradeAmount", "gift", "refundAmount", "totalAmount", "operateDate", "auditStatus"}) -@Schema(title = "璐㈠姟瀵硅处涔嬫�昏处瑙嗗浘瀵硅薄") +@HeadRowHeight(30) +@ContentRowHeight(20) public class VoGeneral implements BaseEntity { private static final long serialVersionUID = 202401241706001L; @Schema(title = "鎬昏处ID") @JSONField(serializeUsing= ObjectWriterImplToString.class) + @ExcelIgnore private Long generalId; @Schema(title = "鏀堕摱鍛業D") @JSONField(serializeUsing= ObjectWriterImplToString.class) + @ExcelIgnore private Long cashierId; - @Schema(title = "鏀堕摱鍛樺鍚�") + @ExcelProperty(value = {"${title}", "鏀堕摱鍛樺鍚�"}) + @ColumnWidth(18) private String cashierName; - @Schema(title = "瀹炴敹閲戦") + @ExcelProperty(value = {"${title}", "瀹炴敹閲戦"}) + @ColumnWidth(15) private Float tradeAmount; - @Schema(title = "璧犻�侀噾棰�") + @ExcelProperty(value = {"${title}", "璧犻�侀噾棰�"}) + @ColumnWidth(15) private Float gift; - @Schema(title = "杩旇繕閲戦") + @ExcelProperty(value = {"${title}", "杩旇繕閲戦"}) + @ColumnWidth(15) private Float refundAmount; /** - * 鎬婚 = 瀹炴敹閲戦 + 璧犻�侀噾棰� + 杩旇繕閲戦 + * 鎬婚 = 瀹炴敹閲戦 + 璧犻�侀噾棰� - 杩旇繕閲戦 */ - @Schema(title = "鎬婚") + @ExcelProperty(value = {"${title}", "鎬婚"}) + @ColumnWidth(10) private Float totalAmount; - @Schema(title = "浜ゆ槗鏃ユ湡") + @ExcelProperty(value = {"${title}", "浜ゆ槗鏃ユ湡"}) + @ColumnWidth(15) private String operateDate; - @Schema(title = "瀹℃牳鐘舵��") + @ExcelProperty(value = {"${title}", "瀹℃牳鐘舵��"}) + @ColumnWidth(15) private String auditStatus; } diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTradeDetails.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTradeDetails.java index 3caef8d..559f77e 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTradeDetails.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTradeDetails.java @@ -1,7 +1,12 @@ package com.dy.pipIrrGlobal.voSe; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.dy.common.po.BaseEntity; -import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; @@ -16,51 +21,67 @@ */ @Data -@Schema(title = "璐㈠姟瀵硅处锛屼氦鏄撴槑缁嗚鍥惧璞�") +@JsonPropertyOrder({ "cashierId", "villageId", "clientNum", "districtTitle", "clientName", "phone", "operateType", "tradeAmount", "waterCost", "cardCost", "gift", "refundAmount", "paymentName", "tradeTime"}) +@HeadRowHeight(30) +@ContentRowHeight(20) public class VoTradeDetails implements BaseEntity { private static final long serialVersionUID = 202402012040001L; @Schema(title = "鏀堕摱鍛業D") + @ExcelIgnore private String cashierId; - @Schema(title = "鍖哄垝鍚嶇О涓�") - private String districtTitle; - @Schema(title = "鏉戝簞ID") + @ExcelIgnore private String villageId; - @Schema(title = "鍐滄埛濮撳悕") - private String clientName; - - @Schema(title = "鑱旂郴鐢佃瘽") - private String phone; - @Schema(title = "鍐滄埛缂栧彿") + @ExcelIgnore private String clientNum; - @Schema(title = "涓氬姟绫诲瀷") + @ExcelProperty(value = {"${title}", "鏉戝簞鍚嶇О"}) + @ColumnWidth(20) + private String districtTitle; + + @ExcelProperty(value = {"${title}", "鍐滄埛濮撳悕"}) + @ColumnWidth(15) + private String clientName; + + @ExcelProperty(value = {"${title}", "鑱旂郴鐢佃瘽"}) + @ColumnWidth(15) + private String phone; + + @ExcelProperty(value = {"${title}", "涓氬姟绫诲瀷"}) + @ColumnWidth(15) private String operateType; - @Schema(title = "浜ゆ槗閲戦") + @ExcelProperty(value = {"${title}", "浜ゆ槗閲戦"}) + @ColumnWidth(15) private Double tradeAmount; - @Schema(title = "璐按閲戦") + @ExcelProperty(value = {"${title}", "璐按閲戦"}) + @ColumnWidth(15) private Double waterCost; - @Schema(title = "璐崱閲戦") + @ExcelProperty(value = {"${title}", "璐崱閲戦"}) + @ColumnWidth(15) private Double cardCost; - @Schema(title = "璧犻�侀噾棰�") + @ExcelProperty(value = {"${title}", "璧犻�侀噾棰�"}) + @ColumnWidth(15) private Double gift; - @Schema(title = "杩斿洖閲戦") + @ExcelProperty(value = {"${title}", "杩旇繕閲戦"}) + @ColumnWidth(15) private Double refundAmount; - @Schema(title = "浠樻鏂瑰紡") + @ExcelProperty(value = {"${title}", "浠樻鏂瑰紡"}) + @ColumnWidth(15) private String paymentName; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - @Schema(title = "浜ゆ槗鏃堕棿") + @ExcelProperty(value = {"${title}", "浜ゆ槗鏃堕棿"}) + @ColumnWidth(20) private Date tradeTime; + } diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml index dcb0b69..fa6d313 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml @@ -366,4 +366,8 @@ from ba_user where id = #{id,jdbcType=BIGINT} </select> + + <select id="getPhones" resultType="java.lang.String"> + SELECT phone FROM ba_user WHERE deleted = 0 and disabled = 0 + </select> </mapper> \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrNetworkCoordinatesMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrNetworkCoordinatesMapper.xml new file mode 100644 index 0000000..2a2f9fe --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrNetworkCoordinatesMapper.xml @@ -0,0 +1,108 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.dy.pipIrrGlobal.daoPr.PrNetworkCoordinatesMapper"> + <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoPr.PrNetworkCoordinates"> + <!--@mbg.generated--> + <!--@Table pr_network_coordinates--> + <id column="id" jdbcType="BIGINT" property="id"/> + <result column="network_id" jdbcType="BIGINT" property="networkId"/> + <result column="lat" jdbcType="DECIMAL" property="lat"/> + <result column="lng" jdbcType="DECIMAL" property="lng"/> + </resultMap> + <sql id="Base_Column_List"> + <!--@mbg.generated--> + id, + network_id, + lat, + lng + </sql> + <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> + <!--@mbg.generated--> + select + <include refid="Base_Column_List"/> + from pr_network_coordinates + where id = #{id,jdbcType=BIGINT} + </select> + <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> + <!--@mbg.generated--> + delete + from pr_network_coordinates + where id = #{id,jdbcType=BIGINT} + </delete> + <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoPr.PrNetworkCoordinates"> + <!--@mbg.generated--> + insert into pr_network_coordinates (id, network_id, lat, + lng) + values (#{id,jdbcType=BIGINT}, #{networkId,jdbcType=BIGINT}, #{lat,jdbcType=DECIMAL}, + #{lng,jdbcType=DECIMAL}) + </insert> + <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrNetworkCoordinates"> + <!--@mbg.generated--> + insert into pr_network_coordinates + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="id != null"> + id, + </if> + <if test="networkId != null"> + network_id, + </if> + <if test="lat != null"> + lat, + </if> + <if test="lng != null"> + lng, + </if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="id != null"> + #{id,jdbcType=BIGINT}, + </if> + <if test="networkId != null"> + #{networkId,jdbcType=BIGINT}, + </if> + <if test="lat != null"> + #{lat,jdbcType=DECIMAL}, + </if> + <if test="lng != null"> + #{lng,jdbcType=DECIMAL}, + </if> + </trim> + </insert> + <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrNetworkCoordinates"> + <!--@mbg.generated--> + update pr_network_coordinates + <set> + <if test="networkId != null"> + network_id = #{networkId,jdbcType=BIGINT}, + </if> + <if test="lat != null"> + lat = #{lat,jdbcType=DECIMAL}, + </if> + <if test="lng != null"> + lng = #{lng,jdbcType=DECIMAL}, + </if> + </set> + where id = #{id,jdbcType=BIGINT} + </update> + <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoPr.PrNetworkCoordinates"> + <!--@mbg.generated--> + update pr_network_coordinates + set network_id = #{networkId,jdbcType=BIGINT}, + lat = #{lat,jdbcType=DECIMAL}, + lng = #{lng,jdbcType=DECIMAL} + where id = #{id,jdbcType=BIGINT} + </update> + + <!--娓呴櫎鍏ㄩ儴绠$綉鍧愭爣--> + <delete id="clearCoordinates"> + TRUNCATE pr_network_coordinates + </delete> + + <!--鏍规嵁绠$綉ID鑾峰彇绠$綉鍧愭爣鍒楄〃--> + <select id="getCoordinatesByNetworkId" resultType="com.dy.pipIrrGlobal.voPr.VoNetworkCoordinates"> + SELECT lat, + lng + FROM pr_network_coordinates + WHERE network_id = #{networkId} + </select> +</mapper> \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrWaterNetworkMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrWaterNetworkMapper.xml new file mode 100644 index 0000000..61c58fe --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrWaterNetworkMapper.xml @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.dy.pipIrrGlobal.daoPr.PrWaterNetworkMapper"> + <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoPr.PrWaterNetwork"> + <!--@mbg.generated--> + <!--@Table pr_water_network--> + <id column="id" jdbcType="BIGINT" property="id"/> + <result column="network_type" jdbcType="TINYINT" property="networkType"/> + </resultMap> + <sql id="Base_Column_List"> + <!--@mbg.generated--> + id, + network_type + </sql> + <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> + <!--@mbg.generated--> + select + <include refid="Base_Column_List"/> + from pr_water_network + where id = #{id,jdbcType=BIGINT} + </select> + <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> + <!--@mbg.generated--> + delete + from pr_water_network + where id = #{id,jdbcType=BIGINT} + </delete> + <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoPr.PrWaterNetwork"> + <!--@mbg.generated--> + insert into pr_water_network (id, network_type) + values (#{id,jdbcType=BIGINT}, #{networkType,jdbcType=TINYINT}) + </insert> + <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrWaterNetwork"> + <!--@mbg.generated--> + insert into pr_water_network + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="id != null"> + id, + </if> + <if test="networkType != null"> + network_type, + </if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="id != null"> + #{id,jdbcType=BIGINT}, + </if> + <if test="networkType != null"> + #{networkType,jdbcType=TINYINT}, + </if> + </trim> + </insert> + <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrWaterNetwork"> + <!--@mbg.generated--> + update pr_water_network + <set> + <if test="networkType != null"> + network_type = #{networkType,jdbcType=TINYINT}, + </if> + </set> + where id = #{id,jdbcType=BIGINT} + </update> + <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoPr.PrWaterNetwork"> + <!--@mbg.generated--> + update pr_water_network + set network_type = #{networkType,jdbcType=TINYINT} + where id = #{id,jdbcType=BIGINT} + </update> + + <!--娓呴櫎鍏ㄩ儴绠$綉--> + <delete id="clearNetworks"> + TRUNCATE pr_water_network + </delete> + + <!--鑾峰彇鍏ㄩ儴绠$綉--> + <select id="getAllNewworks" resultType="com.dy.pipIrrGlobal.voPr.VoNetwork"> + SELECT id AS networkId, + network_type AS type + FROM pr_water_network + </select> +</mapper> \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml index 0a4eb71..9e7786d 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml @@ -3,7 +3,7 @@ datasource: #閰嶇疆鏁版嵁婧� type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver - #url: jdbc:mysql://192.168.40.166:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull +# url: jdbc:mysql://192.168.40.166:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull #url: jdbc:mysql://8.130.130.233:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull #url: jdbc:mysql://8.140.179.55:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull url: jdbc:mysql://127.0.0.1:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java index fe3ca1a..8bc4a6b 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java @@ -104,6 +104,7 @@ prController.setRtuAddr(prControllerTramp.getRtuAddr()); prController.setProtocol(prControllerTramp.getProtocol()); prController.setFindDt(prControllerTramp.getFindDt()); + prController.setOrgTag(prControllerTramp.getOrgTag()); prController.setAddWays((byte) 1); prController.setOperator(operator); Date operateTime = new Date(); @@ -188,6 +189,7 @@ prControllerTramp.setRtuAddr(ControllerList.getRtuAddr()); prControllerTramp.setProtocol(ControllerList.getProtocol()); prControllerTramp.setFindDt(new Date()); + prControllerTramp.setOrgTag(ControllerList.getOrgTag()); Integer rec_addControllerTramp = Optional.ofNullable(intakeControllerSv.addTrampController(prControllerTramp)).orElse(0); if (rec_addControllerTramp == 0) { return BaseResponseUtils.buildFail(ProjectResultCode.ADD_TRAMP_CONTROLLER_FAIL.getMessage()); diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/network/NetworkCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/network/NetworkCtrl.java new file mode 100644 index 0000000..103f8d8 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/network/NetworkCtrl.java @@ -0,0 +1,97 @@ +package com.dy.pipIrrProject.network; + +import com.dy.common.aop.SsoAop; +import com.dy.common.webUtil.BaseResponse; +import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.pipIrrGlobal.voPr.VoNetwork; +import com.dy.pipIrrProject.network.dto.Network; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.MediaType; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Objects; + +/** + * @author ZhuBaoMin + * @date 2024-08-27 17:08 + * @LastEditTime 2024-08-27 17:08 + * @Description + */ + +@Slf4j +@RestController +@RequestMapping(path = "network") +@RequiredArgsConstructor +public class NetworkCtrl { + private final NetworkSv networkSv; + + /** + * 娣诲姞绠$綉 + * @param po + * @param bindingResult + * @return + */ + @PostMapping(path = "save", consumes = MediaType.APPLICATION_JSON_VALUE) + @Transactional(rollbackFor = Exception.class) + @SsoAop() + public BaseResponse<Boolean> save(@RequestBody @Valid Network po, BindingResult bindingResult) { + if (bindingResult != null && bindingResult.hasErrors()) { + return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + + String result = networkSv.addNetworks(po); + if(result.trim().length()> 0) { + return BaseResponseUtils.buildErrorMsg(result); + } + + //PrWaterNetwork prWaterNetwork = null; + //Long networkId = null; + // + //JSONArray networks = po.getData(); + //for (int i = 0; i < networks.size(); i++) { + // // 鍙栧嚭涓�绗旂粯鐢� + // JSONObject polyline = networks.getJSONObject(i); + // // 娣诲姞璇ョ瑪缁樼敾 + // prWaterNetwork = new PrWaterNetwork(); + // prWaterNetwork.setNetworkType(po.getType()); + // networkId = networkSv.addNetwork(prWaterNetwork); + // + // // 鍙栧嚭涓�绗旂粯鐢讳腑鐨勫潗鏍囩偣 + // JSONArray coordinates = polyline.getJSONArray("coordinates"); + // for (int j = 0; j < coordinates.size(); j++) { + // JSONObject point = coordinates.getJSONObject(j); + // + // PrNetworkCoordinates prNetworkCoordinates = new PrNetworkCoordinates(); + // prNetworkCoordinates.setNetworkId(networkId); + // prNetworkCoordinates.setLat(point.getBigDecimal("lat")); + // prNetworkCoordinates.setLng(point.getBigDecimal("lng")); + // + // Long coordinateId = Optional.ofNullable(networkSv.addNetworkCoordinate(prNetworkCoordinates)).orElse(0L); + // if (coordinateId.equals(0)) { + // return BaseResponseUtils.buildErrorMsg(ProjectResultCode.SAVA_NETWORK_ERROR.getMessage()); + // } + // } + //} + return BaseResponseUtils.buildSuccess(true); + } + + /** + * 鑾峰彇鍏ㄩ儴绠$綉 + * @return + */ + @GetMapping(path = "/all") + @SsoAop() + public BaseResponse<List<VoNetwork>> getNetworks() { + try { + return BaseResponseUtils.buildSuccess(networkSv.getNetworks()); + } catch (Exception e) { + log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e); + return BaseResponseUtils.buildException(e.getMessage()); + } + } +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/network/NetworkSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/network/NetworkSv.java new file mode 100644 index 0000000..c0cb3fc --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/network/NetworkSv.java @@ -0,0 +1,129 @@ +package com.dy.pipIrrProject.network; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.dy.pipIrrGlobal.daoPr.PrNetworkCoordinatesMapper; +import com.dy.pipIrrGlobal.daoPr.PrWaterNetworkMapper; +import com.dy.pipIrrGlobal.pojoPr.PrNetworkCoordinates; +import com.dy.pipIrrGlobal.pojoPr.PrWaterNetwork; +import com.dy.pipIrrGlobal.voPr.VoNetwork; +import com.dy.pipIrrGlobal.voPr.VoNetworkCoordinates; +import com.dy.pipIrrProject.network.dto.Network; +import com.dy.pipIrrProject.result.ProjectResultCode; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +/** + * @author ZhuBaoMin + * @date 2024-08-27 17:08 + * @LastEditTime 2024-08-27 17:08 + * @Description + */ + +@Slf4j +@Service +@RequiredArgsConstructor +public class NetworkSv { + private final PrWaterNetworkMapper prWaterNetworkMapper; + private final PrNetworkCoordinatesMapper prNetworkCoordinatesMapper; + + /** + * 娣诲姞绠$綉 + * @param po + * @return + */ + public Long addNetwork(PrWaterNetwork po) { + prWaterNetworkMapper.insert(po); + return po.getId(); + } + + /** + * 娣诲姞绠$綉鍧愭爣 + * @param po + * @return + */ + public Long addNetworkCoordinate(PrNetworkCoordinates po) { + prNetworkCoordinatesMapper.insert(po); + return po.getId(); + }; + + /** + * 娣诲姞绠$綉 + * @param po + * @return + */ + public String addNetworks(Network po) { + String result = ""; + PrWaterNetwork prWaterNetwork = null; + Long networkId = null; + + prWaterNetworkMapper.clearNetworks(); + prNetworkCoordinatesMapper.clearCoordinates(); + + JSONArray networks = po.getData(); + for (int i = 0; i < networks.size(); i++) { + // 鍙栧嚭涓�绗旂粯鐢� + JSONObject polyline = networks.getJSONObject(i); + // 娣诲姞璇ョ瑪缁樼敾 + prWaterNetwork = new PrWaterNetwork(); + prWaterNetwork.setNetworkType(po.getType()); + networkId = addNetwork(prWaterNetwork); + + // 鍙栧嚭涓�绗旂粯鐢讳腑鐨勫潗鏍囩偣 + JSONArray coordinates = polyline.getJSONArray("coordinates"); + for (int j = 0; j < coordinates.size(); j++) { + JSONObject point = coordinates.getJSONObject(j); + + PrNetworkCoordinates prNetworkCoordinates = new PrNetworkCoordinates(); + prNetworkCoordinates.setNetworkId(networkId); + prNetworkCoordinates.setLat(point.getBigDecimal("lat")); + prNetworkCoordinates.setLng(point.getBigDecimal("lng")); + + Long coordinateId = Optional.ofNullable(addNetworkCoordinate(prNetworkCoordinates)).orElse(0L); + if (coordinateId.equals(0)) { + //return BaseResponseUtils.buildErrorMsg(ProjectResultCode.SAVA_NETWORK_ERROR.getMessage()); + result = ProjectResultCode.SAVA_NETWORK_ERROR.getMessage(); + } + } + } + return result; + } + + /** + * 鑾峰彇鍏ㄩ儴绠$綉 + * @return + */ + public List<VoNetwork> getNetworks() { + JSONArray array_result = new JSONArray(); + JSONArray array_networks = null; + + List<VoNetwork> list_networks = prWaterNetworkMapper.getAllNewworks(); + if(list_networks != null && list_networks.size() > 0) { + array_networks = (JSONArray) JSON.toJSON(list_networks); + for (int i = 0; i < array_networks.size(); i++) { + JSONObject job_network = array_networks.getJSONObject(i); + + List<VoNetworkCoordinates> list_networkCoordinates = prNetworkCoordinatesMapper.getCoordinatesByNetworkId(job_network.getLong("networkId")); + if(list_networkCoordinates == null) { + list_networkCoordinates = new ArrayList<>(); + } + + JSONObject job_points = new JSONObject(); + job_points.put("type", "Polyline"); + job_points.put("coordinates", (JSONArray) JSON.toJSON(list_networkCoordinates)); + job_network.put("data", job_points); + array_result.add(job_network); + } + return array_result.toList(VoNetwork.class); + + }else { + return new ArrayList<>(); + } + } +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/network/dto/Network.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/network/dto/Network.java new file mode 100644 index 0000000..fec1f88 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/network/dto/Network.java @@ -0,0 +1,28 @@ +package com.dy.pipIrrProject.network.dto; + +import com.alibaba.fastjson2.JSONArray; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * @author ZhuBaoMin + * @date 2024-08-28 10:23 + * @LastEditTime 2024-08-28 10:23 + * @Description 绠$綉浼犺緭瀵硅薄 + */ + +@Data +public class Network { + public static final long serialVersionUID = 202408281024001L; + + /** + * 绠$綉绫诲瀷锛�1-杈撴按锛�2-閰嶆按 + */ + @NotNull(message = "绠$綉绫诲瀷涓嶈兘涓虹┖") + private Byte type; + + /** + * 绠$綉瀵硅薄鏁扮粍锛屾瘡涓璞℃槸涓�绗旂粯鐢� + */ + private JSONArray data; +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java index 6cd64b9..41cb1ba 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java @@ -78,7 +78,12 @@ MONITORING_FLOWMETER_BIND_FAIL(70002, "娴侀噺鐩戞祴绔欎笌娴侀噺璁$粦瀹氬け璐�"), STATION_OR_FLOWMETER_NO_EXIST(70003, "娴侀噺鐩戞祴绔欐垨娴侀噺璁′笉瀛樺湪"), STATION_FLOWMETER_HAS_UNBOUND(70004, "娴侀噺鐩戞祴绔欎笌娴侀噺璁″凡瑙g粦"), - NO_MONITORING_FLOWMETERS(70005, "娌℃湁绗﹀悎鏉′欢鐨勭粦瀹氳褰曟暟鎹�"); + NO_MONITORING_FLOWMETERS(70005, "娌℃湁绗﹀悎鏉′欢鐨勭粦瀹氳褰曟暟鎹�"), + + /** + * 绠$綉 + */ + SAVA_NETWORK_ERROR(30001, "淇濆瓨绠$綉澶辫触"); private final Integer code; private final String message; diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralCtrl.java index f8f3b8b..1dc16a5 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralCtrl.java @@ -1,14 +1,18 @@ package com.dy.pipIrrSell.general; +import com.alibaba.excel.EasyExcel; import com.dy.common.aop.SsoAop; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; import com.dy.common.webUtil.QueryResultVo; import com.dy.common.webUtil.ResultCodeMsg; +import com.dy.pipIrrGlobal.excel.ExcelUtil; +import com.dy.pipIrrGlobal.excel.ReportExportCellWriteHandler; import com.dy.pipIrrGlobal.pojoBa.BaClient; import com.dy.pipIrrGlobal.pojoSe.SeAudits; import com.dy.pipIrrGlobal.pojoSe.SeGeneral; import com.dy.pipIrrGlobal.voSe.VoGeneral; +import com.dy.pipIrrGlobal.voSe.VoTradeDetails; import com.dy.pipIrrSell.general.dto.DtoGeneral; import com.dy.pipIrrSell.general.qo.QoGeneral; import com.dy.pipIrrSell.general.qo.QoSummary; @@ -20,14 +24,18 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; +import java.io.IOException; +import java.time.LocalDate; import java.util.*; /** @@ -66,15 +74,29 @@ try { add_general(); QueryResultVo<List<VoGeneral>> res = generalSv.getGenerals(vo); - if(res.itemTotal > 0) { - return BaseResponseUtils.buildSuccess(res); - }else { - return BaseResponseUtils.buildSuccess(SellResultCode.No_GENERALS.getMessage()); - } + return BaseResponseUtils.buildSuccess(res); } catch (Exception e) { log.error("鏌ヨ浜ゆ槗璁板綍寮傚父", e); return BaseResponseUtils.buildException(e.getMessage()) ; } + } + + /** + * 瀵煎嚭鎬昏处璁板綍 + * @param response + * @param vo + */ + @SneakyThrows(IOException.class) + @RequestMapping(value = "/export_general", method = RequestMethod.GET) + @SsoAop() + public void exportGeneral(HttpServletResponse response, QoGeneral vo) { + ExcelUtil.setExcelRespProp(response, "鎬昏处" + LocalDate.now()); + List<VoGeneral> generalList = generalSv.exportGenerals(vo).getObj(); + + EasyExcel.write(response.getOutputStream(), VoGeneral.class) + .registerWriteHandler(new ReportExportCellWriteHandler("璐㈠姟瀵硅处-鎬昏处")) + .sheet("鎬昏处") + .doWrite(generalList); } /** @@ -218,15 +240,35 @@ @SsoAop() public BaseResponse<Map> getTradeDetails(QoToAudit vo){ try { - Map res = Optional.ofNullable(generalSv.getTradeDetails(vo)).orElse(new HashMap()); - if(res.size() > 0) { - return BaseResponseUtils.buildSuccess(res); - }else { - return BaseResponseUtils.buildFail(SellResultCode.No_TRADE_DETAILS.getMessage()); - } + return BaseResponseUtils.buildSuccess(generalSv.getTradeDetails(vo)); } catch (Exception e) { log.error("鏌ヨ浜ゆ槗璁板綍寮傚父", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } + + /** + * 瀵煎嚭璐㈠姟瀵硅处_浜ゆ槗鏄庣粏 + * @param response + * @param vo + */ + @SneakyThrows(IOException.class) + @RequestMapping(value = "/export_trade_details", method = RequestMethod.GET) + @SsoAop() + public void exportTradeDetails(HttpServletResponse response, QoToAudit vo) { + ExcelUtil.setExcelRespProp(response, "浜ゆ槗鏄庣粏" + LocalDate.now()); + + Map map_result = generalSv.exportTradeDetails(vo); + Map map_record = (Map) map_result.get("records"); + List<VoTradeDetails> list = (List<VoTradeDetails>) map_record.get("list"); + Double totalTradeAmount = Double.parseDouble(map_result.get("totalTradeAmount").toString()); + VoTradeDetails po = new VoTradeDetails(); + po.setTradeAmount(totalTradeAmount); + list.add(po); + + EasyExcel.write(response.getOutputStream(), VoTradeDetails.class) + .registerWriteHandler(new ReportExportCellWriteHandler("璐㈠姟瀵硅处-浜ゆ槗鏄庣粏")) + .sheet("浜ゆ槗鏄庣粏") + .doWrite(list); + } } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralSv.java index 7c6804d..49c1cce 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralSv.java @@ -88,8 +88,25 @@ rsVo.pageSize = queryVo.pageSize ; rsVo.pageCurr = queryVo.pageCurr ; + rsVo.calculateAndSet(itemTotal, params); + rsVo.obj = seGeneralMapper.getGenerals(params); + return rsVo ; + } + + /** + * 瀵煎嚭鎸囧畾鏉′欢鐨勬�昏处璁板綍 + * @param queryVo + * @return + */ + public QueryResultVo<List<VoGeneral>> exportGenerals(QoGeneral queryVo) { + Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo); + + Long itemTotal = seGeneralMapper.getRecordCount(params); + QueryResultVo<List<VoGeneral>> rsVo = new QueryResultVo<>() ; rsVo.calculateAndSet(itemTotal, params); + params.remove("start"); + params.remove("count"); rsVo.obj = seGeneralMapper.getGenerals(params); return rsVo ; } @@ -279,4 +296,52 @@ return map_result; } + + /** + * 瀵煎嚭浜ゆ槗鏄庣粏璁板綍 + * @param queryVo + * @return + */ + public Map exportTradeDetails(QoToAudit queryVo) { + DecimalFormat df = new DecimalFormat("0.00"); + Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo); + + Long itemTotal = seGeneralMapper.getTradeDetailsRecordCount(params); + + QueryResultVo<List<VoTradeDetails>> rsVo = new QueryResultVo<>() ; + rsVo.pageSize = queryVo.pageSize ; + rsVo.pageCurr = queryVo.pageCurr ; + + rsVo.calculateAndSet(itemTotal, params); + params.remove("start"); + params.remove("count"); + List<VoTradeDetails> list = Optional.ofNullable(seGeneralMapper.getTradeDetails(params)).orElse(new ArrayList<>()); + if(list.size() == 0) { + return new HashMap(); + } + + // 閬嶅巻浜ゆ槗鏄庣粏璁板綍锛屾眹鎬讳氦鏄撻噾棰� + Double totalTradeAmount = 0.0; + JSONArray array= JSONArray.parseArray(JSON.toJSONString(list)); + for(int i = 0; i < array.size(); i++) { + JSONObject job = array.getJSONObject(i); + Double tradeAmount = Optional.ofNullable(job.getDouble("tradeAmount")).orElse(0.0); + totalTradeAmount = totalTradeAmount + tradeAmount; + } + + Map map_record = new HashMap(); + map_record.put("itemTotal", rsVo.itemTotal); + map_record.put("pageCurr", rsVo.pageCurr); + map_record.put("pageSize", rsVo.pageSize); + map_record.put("pageTotal", rsVo.pageTotal); + map_record.put("list", list); + + Map map_result = new HashMap(); + + map_result.put("totalTradeAmount", df.format(totalTradeAmount)); + map_result.put("records", map_record); + + return map_result; + + } } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java index 7dc0cf8..5acba42 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java @@ -76,9 +76,11 @@ * 鎬昏处 */ GENERAL_ID_CANNOT_BE_NULL(80001, "鎬昏处缂栧彿涓嶈兘涓虹┖"), - GENERAL_NOT_EXIST(80001, "鎬昏处涓嶅瓨鍦�"), - GENERAL_AUDIT_FAIL(80001, "鎬昏处瀹℃牳澶辫触"), - AUDITS_ADD_FAIL(80001, "鎬昏处瀹℃牳璁板綍娣诲姞澶辫触"), + GENERAL_NOT_EXIST(80002, "鎬昏处涓嶅瓨鍦�"), + GENERAL_AUDIT_FAIL(80003, "鎬昏处瀹℃牳澶辫触"), + AUDITS_ADD_FAIL(80004, "鎬昏处瀹℃牳璁板綍娣诲姞澶辫触"), + GENERAL_IS_NULL(80005, "瑕佸鍑虹殑鎬昏处涓虹┖"), + TRADE_DETAILS_IS_NULL(80006, "瑕佸鍑虹殑浜ゆ槗鏄庣粏涓虹┖"), /** * 铏氭嫙鍗� diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java index b15cb61..47d2e2f 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java @@ -102,6 +102,9 @@ if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } + if(vo.phone == null || vo.phone.trim().length() == 0){ + return BaseResponseUtils.buildFail("鎵嬫満鍙蜂笉鑳戒负绌�"); + } if(!vo.phone.equals("admin")){ if(vo.phone.length() != 11){ return BaseResponseUtils.buildFail("鎵嬫満鍙凤紙闀垮害涓嶆槸11浣嶏級涓嶆纭�"); @@ -112,6 +115,12 @@ } //鎶婄粍缁囧崟浣嶆爣绛句綔涓烘暟鎹簮鍚嶇О DataSourceContext.set(vo.orgTag); + + //寰楀埌鎵�鏈夌敤鎴疯处鍙� + List<String> phones = sv.getPhones(); + if(!phones.contains(vo.phone)){ + return BaseResponseUtils.buildFail("璐﹀彿涓嶅瓨鍦�"); + } String uuid ; BaUser userPo ; @@ -136,7 +145,7 @@ uVo.token = uuid ; return BaseResponseUtils.buildSuccess(uVo); }else{ - return BaseResponseUtils.buildFail("鐧诲綍澶辫触"); + return BaseResponseUtils.buildFail("瀵嗙爜閿欒"); } } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoSv.java index 9dd39b3..fbd0ceb 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoSv.java @@ -10,6 +10,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + @Slf4j @Service public class SsoSv { @@ -67,4 +69,11 @@ return null ; } + /** + * 寰楀埌鎵�鏈夌敤鎴锋墜鏈哄彿 + * @return + */ + public List<String> getPhones(){ + return baUserMapper.getPhones() ; + } } -- Gitblit v1.8.0