修复bug , 新增aed导入的临时方法

This commit is contained in:
feng
2025-12-04 11:29:43 +08:00
parent f37963f141
commit 3c7bda80bb
6 changed files with 171 additions and 5 deletions
@@ -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<AedEquipmentMa
return Result.ok();
}
/**
* 仅适用于特定模块的文件
* @param file
* @return
*/
@Operation(summary = "AED数据临时导入方法", description = "AED数据临时导入方法")
@PostMapping(value = "temp-import")
public Result<Object> aedDataTempImport(@Parameter(description = "需要导入的AED", required = true) MultipartFile file) {
return aedEquipmentMangerService.aedDataTempImport(file);
}
}
@@ -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<AedEquipmentManger>
* 从安眼系统同步更新AED数据
*/
void syncAnYanAedData();
/**
* AED数据临时导入方法
* @param file
* @return
*/
Result<Object> aedDataTempImport(MultipartFile file);
}
@@ -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<AedEquipmentMange
private GlobalManager globalManager;
@Autowired
private AnYanClient anYanClient;
@Autowired
private CoordinateConverter converter;
@Override
public IPage<AEDManagerPageRes> 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<AedEquipmentMange
//处理所属部门
List<DepartEasyVO> 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<AedEquipmentMange
}
}
}
public Result<Object> aedDataTempImport(MultipartFile file){
List<AedTempImportVO> 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<String, List<DepartEasyVO>> 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<DepartEasyVO> 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("导入成功");
}
}
@@ -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 "";
}
}
@@ -491,6 +491,7 @@ public class LargeScreenServiceImpl extends ServiceImpl<LargeScreenMapper, Large
//todo 如果经纬度需要经度的转换在此处处理
resource.setLatitude(TypeConversionUtil.toBigDecimalOfNull(hospital.getLat()));
resource.setLongitude(TypeConversionUtil.toBigDecimalOfNull(hospital.getLon()));
resource.setMobile(hospital.getPhone());
resource.setType("1");
saveOrUpdateBatchList.add(resource);
}
@@ -1271,6 +1271,7 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart
departEasyVO.setParentCode(parent.getOrgCode());
departEasyVO.setParentName(parent.getDepartName());
}
easyVOS.add(departEasyVO);
});
resultMap.put(name,easyVOS);
});