diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/aed/controller/AedEquipmentMangerController.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/aed/controller/AedEquipmentMangerController.java index 6351160..5b74fa7 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/aed/controller/AedEquipmentMangerController.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/aed/controller/AedEquipmentMangerController.java @@ -13,6 +13,7 @@ import com.renkang.emergency.aed.vo.res.manager.AedGeo; import com.renkang.emergency.bean.response.SrcInfo; import com.renkang.emergency.entity.AedEquipmentManger; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.authz.annotation.RequiresPermissions; @@ -22,6 +23,7 @@ import org.jeecg.common.system.base.controller.JeecgController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.math.BigDecimal; import java.util.Arrays; @@ -332,4 +334,15 @@ public class AedEquipmentMangerController extends JeecgController aedDataTempImport(@Parameter(description = "需要导入的AED", required = true) MultipartFile file) { + return aedEquipmentMangerService.aedDataTempImport(file); + } + } diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/aed/service/IAedEquipmentMangerService.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/aed/service/IAedEquipmentMangerService.java index 9aff537..a9e633d 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/aed/service/IAedEquipmentMangerService.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/aed/service/IAedEquipmentMangerService.java @@ -9,6 +9,8 @@ import com.renkang.emergency.aed.vo.res.manager.AEDPublishPageRes; import com.renkang.emergency.aed.vo.res.manager.AedGeo; import com.renkang.emergency.bean.response.SrcInfo; import com.renkang.emergency.entity.AedEquipmentManger; +import org.jeecg.common.api.vo.Result; +import org.springframework.web.multipart.MultipartFile; import java.math.BigDecimal; import java.util.List; @@ -137,4 +139,11 @@ public interface IAedEquipmentMangerService extends IService * 从安眼系统同步更新AED数据 */ void syncAnYanAedData(); + + /** + * AED数据临时导入方法 + * @param file + * @return + */ + Result aedDataTempImport(MultipartFile file); } diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/aed/service/impl/AedEquipmentMangerServiceImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/aed/service/impl/AedEquipmentMangerServiceImpl.java index f3ea948..ebda348 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/aed/service/impl/AedEquipmentMangerServiceImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/aed/service/impl/AedEquipmentMangerServiceImpl.java @@ -20,6 +20,7 @@ import com.renkang.emergency.aed.util.AEDUtils; import com.renkang.emergency.aed.util.OrgUtils; import com.renkang.emergency.aed.vo.req.AedExport; import com.renkang.emergency.aed.vo.req.AedPublishExport; +import com.renkang.emergency.aed.vo.req.AedTempImportVO; import com.renkang.emergency.aed.vo.req.manager.AEDManagerInsertReq; import com.renkang.emergency.aed.vo.req.manager.AEDPublishEquipmentReq; import com.renkang.emergency.aed.vo.res.manager.AEDManagerPageRes; @@ -27,8 +28,11 @@ import com.renkang.emergency.aed.vo.res.manager.AEDPublishPageRes; import com.renkang.emergency.aed.vo.res.manager.AedGeo; import com.renkang.emergency.bean.response.SrcInfo; import com.renkang.emergency.entity.AedEquipmentManger; +import org.apache.commons.lang3.ObjectUtils; import org.apache.poi.ss.usermodel.Workbook; import org.jeecg.bean.response.DepartEasyVO; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.exception.ExceptionAssertsUtil; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.util.DictUtil; import org.jeecg.common.system.vo.DictModel; @@ -39,15 +43,20 @@ import org.jeecg.global.GlobalUtils; import org.jeecg.modules.exports.entity.CommonExportsInfo; import org.jeecg.modules.manager.ISysCache; import org.jeecg.modules.system.entity.SysDepart; +import org.jeecg.untils.CoordinateConverter; import org.jeecg.util.GlobalManager; +import org.jeecg.util.TypeConversionUtil; import org.jeecgframework.poi.excel.ExcelExportUtil; +import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.entity.enmus.ExcelType; import org.jeecgframework.poi.exception.excel.enums.ExcelExportEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.task.AsyncTaskExecutor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -98,6 +107,8 @@ public class AedEquipmentMangerServiceImpl extends ServiceImpl queryManagerPageList(Integer pageNo, Integer pageSize, String name, Integer type, String orgCode, String mfrs, String model, String hostSerialNum) { @@ -614,11 +625,16 @@ public class AedEquipmentMangerServiceImpl extends ServiceImpl departEasyVOS = orgMap.get(anYanAedInfo.getThirdOfficeName()); if(ObjectUtil.isNotEmpty(departEasyVOS)){ - String orgCode = departEasyVOS.stream() - .filter(de -> anYanAedInfo.getSecondOfficeName().equals(de.getParentName())) - .map(DepartEasyVO::getOrgCode) - .findFirst().orElse(""); - equipmentManger.setDepartCode(orgCode); + if(departEasyVOS.size() > 1){ + //如果有同名部门取上级单位名称二次比对 + String orgCode = departEasyVOS.stream() + .filter(de -> anYanAedInfo.getSecondOfficeName().equals(de.getParentName())) + .map(DepartEasyVO::getOrgCode) + .findFirst().orElse(""); + equipmentManger.setDepartCode(orgCode); + }else { + equipmentManger.setDepartCode(departEasyVOS.get(0).getOrgCode()); + } } equipmentManger.setInstallAddress(anYanAedInfo.getProvidePlace()); equipmentManger.setManageUserMobile(anYanAedInfo.getTel()); @@ -647,4 +663,77 @@ public class AedEquipmentMangerServiceImpl extends ServiceImpl aedDataTempImport(MultipartFile file){ + List list = null; + try { + //解析Excel文件数据 + ImportParams params = new ImportParams(); + params.setTitleRows(1); + params.setHeadRows(1); + list = ExcelImportUtil.importExcel(file.getInputStream(), AedTempImportVO.class, params); + if(ObjectUtil.isNotEmpty(list)){ + //通过单位名称反查orgCode + Map> orgMap = sysBaseAPI.queryDeptByName( list.stream().map(AedTempImportVO::getThirdOfficeName).collect(Collectors.toSet())); + for(AedTempImportVO vo : list){ + try { + AedEquipmentManger equipmentManger = new AedEquipmentManger(); + equipmentManger.setName("自动体外除颤仪"); + equipmentManger.setPublishFlag(0); + equipmentManger.setStatus(1); + equipmentManger.setInstallAddress(vo.getInstallAddress()); + equipmentManger.setManageUserMobile(vo.getManageUserMobile()); + equipmentManger.setManageUserName(vo.getManageUserName()); + equipmentManger.setUpdateTime(new Date()); + equipmentManger.setCreateTime(new Date()); + equipmentManger.setHostModel(vo.getHostModel()); + equipmentManger.setHostSerialNum(vo.getHostSerialNum()); + if(StrUtil.isNotEmpty(vo.getLongitude()) && StrUtil.isNotEmpty(vo.getLatitude())){ + try { + String[] split = converter.run(vo.getLongitude() + "-" + vo.getLatitude()).split("-"); + CoordinateConverter.Gps gps = CoordinateConverter.GPS84ToGCJ02( + TypeConversionUtil.toDoubleOfNull(split[0]), TypeConversionUtil.toDoubleOfNull(split[1])); + if (gps != null) { + BigDecimal lon = BigDecimal.valueOf(gps.getLongitude()); + BigDecimal lat = BigDecimal.valueOf(gps.getLatitude()); + equipmentManger.setLongitude(lon); + equipmentManger.setLatitude(lat); + equipmentManger.setGeoCollectType(1); + equipmentManger.setPublishFlag(1); + } + } catch (Exception e) { + e.printStackTrace(); + } + equipmentManger.setInstallTime(vo.getInstallTime()); + } + //处理所属部门 + List departEasyVOS = orgMap.get(vo.getThirdOfficeName()); + if(ObjectUtil.isNotEmpty(departEasyVOS)){ + if(departEasyVOS.size() > 1){ + //如果有同名部门取上级单位名称二次比对 + String orgCode = departEasyVOS.stream() + .filter(de -> vo.getSecondOfficeName().equals(de.getParentName())) + .map(DepartEasyVO::getOrgCode) + .findFirst().orElse(""); + equipmentManger.setDepartCode(orgCode); + }else { + equipmentManger.setDepartCode(departEasyVOS.get(0).getOrgCode()); + } + } + save(equipmentManger); + if(equipmentManger.getPublishFlag() == 1){ + //添加位置信息 + aedUtils.addGeo(equipmentManger.getLongitude().doubleValue(), equipmentManger.getLatitude().doubleValue(), equipmentManger.getId()); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + ExceptionAssertsUtil.fail("导入数据失败"); + } + return Result.ok("导入成功"); + } } diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/aed/vo/req/AedTempImportVO.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/aed/vo/req/AedTempImportVO.java new file mode 100644 index 0000000..e5d7f97 --- /dev/null +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/aed/vo/req/AedTempImportVO.java @@ -0,0 +1,53 @@ +package com.renkang.emergency.aed.vo.req; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * AED数据临时导入适用 + */ +@Data +public class AedTempImportVO { + @Excel(name = "二级单位名称", width = 15) + private String secondOfficeName; + @Excel(name = "三级单位名称", width = 15) + private String thirdOfficeName; + @Excel(name = "配置地点", width = 15) + private String installAddress; + @Excel(name = "北纬", width = 15) + private String latitude; + @Excel(name = "东经", width = 15) + private String longitude; + @Excel(name = "配置时间", width = 15) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date installTime; + @Excel(name = "设备型号", width = 15) + private String hostModel; + @Excel(name = "编号", width = 15) + private String hostSerialNum; + @Excel(name = "AED设备管理人员", width = 15) + private String manageUserName; + @Excel(name = "联系电话", width = 15) + private String manageUserMobile; + + public String getSecondOfficeName() { + if(null != secondOfficeName){ + // 处理返数据中的空格和换行符 + return secondOfficeName.replaceAll(" ","").replaceAll("\r\n",""); + } + return ""; + } + + public String getThirdOfficeName() { + if(null != thirdOfficeName){ + // 处理返数据中的空格和换行符 + return thirdOfficeName.replaceAll(" ","").replaceAll("\r\n",""); + } + return ""; + } +} diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenServiceImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenServiceImpl.java index 79d73c2..f04bee2 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenServiceImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenServiceImpl.java @@ -491,6 +491,7 @@ public class LargeScreenServiceImpl extends ServiceImpl