修改图片上传方式为Sftp 导出没有调通
parent
5197b10d4e
commit
c6ea9844ca
|
@ -140,7 +140,7 @@ public class AccidentRecordsController extends BaseController {
|
|||
* @return 是否成功
|
||||
*/
|
||||
@RequestMapping("/import/photos")
|
||||
public Map<String, Object> importPhotos(@RequestParam MultipartFile file) {
|
||||
public Map<String, Object> importPhotos(@RequestParam("file") MultipartFile file) {
|
||||
if (file == null || file.isEmpty()) {
|
||||
throw new RuntimeException("文件不能为空");
|
||||
}
|
||||
|
@ -153,11 +153,12 @@ public class AccidentRecordsController extends BaseController {
|
|||
/**
|
||||
* 删除图片
|
||||
*
|
||||
* @param path 文件路径
|
||||
* @param request 请求参数
|
||||
* @return 是否成功
|
||||
*/
|
||||
@RequestMapping("/delete/photos/{path}")
|
||||
public Map<String, Object> deletePhotos(@PathVariable("path") String path) {
|
||||
@RequestMapping("/delete/photos")
|
||||
public Map<String, Object> deletePhotos(HttpServletRequest request) {
|
||||
String path = new PageData(request).getString("path");
|
||||
if (StrUtil.isEmpty(path)) {
|
||||
throw new RuntimeException("路径不能为空");
|
||||
}
|
||||
|
@ -166,18 +167,4 @@ public class AccidentRecordsController extends BaseController {
|
|||
result.put("result", "success"); // 路径
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查看图片
|
||||
*
|
||||
* @param path 路径
|
||||
* @param response 响应
|
||||
*/
|
||||
@RequestMapping("/view/photos/{path}")
|
||||
public void viewPhotos(@PathVariable("path") String path, HttpServletResponse response) {
|
||||
if (StrUtil.isEmpty(path)) {
|
||||
throw new RuntimeException("路径不能为空");
|
||||
}
|
||||
accidentRecordsService.viewPhotos(path, response);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,8 +2,8 @@ package com.zcloud.entity.accident;
|
|||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.zcloud.entity.PageData;
|
||||
import com.zcloud.entity.accident.dto.AccidentRecordsExcel;
|
||||
import com.zcloud.entity.system.Dictionaries;
|
||||
import com.zcloud.service.system.DictionariesService;
|
||||
import com.zcloud.util.Jurisdiction;
|
||||
import lombok.Data;
|
||||
|
@ -15,8 +15,8 @@ import javax.validation.constraints.Size;
|
|||
import java.io.Serializable;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Optional;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
* 事故记录表
|
||||
|
@ -171,13 +171,13 @@ public class AccidentRecords implements Serializable {
|
|||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public AccidentRecords(AccidentRecordsExcel reader, DictionariesService service) throws RuntimeException {
|
||||
public AccidentRecords(AccidentRecordsExcel reader, DictionariesService service) throws Exception {
|
||||
this.id = IdUtil.getSnowflake(1, 1).nextId();
|
||||
this.corpinfoId = reader.getCompanyName();
|
||||
this.incidentNumber = reader.getIncidentNumber();
|
||||
this.incidentName = reader.getIncidentName();
|
||||
this.incidentType = findByName(reader.getIncidentType(), service);
|
||||
this.incidentLevel = findByName(reader.getIncidentLevel(), service);
|
||||
this.incidentType = findByName(reader.getIncidentType(), service, "8d4140a900184b60836ad1a6490fd510");
|
||||
this.incidentLevel = findByName(reader.getIncidentLevel(), service, "b61a1edc59c0430c8741c5f51aa26c3c");
|
||||
this.incidentNature = reader.getIncidentNature();
|
||||
this.location = reader.getLocation();
|
||||
this.incidentDate = dateFormat(reader.getIncidentDate());
|
||||
|
@ -196,22 +196,23 @@ public class AccidentRecords implements Serializable {
|
|||
this.createdTime = new Date();
|
||||
}
|
||||
|
||||
private String findByName(String name, DictionariesService service) {
|
||||
if (StrUtil.isEmpty(name)) {
|
||||
// 缓存字典 避免频繁请求数据库
|
||||
public static final Map<String, List<Dictionaries>> dictMap = new ConcurrentHashMap<>();
|
||||
|
||||
private String findByName(String bianma, DictionariesService service, String parentId) throws Exception {
|
||||
if (StrUtil.isEmpty(bianma)) {
|
||||
return null;
|
||||
}
|
||||
PageData pageData = new PageData();
|
||||
pageData.put("NAME", name);
|
||||
try {
|
||||
PageData data = service.findByName(pageData);
|
||||
return Optional.ofNullable(data).map(pd -> pd.getString("BIANMA")).orElseThrow(() -> new RuntimeException("未找到字典数据:" + name));
|
||||
} catch (RuntimeException e) {
|
||||
log.error("转换字典失败", e);
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
log.error("获取字典失败", e);
|
||||
throw new RuntimeException("获取字典失败");
|
||||
|
||||
if (dictMap.containsKey(parentId)) {
|
||||
Optional<Dictionaries> optional = dictMap.get(parentId).stream().filter(d -> d.getBIANMA().equals(bianma)).findAny();
|
||||
return optional.map(Dictionaries::getDICTIONARIES_ID).orElse(null);
|
||||
}
|
||||
List<Dictionaries> dict = service.listSubDictByParentId(parentId);
|
||||
dict = dict == null ? new ArrayList<>() : dict;
|
||||
dictMap.put(parentId, dict);
|
||||
return dict.stream().filter(d -> d != null && d.getBIANMA().equals(bianma))
|
||||
.findAny().map(Dictionaries::getDICTIONARIES_ID).orElse(null);
|
||||
}
|
||||
|
||||
private Date dateFormat(String dateStr) {
|
||||
|
|
|
@ -70,14 +70,6 @@ public interface AccidentRecordsService {
|
|||
*/
|
||||
String importPhotos(MultipartFile file);
|
||||
|
||||
/**
|
||||
* 查看图片
|
||||
*
|
||||
* @param path 路径
|
||||
* @param response 响应
|
||||
*/
|
||||
void viewPhotos(String path, HttpServletResponse response);
|
||||
|
||||
/**
|
||||
* 删除图片
|
||||
*
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
package com.zcloud.service.accident.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.*;
|
||||
import cn.hutool.extra.servlet.ServletUtil;
|
||||
import cn.hutool.poi.excel.ExcelReader;
|
||||
import cn.hutool.poi.excel.ExcelUtil;
|
||||
import cn.hutool.poi.excel.ExcelWriter;
|
||||
|
@ -16,11 +14,11 @@ import com.zcloud.entity.accident.ExcelValue;
|
|||
import com.zcloud.entity.accident.dto.AccidentRecordsExcel;
|
||||
import com.zcloud.mapper.datasource.accident.AccidentRecordsMapper;
|
||||
import com.zcloud.service.accident.AccidentRecordsService;
|
||||
import com.zcloud.service.bus.ImgFilesService;
|
||||
import com.zcloud.service.system.DictionariesService;
|
||||
import com.zcloud.util.Jurisdiction;
|
||||
import com.zcloud.util.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
import org.apache.ibatis.session.ExecutorType;
|
||||
import org.apache.ibatis.session.SqlSession;
|
||||
|
@ -31,8 +29,9 @@ import org.springframework.web.multipart.MultipartFile;
|
|||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.lang.reflect.Field;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneOffset;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
@ -48,6 +47,7 @@ public class AccidentRecordsServiceImpl implements AccidentRecordsService {
|
|||
private final SqlSessionFactory sqlSessionFactory;
|
||||
private final DictionariesService dictionariesService;
|
||||
private static final Map<String, String> HEADER_ALIAS_CACHE;
|
||||
private final ImgFilesService imgFilesService;
|
||||
|
||||
static {
|
||||
HEADER_ALIAS_CACHE = Arrays.stream(ReflectUtil.getFields(AccidentRecordsExcel.class))
|
||||
|
@ -72,7 +72,8 @@ public class AccidentRecordsServiceImpl implements AccidentRecordsService {
|
|||
public void save(AccidentRecords accidentRecords) {
|
||||
accidentRecords.setId(IdUtil.getSnowflake(1, 1).nextId());
|
||||
accidentRecords.setCreatedBy(Jurisdiction.getUsername());
|
||||
accidentRecords.setCreatedTime(new Date());
|
||||
Date date = Date.from(LocalDateTime.now().toInstant(ZoneOffset.of("+08:00")));
|
||||
accidentRecords.setCreatedTime(date);
|
||||
accidentRecords.setIsDeleted(0);
|
||||
String corpinfoId = StrUtil.isEmpty(accidentRecords.getCorpinfoId()) ? Jurisdiction.getCORPINFO_ID() : accidentRecords.getCorpinfoId();
|
||||
accidentRecords.setCorpinfoId(corpinfoId);
|
||||
|
@ -83,7 +84,8 @@ public class AccidentRecordsServiceImpl implements AccidentRecordsService {
|
|||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(AccidentRecords accidentRecords) {
|
||||
accidentRecords.setUpdatedBy(Jurisdiction.getUsername());
|
||||
accidentRecords.setUpdatedTime(new Date());
|
||||
Date date = Date.from(LocalDateTime.now().toInstant(ZoneOffset.of("+08:00")));
|
||||
accidentRecords.setUpdatedTime(date);
|
||||
String corpinfoId = StrUtil.isEmpty(accidentRecords.getCorpinfoId()) ? Jurisdiction.getCORPINFO_ID() : accidentRecords.getCorpinfoId();
|
||||
accidentRecords.setCorpinfoId(corpinfoId);
|
||||
Assert.isTrue(accidentRecordsMapper.updateById(accidentRecords) == 1, "更新事故记录失败");
|
||||
|
@ -141,6 +143,8 @@ public class AccidentRecordsServiceImpl implements AccidentRecordsService {
|
|||
sqlSession.flushStatements();
|
||||
}
|
||||
}
|
||||
// 避免刷新数据字典不生效 每次导出重新查询字典
|
||||
AccidentRecords.dictMap.clear();
|
||||
sqlSession.commit();
|
||||
} catch (RuntimeException e) {
|
||||
if (sqlSession != null) {
|
||||
|
@ -161,27 +165,29 @@ public class AccidentRecordsServiceImpl implements AccidentRecordsService {
|
|||
|
||||
@Override
|
||||
public String importPhotos(MultipartFile file) {
|
||||
String fileName = StrUtil.format("{}.{}", IdUtil.getSnowflake(1, 1).nextId(),
|
||||
FilenameUtils.getExtension(file.getOriginalFilename()));
|
||||
try (InputStream inputStream = file.getInputStream()) {
|
||||
FileUtils.copyInputStreamToFile(inputStream, FileUtil.touch("./image/" + fileName));
|
||||
return "./image/" + fileName;
|
||||
} catch (IOException e) {
|
||||
String fileName = UuidUtil.get32UUID() + "." + FilenameUtils.getExtension(file.getOriginalFilename());
|
||||
PageData pd = new PageData();
|
||||
pd.put("IMGFILES_ID", UuidUtil.get32UUID());
|
||||
pd.put("FOREIGN_KEY", UuidUtil.get32UUID());
|
||||
pd.put("TYPE", 117);
|
||||
try {
|
||||
String path = Const.FILEPATHFILE + UuidUtil.get32UUID() + "/" + DateUtil.getDays();
|
||||
Smb.sshSftp(file, fileName, path);
|
||||
pd.put("FILEPATH", path + "/" + fileName);
|
||||
imgFilesService.save(pd);
|
||||
return pd.getString("FILEPATH");
|
||||
} catch (Exception e) {
|
||||
log.error("导入图片失败", e);
|
||||
throw new RuntimeException("导入图片失败");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void viewPhotos(String path, HttpServletResponse response) {
|
||||
if (!FileUtil.exist(path)) {
|
||||
throw new RuntimeException("图片不存在");
|
||||
}
|
||||
ServletUtil.write(response, FileUtil.touch(path));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deletePhotos(String path) {
|
||||
FileUtil.del("./image/" + path);
|
||||
try {
|
||||
Smb.deleteFile(path);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("图片删除失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<mapper namespace="com.zcloud.mapper.datasource.accident.AccidentRecordsMapper">
|
||||
|
||||
<select id="listPage" parameterType="com.zcloud.entity.Page" resultType="pd">
|
||||
select id, CORP_NAME as companyName, location, date_format(incident_date,'%Y-%m-%d %H:%I:%s') as 'incidentDate', incident_name as 'incidentName'
|
||||
select cast(accident_id AS CHAR) as id, CORP_NAME as companyName, location, date_format(incident_date,'%Y-%m-%d %H:%I:%s') as 'incidentDate', incident_name as 'incidentName'
|
||||
from accident_records as ar
|
||||
left join bus_corp_info as bci on ar.corpinfo_id = bci.CORPINFO_ID
|
||||
<where>
|
||||
|
@ -33,10 +33,10 @@
|
|||
</select>
|
||||
|
||||
<select id="getById" resultType="com.zcloud.entity.PageData">
|
||||
select id,
|
||||
select cast(accident_id AS CHAR) as id,
|
||||
incident_number as incidentNumber,
|
||||
incident_name as incidentName,
|
||||
incident_type as incidentName,
|
||||
incident_type as incidentType,
|
||||
incident_level as incidentLevel,
|
||||
CORP_NAME as companyName,
|
||||
incident_nature as incidentNature,
|
||||
|
@ -56,7 +56,7 @@
|
|||
report_date as reportDate
|
||||
from accident_records as ar
|
||||
left join bus_corp_info as bci on ar.corpinfo_id = bci.CORPINFO_ID
|
||||
where ar.id = #{id}
|
||||
where ar.accident_id = #{id}
|
||||
and ar.is_deleted = 0;
|
||||
</select>
|
||||
|
||||
|
@ -64,7 +64,7 @@
|
|||
insert into accident_records
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="id != null">
|
||||
id,
|
||||
accident_id,
|
||||
</if>
|
||||
<if test="incidentNumber != null">
|
||||
incident_number,
|
||||
|
@ -145,7 +145,7 @@
|
|||
values
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="id != null">
|
||||
id,
|
||||
#{id},
|
||||
</if>
|
||||
<if test="incidentNumber != null">
|
||||
#{incidentNumber},
|
||||
|
@ -254,14 +254,14 @@
|
|||
<if test="updatedTime != null">updated_time = #{updatedTime},</if>
|
||||
<if test="isDeleted != null">is_deleted = #{isDeleted}</if>
|
||||
</set>
|
||||
WHERE id = #{id} and is_deleted = 0
|
||||
WHERE accident_id = #{id} and is_deleted = 0
|
||||
</update>
|
||||
|
||||
<update id="delete">
|
||||
update accident_records
|
||||
set is_deleted = 1
|
||||
where
|
||||
id IN
|
||||
accident_id IN
|
||||
<foreach item="item" index="index" collection="ids" open="(" separator="," close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
|
@ -270,10 +270,10 @@
|
|||
<select id="listExcel" resultType="com.zcloud.entity.accident.dto.AccidentRecordsExcel">
|
||||
select incident_number,
|
||||
incident_name,
|
||||
(select NAME from sys_dictionaries_corp
|
||||
where DICTIONARIES_ID = '' and incident_type = BIANMA) as 'incidentType',
|
||||
(select NAME from sys_dictionaries_corp
|
||||
where DICTIONARIES_ID = '' and incident_level = BIANMA) as 'incidentLevel',
|
||||
(select NAME from sys_dictionaries
|
||||
where DICTIONARIES_ID = '8d4140a900184b60836ad1a6490fd510' and BIANMA = incident_type) as 'incidentType',
|
||||
(select NAME from sys_dictionaries
|
||||
where DICTIONARIES_ID = 'b61a1edc59c0430c8741c5f51aa26c3c' and BIANMA = incident_level) as 'incidentLevel',
|
||||
CORP_NAME as 'companyName',
|
||||
incident_nature ,
|
||||
`location`,
|
||||
|
|
Loading…
Reference in New Issue