Browse Source

QMS增加文件上传下载相关

master
赵宏斌 8 months ago
parent
commit
9ddd3a0d77
  1. 4
      src/main/java/com/heai/modules/oss/dao/SysOssDao.java
  2. 3
      src/main/java/com/heai/modules/oss/entity/SysOssEntity.java
  3. 10
      src/main/java/com/heai/modules/pms/controller/QcController.java
  4. 54
      src/main/java/com/heai/modules/pms/service/Impl/QcServiceImpl.java
  5. 2
      src/main/java/com/heai/modules/pms/service/QcService.java
  6. 64
      src/main/java/com/heai/modules/sys/controller/SysFileController.java
  7. 35
      src/main/java/com/heai/modules/sys/service/SysFileService.java
  8. 170
      src/main/java/com/heai/modules/sys/service/impl/SysFileServiceImpl.java
  9. 57
      src/main/resources/mapper/oss/SysOssDao.xml

4
src/main/java/com/heai/modules/oss/dao/SysOssDao.java

@ -37,4 +37,8 @@ public interface SysOssDao extends BaseMapper<SysOssEntity> {
*/
List<SysOssEntity> getFileData(Integer id);
List<SysOssEntity> getSysFileByOrderRef2(SysOssEntity inData);
List<SysOssEntity> searchPartSopListFather(SysOssEntity inData);
}

3
src/main/java/com/heai/modules/oss/entity/SysOssEntity.java

@ -63,4 +63,7 @@ public class SysOssEntity extends QueryPage implements Serializable {
@TableField(exist = false)
private int page;
@TableField(exist = false)
private String sopType;
}

10
src/main/java/com/heai/modules/pms/controller/QcController.java

