Commit 8ea74792 authored by taabe's avatar taabe

增加灭火栓和视频监控资源导入功能

parent 4d06699a
...@@ -3,6 +3,7 @@ package com.yeejoin.amos.fas.business.controller; ...@@ -3,6 +3,7 @@ package com.yeejoin.amos.fas.business.controller;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.yeejoin.amos.fas.business.param.FireEquipmentParam; import com.yeejoin.amos.fas.business.param.FireEquipmentParam;
import com.yeejoin.amos.fas.business.param.FireEquipmentPointParam; import com.yeejoin.amos.fas.business.param.FireEquipmentPointParam;
import com.yeejoin.amos.fas.business.param.WaterResourceParam;
import com.yeejoin.amos.fas.business.service.intfc.IExcelService; import com.yeejoin.amos.fas.business.service.intfc.IExcelService;
import com.yeejoin.amos.fas.business.util.FileHelper; import com.yeejoin.amos.fas.business.util.FileHelper;
import com.yeejoin.amos.fas.core.util.FileUtil; import com.yeejoin.amos.fas.core.util.FileUtil;
...@@ -19,6 +20,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -19,6 +20,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
...@@ -70,9 +72,9 @@ public class ExcelController extends BaseController { ...@@ -70,9 +72,9 @@ public class ExcelController extends BaseController {
} }
@ApiOperation(value = "导出数据", notes = "导出数据") @ApiOperation(value = "导出数据", notes = "导出数据")
@PostMapping(value = "/export2") @PostMapping(value = "/export")
@Authorization(ingore = true) @Authorization(ingore = true)
public void export2(HttpServletResponse response, public void export(HttpServletResponse response,
@ApiParam(value = "data:导出数据;model:导出模板", required = true) @RequestParam String exportType, @ApiParam(value = "data:导出数据;model:导出模板", required = true) @RequestParam String exportType,
@ApiParam(value = "point:监测点;equipment:设备", required = true) @RequestParam String modelName, @ApiParam(value = "point:监测点;equipment:设备", required = true) @RequestParam String modelName,
@ApiParam(value = "查询条件") @RequestBody(required = false) Map<String, Object> paramsMap) { @ApiParam(value = "查询条件") @RequestBody(required = false) Map<String, Object> paramsMap) {
...@@ -83,12 +85,11 @@ public class ExcelController extends BaseController { ...@@ -83,12 +85,11 @@ public class ExcelController extends BaseController {
cls = FireEquipmentPointParam.class; cls = FireEquipmentPointParam.class;
} else if ("equipment".equals(modelName)) { } else if ("equipment".equals(modelName)) {
cls = FireEquipmentParam.class; cls = FireEquipmentParam.class;
} else if ("water".equals(modelName)) {
cls = WaterResourceParam.class;
} }
if (cls != null) { if (cls != null) {
List<?> list = Lists.newArrayList(); List<?> list = Lists.newArrayList();
// if ("model".equals(exportType)) {
// FileHelper.exportExcel(list, title, title, cls, fileName, response);
// }
if ("data".equals(exportType)) { if ("data".equals(exportType)) {
list = iExcelService.exportPointData(paramsMap); list = iExcelService.exportPointData(paramsMap);
} }
...@@ -96,25 +97,26 @@ public class ExcelController extends BaseController { ...@@ -96,25 +97,26 @@ public class ExcelController extends BaseController {
} }
} }
@ApiOperation(value = "导出数据", notes = "导出数据") @ApiOperation(value = "导入数据", notes = "导入数据")
@PostMapping(value = "/export") @PostMapping(value = "/import/data/excel/{type}")
@Authorization(ingore = true) public CommonResponse importExcelData(@RequestPart("file") MultipartFile file, @ApiParam(value = "导入资源类型", required = true) @PathVariable String type) {
public void export(HttpServletResponse response, String fileName = file.getOriginalFilename();
@ApiParam(value = "data:导出数据;model:导出模板", required = true) @RequestParam String exportType, if (fileName.endsWith(".xls") || fileName.endsWith(".xlsx")) {
@ApiParam(value = "point:监测点;equipment:设备", required = true) @RequestParam String modelName) { try {
String fileName = UUID.randomUUID().toString() + ".xls"; if ("fireResource".equals(type)) {//导入消防装备
String title = "监测点"; List<FireEquipmentParam> list = FileHelper.importExcel(file, 1, 1, FireEquipmentParam.class);
Class cls = null; iExcelService.importFireEquipment(list);
if ("point".equals(modelName)) { } else if ("water".equals(type)) {//导入水资源
cls = FireEquipmentPointParam.class; List<WaterResourceParam> list = FileHelper.importExcel(file, 1, 1, WaterResourceParam.class);
} else if ("equipment".equals(modelName)) { iExcelService.importWaterResource(list);
cls = FireEquipmentParam.class; }
} return CommonResponseUtil.success();
if (cls != null) { } catch (Exception e) {
List<?> list = Lists.newArrayList(); logger.info("导入数据异常", e);
if ("model".equals(exportType)) { return CommonResponseUtil.failure("导入失败");
FileHelper.exportExcel(list, title, title, cls, fileName, response);
} }
} else {
return CommonResponseUtil.failure("文件格式错误");
} }
} }
} }
package com.yeejoin.amos.fas.business.dao.mapper; package com.yeejoin.amos.fas.business.dao.mapper;
import com.yeejoin.amos.fas.business.param.WaterResourceParam;
import com.yeejoin.amos.fas.dao.entity.WaterResource;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
public interface WaterResourceMapper extends BaseMapper { public interface WaterResourceMapper extends BaseMapper {
...@@ -28,4 +31,10 @@ public interface WaterResourceMapper extends BaseMapper { ...@@ -28,4 +31,10 @@ public interface WaterResourceMapper extends BaseMapper {
Long queryCountForBindFireEqumntPage( Long queryCountForBindFireEqumntPage(
@Param("waterResourceId") Long waterResourceId); @Param("waterResourceId") Long waterResourceId);
List<WaterResource> listByCodes(@Param("codes") Set<String> codes);
void saveBatch(List<WaterResourceParam> list);
void updateBatch(List<WaterResourceParam> list);
} }
...@@ -51,6 +51,9 @@ public class FireEquipmentParam { ...@@ -51,6 +51,9 @@ public class FireEquipmentParam {
@Excel(name = "风险区域编号", orderNum = "14") @Excel(name = "风险区域编号", orderNum = "14")
private Long riskSourceId; private Long riskSourceId;
@Excel(name = "厂商", orderNum = "15", width = 20)
private String manufacturer;
public Long getId() { public Long getId() {
return id; return id;
} }
...@@ -178,4 +181,12 @@ public class FireEquipmentParam { ...@@ -178,4 +181,12 @@ public class FireEquipmentParam {
public void setRiskSourceId(Long riskSourceId) { public void setRiskSourceId(Long riskSourceId) {
this.riskSourceId = riskSourceId; this.riskSourceId = riskSourceId;
} }
public String getManufacturer() {
return manufacturer;
}
public void setManufacturer(String manufacturer) {
this.manufacturer = manufacturer;
}
} }
package com.yeejoin.amos.fas.business.param;
import cn.afterturn.easypoi.excel.annotation.Excel;
public class WaterResourceParam {
private Long id;
@Excel(name = "编号", width = 20)
private String code;
@Excel(name = "名称", orderNum = "1", width = 20)
private String name;
@Excel(name = "类型", replace = {"消火栓_1", "消防水池_2", "喷淋_3"}, orderNum = "3")
private String type;
@Excel(name = "三维坐标", orderNum = "4", width = 15)
private String position3d;
@Excel(name = "三维楼层", orderNum = "5")
private String floor3d;
@Excel(name = "是否室内", replace = {"是_1", "否_0"}, orderNum = "6")
private Boolean isIndoor=true;
@Excel(name = "所属风险区域", orderNum = "7")
private Long riskSourceId;
@Excel(name = "房间", orderNum = "8")
private String room;
@Excel(name = "位置", orderNum = "9")
private String address;
@Excel(name = "机构编号", orderNum = "10")
private String orgCode;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getPosition3d() {
return position3d;
}
public void setPosition3d(String position3d) {
this.position3d = position3d;
}
public String getFloor3d() {
return floor3d;
}
public void setFloor3d(String floor3d) {
this.floor3d = floor3d;
}
public Boolean getIsIndoor() {
return isIndoor;
}
public void setIsIndoor(Boolean isIndoor) {
this.isIndoor = isIndoor;
}
public Long getRiskSourceId() {
return riskSourceId;
}
public void setRiskSourceId(Long riskSourceId) {
this.riskSourceId = riskSourceId;
}
public String getRoom() {
return room;
}
public void setRoom(String room) {
this.room = room;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getOrgCode() {
return orgCode;
}
public void setOrgCode(String orgCode) {
this.orgCode = orgCode;
}
}
...@@ -5,12 +5,15 @@ import com.google.common.collect.Maps; ...@@ -5,12 +5,15 @@ import com.google.common.collect.Maps;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.yeejoin.amos.fas.business.dao.mapper.FireEquipMapper; import com.yeejoin.amos.fas.business.dao.mapper.FireEquipMapper;
import com.yeejoin.amos.fas.business.dao.mapper.FireEquipPointMapper; import com.yeejoin.amos.fas.business.dao.mapper.FireEquipPointMapper;
import com.yeejoin.amos.fas.business.dao.mapper.WaterResourceMapper;
import com.yeejoin.amos.fas.business.entity.mybatis.FireEquipmentEntity; import com.yeejoin.amos.fas.business.entity.mybatis.FireEquipmentEntity;
import com.yeejoin.amos.fas.business.entity.mybatis.FireEquipmentPointEntity; import com.yeejoin.amos.fas.business.entity.mybatis.FireEquipmentPointEntity;
import com.yeejoin.amos.fas.business.param.FireEquipmentParam; import com.yeejoin.amos.fas.business.param.FireEquipmentParam;
import com.yeejoin.amos.fas.business.param.FireEquipmentPointParam; import com.yeejoin.amos.fas.business.param.FireEquipmentPointParam;
import com.yeejoin.amos.fas.business.param.WaterResourceParam;
import com.yeejoin.amos.fas.business.service.intfc.IExcelService; import com.yeejoin.amos.fas.business.service.intfc.IExcelService;
import com.yeejoin.amos.fas.business.service.intfc.IFireEquipPontService; import com.yeejoin.amos.fas.business.service.intfc.IFireEquipPontService;
import com.yeejoin.amos.fas.dao.entity.WaterResource;
import com.yeejoin.amos.op.core.common.response.CommonResponse; import com.yeejoin.amos.op.core.common.response.CommonResponse;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -34,7 +37,10 @@ public class ExcelServiceImpl implements IExcelService { ...@@ -34,7 +37,10 @@ public class ExcelServiceImpl implements IExcelService {
private FireEquipPointMapper fireEquipPointMapper; private FireEquipPointMapper fireEquipPointMapper;
@Autowired @Autowired
private IFireEquipPontService fireEquipPontService; private IFireEquipPontService fireEquipPointService;
@Autowired
private WaterResourceMapper waterResourceMapper;
@Transactional @Transactional
@Override @Override
...@@ -101,7 +107,7 @@ public class ExcelServiceImpl implements IExcelService { ...@@ -101,7 +107,7 @@ public class ExcelServiceImpl implements IExcelService {
@Override @Override
public List<?> exportPointData(Map<String, Object> paramsMap) { public List<?> exportPointData(Map<String, Object> paramsMap) {
CommonResponse result = fireEquipPontService.queryByMap(paramsMap); CommonResponse result = fireEquipPointService.queryByMap(paramsMap);
List<FireEquipmentPointEntity> fireEquipmentPoints = ((PageImpl) result.getDataList()).getContent(); List<FireEquipmentPointEntity> fireEquipmentPoints = ((PageImpl) result.getDataList()).getContent();
List<FireEquipmentPointParam> pointExcelList = new ArrayList<>(); List<FireEquipmentPointParam> pointExcelList = new ArrayList<>();
for (FireEquipmentPointEntity point : fireEquipmentPoints) { for (FireEquipmentPointEntity point : fireEquipmentPoints) {
...@@ -111,4 +117,30 @@ public class ExcelServiceImpl implements IExcelService { ...@@ -111,4 +117,30 @@ public class ExcelServiceImpl implements IExcelService {
} }
return pointExcelList; return pointExcelList;
} }
@Override
public void importWaterResource(List<WaterResourceParam> list) {
List<String> codeList = Lists.transform(list, WaterResourceParam::getCode);
Set<String> codeSet = Sets.newHashSet(codeList);
List<WaterResource> waterResources = waterResourceMapper.listByCodes(codeSet);
Map<String, WaterResource> waterResourceMap = Maps.uniqueIndex(waterResources, WaterResource::getCode);
List<WaterResourceParam> saveList = Lists.newArrayList();
List<WaterResourceParam> updateList = Lists.newArrayList();
list.forEach(warerRes -> {
String code = warerRes.getCode();
WaterResource waterResource = waterResourceMap.get(code);
if (waterResource == null) {
saveList.add(warerRes);
} else {
warerRes.setId(waterResource.getId());
updateList.add(warerRes);
}
});
if (!CollectionUtils.isEmpty(saveList)) {
waterResourceMapper.saveBatch(saveList);
}
if (!CollectionUtils.isEmpty(updateList)) {
waterResourceMapper.updateBatch(updateList);
}
}
} }
...@@ -2,6 +2,7 @@ package com.yeejoin.amos.fas.business.service.intfc; ...@@ -2,6 +2,7 @@ package com.yeejoin.amos.fas.business.service.intfc;
import com.yeejoin.amos.fas.business.param.FireEquipmentParam; import com.yeejoin.amos.fas.business.param.FireEquipmentParam;
import com.yeejoin.amos.fas.business.param.FireEquipmentPointParam; import com.yeejoin.amos.fas.business.param.FireEquipmentPointParam;
import com.yeejoin.amos.fas.business.param.WaterResourceParam;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -13,4 +14,6 @@ public interface IExcelService { ...@@ -13,4 +14,6 @@ public interface IExcelService {
void importFireEquipmentPoint(List<FireEquipmentPointParam> list); void importFireEquipmentPoint(List<FireEquipmentPointParam> list);
List<?> exportPointData(Map<String, Object> paramsMap); List<?> exportPointData(Map<String, Object> paramsMap);
void importWaterResource(List<WaterResourceParam> list);
} }
...@@ -103,5 +103,89 @@ ...@@ -103,5 +103,89 @@
LIMIT ${start}, ${length}; LIMIT ${start}, ${length};
</select> </select>
<select id="listByCodes" resultType="com.yeejoin.amos.fas.dao.entity.WaterResource">
select
id,
code,
name
from
f_water_resource
where
code in
<foreach collection="codes" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<insert id="saveBatch" keyColumn="id" keyProperty="id"
parameterType="com.yeejoin.amos.fas.business.param.WaterResourceParam"
useGeneratedKeys="true">
insert into f_water_resource
(
`name`,
`code`,
`type`,
`floor3d`,
`room`,
`address`,
`position3d`,
`org_code`,
`is_indoor`,
`risk_source_id`
)
values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.name},
#{item.code},
#{item.type},
#{item.floor3d},
#{item.room},
#{item.address},
#{item.position3d},
#{item.orgCode},
#{item.isIndoor},
#{item.riskSourceId}
)
</foreach>
</insert>
<update id="updateBatch">
<foreach collection="list" item="item" index="index" separator=";">
update f_water_resource
<set>
<if test="item.orgCode != null">
org_code = #{item.orgCode},
</if>
<if test="item.code != null">
code = #{item.code},
</if>
<if test="item.type != null">
type = #{item.type},
</if>
<if test="item.position3d != null">
position3d = #{item.position3d},
</if>
<if test="item.floor3d != null">
floor3d = #{item.floor3d},
</if>
<if test="item.isIndoor != null">
is_indoor = #{item.isIndoor},
</if>
<if test="item.name != null">
name = #{item.name},
</if>
<if test="item.room != null">
room = #{item.room},
</if>
<if test="item.address != null">
address = #{item.address},
</if>
<if test="item.riskSourceId != null">
risk_source_id = #{item.riskSourceId},
</if>
</set>
where id = #{item.id}
</foreach>
</update>
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment