From 9ddd3a0d77c73114a757953c40dfd82496d28141 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=AE=8F=E6=96=8C?= <2164406372@qq.com> Date: Mon, 29 Dec 2025 16:42:53 +0800 Subject: [PATCH] =?UTF-8?q?QMS=E5=A2=9E=E5=8A=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E4=B8=8B=E8=BD=BD=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/heai/modules/oss/dao/SysOssDao.java | 4 + .../heai/modules/oss/entity/SysOssEntity.java | 3 + .../modules/pms/controller/QcController.java | 10 +- .../pms/service/Impl/QcServiceImpl.java | 54 +++--- .../heai/modules/pms/service/QcService.java | 2 +- .../sys/controller/SysFileController.java | 64 +++++++ .../modules/sys/service/SysFileService.java | 35 ++++ .../sys/service/impl/SysFileServiceImpl.java | 170 ++++++++++++++++++ src/main/resources/mapper/oss/SysOssDao.xml | 57 ++++++ 9 files changed, 366 insertions(+), 33 deletions(-) create mode 100644 src/main/java/com/heai/modules/sys/controller/SysFileController.java create mode 100644 src/main/java/com/heai/modules/sys/service/SysFileService.java create mode 100644 src/main/java/com/heai/modules/sys/service/impl/SysFileServiceImpl.java diff --git a/src/main/java/com/heai/modules/oss/dao/SysOssDao.java b/src/main/java/com/heai/modules/oss/dao/SysOssDao.java index 1dc5d86..21542e9 100644 --- a/src/main/java/com/heai/modules/oss/dao/SysOssDao.java +++ b/src/main/java/com/heai/modules/oss/dao/SysOssDao.java @@ -37,4 +37,8 @@ public interface SysOssDao extends BaseMapper { */ List getFileData(Integer id); + List getSysFileByOrderRef2(SysOssEntity inData); + + List searchPartSopListFather(SysOssEntity inData); + } diff --git a/src/main/java/com/heai/modules/oss/entity/SysOssEntity.java b/src/main/java/com/heai/modules/oss/entity/SysOssEntity.java index ab55985..1690a5f 100644 --- a/src/main/java/com/heai/modules/oss/entity/SysOssEntity.java +++ b/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; + } diff --git a/src/main/java/com/heai/modules/pms/controller/QcController.java b/src/main/java/com/heai/modules/pms/controller/QcController.java index 05e946b..85b1f47 100644 --- a/src/main/java/com/heai/modules/pms/controller/QcController.java +++ b/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 list = qcService.searchItemFileUrl(data); -// return R.ok().put("rows", list); -// } + @PostMapping("/searchItemFileUrl") + public R searchItemFileUrl(@RequestBody QcFAIRecordData data){ + List list = qcService.searchItemFileUrl(data); + return R.ok().put("rows", list); + } /** * @description: 删除图片 diff --git a/src/main/java/com/heai/modules/pms/service/Impl/QcServiceImpl.java b/src/main/java/com/heai/modules/pms/service/Impl/QcServiceImpl.java index 6209629..4f26b12 100644 --- a/src/main/java/com/heai/modules/pms/service/Impl/QcServiceImpl.java +++ b/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 list = qcMapper.faiDetailSearch(qcData); - qcData.setItemList(list); - sendMail(qcData, "FAI"); - } +// if ("不合格".equals(qcData.getInspectionResult())) { +// List 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 list = qcMapper.fqcDetailSearch(qcData); - qcData.setItemList(list); - sendMail(qcData, "FQC"); - } +// if ("不合格".equals(qcData.getInspectionResult())) { +// List 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 list = qcMapper.ipqcDetailSearch(qcData); - qcData.setItemList(list); - sendMail(qcData, "IPQC"); - } +// if ("不合格".equals(qcData.getInspectionResult())) { +// List list = qcMapper.ipqcDetailSearch(qcData); +// qcData.setItemList(list); +// sendMail(qcData, "IPQC"); +// } } } @@ -3661,16 +3661,16 @@ public class QcServiceImpl implements QcService { /** * 查询文件路径 **/ -// @Override -// public List searchItemFileUrl(QcFAIRecordData data) { -// List 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 searchItemFileUrl(QcFAIRecordData data) { + List 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; + } /** * 删除图片 diff --git a/src/main/java/com/heai/modules/pms/service/QcService.java b/src/main/java/com/heai/modules/pms/service/QcService.java index 5aad90f..0d5b4bc 100644 --- a/src/main/java/com/heai/modules/pms/service/QcService.java +++ b/src/main/java/com/heai/modules/pms/service/QcService.java @@ -248,7 +248,7 @@ public interface QcService { void qcPartAttributeEdit(QcPartAttributeData data); -// List searchItemFileUrl(QcFAIRecordData data); + List searchItemFileUrl(QcFAIRecordData data); void imageDelete(SysOssEntity data); diff --git a/src/main/java/com/heai/modules/sys/controller/SysFileController.java b/src/main/java/com/heai/modules/sys/controller/SysFileController.java new file mode 100644 index 0000000..d4ae58f --- /dev/null +++ b/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 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 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 resultList = sysFileService.getInspectionFile(inData); + return R.ok().put("rows", resultList); + } +} diff --git a/src/main/java/com/heai/modules/sys/service/SysFileService.java b/src/main/java/com/heai/modules/sys/service/SysFileService.java new file mode 100644 index 0000000..6e4044e --- /dev/null +++ b/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 upload(MultipartFile[] list, GetParamInData inData); + + /** + * @description: 按照orderRef1查询文件文件参数 + * @author LR + * @date 2023/3/3 10:50 + * @version 1.0 + */ + List getSysFileByOrderRef2(SysOssEntity inData); + + List getInspectionFile(SysOssEntity inData); +} diff --git a/src/main/java/com/heai/modules/sys/service/impl/SysFileServiceImpl.java b/src/main/java/com/heai/modules/sys/service/impl/SysFileServiceImpl.java new file mode 100644 index 0000000..5af2944 --- /dev/null +++ b/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 upload(MultipartFile[] list, GetParamInData inData) { + if (Objects.isNull(list) || list.length == 0) { + throw new XJException("上传文件不能为空"); + } + List 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 getSysFileByOrderRef2(SysOssEntity inData) { + return sysOssDao.getSysFileByOrderRef2(inData); + } + + @Override + public List getInspectionFile(SysOssEntity inData) { + List files1 = sysOssDao.getSysFileByOrderRef2(inData); + // mes文件 +// List 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(); + } + } + +} diff --git a/src/main/resources/mapper/oss/SysOssDao.xml b/src/main/resources/mapper/oss/SysOssDao.xml index a4e8450..e4587b3 100644 --- a/src/main/resources/mapper/oss/SysOssDao.xml +++ b/src/main/resources/mapper/oss/SysOssDao.xml @@ -69,4 +69,61 @@ + + + \ No newline at end of file