@ -1665,11 +1665,11 @@ public class QcController {
* @param: [data]
* @return: com.heai.common.utils.R
**/
// @PostMapping("/searchItemFileUrl")
// public R searchItemFileUrl(@RequestBody QcFAIRecordData data){
// List<SysOssEntity> list = qcService.searchItemFileUrl(data);
// return R.ok().put("rows", list);
// }
@PostMapping("/searchItemFileUrl")
public R searchItemFileUrl(@RequestBody QcFAIRecordData data){
List<SysOssEntity> list = qcService.searchItemFileUrl(data);
return R.ok().put("rows", list);
}
/**
* @description: 删除图片

54
src/main/java/com/heai/modules/pms/service/Impl/QcServiceImpl.java

@ -74,8 +74,8 @@ public class QcServiceImpl implements QcService {
@Autowired
private SysOssDao sysOssDao;
// @Value("${sys-file.oss-url}")
// private String ossUrl;
@Value("${sys-file.oss-url}")
private String ossUrl;
@Value("${sys-file.file-path}")
private String filePath;
@ -1872,11 +1872,11 @@ public class QcServiceImpl implements QcService {
qcMapper.updateFAISubDetailSubmitFlag(qcData);
// 发送邮件
if ("不合格".equals(qcData.getInspectionResult())) {
List<QcFAIRecordData> list = qcMapper.faiDetailSearch(qcData);
qcData.setItemList(list);
sendMail(qcData, "FAI");
}
// if ("不合格".equals(qcData.getInspectionResult())) {
// List<QcFAIRecordData> list = qcMapper.faiDetailSearch(qcData);
// qcData.setItemList(list);
// sendMail(qcData, "FAI");
// }
}
}
@ -2207,11 +2207,11 @@ public class QcServiceImpl implements QcService {
qcMapper.updateFQCSubDetailSubmitFlag(qcData);
// 发送邮件
if ("不合格".equals(qcData.getInspectionResult())) {
List<QcFAIRecordData> list = qcMapper.fqcDetailSearch(qcData);
qcData.setItemList(list);
sendMail(qcData, "FQC");
}
// if ("不合格".equals(qcData.getInspectionResult())) {
// List<QcFAIRecordData> list = qcMapper.fqcDetailSearch(qcData);
// qcData.setItemList(list);
// sendMail(qcData, "FQC");
// }
}
}
@ -2571,11 +2571,11 @@ public class QcServiceImpl implements QcService {
qcMapper.updateIPQCSubDetailSubmitFlag(qcData);
// 发送邮件
if ("不合格".equals(qcData.getInspectionResult())) {
List<QcFAIRecordData> list = qcMapper.ipqcDetailSearch(qcData);
qcData.setItemList(list);
sendMail(qcData, "IPQC");
}
// if ("不合格".equals(qcData.getInspectionResult())) {
// List<QcFAIRecordData> list = qcMapper.ipqcDetailSearch(qcData);
// qcData.setItemList(list);
// sendMail(qcData, "IPQC");
// }
}
}
@ -3661,16 +3661,16 @@ public class QcServiceImpl implements QcService {
/**
* 查询文件路径
**/
// @Override
// public List<SysOssEntity> searchItemFileUrl(QcFAIRecordData data) {
// List<SysOssEntity> list = qcMapper.searchItemFileUrl(data);
// for (int i = 0; i < list.size(); i++) {
// String s = list.get(i).getUrl().replaceAll("\\\\", "/");
// String s1 = s.replace("D:/", ossUrl).replaceAll("#", "%23").replaceAll(" ", "%20");
// list.get(i).setUrl(s1);
// }
// return list;
// }
@Override
public List<SysOssEntity> searchItemFileUrl(QcFAIRecordData data) {
List<SysOssEntity> list = qcMapper.searchItemFileUrl(data);
for (int i = 0; i < list.size(); i++) {
String s = list.get(i).getUrl().replaceAll("\\\\", "/");
String s1 = s.replace("D:/", ossUrl).replaceAll("#", "%23").replaceAll(" ", "%20");
list.get(i).setUrl(s1);
}
return list;
}
/**
* 删除图片

2
src/main/java/com/heai/modules/pms/service/QcService.java

@ -248,7 +248,7 @@ public interface QcService {
void qcPartAttributeEdit(QcPartAttributeData data);
// List<SysOssEntity> searchItemFileUrl(QcFAIRecordData data);
List<SysOssEntity> searchItemFileUrl(QcFAIRecordData data);
void imageDelete(SysOssEntity data);

64
src/main/java/com/heai/modules/sys/controller/SysFileController.java

@ -0,0 +1,64 @@
package com.heai.modules.sys.controller;
import com.heai.common.utils.R;
import com.heai.modules.oss.entity.SysOssEntity;
import com.heai.modules.pms.data.GetParamInData;
import com.heai.modules.sys.service.SysFileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
* 文件管理的功能
*
*
*/
@RestController
@RequestMapping("/sys/file")
public class SysFileController extends AbstractController {
@Autowired
private SysFileService sysFileService;
/**
* @description: 文件上传
* @author LR
* @date 2023/3/1 15:27
* @version 1.0
*/
@PostMapping("/upload")
public R upload(@RequestParam("file") MultipartFile[] list, @ModelAttribute GetParamInData inData){
List<SysOssEntity> ossEntity = sysFileService.upload(list, inData);
return R.ok().put("ossEntity", ossEntity);
}
/**
* @description: 按照orderRef1的查询
* @author LR
* @date 2023/3/3 10:48
* @version 1.0
*/
@PostMapping("/getSysFileByOrderRef2")
public R getSysFileByOrderRef2(@RequestBody SysOssEntity inData){
List<SysOssEntity> resultList = sysFileService.getSysFileByOrderRef2(inData);
return R.ok()
.put("code", 200)
.put("rows", resultList)
.put("total", resultList.size())
.put("msg", "操作成功!");
}
/**
* 获取检验单文件
* @param inData
* @return
*/
@PostMapping("/getInspectionFile")
public R getInspectionFile(@RequestBody SysOssEntity inData){
List<SysOssEntity> resultList = sysFileService.getInspectionFile(inData);
return R.ok().put("rows", resultList);
}
}

35
src/main/java/com/heai/modules/sys/service/SysFileService.java

@ -0,0 +1,35 @@
package com.heai.modules.sys.service;
import com.heai.modules.oss.entity.SysOssEntity;
import com.heai.modules.pms.data.GetParamInData;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
* @description: 文件上传接口
* @author LR
* @date 2023/3/1 15:53
* @version 1.0
*/
public interface SysFileService {
/**
* @description: 系统文件上传
* @author LR
* @date 2023/3/1 15:57
* @version 1.0
*/
List<SysOssEntity> upload(MultipartFile[] list, GetParamInData inData);
/**
* @description: 按照orderRef1查询文件文件参数
* @author LR
* @date 2023/3/3 10:50
* @version 1.0
*/
List<SysOssEntity> getSysFileByOrderRef2(SysOssEntity inData);
List<SysOssEntity> getInspectionFile(SysOssEntity inData);
}

170
src/main/java/com/heai/modules/sys/service/impl/SysFileServiceImpl.java

@ -0,0 +1,170 @@
package com.heai.modules.sys.service.impl;
import com.heai.common.exception.XJException;
import com.heai.common.utils.DateUtils;
import com.heai.common.utils.RandomUtil;
import com.heai.modules.oss.dao.SysOssDao;
import com.heai.modules.oss.entity.SysOssEntity;
import com.heai.modules.oss.service.SysOssService;
import com.heai.modules.pms.data.GetParamInData;
import com.heai.modules.sys.entity.SysUserEntity;
import com.heai.modules.sys.service.SysFileService;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* @description: 处理文件上传接口实现
* @author LR
* @date 2023/3/1 15:54
* @version 1.0
*/
@Service
public class SysFileServiceImpl implements SysFileService {
@Autowired
private SysOssService sysOssService;
@Autowired
private SysOssDao sysOssDao;
@Value("${sys-file.file-path}")
private String filePath;
@Override
@Transactional
public List<SysOssEntity> upload(MultipartFile[] list, GetParamInData inData) {
if (Objects.isNull(list) || list.length == 0) {
throw new XJException("上传文件不能为空");
}
List<SysOssEntity> ossEntityList = new ArrayList<>();
for (MultipartFile file : list) {
//保存文件信息
SysOssEntity ossEntity = new SysOssEntity();
SysUserEntity user = getUser();
//处理文件后缀
int chartIndex = file.getOriginalFilename().lastIndexOf(".");
String suffix = "";
String fileName = "";
//判断是否存在
if(chartIndex > 0){
suffix = file.getOriginalFilename().substring(chartIndex);
fileName = file.getOriginalFilename().substring(0, chartIndex);
}
String newFileName = RandomUtil.getOrderNoByAtomic1("file") + suffix;
String basePath = filePath;
String baseDatePath = DateUtils.format(new Date());
File baseFilePath = new File(basePath + "\\" + baseDatePath + "\\" + inData.getFolder());
if (!baseFilePath.exists()) {
baseFilePath.mkdirs();
}
// 最终的目录
String finalFileName = baseFilePath.getPath()+"\\" + newFileName;
try {
baseFilePath = multipartFileToFile(file, finalFileName);
}catch (Exception e){
throw new XJException(e.getMessage());
}
ossEntity.setUrl(baseFilePath.getPath());
ossEntity.setCreatedBy(user.getUsername());
ossEntity.setFileType(suffix.substring(1));
ossEntity.setFileName(fileName+suffix);
ossEntity.setNewFileName(newFileName);
ossEntity.setCreateDate(new Date());
ossEntity.setOrderRef1(inData.getSite());
ossEntity.setOrderRef2(inData.getObjectID());
if ("reportFault".equals(inData.getFolder()) || "reportSparPart".equals(inData.getFolder())) {
ossEntity.setOrderRef3(inData.getFolder());
} else if ("DJItemImageFile".equals(inData.getFolder()) || "WBItemImageFile".equals(inData.getFolder()) || "IQCItemImageFile".equals(inData.getFolder()) || "IPQCItemImageFile".equals(inData.getFolder()) || "FAIItemImageFile".equals(inData.getFolder()) || "FQCItemImageFile".equals(inData.getFolder())) { // 点检和维保的项目图片上传
ossEntity.setOrderRef3(inData.getOrderRef1());
} else if ("eamObject".equals(inData.getFolder())) {
ossEntity.setOrderRef3(inData.getOrderRef3());
} else {
ossEntity.setOrderRef3(inData.getRemark());
}
ossEntity.setOrderRef4(inData.getOrderRef4());
sysOssService.save(ossEntity);
ossEntityList.add(ossEntity);
}
return ossEntityList;
}
@Override
public List<SysOssEntity> getSysFileByOrderRef2(SysOssEntity inData) {
return sysOssDao.getSysFileByOrderRef2(inData);
}
@Override
public List<SysOssEntity> getInspectionFile(SysOssEntity inData) {
List<SysOssEntity> files1 = sysOssDao.getSysFileByOrderRef2(inData);
// mes文件
// List<SysOssEntity> list = sysOssDao.searchPartSopListFather(inData);
// for (SysOssEntity p : list) {
// if (p.getSopType().equals("SOP-ST")) {
// p.setSopType("物料SOP");
// }
// // 正斜杠改为反斜杠
// p.setUrl(p.getUrl().replaceAll("/", "\\\\"));
// // 获取文件类型
// int lastDotIndex = p.getUrl().lastIndexOf('.');
// String fileType = p.getUrl().substring(lastDotIndex + 1);
// p.setFileName(p.getFileName() + "." + fileType);
// p.setFileType(fileType);
// }
// files1.addAll(list);
return files1;
}
protected SysUserEntity getUser() {
return (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
}
public static File multipartFileToFile(MultipartFile file ,String fileName) throws Exception {
File toFile = null;
if (file.equals("") || file.getSize() <= 0) {
file = null;
} else {
InputStream ins = null;
ins = file.getInputStream();
if(fileName != null && !"".equals(fileName)){
toFile = new File(fileName);
}else{
toFile = new File(file.getOriginalFilename());
}
inputStreamToFile(ins, toFile);
ins.close();
}
return toFile;
}
//获取流文件
private static void inputStreamToFile(InputStream ins, File file) {
try {
OutputStream os = new FileOutputStream(file);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
ins.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

57
src/main/resources/mapper/oss/SysOssDao.xml

@ -69,4 +69,61 @@
<select id="getFileData" resultType="com.heai.modules.oss.entity.SysOssEntity">
select url,file_name,new_file_name from sys_oss where id = #{id}
</select>
<select id="getSysFileByOrderRef2" resultType="com.heai.modules.oss.entity.SysOssEntity">
SELECT
id,
url,
create_date,
file_name,
new_file_name,
created_by,
order_ref1,
order_ref2,
order_ref3,
order_ref4,
file_type,
file_suffix,
file_type_code,
'' as orderReftype
FROM sys_oss
<where>
<if test="orderRef1 != '' and orderRef1 != null ">
and order_ref1 = #{orderRef1}
</if>
<if test="orderRef2 != '' and orderRef2 != null ">
and order_ref2 = #{orderRef2}
</if>
<if test="orderRef3 != '' and orderRef3 != null ">
and order_ref3 = #{orderRef3}
</if>
<if test="orderRef4 != '' and orderRef4 != null ">
and order_ref4 = #{orderRef4}
</if>
<if test="cAdditionalInfo != '' and cAdditionalInfo != null ">
and c_additional_info = #{cAdditionalInfo}
</if>
</where>
</select>
<select id="searchPartSopListFather" resultType="SysOssEntity" parameterType="SysOssEntity">
SELECT
s.id,
'G:' + s.sop_url as url,
s.sop_name as file_name,
s.site as orderRef1,
#{orderRef2} as order_ref2,
#{orderRef4} as order_ref4,
'mes' as orderReftype,
s.created_by,
s.creation_date as createDate,
s.sop_type
FROM dbo.getSOP_RootPartList(#{orderRef1}, #{partNo}) p, part_sop s
<where>
p.partNo = s.part_no
and p.site = #{orderRef1}
and ((s.sop_type <![CDATA[<>]]> 'TPI') or (s.sop_type='TPI' and GETDATE() >= s.phase_in_date and s.phase_out_date >= DATEADD(DAY, -1, GETDATE()) and s.part_no = #{partNo}))
AND s.sop_status = '下达'
Order by p.Levels, p.PartNo, (case when s.sop_type='TPI' then 0 when s.sop_type = 'SOP-ST' then 1 else 1 end)
</where>
</select>
</mapper>
Loading…
Cancel
Save