diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 1c043ca..74d7eb2 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -80,6 +80,13 @@ httpclient 4.5.2 + + + cn.afterturn + easypoi-spring-boot-starter + 4.3.0 + + diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 1c043ca..74d7eb2 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -80,6 +80,13 @@ httpclient 4.5.2 + + + cn.afterturn + easypoi-spring-boot-starter + 4.3.0 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index f75a353..c28c940 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -16,6 +16,7 @@ import com.casic.missiles.modular.app.model.AppDeviceLog; import com.casic.missiles.modular.app.service.IAppDeviceAddService; import com.casic.missiles.modular.app.service.IAppDeviceLogService; +import com.casic.missiles.modular.app.util.LonlatConver; import com.casic.missiles.modular.system.model.Dict; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Controller; @@ -25,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; @@ -83,6 +85,14 @@ if (ToolUtil.isEmpty(appDeviceAdd.getDescription())) { appDeviceAdd.setDescription("安装设备"); } + //转换火星坐标系至ws84坐标 + if (ToolUtil.isNotEmpty(appDeviceAdd.getLongitude()) + && ToolUtil.isNotEmpty(appDeviceAdd.getLatitude())) { + double[] doubleArr = LonlatConver.gcj02_To_Wgs84(Double.valueOf(appDeviceAdd.getLongitude()), + Double.valueOf(appDeviceAdd.getLatitude())); + appDeviceAdd.setLongitude84(doubleArr[0] + ""); + appDeviceAdd.setLatitude84(doubleArr[1] + ""); + } //新增时验证设备编号是否已经存在 List appDeviceAddList = appDeviceAddService.getAppDevice(appDeviceAdd.getDevcode()); @@ -203,13 +213,38 @@ return appDeviceAddService.findModeCodeByCode(devcode); } - /** - * 设备基础信息导出 - */ +// /** +// * 设备基础信息导出 +// */ +// @RequestMapping(value = "/listExp") +// public void reportExport(String devcode, String devtype, +// String begTime, String endTime, +// String project, String installPerson) throws IOException { +// +// List list = appDeviceAddService.reportExport(devcode, devtype, +// begTime, endTime, project, installPerson); +// list.forEach(appDeviceAdd -> { +// appDeviceAdd.setWelltype(permissionService.getDictNameByCode("sluicewellType", appDeviceAdd.getWelltype())); +// }); +// +// List res = new ArrayList<>(); +// res.addAll(list); +// //获取导出文件header +// super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); +// } +// +// @RequestMapping(value = "/convert84") +// public void convert84() { +// appDeviceAddService.convert84(); +// } + + + //照片一起导出 @RequestMapping(value = "/listExp") - public void reportExport(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson) throws IOException { + public void listExps(String devcode, String devtype, + String begTime, String endTime, + String project, String installPerson, + HttpServletResponse response) throws IOException { List list = appDeviceAddService.reportExport(devcode, devtype, begTime, endTime, project, installPerson); @@ -217,10 +252,12 @@ appDeviceAdd.setWelltype(permissionService.getDictNameByCode("sluicewellType", appDeviceAdd.getWelltype())); }); - List res = new ArrayList<>(); - res.addAll(list); - //获取导出文件header - super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); + appDeviceAddService.exportUsersToExcel(list,response); +// List res = new ArrayList<>(); +// res.addAll(list); +// //获取导出文件header +// super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); } + } diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 1c043ca..74d7eb2 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -80,6 +80,13 @@ httpclient 4.5.2 + + + cn.afterturn + easypoi-spring-boot-starter + 4.3.0 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index f75a353..c28c940 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -16,6 +16,7 @@ import com.casic.missiles.modular.app.model.AppDeviceLog; import com.casic.missiles.modular.app.service.IAppDeviceAddService; import com.casic.missiles.modular.app.service.IAppDeviceLogService; +import com.casic.missiles.modular.app.util.LonlatConver; import com.casic.missiles.modular.system.model.Dict; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Controller; @@ -25,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; @@ -83,6 +85,14 @@ if (ToolUtil.isEmpty(appDeviceAdd.getDescription())) { appDeviceAdd.setDescription("安装设备"); } + //转换火星坐标系至ws84坐标 + if (ToolUtil.isNotEmpty(appDeviceAdd.getLongitude()) + && ToolUtil.isNotEmpty(appDeviceAdd.getLatitude())) { + double[] doubleArr = LonlatConver.gcj02_To_Wgs84(Double.valueOf(appDeviceAdd.getLongitude()), + Double.valueOf(appDeviceAdd.getLatitude())); + appDeviceAdd.setLongitude84(doubleArr[0] + ""); + appDeviceAdd.setLatitude84(doubleArr[1] + ""); + } //新增时验证设备编号是否已经存在 List appDeviceAddList = appDeviceAddService.getAppDevice(appDeviceAdd.getDevcode()); @@ -203,13 +213,38 @@ return appDeviceAddService.findModeCodeByCode(devcode); } - /** - * 设备基础信息导出 - */ +// /** +// * 设备基础信息导出 +// */ +// @RequestMapping(value = "/listExp") +// public void reportExport(String devcode, String devtype, +// String begTime, String endTime, +// String project, String installPerson) throws IOException { +// +// List list = appDeviceAddService.reportExport(devcode, devtype, +// begTime, endTime, project, installPerson); +// list.forEach(appDeviceAdd -> { +// appDeviceAdd.setWelltype(permissionService.getDictNameByCode("sluicewellType", appDeviceAdd.getWelltype())); +// }); +// +// List res = new ArrayList<>(); +// res.addAll(list); +// //获取导出文件header +// super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); +// } +// +// @RequestMapping(value = "/convert84") +// public void convert84() { +// appDeviceAddService.convert84(); +// } + + + //照片一起导出 @RequestMapping(value = "/listExp") - public void reportExport(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson) throws IOException { + public void listExps(String devcode, String devtype, + String begTime, String endTime, + String project, String installPerson, + HttpServletResponse response) throws IOException { List list = appDeviceAddService.reportExport(devcode, devtype, begTime, endTime, project, installPerson); @@ -217,10 +252,12 @@ appDeviceAdd.setWelltype(permissionService.getDictNameByCode("sluicewellType", appDeviceAdd.getWelltype())); }); - List res = new ArrayList<>(); - res.addAll(list); - //获取导出文件header - super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); + appDeviceAddService.exportUsersToExcel(list,response); +// List res = new ArrayList<>(); +// res.addAll(list); +// //获取导出文件header +// super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); } + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f37a3d9..cccb1c6 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -40,6 +40,10 @@ @Value("${casic.wxUrl}") private String wxUrl; + @Value("${casic.appid}") + private String appidWx; + @Value("${casic.secret}") + private String secretWx; /** * 获取授权列表 @@ -111,6 +115,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { + secret=secretWx; + appid=appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 1c043ca..74d7eb2 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -80,6 +80,13 @@ httpclient 4.5.2 + + + cn.afterturn + easypoi-spring-boot-starter + 4.3.0 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index f75a353..c28c940 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -16,6 +16,7 @@ import com.casic.missiles.modular.app.model.AppDeviceLog; import com.casic.missiles.modular.app.service.IAppDeviceAddService; import com.casic.missiles.modular.app.service.IAppDeviceLogService; +import com.casic.missiles.modular.app.util.LonlatConver; import com.casic.missiles.modular.system.model.Dict; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Controller; @@ -25,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; @@ -83,6 +85,14 @@ if (ToolUtil.isEmpty(appDeviceAdd.getDescription())) { appDeviceAdd.setDescription("安装设备"); } + //转换火星坐标系至ws84坐标 + if (ToolUtil.isNotEmpty(appDeviceAdd.getLongitude()) + && ToolUtil.isNotEmpty(appDeviceAdd.getLatitude())) { + double[] doubleArr = LonlatConver.gcj02_To_Wgs84(Double.valueOf(appDeviceAdd.getLongitude()), + Double.valueOf(appDeviceAdd.getLatitude())); + appDeviceAdd.setLongitude84(doubleArr[0] + ""); + appDeviceAdd.setLatitude84(doubleArr[1] + ""); + } //新增时验证设备编号是否已经存在 List appDeviceAddList = appDeviceAddService.getAppDevice(appDeviceAdd.getDevcode()); @@ -203,13 +213,38 @@ return appDeviceAddService.findModeCodeByCode(devcode); } - /** - * 设备基础信息导出 - */ +// /** +// * 设备基础信息导出 +// */ +// @RequestMapping(value = "/listExp") +// public void reportExport(String devcode, String devtype, +// String begTime, String endTime, +// String project, String installPerson) throws IOException { +// +// List list = appDeviceAddService.reportExport(devcode, devtype, +// begTime, endTime, project, installPerson); +// list.forEach(appDeviceAdd -> { +// appDeviceAdd.setWelltype(permissionService.getDictNameByCode("sluicewellType", appDeviceAdd.getWelltype())); +// }); +// +// List res = new ArrayList<>(); +// res.addAll(list); +// //获取导出文件header +// super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); +// } +// +// @RequestMapping(value = "/convert84") +// public void convert84() { +// appDeviceAddService.convert84(); +// } + + + //照片一起导出 @RequestMapping(value = "/listExp") - public void reportExport(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson) throws IOException { + public void listExps(String devcode, String devtype, + String begTime, String endTime, + String project, String installPerson, + HttpServletResponse response) throws IOException { List list = appDeviceAddService.reportExport(devcode, devtype, begTime, endTime, project, installPerson); @@ -217,10 +252,12 @@ appDeviceAdd.setWelltype(permissionService.getDictNameByCode("sluicewellType", appDeviceAdd.getWelltype())); }); - List res = new ArrayList<>(); - res.addAll(list); - //获取导出文件header - super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); + appDeviceAddService.exportUsersToExcel(list,response); +// List res = new ArrayList<>(); +// res.addAll(list); +// //获取导出文件header +// super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); } + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f37a3d9..cccb1c6 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -40,6 +40,10 @@ @Value("${casic.wxUrl}") private String wxUrl; + @Value("${casic.appid}") + private String appidWx; + @Value("${casic.secret}") + private String secretWx; /** * 获取授权列表 @@ -111,6 +115,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { + secret=secretWx; + appid=appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/AppDevicAddDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/AppDevicAddDTO.java new file mode 100644 index 0000000..6ed5d35 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/AppDevicAddDTO.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.app.dto; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.app.model.AppDeviceAdd; +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + + +@Data +public class AppDevicAddDTO implements Serializable { + + private static final long serialVersionUID = 1L; + @Excel(name = "设备编号", width = 10.0) + private String devcode; + @Excel(name = "设备类型", width = 10.0) + private String devicetype; + @Excel(name = "井编号", width = 10.0) + private String wellcode; + @Excel(name = "井类型", width = 10.0) + private String welltype; + @Excel(name = "井名称", width = 10.0) + private String wellname; + @Excel(name = "井深", width = 10.0) + private String welldepth; + @Excel(name = "安装高度", width = 10.0) + private String installheigt; + @Excel(name = "负责人", width = 10.0) + private String installperson; + @Excel(name = "安装时间", format = "yyyy-MM-dd",width = 10.0) + private Date installtime; + @Excel(name = "照片1", type = 2, width = 20.0, height = 60.0, imageType = 1) + private String photopath1; + @Excel(name = "照片2", type = 2, width = 20.0, height = 60.0, imageType = 1) + private String photopath2; + @Excel(name = "照片3", type = 2, width = 20.0, height = 60.0, imageType = 1) + private String photopath3; + @Excel(name = "所属项目", width = 10.0) + private String project; + @Excel(name = "安装位置", width = 10.0) + private String position; + @Excel(name = "描述", width = 10.0) + private String description; + @Excel(name = "区", width = 10.0) + private String area; + @Excel(name = "街道", width = 10.0) + private String street; + @Excel(name = "经度(gcj02)", width = 10.0) + private String longitude; + @Excel(name = "纬度(gcj02)", width = 10.0) + private String latitude; + @Excel(name = "经度(wgs84)", width = 10.0) + private String longitude84; + @Excel(name = "纬度wgs84)", width = 10.0) + private String latitude84; + + + public static List convert (List appDeviceAdds,String photoPath) { + List appDevicAddDTOS = new ArrayList<>(); + appDeviceAdds.forEach(appDeviceAdd -> { + appDevicAddDTOS.add(new AppDevicAddDTO(appDeviceAdd,photoPath)); + }); + return appDevicAddDTOS; + } + + + public AppDevicAddDTO(AppDeviceAdd appDeviceAdd,String photoPath) { + this.devcode = appDeviceAdd.getDevcode(); + this.devicetype = appDeviceAdd.getDevicetype(); + this.wellcode = appDeviceAdd.getWellcode(); + this.welltype = appDeviceAdd.getWelltype(); + this.wellname = appDeviceAdd.getWellname(); + this.welldepth = appDeviceAdd.getWelldepth(); + this.installheigt = appDeviceAdd.getInstallheigt(); + this.installperson = appDeviceAdd.getInstallperson(); + this.installtime = appDeviceAdd.getInstalltime(); + this.photopath1 = ToolUtil.isNotEmpty(appDeviceAdd.getPhotopath1())?photoPath+appDeviceAdd.getPhotopath1():appDeviceAdd.getPhotopath1(); + this.photopath2 = ToolUtil.isNotEmpty(appDeviceAdd.getPhotopath2())?photoPath+appDeviceAdd.getPhotopath2():appDeviceAdd.getPhotopath2(); + this.photopath3 = ToolUtil.isNotEmpty(appDeviceAdd.getPhotopath3())?photoPath+appDeviceAdd.getPhotopath3():appDeviceAdd.getPhotopath3(); + this.project = appDeviceAdd.getProject(); + this.position = appDeviceAdd.getPosition(); + this.description = appDeviceAdd.getDescription(); + this.area = appDeviceAdd.getArea(); + this.street = appDeviceAdd.getStreet(); + this.latitude = appDeviceAdd.getLatitude(); + this.longitude = appDeviceAdd.getLongitude(); + this.latitude84 = appDeviceAdd.getLatitude84(); + this.longitude84 = appDeviceAdd.getLongitude84(); + } +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 1c043ca..74d7eb2 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -80,6 +80,13 @@ httpclient 4.5.2 + + + cn.afterturn + easypoi-spring-boot-starter + 4.3.0 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index f75a353..c28c940 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -16,6 +16,7 @@ import com.casic.missiles.modular.app.model.AppDeviceLog; import com.casic.missiles.modular.app.service.IAppDeviceAddService; import com.casic.missiles.modular.app.service.IAppDeviceLogService; +import com.casic.missiles.modular.app.util.LonlatConver; import com.casic.missiles.modular.system.model.Dict; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Controller; @@ -25,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; @@ -83,6 +85,14 @@ if (ToolUtil.isEmpty(appDeviceAdd.getDescription())) { appDeviceAdd.setDescription("安装设备"); } + //转换火星坐标系至ws84坐标 + if (ToolUtil.isNotEmpty(appDeviceAdd.getLongitude()) + && ToolUtil.isNotEmpty(appDeviceAdd.getLatitude())) { + double[] doubleArr = LonlatConver.gcj02_To_Wgs84(Double.valueOf(appDeviceAdd.getLongitude()), + Double.valueOf(appDeviceAdd.getLatitude())); + appDeviceAdd.setLongitude84(doubleArr[0] + ""); + appDeviceAdd.setLatitude84(doubleArr[1] + ""); + } //新增时验证设备编号是否已经存在 List appDeviceAddList = appDeviceAddService.getAppDevice(appDeviceAdd.getDevcode()); @@ -203,13 +213,38 @@ return appDeviceAddService.findModeCodeByCode(devcode); } - /** - * 设备基础信息导出 - */ +// /** +// * 设备基础信息导出 +// */ +// @RequestMapping(value = "/listExp") +// public void reportExport(String devcode, String devtype, +// String begTime, String endTime, +// String project, String installPerson) throws IOException { +// +// List list = appDeviceAddService.reportExport(devcode, devtype, +// begTime, endTime, project, installPerson); +// list.forEach(appDeviceAdd -> { +// appDeviceAdd.setWelltype(permissionService.getDictNameByCode("sluicewellType", appDeviceAdd.getWelltype())); +// }); +// +// List res = new ArrayList<>(); +// res.addAll(list); +// //获取导出文件header +// super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); +// } +// +// @RequestMapping(value = "/convert84") +// public void convert84() { +// appDeviceAddService.convert84(); +// } + + + //照片一起导出 @RequestMapping(value = "/listExp") - public void reportExport(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson) throws IOException { + public void listExps(String devcode, String devtype, + String begTime, String endTime, + String project, String installPerson, + HttpServletResponse response) throws IOException { List list = appDeviceAddService.reportExport(devcode, devtype, begTime, endTime, project, installPerson); @@ -217,10 +252,12 @@ appDeviceAdd.setWelltype(permissionService.getDictNameByCode("sluicewellType", appDeviceAdd.getWelltype())); }); - List res = new ArrayList<>(); - res.addAll(list); - //获取导出文件header - super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); + appDeviceAddService.exportUsersToExcel(list,response); +// List res = new ArrayList<>(); +// res.addAll(list); +// //获取导出文件header +// super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); } + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f37a3d9..cccb1c6 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -40,6 +40,10 @@ @Value("${casic.wxUrl}") private String wxUrl; + @Value("${casic.appid}") + private String appidWx; + @Value("${casic.secret}") + private String secretWx; /** * 获取授权列表 @@ -111,6 +115,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { + secret=secretWx; + appid=appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/AppDevicAddDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/AppDevicAddDTO.java new file mode 100644 index 0000000..6ed5d35 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/AppDevicAddDTO.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.app.dto; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.app.model.AppDeviceAdd; +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + + +@Data +public class AppDevicAddDTO implements Serializable { + + private static final long serialVersionUID = 1L; + @Excel(name = "设备编号", width = 10.0) + private String devcode; + @Excel(name = "设备类型", width = 10.0) + private String devicetype; + @Excel(name = "井编号", width = 10.0) + private String wellcode; + @Excel(name = "井类型", width = 10.0) + private String welltype; + @Excel(name = "井名称", width = 10.0) + private String wellname; + @Excel(name = "井深", width = 10.0) + private String welldepth; + @Excel(name = "安装高度", width = 10.0) + private String installheigt; + @Excel(name = "负责人", width = 10.0) + private String installperson; + @Excel(name = "安装时间", format = "yyyy-MM-dd",width = 10.0) + private Date installtime; + @Excel(name = "照片1", type = 2, width = 20.0, height = 60.0, imageType = 1) + private String photopath1; + @Excel(name = "照片2", type = 2, width = 20.0, height = 60.0, imageType = 1) + private String photopath2; + @Excel(name = "照片3", type = 2, width = 20.0, height = 60.0, imageType = 1) + private String photopath3; + @Excel(name = "所属项目", width = 10.0) + private String project; + @Excel(name = "安装位置", width = 10.0) + private String position; + @Excel(name = "描述", width = 10.0) + private String description; + @Excel(name = "区", width = 10.0) + private String area; + @Excel(name = "街道", width = 10.0) + private String street; + @Excel(name = "经度(gcj02)", width = 10.0) + private String longitude; + @Excel(name = "纬度(gcj02)", width = 10.0) + private String latitude; + @Excel(name = "经度(wgs84)", width = 10.0) + private String longitude84; + @Excel(name = "纬度wgs84)", width = 10.0) + private String latitude84; + + + public static List convert (List appDeviceAdds,String photoPath) { + List appDevicAddDTOS = new ArrayList<>(); + appDeviceAdds.forEach(appDeviceAdd -> { + appDevicAddDTOS.add(new AppDevicAddDTO(appDeviceAdd,photoPath)); + }); + return appDevicAddDTOS; + } + + + public AppDevicAddDTO(AppDeviceAdd appDeviceAdd,String photoPath) { + this.devcode = appDeviceAdd.getDevcode(); + this.devicetype = appDeviceAdd.getDevicetype(); + this.wellcode = appDeviceAdd.getWellcode(); + this.welltype = appDeviceAdd.getWelltype(); + this.wellname = appDeviceAdd.getWellname(); + this.welldepth = appDeviceAdd.getWelldepth(); + this.installheigt = appDeviceAdd.getInstallheigt(); + this.installperson = appDeviceAdd.getInstallperson(); + this.installtime = appDeviceAdd.getInstalltime(); + this.photopath1 = ToolUtil.isNotEmpty(appDeviceAdd.getPhotopath1())?photoPath+appDeviceAdd.getPhotopath1():appDeviceAdd.getPhotopath1(); + this.photopath2 = ToolUtil.isNotEmpty(appDeviceAdd.getPhotopath2())?photoPath+appDeviceAdd.getPhotopath2():appDeviceAdd.getPhotopath2(); + this.photopath3 = ToolUtil.isNotEmpty(appDeviceAdd.getPhotopath3())?photoPath+appDeviceAdd.getPhotopath3():appDeviceAdd.getPhotopath3(); + this.project = appDeviceAdd.getProject(); + this.position = appDeviceAdd.getPosition(); + this.description = appDeviceAdd.getDescription(); + this.area = appDeviceAdd.getArea(); + this.street = appDeviceAdd.getStreet(); + this.latitude = appDeviceAdd.getLatitude(); + this.longitude = appDeviceAdd.getLongitude(); + this.latitude84 = appDeviceAdd.getLatitude84(); + this.longitude84 = appDeviceAdd.getLongitude84(); + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java index 1064dea..b7c8f73 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java @@ -13,6 +13,7 @@ import com.baomidou.mybatisplus.annotations.TableName; import com.casic.missiles.core.util.DateUtil; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.app.util.LonlatConver; import java.io.Serializable; import java.util.List; @@ -415,8 +416,16 @@ appDeviceAdd.area = appDeviceLog.getArea(); appDeviceAdd.street = appDeviceLog.getStreet(); appDeviceAdd.wellname = appDeviceLog.getWellname(); - appDeviceAdd.latitude84 = appDeviceLog.getLatitude84(); - appDeviceAdd.longitude84 = appDeviceLog.getLongitude84(); +// appDeviceAdd.latitude84 = appDeviceLog.getLatitude84(); +// appDeviceAdd.longitude84 = appDeviceLog.getLongitude84(); + //转换火星坐标系至ws84坐标 + if (ToolUtil.isNotEmpty(appDeviceLog.getLongitude()) + && ToolUtil.isNotEmpty(appDeviceLog.getLatitude())) { + double[] doubleArr= LonlatConver.gcj02_To_Wgs84(Double.valueOf(appDeviceLog.getLongitude()), + Double.valueOf(appDeviceLog.getLatitude())); + appDeviceAdd.setLongitude84(doubleArr[0]+""); + appDeviceAdd.setLatitude84(doubleArr[1]+""); + } return appDeviceAdd; } diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 1c043ca..74d7eb2 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -80,6 +80,13 @@ httpclient 4.5.2 + + + cn.afterturn + easypoi-spring-boot-starter + 4.3.0 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index f75a353..c28c940 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -16,6 +16,7 @@ import com.casic.missiles.modular.app.model.AppDeviceLog; import com.casic.missiles.modular.app.service.IAppDeviceAddService; import com.casic.missiles.modular.app.service.IAppDeviceLogService; +import com.casic.missiles.modular.app.util.LonlatConver; import com.casic.missiles.modular.system.model.Dict; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Controller; @@ -25,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; @@ -83,6 +85,14 @@ if (ToolUtil.isEmpty(appDeviceAdd.getDescription())) { appDeviceAdd.setDescription("安装设备"); } + //转换火星坐标系至ws84坐标 + if (ToolUtil.isNotEmpty(appDeviceAdd.getLongitude()) + && ToolUtil.isNotEmpty(appDeviceAdd.getLatitude())) { + double[] doubleArr = LonlatConver.gcj02_To_Wgs84(Double.valueOf(appDeviceAdd.getLongitude()), + Double.valueOf(appDeviceAdd.getLatitude())); + appDeviceAdd.setLongitude84(doubleArr[0] + ""); + appDeviceAdd.setLatitude84(doubleArr[1] + ""); + } //新增时验证设备编号是否已经存在 List appDeviceAddList = appDeviceAddService.getAppDevice(appDeviceAdd.getDevcode()); @@ -203,13 +213,38 @@ return appDeviceAddService.findModeCodeByCode(devcode); } - /** - * 设备基础信息导出 - */ +// /** +// * 设备基础信息导出 +// */ +// @RequestMapping(value = "/listExp") +// public void reportExport(String devcode, String devtype, +// String begTime, String endTime, +// String project, String installPerson) throws IOException { +// +// List list = appDeviceAddService.reportExport(devcode, devtype, +// begTime, endTime, project, installPerson); +// list.forEach(appDeviceAdd -> { +// appDeviceAdd.setWelltype(permissionService.getDictNameByCode("sluicewellType", appDeviceAdd.getWelltype())); +// }); +// +// List res = new ArrayList<>(); +// res.addAll(list); +// //获取导出文件header +// super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); +// } +// +// @RequestMapping(value = "/convert84") +// public void convert84() { +// appDeviceAddService.convert84(); +// } + + + //照片一起导出 @RequestMapping(value = "/listExp") - public void reportExport(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson) throws IOException { + public void listExps(String devcode, String devtype, + String begTime, String endTime, + String project, String installPerson, + HttpServletResponse response) throws IOException { List list = appDeviceAddService.reportExport(devcode, devtype, begTime, endTime, project, installPerson); @@ -217,10 +252,12 @@ appDeviceAdd.setWelltype(permissionService.getDictNameByCode("sluicewellType", appDeviceAdd.getWelltype())); }); - List res = new ArrayList<>(); - res.addAll(list); - //获取导出文件header - super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); + appDeviceAddService.exportUsersToExcel(list,response); +// List res = new ArrayList<>(); +// res.addAll(list); +// //获取导出文件header +// super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); } + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f37a3d9..cccb1c6 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -40,6 +40,10 @@ @Value("${casic.wxUrl}") private String wxUrl; + @Value("${casic.appid}") + private String appidWx; + @Value("${casic.secret}") + private String secretWx; /** * 获取授权列表 @@ -111,6 +115,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { + secret=secretWx; + appid=appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/AppDevicAddDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/AppDevicAddDTO.java new file mode 100644 index 0000000..6ed5d35 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/AppDevicAddDTO.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.app.dto; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.app.model.AppDeviceAdd; +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + + +@Data +public class AppDevicAddDTO implements Serializable { + + private static final long serialVersionUID = 1L; + @Excel(name = "设备编号", width = 10.0) + private String devcode; + @Excel(name = "设备类型", width = 10.0) + private String devicetype; + @Excel(name = "井编号", width = 10.0) + private String wellcode; + @Excel(name = "井类型", width = 10.0) + private String welltype; + @Excel(name = "井名称", width = 10.0) + private String wellname; + @Excel(name = "井深", width = 10.0) + private String welldepth; + @Excel(name = "安装高度", width = 10.0) + private String installheigt; + @Excel(name = "负责人", width = 10.0) + private String installperson; + @Excel(name = "安装时间", format = "yyyy-MM-dd",width = 10.0) + private Date installtime; + @Excel(name = "照片1", type = 2, width = 20.0, height = 60.0, imageType = 1) + private String photopath1; + @Excel(name = "照片2", type = 2, width = 20.0, height = 60.0, imageType = 1) + private String photopath2; + @Excel(name = "照片3", type = 2, width = 20.0, height = 60.0, imageType = 1) + private String photopath3; + @Excel(name = "所属项目", width = 10.0) + private String project; + @Excel(name = "安装位置", width = 10.0) + private String position; + @Excel(name = "描述", width = 10.0) + private String description; + @Excel(name = "区", width = 10.0) + private String area; + @Excel(name = "街道", width = 10.0) + private String street; + @Excel(name = "经度(gcj02)", width = 10.0) + private String longitude; + @Excel(name = "纬度(gcj02)", width = 10.0) + private String latitude; + @Excel(name = "经度(wgs84)", width = 10.0) + private String longitude84; + @Excel(name = "纬度wgs84)", width = 10.0) + private String latitude84; + + + public static List convert (List appDeviceAdds,String photoPath) { + List appDevicAddDTOS = new ArrayList<>(); + appDeviceAdds.forEach(appDeviceAdd -> { + appDevicAddDTOS.add(new AppDevicAddDTO(appDeviceAdd,photoPath)); + }); + return appDevicAddDTOS; + } + + + public AppDevicAddDTO(AppDeviceAdd appDeviceAdd,String photoPath) { + this.devcode = appDeviceAdd.getDevcode(); + this.devicetype = appDeviceAdd.getDevicetype(); + this.wellcode = appDeviceAdd.getWellcode(); + this.welltype = appDeviceAdd.getWelltype(); + this.wellname = appDeviceAdd.getWellname(); + this.welldepth = appDeviceAdd.getWelldepth(); + this.installheigt = appDeviceAdd.getInstallheigt(); + this.installperson = appDeviceAdd.getInstallperson(); + this.installtime = appDeviceAdd.getInstalltime(); + this.photopath1 = ToolUtil.isNotEmpty(appDeviceAdd.getPhotopath1())?photoPath+appDeviceAdd.getPhotopath1():appDeviceAdd.getPhotopath1(); + this.photopath2 = ToolUtil.isNotEmpty(appDeviceAdd.getPhotopath2())?photoPath+appDeviceAdd.getPhotopath2():appDeviceAdd.getPhotopath2(); + this.photopath3 = ToolUtil.isNotEmpty(appDeviceAdd.getPhotopath3())?photoPath+appDeviceAdd.getPhotopath3():appDeviceAdd.getPhotopath3(); + this.project = appDeviceAdd.getProject(); + this.position = appDeviceAdd.getPosition(); + this.description = appDeviceAdd.getDescription(); + this.area = appDeviceAdd.getArea(); + this.street = appDeviceAdd.getStreet(); + this.latitude = appDeviceAdd.getLatitude(); + this.longitude = appDeviceAdd.getLongitude(); + this.latitude84 = appDeviceAdd.getLatitude84(); + this.longitude84 = appDeviceAdd.getLongitude84(); + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java index 1064dea..b7c8f73 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java @@ -13,6 +13,7 @@ import com.baomidou.mybatisplus.annotations.TableName; import com.casic.missiles.core.util.DateUtil; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.app.util.LonlatConver; import java.io.Serializable; import java.util.List; @@ -415,8 +416,16 @@ appDeviceAdd.area = appDeviceLog.getArea(); appDeviceAdd.street = appDeviceLog.getStreet(); appDeviceAdd.wellname = appDeviceLog.getWellname(); - appDeviceAdd.latitude84 = appDeviceLog.getLatitude84(); - appDeviceAdd.longitude84 = appDeviceLog.getLongitude84(); +// appDeviceAdd.latitude84 = appDeviceLog.getLatitude84(); +// appDeviceAdd.longitude84 = appDeviceLog.getLongitude84(); + //转换火星坐标系至ws84坐标 + if (ToolUtil.isNotEmpty(appDeviceLog.getLongitude()) + && ToolUtil.isNotEmpty(appDeviceLog.getLatitude())) { + double[] doubleArr= LonlatConver.gcj02_To_Wgs84(Double.valueOf(appDeviceLog.getLongitude()), + Double.valueOf(appDeviceLog.getLatitude())); + appDeviceAdd.setLongitude84(doubleArr[0]+""); + appDeviceAdd.setLatitude84(doubleArr[1]+""); + } return appDeviceAdd; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java index 7eafb27..96bd6fb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.app.model.AppDeviceAdd; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; @@ -24,4 +25,6 @@ List reportExport(String devcode, String devtype, String begTime, String endTime, String project, String installPerson); + void convert84(); + void exportUsersToExcel(List list, HttpServletResponse response); } diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 1c043ca..74d7eb2 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -80,6 +80,13 @@ httpclient 4.5.2 + + + cn.afterturn + easypoi-spring-boot-starter + 4.3.0 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index f75a353..c28c940 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -16,6 +16,7 @@ import com.casic.missiles.modular.app.model.AppDeviceLog; import com.casic.missiles.modular.app.service.IAppDeviceAddService; import com.casic.missiles.modular.app.service.IAppDeviceLogService; +import com.casic.missiles.modular.app.util.LonlatConver; import com.casic.missiles.modular.system.model.Dict; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Controller; @@ -25,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; @@ -83,6 +85,14 @@ if (ToolUtil.isEmpty(appDeviceAdd.getDescription())) { appDeviceAdd.setDescription("安装设备"); } + //转换火星坐标系至ws84坐标 + if (ToolUtil.isNotEmpty(appDeviceAdd.getLongitude()) + && ToolUtil.isNotEmpty(appDeviceAdd.getLatitude())) { + double[] doubleArr = LonlatConver.gcj02_To_Wgs84(Double.valueOf(appDeviceAdd.getLongitude()), + Double.valueOf(appDeviceAdd.getLatitude())); + appDeviceAdd.setLongitude84(doubleArr[0] + ""); + appDeviceAdd.setLatitude84(doubleArr[1] + ""); + } //新增时验证设备编号是否已经存在 List appDeviceAddList = appDeviceAddService.getAppDevice(appDeviceAdd.getDevcode()); @@ -203,13 +213,38 @@ return appDeviceAddService.findModeCodeByCode(devcode); } - /** - * 设备基础信息导出 - */ +// /** +// * 设备基础信息导出 +// */ +// @RequestMapping(value = "/listExp") +// public void reportExport(String devcode, String devtype, +// String begTime, String endTime, +// String project, String installPerson) throws IOException { +// +// List list = appDeviceAddService.reportExport(devcode, devtype, +// begTime, endTime, project, installPerson); +// list.forEach(appDeviceAdd -> { +// appDeviceAdd.setWelltype(permissionService.getDictNameByCode("sluicewellType", appDeviceAdd.getWelltype())); +// }); +// +// List res = new ArrayList<>(); +// res.addAll(list); +// //获取导出文件header +// super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); +// } +// +// @RequestMapping(value = "/convert84") +// public void convert84() { +// appDeviceAddService.convert84(); +// } + + + //照片一起导出 @RequestMapping(value = "/listExp") - public void reportExport(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson) throws IOException { + public void listExps(String devcode, String devtype, + String begTime, String endTime, + String project, String installPerson, + HttpServletResponse response) throws IOException { List list = appDeviceAddService.reportExport(devcode, devtype, begTime, endTime, project, installPerson); @@ -217,10 +252,12 @@ appDeviceAdd.setWelltype(permissionService.getDictNameByCode("sluicewellType", appDeviceAdd.getWelltype())); }); - List res = new ArrayList<>(); - res.addAll(list); - //获取导出文件header - super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); + appDeviceAddService.exportUsersToExcel(list,response); +// List res = new ArrayList<>(); +// res.addAll(list); +// //获取导出文件header +// super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); } + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f37a3d9..cccb1c6 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -40,6 +40,10 @@ @Value("${casic.wxUrl}") private String wxUrl; + @Value("${casic.appid}") + private String appidWx; + @Value("${casic.secret}") + private String secretWx; /** * 获取授权列表 @@ -111,6 +115,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { + secret=secretWx; + appid=appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/AppDevicAddDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/AppDevicAddDTO.java new file mode 100644 index 0000000..6ed5d35 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/AppDevicAddDTO.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.app.dto; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.app.model.AppDeviceAdd; +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + + +@Data +public class AppDevicAddDTO implements Serializable { + + private static final long serialVersionUID = 1L; + @Excel(name = "设备编号", width = 10.0) + private String devcode; + @Excel(name = "设备类型", width = 10.0) + private String devicetype; + @Excel(name = "井编号", width = 10.0) + private String wellcode; + @Excel(name = "井类型", width = 10.0) + private String welltype; + @Excel(name = "井名称", width = 10.0) + private String wellname; + @Excel(name = "井深", width = 10.0) + private String welldepth; + @Excel(name = "安装高度", width = 10.0) + private String installheigt; + @Excel(name = "负责人", width = 10.0) + private String installperson; + @Excel(name = "安装时间", format = "yyyy-MM-dd",width = 10.0) + private Date installtime; + @Excel(name = "照片1", type = 2, width = 20.0, height = 60.0, imageType = 1) + private String photopath1; + @Excel(name = "照片2", type = 2, width = 20.0, height = 60.0, imageType = 1) + private String photopath2; + @Excel(name = "照片3", type = 2, width = 20.0, height = 60.0, imageType = 1) + private String photopath3; + @Excel(name = "所属项目", width = 10.0) + private String project; + @Excel(name = "安装位置", width = 10.0) + private String position; + @Excel(name = "描述", width = 10.0) + private String description; + @Excel(name = "区", width = 10.0) + private String area; + @Excel(name = "街道", width = 10.0) + private String street; + @Excel(name = "经度(gcj02)", width = 10.0) + private String longitude; + @Excel(name = "纬度(gcj02)", width = 10.0) + private String latitude; + @Excel(name = "经度(wgs84)", width = 10.0) + private String longitude84; + @Excel(name = "纬度wgs84)", width = 10.0) + private String latitude84; + + + public static List convert (List appDeviceAdds,String photoPath) { + List appDevicAddDTOS = new ArrayList<>(); + appDeviceAdds.forEach(appDeviceAdd -> { + appDevicAddDTOS.add(new AppDevicAddDTO(appDeviceAdd,photoPath)); + }); + return appDevicAddDTOS; + } + + + public AppDevicAddDTO(AppDeviceAdd appDeviceAdd,String photoPath) { + this.devcode = appDeviceAdd.getDevcode(); + this.devicetype = appDeviceAdd.getDevicetype(); + this.wellcode = appDeviceAdd.getWellcode(); + this.welltype = appDeviceAdd.getWelltype(); + this.wellname = appDeviceAdd.getWellname(); + this.welldepth = appDeviceAdd.getWelldepth(); + this.installheigt = appDeviceAdd.getInstallheigt(); + this.installperson = appDeviceAdd.getInstallperson(); + this.installtime = appDeviceAdd.getInstalltime(); + this.photopath1 = ToolUtil.isNotEmpty(appDeviceAdd.getPhotopath1())?photoPath+appDeviceAdd.getPhotopath1():appDeviceAdd.getPhotopath1(); + this.photopath2 = ToolUtil.isNotEmpty(appDeviceAdd.getPhotopath2())?photoPath+appDeviceAdd.getPhotopath2():appDeviceAdd.getPhotopath2(); + this.photopath3 = ToolUtil.isNotEmpty(appDeviceAdd.getPhotopath3())?photoPath+appDeviceAdd.getPhotopath3():appDeviceAdd.getPhotopath3(); + this.project = appDeviceAdd.getProject(); + this.position = appDeviceAdd.getPosition(); + this.description = appDeviceAdd.getDescription(); + this.area = appDeviceAdd.getArea(); + this.street = appDeviceAdd.getStreet(); + this.latitude = appDeviceAdd.getLatitude(); + this.longitude = appDeviceAdd.getLongitude(); + this.latitude84 = appDeviceAdd.getLatitude84(); + this.longitude84 = appDeviceAdd.getLongitude84(); + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java index 1064dea..b7c8f73 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java @@ -13,6 +13,7 @@ import com.baomidou.mybatisplus.annotations.TableName; import com.casic.missiles.core.util.DateUtil; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.app.util.LonlatConver; import java.io.Serializable; import java.util.List; @@ -415,8 +416,16 @@ appDeviceAdd.area = appDeviceLog.getArea(); appDeviceAdd.street = appDeviceLog.getStreet(); appDeviceAdd.wellname = appDeviceLog.getWellname(); - appDeviceAdd.latitude84 = appDeviceLog.getLatitude84(); - appDeviceAdd.longitude84 = appDeviceLog.getLongitude84(); +// appDeviceAdd.latitude84 = appDeviceLog.getLatitude84(); +// appDeviceAdd.longitude84 = appDeviceLog.getLongitude84(); + //转换火星坐标系至ws84坐标 + if (ToolUtil.isNotEmpty(appDeviceLog.getLongitude()) + && ToolUtil.isNotEmpty(appDeviceLog.getLatitude())) { + double[] doubleArr= LonlatConver.gcj02_To_Wgs84(Double.valueOf(appDeviceLog.getLongitude()), + Double.valueOf(appDeviceLog.getLatitude())); + appDeviceAdd.setLongitude84(doubleArr[0]+""); + appDeviceAdd.setLatitude84(doubleArr[1]+""); + } return appDeviceAdd; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java index 7eafb27..96bd6fb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.app.model.AppDeviceAdd; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; @@ -24,4 +25,6 @@ List reportExport(String devcode, String devtype, String begTime, String endTime, String project, String installPerson); + void convert84(); + void exportUsersToExcel(List list, HttpServletResponse response); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java index 7ac5b94..69f2254 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java @@ -1,20 +1,29 @@ package com.casic.missiles.modular.app.service.impl; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.casic.missiles.core.util.DateUtil; import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.app.dao.AppDeviceAddMapper; +import com.casic.missiles.modular.app.dto.AppDevicAddDTO; import com.casic.missiles.modular.app.model.AppDeviceAdd; import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import com.casic.missiles.modular.app.util.LonlatConver; import com.casic.missiles.modular.app.util.PhotoUtils; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.io.File; import java.io.IOException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @@ -33,6 +42,8 @@ @Value("${casic.file-upload-path}") private String filePath; + @Value("${casic.photoPath}") + private String photoPath; @Override public List getAppDevice(String devcode) { @@ -65,7 +76,7 @@ public String fileUploadMarker(MultipartFile file, String text) throws IOException { if (!file.isEmpty()) { // String uuid = UUID.randomUUID().toString().replaceAll("-", ""); - String uuid = text.substring(text.indexOf("编号:")+3,text.indexOf("经度:"))+"_"+System.currentTimeMillis(); + String uuid = text.substring(text.indexOf("编号:") + 3, text.indexOf("经度:")) + "_" + System.currentTimeMillis(); String fileName = (new SimpleDateFormat("yyyy-MM")).format(new Date()); String filePrex = uuid + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); File dir = new File(filePath + fileName); @@ -74,7 +85,7 @@ } String pathName = dir.getPath() + File.separator + filePrex; file.transferTo(new File(pathName)); - PhotoUtils.markImageByText(text,pathName,pathName,0,new Color(0,0,255),"JPG"); + PhotoUtils.markImageByText(text, pathName, pathName, 0, new Color(0, 0, 255), "JPG"); return fileName.concat(File.separator).concat(filePrex); } else { return null; @@ -110,4 +121,55 @@ query.orderBy("createtime", false); return this.selectList(query); } + + @Override + public void convert84() { + EntityWrapper query = new EntityWrapper<>(); + query.le("id", 5241); + List appDeviceAddList = selectList(query); + + for (AppDeviceAdd appDeviceAdd : appDeviceAddList) { + if (ToolUtil.isNotEmpty(appDeviceAdd.getLongitude()) + && ToolUtil.isNotEmpty(appDeviceAdd.getLatitude())) { + double[] doubleArr = LonlatConver.gcj02_To_Wgs84(Double.valueOf(appDeviceAdd.getLongitude()), + Double.valueOf(appDeviceAdd.getLatitude())); + appDeviceAdd.setLongitude84(doubleArr[0] + ""); + appDeviceAdd.setLatitude84(doubleArr[1] + ""); + } + } + this.insertOrUpdateBatch(appDeviceAddList); + } + + + + @Override + public void exportUsersToExcel(List list,HttpServletResponse response) { + + try { + + //设置信息头,告诉浏览器内容为excel类型 + response.setHeader("content-Type", "application/vnd.ms-excel"); + //设置下载名称 + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("设备安装基础信息表.xls", StandardCharsets.UTF_8.name())); + + //字节流输出 + ServletOutputStream out = response.getOutputStream(); + //设置excel参数 + ExportParams params = new ExportParams(); + //设置sheet名名称 + params.setSheetName("设备安装信息"); + //设置标题 + params.setTitle("设备安装信息"); + + //转成对应的类型;要不然会报错,虽然也可以导出成功 + List AppDevicAddDTOs = AppDevicAddDTO.convert(list,photoPath); + + //导入excel + Workbook workbook = ExcelExportUtil.exportExcel(params, AppDevicAddDTO.class, AppDevicAddDTOs); + //写入 + workbook.write(out); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 1c043ca..74d7eb2 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -80,6 +80,13 @@ httpclient 4.5.2 + + + cn.afterturn + easypoi-spring-boot-starter + 4.3.0 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index f75a353..c28c940 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -16,6 +16,7 @@ import com.casic.missiles.modular.app.model.AppDeviceLog; import com.casic.missiles.modular.app.service.IAppDeviceAddService; import com.casic.missiles.modular.app.service.IAppDeviceLogService; +import com.casic.missiles.modular.app.util.LonlatConver; import com.casic.missiles.modular.system.model.Dict; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Controller; @@ -25,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; @@ -83,6 +85,14 @@ if (ToolUtil.isEmpty(appDeviceAdd.getDescription())) { appDeviceAdd.setDescription("安装设备"); } + //转换火星坐标系至ws84坐标 + if (ToolUtil.isNotEmpty(appDeviceAdd.getLongitude()) + && ToolUtil.isNotEmpty(appDeviceAdd.getLatitude())) { + double[] doubleArr = LonlatConver.gcj02_To_Wgs84(Double.valueOf(appDeviceAdd.getLongitude()), + Double.valueOf(appDeviceAdd.getLatitude())); + appDeviceAdd.setLongitude84(doubleArr[0] + ""); + appDeviceAdd.setLatitude84(doubleArr[1] + ""); + } //新增时验证设备编号是否已经存在 List appDeviceAddList = appDeviceAddService.getAppDevice(appDeviceAdd.getDevcode()); @@ -203,13 +213,38 @@ return appDeviceAddService.findModeCodeByCode(devcode); } - /** - * 设备基础信息导出 - */ +// /** +// * 设备基础信息导出 +// */ +// @RequestMapping(value = "/listExp") +// public void reportExport(String devcode, String devtype, +// String begTime, String endTime, +// String project, String installPerson) throws IOException { +// +// List list = appDeviceAddService.reportExport(devcode, devtype, +// begTime, endTime, project, installPerson); +// list.forEach(appDeviceAdd -> { +// appDeviceAdd.setWelltype(permissionService.getDictNameByCode("sluicewellType", appDeviceAdd.getWelltype())); +// }); +// +// List res = new ArrayList<>(); +// res.addAll(list); +// //获取导出文件header +// super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); +// } +// +// @RequestMapping(value = "/convert84") +// public void convert84() { +// appDeviceAddService.convert84(); +// } + + + //照片一起导出 @RequestMapping(value = "/listExp") - public void reportExport(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson) throws IOException { + public void listExps(String devcode, String devtype, + String begTime, String endTime, + String project, String installPerson, + HttpServletResponse response) throws IOException { List list = appDeviceAddService.reportExport(devcode, devtype, begTime, endTime, project, installPerson); @@ -217,10 +252,12 @@ appDeviceAdd.setWelltype(permissionService.getDictNameByCode("sluicewellType", appDeviceAdd.getWelltype())); }); - List res = new ArrayList<>(); - res.addAll(list); - //获取导出文件header - super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); + appDeviceAddService.exportUsersToExcel(list,response); +// List res = new ArrayList<>(); +// res.addAll(list); +// //获取导出文件header +// super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); } + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f37a3d9..cccb1c6 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -40,6 +40,10 @@ @Value("${casic.wxUrl}") private String wxUrl; + @Value("${casic.appid}") + private String appidWx; + @Value("${casic.secret}") + private String secretWx; /** * 获取授权列表 @@ -111,6 +115,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { + secret=secretWx; + appid=appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/AppDevicAddDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/AppDevicAddDTO.java new file mode 100644 index 0000000..6ed5d35 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/AppDevicAddDTO.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.app.dto; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.app.model.AppDeviceAdd; +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + + +@Data +public class AppDevicAddDTO implements Serializable { + + private static final long serialVersionUID = 1L; + @Excel(name = "设备编号", width = 10.0) + private String devcode; + @Excel(name = "设备类型", width = 10.0) + private String devicetype; + @Excel(name = "井编号", width = 10.0) + private String wellcode; + @Excel(name = "井类型", width = 10.0) + private String welltype; + @Excel(name = "井名称", width = 10.0) + private String wellname; + @Excel(name = "井深", width = 10.0) + private String welldepth; + @Excel(name = "安装高度", width = 10.0) + private String installheigt; + @Excel(name = "负责人", width = 10.0) + private String installperson; + @Excel(name = "安装时间", format = "yyyy-MM-dd",width = 10.0) + private Date installtime; + @Excel(name = "照片1", type = 2, width = 20.0, height = 60.0, imageType = 1) + private String photopath1; + @Excel(name = "照片2", type = 2, width = 20.0, height = 60.0, imageType = 1) + private String photopath2; + @Excel(name = "照片3", type = 2, width = 20.0, height = 60.0, imageType = 1) + private String photopath3; + @Excel(name = "所属项目", width = 10.0) + private String project; + @Excel(name = "安装位置", width = 10.0) + private String position; + @Excel(name = "描述", width = 10.0) + private String description; + @Excel(name = "区", width = 10.0) + private String area; + @Excel(name = "街道", width = 10.0) + private String street; + @Excel(name = "经度(gcj02)", width = 10.0) + private String longitude; + @Excel(name = "纬度(gcj02)", width = 10.0) + private String latitude; + @Excel(name = "经度(wgs84)", width = 10.0) + private String longitude84; + @Excel(name = "纬度wgs84)", width = 10.0) + private String latitude84; + + + public static List convert (List appDeviceAdds,String photoPath) { + List appDevicAddDTOS = new ArrayList<>(); + appDeviceAdds.forEach(appDeviceAdd -> { + appDevicAddDTOS.add(new AppDevicAddDTO(appDeviceAdd,photoPath)); + }); + return appDevicAddDTOS; + } + + + public AppDevicAddDTO(AppDeviceAdd appDeviceAdd,String photoPath) { + this.devcode = appDeviceAdd.getDevcode(); + this.devicetype = appDeviceAdd.getDevicetype(); + this.wellcode = appDeviceAdd.getWellcode(); + this.welltype = appDeviceAdd.getWelltype(); + this.wellname = appDeviceAdd.getWellname(); + this.welldepth = appDeviceAdd.getWelldepth(); + this.installheigt = appDeviceAdd.getInstallheigt(); + this.installperson = appDeviceAdd.getInstallperson(); + this.installtime = appDeviceAdd.getInstalltime(); + this.photopath1 = ToolUtil.isNotEmpty(appDeviceAdd.getPhotopath1())?photoPath+appDeviceAdd.getPhotopath1():appDeviceAdd.getPhotopath1(); + this.photopath2 = ToolUtil.isNotEmpty(appDeviceAdd.getPhotopath2())?photoPath+appDeviceAdd.getPhotopath2():appDeviceAdd.getPhotopath2(); + this.photopath3 = ToolUtil.isNotEmpty(appDeviceAdd.getPhotopath3())?photoPath+appDeviceAdd.getPhotopath3():appDeviceAdd.getPhotopath3(); + this.project = appDeviceAdd.getProject(); + this.position = appDeviceAdd.getPosition(); + this.description = appDeviceAdd.getDescription(); + this.area = appDeviceAdd.getArea(); + this.street = appDeviceAdd.getStreet(); + this.latitude = appDeviceAdd.getLatitude(); + this.longitude = appDeviceAdd.getLongitude(); + this.latitude84 = appDeviceAdd.getLatitude84(); + this.longitude84 = appDeviceAdd.getLongitude84(); + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java index 1064dea..b7c8f73 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java @@ -13,6 +13,7 @@ import com.baomidou.mybatisplus.annotations.TableName; import com.casic.missiles.core.util.DateUtil; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.app.util.LonlatConver; import java.io.Serializable; import java.util.List; @@ -415,8 +416,16 @@ appDeviceAdd.area = appDeviceLog.getArea(); appDeviceAdd.street = appDeviceLog.getStreet(); appDeviceAdd.wellname = appDeviceLog.getWellname(); - appDeviceAdd.latitude84 = appDeviceLog.getLatitude84(); - appDeviceAdd.longitude84 = appDeviceLog.getLongitude84(); +// appDeviceAdd.latitude84 = appDeviceLog.getLatitude84(); +// appDeviceAdd.longitude84 = appDeviceLog.getLongitude84(); + //转换火星坐标系至ws84坐标 + if (ToolUtil.isNotEmpty(appDeviceLog.getLongitude()) + && ToolUtil.isNotEmpty(appDeviceLog.getLatitude())) { + double[] doubleArr= LonlatConver.gcj02_To_Wgs84(Double.valueOf(appDeviceLog.getLongitude()), + Double.valueOf(appDeviceLog.getLatitude())); + appDeviceAdd.setLongitude84(doubleArr[0]+""); + appDeviceAdd.setLatitude84(doubleArr[1]+""); + } return appDeviceAdd; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java index 7eafb27..96bd6fb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.app.model.AppDeviceAdd; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; @@ -24,4 +25,6 @@ List reportExport(String devcode, String devtype, String begTime, String endTime, String project, String installPerson); + void convert84(); + void exportUsersToExcel(List list, HttpServletResponse response); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java index 7ac5b94..69f2254 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java @@ -1,20 +1,29 @@ package com.casic.missiles.modular.app.service.impl; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.casic.missiles.core.util.DateUtil; import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.app.dao.AppDeviceAddMapper; +import com.casic.missiles.modular.app.dto.AppDevicAddDTO; import com.casic.missiles.modular.app.model.AppDeviceAdd; import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import com.casic.missiles.modular.app.util.LonlatConver; import com.casic.missiles.modular.app.util.PhotoUtils; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.io.File; import java.io.IOException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @@ -33,6 +42,8 @@ @Value("${casic.file-upload-path}") private String filePath; + @Value("${casic.photoPath}") + private String photoPath; @Override public List getAppDevice(String devcode) { @@ -65,7 +76,7 @@ public String fileUploadMarker(MultipartFile file, String text) throws IOException { if (!file.isEmpty()) { // String uuid = UUID.randomUUID().toString().replaceAll("-", ""); - String uuid = text.substring(text.indexOf("编号:")+3,text.indexOf("经度:"))+"_"+System.currentTimeMillis(); + String uuid = text.substring(text.indexOf("编号:") + 3, text.indexOf("经度:")) + "_" + System.currentTimeMillis(); String fileName = (new SimpleDateFormat("yyyy-MM")).format(new Date()); String filePrex = uuid + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); File dir = new File(filePath + fileName); @@ -74,7 +85,7 @@ } String pathName = dir.getPath() + File.separator + filePrex; file.transferTo(new File(pathName)); - PhotoUtils.markImageByText(text,pathName,pathName,0,new Color(0,0,255),"JPG"); + PhotoUtils.markImageByText(text, pathName, pathName, 0, new Color(0, 0, 255), "JPG"); return fileName.concat(File.separator).concat(filePrex); } else { return null; @@ -110,4 +121,55 @@ query.orderBy("createtime", false); return this.selectList(query); } + + @Override + public void convert84() { + EntityWrapper query = new EntityWrapper<>(); + query.le("id", 5241); + List appDeviceAddList = selectList(query); + + for (AppDeviceAdd appDeviceAdd : appDeviceAddList) { + if (ToolUtil.isNotEmpty(appDeviceAdd.getLongitude()) + && ToolUtil.isNotEmpty(appDeviceAdd.getLatitude())) { + double[] doubleArr = LonlatConver.gcj02_To_Wgs84(Double.valueOf(appDeviceAdd.getLongitude()), + Double.valueOf(appDeviceAdd.getLatitude())); + appDeviceAdd.setLongitude84(doubleArr[0] + ""); + appDeviceAdd.setLatitude84(doubleArr[1] + ""); + } + } + this.insertOrUpdateBatch(appDeviceAddList); + } + + + + @Override + public void exportUsersToExcel(List list,HttpServletResponse response) { + + try { + + //设置信息头,告诉浏览器内容为excel类型 + response.setHeader("content-Type", "application/vnd.ms-excel"); + //设置下载名称 + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("设备安装基础信息表.xls", StandardCharsets.UTF_8.name())); + + //字节流输出 + ServletOutputStream out = response.getOutputStream(); + //设置excel参数 + ExportParams params = new ExportParams(); + //设置sheet名名称 + params.setSheetName("设备安装信息"); + //设置标题 + params.setTitle("设备安装信息"); + + //转成对应的类型;要不然会报错,虽然也可以导出成功 + List AppDevicAddDTOs = AppDevicAddDTO.convert(list,photoPath); + + //导入excel + Workbook workbook = ExcelExportUtil.exportExcel(params, AppDevicAddDTO.class, AppDevicAddDTOs); + //写入 + workbook.write(out); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/util/LonlatConver.java b/casic-app/src/main/java/com/casic/missiles/modular/app/util/LonlatConver.java new file mode 100644 index 0000000..62a37d7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/util/LonlatConver.java @@ -0,0 +1,219 @@ +package com.casic.missiles.modular.app.util; + + +public class LonlatConver { +// public static void main(String[] args) { +// Double lat = 116.078682; +// Double lon = 27.751289; +// double[] doubleArr1 = wgs84_To_Gcj02(lat, lon); +// System.out.println(doubleArr1[0]+"===="+doubleArr1[1]); +// double[] doubleArr = gcj02_To_Bd09(doubleArr1[0], doubleArr1[1]); +//// double[] doubleArr = gcj02_To_Bd09(lat, lon); +// System.out.println(doubleArr[0]+"===="+doubleArr[1]); +// +// double[] doubleArr2 = gcj02_To_Wgs84(lat, lon); +// System.out.println(doubleArr2[0]+""+"===="+doubleArr2[1]+""); +// +// } + + /** + * a + */ + public final static double a = 6378245.0; + /** + * ee + */ + public final static double ee = 0.00669342162296594323; + + //圆周率 GCJ_02_To_WGS_84 + public final static double pi = 3.14159265358979324; + /** + * @Description WGS84 to 火星坐标系 (GCJ-02) + * @param lon 经度 + * @param lat 纬度 + * @return + */ + public static double[] wgs84_To_Gcj02(double lon, double lat) { + if (outOfChina(lat, lon)) { + return null; + } + double dLat = transformLat(lon - 105.0, lat - 35.0); + double dLon = transformLon(lon - 105.0, lat - 35.0); + double radLat = lat / 180.0 * pi; + double magic = Math.sin(radLat); + magic = 1 - ee * magic * magic; + double sqrtMagic = Math.sqrt(magic); + dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi); + dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi); + double mgLat = lat + dLat; + double mgLon = lon + dLon; + return new double[] { mgLon, mgLat }; + } + + /** + * @Description 火星坐标系 (GCJ-02) to WGS84 + * @param lon + * @param lat + * @return + */ + public static double[] gcj02_To_Wgs84(double lon, double lat) { + double[] gps = transform(lat, lon); + double lontitude = lon * 2 - gps[1]; + double latitude = lat * 2 - gps[0]; + return new double[] { lontitude, latitude }; + } + + /** + * @Description 火星坐标系 (GCJ-02) to 百度坐标系 (BD-09) + * @param gg_lon + * @param gg_lat + * @return + */ + public static double[] gcj02_To_Bd09(double gg_lon, double gg_lat) { + double x = gg_lon, y = gg_lat; + double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * pi); + double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * pi); + double bd_lon = z * Math.cos(theta) + 0.0065; + double bd_lat = z * Math.sin(theta) + 0.006; + return new double[] { bd_lon, bd_lat }; + } + + /** + * @Description 百度坐标系 (BD-09) to 火星坐标系 (GCJ-02) + * @param bd_lon + * @param bd_lat + * @return + */ + public static double[] bd09_To_Gcj02(double bd_lon, double bd_lat) { + double x = bd_lon - 0.0065, y = bd_lat - 0.006; + double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * pi); + double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * pi); + double gg_lon = z * Math.cos(theta); + double gg_lat = z * Math.sin(theta); + return new double[] { gg_lon, gg_lat }; + } + /** + * @Description 百度坐标系 (BD-09) to WGS84 + * @param bd_lat + * @param bd_lon + * @return + */ + public static double[] bd09_To_Wgs84(double bd_lon,double bd_lat) { + + double[] gcj02 = LonlatConver.bd09_To_Gcj02(bd_lon, bd_lat); + double[] map84 = LonlatConver.gcj02_To_Wgs84(gcj02[0], gcj02[1]); + return map84; + + } + + /** + * @Description 判断是否在中国范围内 + * @param lat + * @param lon + * @return + */ + public static boolean outOfChina(double lat, double lon) { + if (lon < 72.004 || lon > 137.8347) + return true; + if (lat < 0.8293 || lat > 55.8271) + return true; + return false; + } + + /** + * @Description transform + * @param lat + * @param lon + * @return + */ + private static double[] transform(double lat, double lon) { + if (outOfChina(lat, lon)) { + return new double[] { lat, lon }; + } + double dLat = transformLat(lon - 105.0, lat - 35.0); + double dLon = transformLon(lon - 105.0, lat - 35.0); + double radLat = lat / 180.0 * pi; + double magic = Math.sin(radLat); + magic = 1 - ee * magic * magic; + double sqrtMagic = Math.sqrt(magic); + dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi); + dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi); + double mgLat = lat + dLat; + double mgLon = lon + dLon; + return new double[] { mgLat, mgLon }; + } + + /** + * @Description transformLat + * @param x + * @param y + * @return + */ + private static double transformLat(double x, double y) { + double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + + 0.2 * Math.sqrt(Math.abs(x)); + ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0; + ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0; + ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0; + return ret; + } + + /** + * @Description transformLon + * @param x + * @param y + * @return + */ + public static double transformLon(double x, double y) { + double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 + * Math.sqrt(Math.abs(x)); + ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0; + ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0; + ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 + * pi)) * 2.0 / 3.0; + return ret; + } + + /** + * GPS经纬度转换为 度(3114.1717,12122.1067 → 121.37300779,31.23436014) + * @param dms 坐标 + * @param type 坐标类型 E/N + * @return String 解析后的经纬度 + */ + public static String gpsToWgs84(String dms, String type) { + if (dms == null || dms.equals("")) { + return "0.0"; + } + double result = 0.0D; + String temp = ""; + + if (type.equals("E")) {//经度 + String e1 = dms.substring(0, 3);//截取3位数字,经度共3位,最多180度 + //经度是一伦敦为点作南北两极的线为0度,所有往西和往东各180度 + String e2 = dms.substring(3, dms.length());//需要运算的小数 + + result = Double.parseDouble(e1); +/* System.out.println("e2===="+e2); + System.out.println("===="+Double.parseDouble(e2) / 60.0D);*/ + result += (Double.parseDouble(e2) / 60.0D); + temp = String.valueOf(result); + if (temp.length() > 11) { + temp = e1 + temp.substring(temp.indexOf("."), 11); + } + } else if (type.equals("N")) { //纬度,纬度是以赤道为基准,相当于把地球分两半,两个半球面上的点和平面夹角0~90度 + String n1 = dms.substring(0, 2);//截取2位,纬度共2位,最多90度 + String n2 = dms.substring(2, dms.length()); + + result = Double.parseDouble(n1); +/* System.out.println("n2===="+n2); + System.out.println("===="+Double.parseDouble(n2) / 60.0D);*/ + result += Double.parseDouble(n2) / 60.0D; + temp = String.valueOf(result); + if (temp.length() > 10) { + temp = n1 + temp.substring(temp.indexOf("."), 10); + } + } + return temp; + } + +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 1c043ca..74d7eb2 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -80,6 +80,13 @@ httpclient 4.5.2 + + + cn.afterturn + easypoi-spring-boot-starter + 4.3.0 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index f75a353..c28c940 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -16,6 +16,7 @@ import com.casic.missiles.modular.app.model.AppDeviceLog; import com.casic.missiles.modular.app.service.IAppDeviceAddService; import com.casic.missiles.modular.app.service.IAppDeviceLogService; +import com.casic.missiles.modular.app.util.LonlatConver; import com.casic.missiles.modular.system.model.Dict; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Controller; @@ -25,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; @@ -83,6 +85,14 @@ if (ToolUtil.isEmpty(appDeviceAdd.getDescription())) { appDeviceAdd.setDescription("安装设备"); } + //转换火星坐标系至ws84坐标 + if (ToolUtil.isNotEmpty(appDeviceAdd.getLongitude()) + && ToolUtil.isNotEmpty(appDeviceAdd.getLatitude())) { + double[] doubleArr = LonlatConver.gcj02_To_Wgs84(Double.valueOf(appDeviceAdd.getLongitude()), + Double.valueOf(appDeviceAdd.getLatitude())); + appDeviceAdd.setLongitude84(doubleArr[0] + ""); + appDeviceAdd.setLatitude84(doubleArr[1] + ""); + } //新增时验证设备编号是否已经存在 List appDeviceAddList = appDeviceAddService.getAppDevice(appDeviceAdd.getDevcode()); @@ -203,13 +213,38 @@ return appDeviceAddService.findModeCodeByCode(devcode); } - /** - * 设备基础信息导出 - */ +// /** +// * 设备基础信息导出 +// */ +// @RequestMapping(value = "/listExp") +// public void reportExport(String devcode, String devtype, +// String begTime, String endTime, +// String project, String installPerson) throws IOException { +// +// List list = appDeviceAddService.reportExport(devcode, devtype, +// begTime, endTime, project, installPerson); +// list.forEach(appDeviceAdd -> { +// appDeviceAdd.setWelltype(permissionService.getDictNameByCode("sluicewellType", appDeviceAdd.getWelltype())); +// }); +// +// List res = new ArrayList<>(); +// res.addAll(list); +// //获取导出文件header +// super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); +// } +// +// @RequestMapping(value = "/convert84") +// public void convert84() { +// appDeviceAddService.convert84(); +// } + + + //照片一起导出 @RequestMapping(value = "/listExp") - public void reportExport(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson) throws IOException { + public void listExps(String devcode, String devtype, + String begTime, String endTime, + String project, String installPerson, + HttpServletResponse response) throws IOException { List list = appDeviceAddService.reportExport(devcode, devtype, begTime, endTime, project, installPerson); @@ -217,10 +252,12 @@ appDeviceAdd.setWelltype(permissionService.getDictNameByCode("sluicewellType", appDeviceAdd.getWelltype())); }); - List res = new ArrayList<>(); - res.addAll(list); - //获取导出文件header - super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); + appDeviceAddService.exportUsersToExcel(list,response); +// List res = new ArrayList<>(); +// res.addAll(list); +// //获取导出文件header +// super.exportExcel(DeviceBaseExportEnum.DeviceBase_EXPORT, res); } + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f37a3d9..cccb1c6 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -40,6 +40,10 @@ @Value("${casic.wxUrl}") private String wxUrl; + @Value("${casic.appid}") + private String appidWx; + @Value("${casic.secret}") + private String secretWx; /** * 获取授权列表 @@ -111,6 +115,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { + secret=secretWx; + appid=appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/AppDevicAddDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/AppDevicAddDTO.java new file mode 100644 index 0000000..6ed5d35 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/AppDevicAddDTO.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.app.dto; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.app.model.AppDeviceAdd; +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + + +@Data +public class AppDevicAddDTO implements Serializable { + + private static final long serialVersionUID = 1L; + @Excel(name = "设备编号", width = 10.0) + private String devcode; + @Excel(name = "设备类型", width = 10.0) + private String devicetype; + @Excel(name = "井编号", width = 10.0) + private String wellcode; + @Excel(name = "井类型", width = 10.0) + private String welltype; + @Excel(name = "井名称", width = 10.0) + private String wellname; + @Excel(name = "井深", width = 10.0) + private String welldepth; + @Excel(name = "安装高度", width = 10.0) + private String installheigt; + @Excel(name = "负责人", width = 10.0) + private String installperson; + @Excel(name = "安装时间", format = "yyyy-MM-dd",width = 10.0) + private Date installtime; + @Excel(name = "照片1", type = 2, width = 20.0, height = 60.0, imageType = 1) + private String photopath1; + @Excel(name = "照片2", type = 2, width = 20.0, height = 60.0, imageType = 1) + private String photopath2; + @Excel(name = "照片3", type = 2, width = 20.0, height = 60.0, imageType = 1) + private String photopath3; + @Excel(name = "所属项目", width = 10.0) + private String project; + @Excel(name = "安装位置", width = 10.0) + private String position; + @Excel(name = "描述", width = 10.0) + private String description; + @Excel(name = "区", width = 10.0) + private String area; + @Excel(name = "街道", width = 10.0) + private String street; + @Excel(name = "经度(gcj02)", width = 10.0) + private String longitude; + @Excel(name = "纬度(gcj02)", width = 10.0) + private String latitude; + @Excel(name = "经度(wgs84)", width = 10.0) + private String longitude84; + @Excel(name = "纬度wgs84)", width = 10.0) + private String latitude84; + + + public static List convert (List appDeviceAdds,String photoPath) { + List appDevicAddDTOS = new ArrayList<>(); + appDeviceAdds.forEach(appDeviceAdd -> { + appDevicAddDTOS.add(new AppDevicAddDTO(appDeviceAdd,photoPath)); + }); + return appDevicAddDTOS; + } + + + public AppDevicAddDTO(AppDeviceAdd appDeviceAdd,String photoPath) { + this.devcode = appDeviceAdd.getDevcode(); + this.devicetype = appDeviceAdd.getDevicetype(); + this.wellcode = appDeviceAdd.getWellcode(); + this.welltype = appDeviceAdd.getWelltype(); + this.wellname = appDeviceAdd.getWellname(); + this.welldepth = appDeviceAdd.getWelldepth(); + this.installheigt = appDeviceAdd.getInstallheigt(); + this.installperson = appDeviceAdd.getInstallperson(); + this.installtime = appDeviceAdd.getInstalltime(); + this.photopath1 = ToolUtil.isNotEmpty(appDeviceAdd.getPhotopath1())?photoPath+appDeviceAdd.getPhotopath1():appDeviceAdd.getPhotopath1(); + this.photopath2 = ToolUtil.isNotEmpty(appDeviceAdd.getPhotopath2())?photoPath+appDeviceAdd.getPhotopath2():appDeviceAdd.getPhotopath2(); + this.photopath3 = ToolUtil.isNotEmpty(appDeviceAdd.getPhotopath3())?photoPath+appDeviceAdd.getPhotopath3():appDeviceAdd.getPhotopath3(); + this.project = appDeviceAdd.getProject(); + this.position = appDeviceAdd.getPosition(); + this.description = appDeviceAdd.getDescription(); + this.area = appDeviceAdd.getArea(); + this.street = appDeviceAdd.getStreet(); + this.latitude = appDeviceAdd.getLatitude(); + this.longitude = appDeviceAdd.getLongitude(); + this.latitude84 = appDeviceAdd.getLatitude84(); + this.longitude84 = appDeviceAdd.getLongitude84(); + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java index 1064dea..b7c8f73 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceAdd.java @@ -13,6 +13,7 @@ import com.baomidou.mybatisplus.annotations.TableName; import com.casic.missiles.core.util.DateUtil; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.app.util.LonlatConver; import java.io.Serializable; import java.util.List; @@ -415,8 +416,16 @@ appDeviceAdd.area = appDeviceLog.getArea(); appDeviceAdd.street = appDeviceLog.getStreet(); appDeviceAdd.wellname = appDeviceLog.getWellname(); - appDeviceAdd.latitude84 = appDeviceLog.getLatitude84(); - appDeviceAdd.longitude84 = appDeviceLog.getLongitude84(); +// appDeviceAdd.latitude84 = appDeviceLog.getLatitude84(); +// appDeviceAdd.longitude84 = appDeviceLog.getLongitude84(); + //转换火星坐标系至ws84坐标 + if (ToolUtil.isNotEmpty(appDeviceLog.getLongitude()) + && ToolUtil.isNotEmpty(appDeviceLog.getLatitude())) { + double[] doubleArr= LonlatConver.gcj02_To_Wgs84(Double.valueOf(appDeviceLog.getLongitude()), + Double.valueOf(appDeviceLog.getLatitude())); + appDeviceAdd.setLongitude84(doubleArr[0]+""); + appDeviceAdd.setLatitude84(doubleArr[1]+""); + } return appDeviceAdd; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java index 7eafb27..96bd6fb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.app.model.AppDeviceAdd; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; @@ -24,4 +25,6 @@ List reportExport(String devcode, String devtype, String begTime, String endTime, String project, String installPerson); + void convert84(); + void exportUsersToExcel(List list, HttpServletResponse response); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java index 7ac5b94..69f2254 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java @@ -1,20 +1,29 @@ package com.casic.missiles.modular.app.service.impl; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.casic.missiles.core.util.DateUtil; import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.app.dao.AppDeviceAddMapper; +import com.casic.missiles.modular.app.dto.AppDevicAddDTO; import com.casic.missiles.modular.app.model.AppDeviceAdd; import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import com.casic.missiles.modular.app.util.LonlatConver; import com.casic.missiles.modular.app.util.PhotoUtils; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.io.File; import java.io.IOException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @@ -33,6 +42,8 @@ @Value("${casic.file-upload-path}") private String filePath; + @Value("${casic.photoPath}") + private String photoPath; @Override public List getAppDevice(String devcode) { @@ -65,7 +76,7 @@ public String fileUploadMarker(MultipartFile file, String text) throws IOException { if (!file.isEmpty()) { // String uuid = UUID.randomUUID().toString().replaceAll("-", ""); - String uuid = text.substring(text.indexOf("编号:")+3,text.indexOf("经度:"))+"_"+System.currentTimeMillis(); + String uuid = text.substring(text.indexOf("编号:") + 3, text.indexOf("经度:")) + "_" + System.currentTimeMillis(); String fileName = (new SimpleDateFormat("yyyy-MM")).format(new Date()); String filePrex = uuid + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); File dir = new File(filePath + fileName); @@ -74,7 +85,7 @@ } String pathName = dir.getPath() + File.separator + filePrex; file.transferTo(new File(pathName)); - PhotoUtils.markImageByText(text,pathName,pathName,0,new Color(0,0,255),"JPG"); + PhotoUtils.markImageByText(text, pathName, pathName, 0, new Color(0, 0, 255), "JPG"); return fileName.concat(File.separator).concat(filePrex); } else { return null; @@ -110,4 +121,55 @@ query.orderBy("createtime", false); return this.selectList(query); } + + @Override + public void convert84() { + EntityWrapper query = new EntityWrapper<>(); + query.le("id", 5241); + List appDeviceAddList = selectList(query); + + for (AppDeviceAdd appDeviceAdd : appDeviceAddList) { + if (ToolUtil.isNotEmpty(appDeviceAdd.getLongitude()) + && ToolUtil.isNotEmpty(appDeviceAdd.getLatitude())) { + double[] doubleArr = LonlatConver.gcj02_To_Wgs84(Double.valueOf(appDeviceAdd.getLongitude()), + Double.valueOf(appDeviceAdd.getLatitude())); + appDeviceAdd.setLongitude84(doubleArr[0] + ""); + appDeviceAdd.setLatitude84(doubleArr[1] + ""); + } + } + this.insertOrUpdateBatch(appDeviceAddList); + } + + + + @Override + public void exportUsersToExcel(List list,HttpServletResponse response) { + + try { + + //设置信息头,告诉浏览器内容为excel类型 + response.setHeader("content-Type", "application/vnd.ms-excel"); + //设置下载名称 + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("设备安装基础信息表.xls", StandardCharsets.UTF_8.name())); + + //字节流输出 + ServletOutputStream out = response.getOutputStream(); + //设置excel参数 + ExportParams params = new ExportParams(); + //设置sheet名名称 + params.setSheetName("设备安装信息"); + //设置标题 + params.setTitle("设备安装信息"); + + //转成对应的类型;要不然会报错,虽然也可以导出成功 + List AppDevicAddDTOs = AppDevicAddDTO.convert(list,photoPath); + + //导入excel + Workbook workbook = ExcelExportUtil.exportExcel(params, AppDevicAddDTO.class, AppDevicAddDTOs); + //写入 + workbook.write(out); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/util/LonlatConver.java b/casic-app/src/main/java/com/casic/missiles/modular/app/util/LonlatConver.java new file mode 100644 index 0000000..62a37d7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/util/LonlatConver.java @@ -0,0 +1,219 @@ +package com.casic.missiles.modular.app.util; + + +public class LonlatConver { +// public static void main(String[] args) { +// Double lat = 116.078682; +// Double lon = 27.751289; +// double[] doubleArr1 = wgs84_To_Gcj02(lat, lon); +// System.out.println(doubleArr1[0]+"===="+doubleArr1[1]); +// double[] doubleArr = gcj02_To_Bd09(doubleArr1[0], doubleArr1[1]); +//// double[] doubleArr = gcj02_To_Bd09(lat, lon); +// System.out.println(doubleArr[0]+"===="+doubleArr[1]); +// +// double[] doubleArr2 = gcj02_To_Wgs84(lat, lon); +// System.out.println(doubleArr2[0]+""+"===="+doubleArr2[1]+""); +// +// } + + /** + * a + */ + public final static double a = 6378245.0; + /** + * ee + */ + public final static double ee = 0.00669342162296594323; + + //圆周率 GCJ_02_To_WGS_84 + public final static double pi = 3.14159265358979324; + /** + * @Description WGS84 to 火星坐标系 (GCJ-02) + * @param lon 经度 + * @param lat 纬度 + * @return + */ + public static double[] wgs84_To_Gcj02(double lon, double lat) { + if (outOfChina(lat, lon)) { + return null; + } + double dLat = transformLat(lon - 105.0, lat - 35.0); + double dLon = transformLon(lon - 105.0, lat - 35.0); + double radLat = lat / 180.0 * pi; + double magic = Math.sin(radLat); + magic = 1 - ee * magic * magic; + double sqrtMagic = Math.sqrt(magic); + dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi); + dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi); + double mgLat = lat + dLat; + double mgLon = lon + dLon; + return new double[] { mgLon, mgLat }; + } + + /** + * @Description 火星坐标系 (GCJ-02) to WGS84 + * @param lon + * @param lat + * @return + */ + public static double[] gcj02_To_Wgs84(double lon, double lat) { + double[] gps = transform(lat, lon); + double lontitude = lon * 2 - gps[1]; + double latitude = lat * 2 - gps[0]; + return new double[] { lontitude, latitude }; + } + + /** + * @Description 火星坐标系 (GCJ-02) to 百度坐标系 (BD-09) + * @param gg_lon + * @param gg_lat + * @return + */ + public static double[] gcj02_To_Bd09(double gg_lon, double gg_lat) { + double x = gg_lon, y = gg_lat; + double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * pi); + double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * pi); + double bd_lon = z * Math.cos(theta) + 0.0065; + double bd_lat = z * Math.sin(theta) + 0.006; + return new double[] { bd_lon, bd_lat }; + } + + /** + * @Description 百度坐标系 (BD-09) to 火星坐标系 (GCJ-02) + * @param bd_lon + * @param bd_lat + * @return + */ + public static double[] bd09_To_Gcj02(double bd_lon, double bd_lat) { + double x = bd_lon - 0.0065, y = bd_lat - 0.006; + double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * pi); + double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * pi); + double gg_lon = z * Math.cos(theta); + double gg_lat = z * Math.sin(theta); + return new double[] { gg_lon, gg_lat }; + } + /** + * @Description 百度坐标系 (BD-09) to WGS84 + * @param bd_lat + * @param bd_lon + * @return + */ + public static double[] bd09_To_Wgs84(double bd_lon,double bd_lat) { + + double[] gcj02 = LonlatConver.bd09_To_Gcj02(bd_lon, bd_lat); + double[] map84 = LonlatConver.gcj02_To_Wgs84(gcj02[0], gcj02[1]); + return map84; + + } + + /** + * @Description 判断是否在中国范围内 + * @param lat + * @param lon + * @return + */ + public static boolean outOfChina(double lat, double lon) { + if (lon < 72.004 || lon > 137.8347) + return true; + if (lat < 0.8293 || lat > 55.8271) + return true; + return false; + } + + /** + * @Description transform + * @param lat + * @param lon + * @return + */ + private static double[] transform(double lat, double lon) { + if (outOfChina(lat, lon)) { + return new double[] { lat, lon }; + } + double dLat = transformLat(lon - 105.0, lat - 35.0); + double dLon = transformLon(lon - 105.0, lat - 35.0); + double radLat = lat / 180.0 * pi; + double magic = Math.sin(radLat); + magic = 1 - ee * magic * magic; + double sqrtMagic = Math.sqrt(magic); + dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi); + dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi); + double mgLat = lat + dLat; + double mgLon = lon + dLon; + return new double[] { mgLat, mgLon }; + } + + /** + * @Description transformLat + * @param x + * @param y + * @return + */ + private static double transformLat(double x, double y) { + double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + + 0.2 * Math.sqrt(Math.abs(x)); + ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0; + ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0; + ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0; + return ret; + } + + /** + * @Description transformLon + * @param x + * @param y + * @return + */ + public static double transformLon(double x, double y) { + double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 + * Math.sqrt(Math.abs(x)); + ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0; + ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0; + ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 + * pi)) * 2.0 / 3.0; + return ret; + } + + /** + * GPS经纬度转换为 度(3114.1717,12122.1067 → 121.37300779,31.23436014) + * @param dms 坐标 + * @param type 坐标类型 E/N + * @return String 解析后的经纬度 + */ + public static String gpsToWgs84(String dms, String type) { + if (dms == null || dms.equals("")) { + return "0.0"; + } + double result = 0.0D; + String temp = ""; + + if (type.equals("E")) {//经度 + String e1 = dms.substring(0, 3);//截取3位数字,经度共3位,最多180度 + //经度是一伦敦为点作南北两极的线为0度,所有往西和往东各180度 + String e2 = dms.substring(3, dms.length());//需要运算的小数 + + result = Double.parseDouble(e1); +/* System.out.println("e2===="+e2); + System.out.println("===="+Double.parseDouble(e2) / 60.0D);*/ + result += (Double.parseDouble(e2) / 60.0D); + temp = String.valueOf(result); + if (temp.length() > 11) { + temp = e1 + temp.substring(temp.indexOf("."), 11); + } + } else if (type.equals("N")) { //纬度,纬度是以赤道为基准,相当于把地球分两半,两个半球面上的点和平面夹角0~90度 + String n1 = dms.substring(0, 2);//截取2位,纬度共2位,最多90度 + String n2 = dms.substring(2, dms.length()); + + result = Double.parseDouble(n1); +/* System.out.println("n2===="+n2); + System.out.println("===="+Double.parseDouble(n2) / 60.0D);*/ + result += Double.parseDouble(n2) / 60.0D; + temp = String.valueOf(result); + if (temp.length() > 10) { + temp = n1 + temp.substring(temp.indexOf("."), 10); + } + } + return temp; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 5557bf6..b35d1ec 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -14,12 +14,15 @@ #flowable数据源和多数据源配置 casic: kaptcha-open: false #是否开启登录时验证码 (true/false) - nologin-urls: /user/login,/user/appLogin,/kaptcha,/config/baseConfig,/route/mockToken,/process/processDiagram,/appDeviceLog/listPage,/appDeviceAdd/add,/appDeviceLog/deviceDetail,/appDeviceLog/add,/appDeviceAdd/fileUpload,/appDeviceAdd/findListByCodes,/appDeviceAdd/findModeCodeByCode,/deviceType/getUser,/project/getProject,/appDeviceLog/deletePhoto,/deviceType/deviceType,/productRepairRecords/add,/appDeviceAdd/fileUploadMarker,/appDeviceAdd/getDevTypeLength,/appDeviceAdd/delete,/appUserOpenid/login,/appUserOpenid/add,/appUserOpenid/validate,/appDeviceAdd/getWellTypeList + nologin-urls: /user/login,/user/appLogin,/kaptcha,/config/baseConfig,/route/mockToken,/process/processDiagram,/appDeviceLog/listPage,/appDeviceAdd/add,/appDeviceLog/deviceDetail,/appDeviceLog/add,/appDeviceAdd/fileUpload,/appDeviceAdd/findListByCodes,/appDeviceAdd/findModeCodeByCode,/deviceType/getUser,/project/getProject,/appDeviceLog/deletePhoto,/deviceType/deviceType,/productRepairRecords/add,/appDeviceAdd/fileUploadMarker,/appDeviceAdd/getDevTypeLength,/appDeviceAdd/delete,/appUserOpenid/login,/appUserOpenid/add,/appUserOpenid/validate,/appDeviceAdd/getWellTypeList,/appDeviceAdd/listExp file-upload-path: C:\casic\tmp\ file-download-path: D:\tmp\ producerName: producer repairName: repair wxUrl: https://api.weixin.qq.com/sns/jscode2session #获取微信openid + appid: wx8f4b331065a9ac2e #微信小程序开发appid + secret: 335847f265b3875804c8f8de4231730b #微信小程序开发密钥 + photoPath: https://logapi.smartlog.work/static/ #导出照片位置存放目录 logging: level.root: info level.com.casic: debug