diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java index daa9629..c37446f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Objects; @@ -55,6 +56,16 @@ } /** + * 文件流下载(minio) + */ + @ApiOperation("文件流下载") + @PostMapping("/download/stream/{fileName}") + @ResponseBody + public void upload(@PathVariable(name = "fileName") String fileName, HttpServletResponse response) { + minioUtil.downloadStream(fileName, response); + } + + /** * 文件路径(minio) * 实现静态文件url获取 */ diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java index daa9629..c37446f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Objects; @@ -55,6 +56,16 @@ } /** + * 文件流下载(minio) + */ + @ApiOperation("文件流下载") + @PostMapping("/download/stream/{fileName}") + @ResponseBody + public void upload(@PathVariable(name = "fileName") String fileName, HttpServletResponse response) { + minioUtil.downloadStream(fileName, response); + } + + /** * 文件路径(minio) * 实现静态文件url获取 */ diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java new file mode 100644 index 0000000..d59e37d --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java @@ -0,0 +1,38 @@ +package com.casic.missiles.controller.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.workbench.SampleMonitorResponse; +import com.casic.missiles.service.business.BusinessWorkbenchService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Description: 业务管理-工作台 + * @Author: wangpeng + * @Date: 2023/4/19 13:28 + */ +@Api(tags = "工作台相关接口") +@RestController +@RequestMapping("/workbench") +public class BusinessWorkbenchController extends ExportController { + @Autowired + private BusinessWorkbenchService workbenchService; + + /** + * 样品监控 + * 分页展示全部检测中样品(对应实验室待分配、待检测、检测中),按实验室记录时间排序 + */ + @ApiOperation("样品监控") + @GetMapping("/sample/monitor") + public ReturnDTO> sampleMonitor(Page page) { + return ReturnUtil.success(super.packForBT(workbenchService.sampleMonitor(page))); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java index daa9629..c37446f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Objects; @@ -55,6 +56,16 @@ } /** + * 文件流下载(minio) + */ + @ApiOperation("文件流下载") + @PostMapping("/download/stream/{fileName}") + @ResponseBody + public void upload(@PathVariable(name = "fileName") String fileName, HttpServletResponse response) { + minioUtil.downloadStream(fileName, response); + } + + /** * 文件路径(minio) * 实现静态文件url获取 */ diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java new file mode 100644 index 0000000..d59e37d --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java @@ -0,0 +1,38 @@ +package com.casic.missiles.controller.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.workbench.SampleMonitorResponse; +import com.casic.missiles.service.business.BusinessWorkbenchService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Description: 业务管理-工作台 + * @Author: wangpeng + * @Date: 2023/4/19 13:28 + */ +@Api(tags = "工作台相关接口") +@RestController +@RequestMapping("/workbench") +public class BusinessWorkbenchController extends ExportController { + @Autowired + private BusinessWorkbenchService workbenchService; + + /** + * 样品监控 + * 分页展示全部检测中样品(对应实验室待分配、待检测、检测中),按实验室记录时间排序 + */ + @ApiOperation("样品监控") + @GetMapping("/sample/monitor") + public ReturnDTO> sampleMonitor(Page page) { + return ReturnUtil.success(super.packForBT(workbenchService.sampleMonitor(page))); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index de1774e..7b0954d 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -16,10 +16,8 @@ import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.UnsupportedEncodingException; +import javax.servlet.http.HttpServletResponse; +import java.io.*; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Arrays; @@ -198,6 +196,50 @@ } /** + * description: 下载文件流 + * + * @param fileName + * @return: org.springframework.http.ResponseEntity + */ + public void downloadStream(String fileName, HttpServletResponse response) { + InputStream in = null; + ByteArrayOutputStream out = null; + try { + in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); + out = new ByteArrayOutputStream(); + IOUtils.copy(in, out); + //封装返回值 + byte[] data = out.toByteArray(); + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); + response.addHeader("Content-Length", "" + data.length); + response.setContentType("application/octet-stream;charset=UTF-8"); + OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); + outputStream.write(data); + outputStream.flush(); + outputStream.close(); + response.flushBuffer(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** * 查看文件对象 * * @param bucketName 存储bucket名称 diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java index daa9629..c37446f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Objects; @@ -55,6 +56,16 @@ } /** + * 文件流下载(minio) + */ + @ApiOperation("文件流下载") + @PostMapping("/download/stream/{fileName}") + @ResponseBody + public void upload(@PathVariable(name = "fileName") String fileName, HttpServletResponse response) { + minioUtil.downloadStream(fileName, response); + } + + /** * 文件路径(minio) * 实现静态文件url获取 */ diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java new file mode 100644 index 0000000..d59e37d --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java @@ -0,0 +1,38 @@ +package com.casic.missiles.controller.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.workbench.SampleMonitorResponse; +import com.casic.missiles.service.business.BusinessWorkbenchService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Description: 业务管理-工作台 + * @Author: wangpeng + * @Date: 2023/4/19 13:28 + */ +@Api(tags = "工作台相关接口") +@RestController +@RequestMapping("/workbench") +public class BusinessWorkbenchController extends ExportController { + @Autowired + private BusinessWorkbenchService workbenchService; + + /** + * 样品监控 + * 分页展示全部检测中样品(对应实验室待分配、待检测、检测中),按实验室记录时间排序 + */ + @ApiOperation("样品监控") + @GetMapping("/sample/monitor") + public ReturnDTO> sampleMonitor(Page page) { + return ReturnUtil.success(super.packForBT(workbenchService.sampleMonitor(page))); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index de1774e..7b0954d 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -16,10 +16,8 @@ import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.UnsupportedEncodingException; +import javax.servlet.http.HttpServletResponse; +import java.io.*; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Arrays; @@ -198,6 +196,50 @@ } /** + * description: 下载文件流 + * + * @param fileName + * @return: org.springframework.http.ResponseEntity + */ + public void downloadStream(String fileName, HttpServletResponse response) { + InputStream in = null; + ByteArrayOutputStream out = null; + try { + in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); + out = new ByteArrayOutputStream(); + IOUtils.copy(in, out); + //封装返回值 + byte[] data = out.toByteArray(); + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); + response.addHeader("Content-Length", "" + data.length); + response.setContentType("application/octet-stream;charset=UTF-8"); + OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); + outputStream.write(data); + outputStream.flush(); + outputStream.close(); + response.flushBuffer(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** * 查看文件对象 * * @param bucketName 存储bucket名称 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index b0d2305..41031ea 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.business.dispatch.DeviceScanDTO; import com.casic.missiles.dto.business.dispatch.DeviceScanVO; import com.casic.missiles.dto.business.outsource.OrderSampleDTO; +import com.casic.missiles.dto.business.workbench.SampleMonitorResponse; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; import com.casic.missiles.dto.finance.SamplePriceDTO; import com.casic.missiles.dto.finance.SettlementSampleDTO; @@ -49,4 +50,6 @@ List selectSampleListForSettlement(@Param("orderId") Long orderId); OrderSampleDTO selectIdBySampleNo(@Param("sampleNo") String sampleNo); + + Page selectSampleMonitorListByStatus(Page page, @Param("status") String status); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java index daa9629..c37446f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Objects; @@ -55,6 +56,16 @@ } /** + * 文件流下载(minio) + */ + @ApiOperation("文件流下载") + @PostMapping("/download/stream/{fileName}") + @ResponseBody + public void upload(@PathVariable(name = "fileName") String fileName, HttpServletResponse response) { + minioUtil.downloadStream(fileName, response); + } + + /** * 文件路径(minio) * 实现静态文件url获取 */ diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java new file mode 100644 index 0000000..d59e37d --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java @@ -0,0 +1,38 @@ +package com.casic.missiles.controller.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.workbench.SampleMonitorResponse; +import com.casic.missiles.service.business.BusinessWorkbenchService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Description: 业务管理-工作台 + * @Author: wangpeng + * @Date: 2023/4/19 13:28 + */ +@Api(tags = "工作台相关接口") +@RestController +@RequestMapping("/workbench") +public class BusinessWorkbenchController extends ExportController { + @Autowired + private BusinessWorkbenchService workbenchService; + + /** + * 样品监控 + * 分页展示全部检测中样品(对应实验室待分配、待检测、检测中),按实验室记录时间排序 + */ + @ApiOperation("样品监控") + @GetMapping("/sample/monitor") + public ReturnDTO> sampleMonitor(Page page) { + return ReturnUtil.success(super.packForBT(workbenchService.sampleMonitor(page))); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index de1774e..7b0954d 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -16,10 +16,8 @@ import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.UnsupportedEncodingException; +import javax.servlet.http.HttpServletResponse; +import java.io.*; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Arrays; @@ -198,6 +196,50 @@ } /** + * description: 下载文件流 + * + * @param fileName + * @return: org.springframework.http.ResponseEntity + */ + public void downloadStream(String fileName, HttpServletResponse response) { + InputStream in = null; + ByteArrayOutputStream out = null; + try { + in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); + out = new ByteArrayOutputStream(); + IOUtils.copy(in, out); + //封装返回值 + byte[] data = out.toByteArray(); + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); + response.addHeader("Content-Length", "" + data.length); + response.setContentType("application/octet-stream;charset=UTF-8"); + OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); + outputStream.write(data); + outputStream.flush(); + outputStream.close(); + response.flushBuffer(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** * 查看文件对象 * * @param bucketName 存储bucket名称 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index b0d2305..41031ea 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.business.dispatch.DeviceScanDTO; import com.casic.missiles.dto.business.dispatch.DeviceScanVO; import com.casic.missiles.dto.business.outsource.OrderSampleDTO; +import com.casic.missiles.dto.business.workbench.SampleMonitorResponse; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; import com.casic.missiles.dto.finance.SamplePriceDTO; import com.casic.missiles.dto.finance.SettlementSampleDTO; @@ -49,4 +50,6 @@ List selectSampleListForSettlement(@Param("orderId") Long orderId); OrderSampleDTO selectIdBySampleNo(@Param("sampleNo") String sampleNo); + + Page selectSampleMonitorListByStatus(Page page, @Param("status") String status); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 0d0c60d..a1b9888 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -295,4 +295,15 @@ ORDER BY bosr.create_time DESC LIMIT 1 + + diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java index daa9629..c37446f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Objects; @@ -55,6 +56,16 @@ } /** + * 文件流下载(minio) + */ + @ApiOperation("文件流下载") + @PostMapping("/download/stream/{fileName}") + @ResponseBody + public void upload(@PathVariable(name = "fileName") String fileName, HttpServletResponse response) { + minioUtil.downloadStream(fileName, response); + } + + /** * 文件路径(minio) * 实现静态文件url获取 */ diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java new file mode 100644 index 0000000..d59e37d --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java @@ -0,0 +1,38 @@ +package com.casic.missiles.controller.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.workbench.SampleMonitorResponse; +import com.casic.missiles.service.business.BusinessWorkbenchService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Description: 业务管理-工作台 + * @Author: wangpeng + * @Date: 2023/4/19 13:28 + */ +@Api(tags = "工作台相关接口") +@RestController +@RequestMapping("/workbench") +public class BusinessWorkbenchController extends ExportController { + @Autowired + private BusinessWorkbenchService workbenchService; + + /** + * 样品监控 + * 分页展示全部检测中样品(对应实验室待分配、待检测、检测中),按实验室记录时间排序 + */ + @ApiOperation("样品监控") + @GetMapping("/sample/monitor") + public ReturnDTO> sampleMonitor(Page page) { + return ReturnUtil.success(super.packForBT(workbenchService.sampleMonitor(page))); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index de1774e..7b0954d 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -16,10 +16,8 @@ import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.UnsupportedEncodingException; +import javax.servlet.http.HttpServletResponse; +import java.io.*; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Arrays; @@ -198,6 +196,50 @@ } /** + * description: 下载文件流 + * + * @param fileName + * @return: org.springframework.http.ResponseEntity + */ + public void downloadStream(String fileName, HttpServletResponse response) { + InputStream in = null; + ByteArrayOutputStream out = null; + try { + in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); + out = new ByteArrayOutputStream(); + IOUtils.copy(in, out); + //封装返回值 + byte[] data = out.toByteArray(); + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); + response.addHeader("Content-Length", "" + data.length); + response.setContentType("application/octet-stream;charset=UTF-8"); + OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); + outputStream.write(data); + outputStream.flush(); + outputStream.close(); + response.flushBuffer(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** * 查看文件对象 * * @param bucketName 存储bucket名称 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index b0d2305..41031ea 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.business.dispatch.DeviceScanDTO; import com.casic.missiles.dto.business.dispatch.DeviceScanVO; import com.casic.missiles.dto.business.outsource.OrderSampleDTO; +import com.casic.missiles.dto.business.workbench.SampleMonitorResponse; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; import com.casic.missiles.dto.finance.SamplePriceDTO; import com.casic.missiles.dto.finance.SettlementSampleDTO; @@ -49,4 +50,6 @@ List selectSampleListForSettlement(@Param("orderId") Long orderId); OrderSampleDTO selectIdBySampleNo(@Param("sampleNo") String sampleNo); + + Page selectSampleMonitorListByStatus(Page page, @Param("status") String status); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 0d0c60d..a1b9888 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -295,4 +295,15 @@ ORDER BY bosr.create_time DESC LIMIT 1 + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/workbench/SampleMonitorResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/workbench/SampleMonitorResponse.java new file mode 100644 index 0000000..75a4c19 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/workbench/SampleMonitorResponse.java @@ -0,0 +1,37 @@ +package com.casic.missiles.dto.business.workbench; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/4/19 13:53 + */ +@Data +public class SampleMonitorResponse { + @ApiModelProperty(value = "样品id", dataType = "String") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "当前检测实验室", dataType = "String") + private String currentSegment; + + @ApiModelProperty(value = "下一检测实验室", dataType = "String") + private String nextSegment; + + @ApiModelProperty(value = "进度", dataType = "String") + private String progress; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + //计算下一检测实验室使用 + @ApiModelProperty(hidden = true) + private Integer currentNo; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java index daa9629..c37446f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Objects; @@ -55,6 +56,16 @@ } /** + * 文件流下载(minio) + */ + @ApiOperation("文件流下载") + @PostMapping("/download/stream/{fileName}") + @ResponseBody + public void upload(@PathVariable(name = "fileName") String fileName, HttpServletResponse response) { + minioUtil.downloadStream(fileName, response); + } + + /** * 文件路径(minio) * 实现静态文件url获取 */ diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java new file mode 100644 index 0000000..d59e37d --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java @@ -0,0 +1,38 @@ +package com.casic.missiles.controller.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.workbench.SampleMonitorResponse; +import com.casic.missiles.service.business.BusinessWorkbenchService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Description: 业务管理-工作台 + * @Author: wangpeng + * @Date: 2023/4/19 13:28 + */ +@Api(tags = "工作台相关接口") +@RestController +@RequestMapping("/workbench") +public class BusinessWorkbenchController extends ExportController { + @Autowired + private BusinessWorkbenchService workbenchService; + + /** + * 样品监控 + * 分页展示全部检测中样品(对应实验室待分配、待检测、检测中),按实验室记录时间排序 + */ + @ApiOperation("样品监控") + @GetMapping("/sample/monitor") + public ReturnDTO> sampleMonitor(Page page) { + return ReturnUtil.success(super.packForBT(workbenchService.sampleMonitor(page))); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index de1774e..7b0954d 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -16,10 +16,8 @@ import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.UnsupportedEncodingException; +import javax.servlet.http.HttpServletResponse; +import java.io.*; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Arrays; @@ -198,6 +196,50 @@ } /** + * description: 下载文件流 + * + * @param fileName + * @return: org.springframework.http.ResponseEntity + */ + public void downloadStream(String fileName, HttpServletResponse response) { + InputStream in = null; + ByteArrayOutputStream out = null; + try { + in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); + out = new ByteArrayOutputStream(); + IOUtils.copy(in, out); + //封装返回值 + byte[] data = out.toByteArray(); + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); + response.addHeader("Content-Length", "" + data.length); + response.setContentType("application/octet-stream;charset=UTF-8"); + OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); + outputStream.write(data); + outputStream.flush(); + outputStream.close(); + response.flushBuffer(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** * 查看文件对象 * * @param bucketName 存储bucket名称 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index b0d2305..41031ea 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.business.dispatch.DeviceScanDTO; import com.casic.missiles.dto.business.dispatch.DeviceScanVO; import com.casic.missiles.dto.business.outsource.OrderSampleDTO; +import com.casic.missiles.dto.business.workbench.SampleMonitorResponse; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; import com.casic.missiles.dto.finance.SamplePriceDTO; import com.casic.missiles.dto.finance.SettlementSampleDTO; @@ -49,4 +50,6 @@ List selectSampleListForSettlement(@Param("orderId") Long orderId); OrderSampleDTO selectIdBySampleNo(@Param("sampleNo") String sampleNo); + + Page selectSampleMonitorListByStatus(Page page, @Param("status") String status); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 0d0c60d..a1b9888 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -295,4 +295,15 @@ ORDER BY bosr.create_time DESC LIMIT 1 + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/workbench/SampleMonitorResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/workbench/SampleMonitorResponse.java new file mode 100644 index 0000000..75a4c19 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/workbench/SampleMonitorResponse.java @@ -0,0 +1,37 @@ +package com.casic.missiles.dto.business.workbench; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/4/19 13:53 + */ +@Data +public class SampleMonitorResponse { + @ApiModelProperty(value = "样品id", dataType = "String") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "当前检测实验室", dataType = "String") + private String currentSegment; + + @ApiModelProperty(value = "下一检测实验室", dataType = "String") + private String nextSegment; + + @ApiModelProperty(value = "进度", dataType = "String") + private String progress; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + //计算下一检测实验室使用 + @ApiModelProperty(hidden = true) + private Integer currentNo; +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessWorkbenchServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessWorkbenchServiceImpl.java new file mode 100644 index 0000000..d5854fa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessWorkbenchServiceImpl.java @@ -0,0 +1,67 @@ +package com.casic.missiles.service.Impl.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.labExecutive.MeasureProcessDTO; +import com.casic.missiles.dto.business.workbench.SampleMonitorResponse; +import com.casic.missiles.enums.sample.SampleStatusEnum; +import com.casic.missiles.mapper.business.BusinessLabExecutiveInfoMapper; +import com.casic.missiles.mapper.business.BusinessOrderSampleRelationMapper; +import com.casic.missiles.service.business.BusinessWorkbenchService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/4/19 14:01 + */ +@Slf4j +@Service +public class BusinessWorkbenchServiceImpl implements BusinessWorkbenchService { + @Autowired + private BusinessOrderSampleRelationMapper orderSampleRelationMapper; + @Autowired + private BusinessLabExecutiveInfoMapper labExecutiveInfoMapper; + + @Override + public Page sampleMonitor(Page page) { + Page sampleList = orderSampleRelationMapper.selectSampleMonitorListByStatus(page, SampleStatusEnum.IN_MEASURE); + //获取当前检测实验室及下一检测实验室 + List records = sampleList.getRecords(); + if(CollectionUtils.isEmpty(records)){ + return new Page<>(); + } + records.parallelStream().forEach(sample -> { + Long orderId = sample.getOrderId(); + Long sampleId = sample.getSampleId(); + List measureProcessDTOS = labExecutiveInfoMapper.selectExecutiveList(orderId, sampleId); + if (CollectionUtils.isEmpty(measureProcessDTOS)) { + log.info("业务工作台样品监控-样品检测中状态不存在当前进行检测的实验室,orderId:{},sampleId:{}", orderId, sampleId); + return; + } + List statusList = new ArrayList<>(); + statusList.add(SampleStatusEnum.TO_HANDOUT); + statusList.add(SampleStatusEnum.IN_MEASURE); + statusList.add(SampleStatusEnum.MEASURE_COMPLETE); + measureProcessDTOS.forEach(measureProcessDTO -> { + if(statusList.contains(measureProcessDTO.getMeasureStatus())){ + sample.setCurrentSegment(measureProcessDTO.getMeasureSegment()); + sample.setCurrentNo(measureProcessDTO.getMeasureSequence()); + return; + } + }); + MeasureProcessDTO measureProcessDTO = measureProcessDTOS.stream().filter(s -> sample.getCurrentNo().equals(s.getMeasureSequence())).collect(Collectors.toList()).get(0); + if(Objects.nonNull(measureProcessDTO)){ + sample.setNextSegment(measureProcessDTO.getMeasureSegment()); + } + }); + return sampleList; + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java index daa9629..c37446f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MinioFileController.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Objects; @@ -55,6 +56,16 @@ } /** + * 文件流下载(minio) + */ + @ApiOperation("文件流下载") + @PostMapping("/download/stream/{fileName}") + @ResponseBody + public void upload(@PathVariable(name = "fileName") String fileName, HttpServletResponse response) { + minioUtil.downloadStream(fileName, response); + } + + /** * 文件路径(minio) * 实现静态文件url获取 */ diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java new file mode 100644 index 0000000..d59e37d --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessWorkbenchController.java @@ -0,0 +1,38 @@ +package com.casic.missiles.controller.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.workbench.SampleMonitorResponse; +import com.casic.missiles.service.business.BusinessWorkbenchService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Description: 业务管理-工作台 + * @Author: wangpeng + * @Date: 2023/4/19 13:28 + */ +@Api(tags = "工作台相关接口") +@RestController +@RequestMapping("/workbench") +public class BusinessWorkbenchController extends ExportController { + @Autowired + private BusinessWorkbenchService workbenchService; + + /** + * 样品监控 + * 分页展示全部检测中样品(对应实验室待分配、待检测、检测中),按实验室记录时间排序 + */ + @ApiOperation("样品监控") + @GetMapping("/sample/monitor") + public ReturnDTO> sampleMonitor(Page page) { + return ReturnUtil.success(super.packForBT(workbenchService.sampleMonitor(page))); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index de1774e..7b0954d 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -16,10 +16,8 @@ import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.UnsupportedEncodingException; +import javax.servlet.http.HttpServletResponse; +import java.io.*; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Arrays; @@ -198,6 +196,50 @@ } /** + * description: 下载文件流 + * + * @param fileName + * @return: org.springframework.http.ResponseEntity + */ + public void downloadStream(String fileName, HttpServletResponse response) { + InputStream in = null; + ByteArrayOutputStream out = null; + try { + in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); + out = new ByteArrayOutputStream(); + IOUtils.copy(in, out); + //封装返回值 + byte[] data = out.toByteArray(); + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); + response.addHeader("Content-Length", "" + data.length); + response.setContentType("application/octet-stream;charset=UTF-8"); + OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); + outputStream.write(data); + outputStream.flush(); + outputStream.close(); + response.flushBuffer(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** * 查看文件对象 * * @param bucketName 存储bucket名称 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index b0d2305..41031ea 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.business.dispatch.DeviceScanDTO; import com.casic.missiles.dto.business.dispatch.DeviceScanVO; import com.casic.missiles.dto.business.outsource.OrderSampleDTO; +import com.casic.missiles.dto.business.workbench.SampleMonitorResponse; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; import com.casic.missiles.dto.finance.SamplePriceDTO; import com.casic.missiles.dto.finance.SettlementSampleDTO; @@ -49,4 +50,6 @@ List selectSampleListForSettlement(@Param("orderId") Long orderId); OrderSampleDTO selectIdBySampleNo(@Param("sampleNo") String sampleNo); + + Page selectSampleMonitorListByStatus(Page page, @Param("status") String status); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 0d0c60d..a1b9888 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -295,4 +295,15 @@ ORDER BY bosr.create_time DESC LIMIT 1 + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/workbench/SampleMonitorResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/workbench/SampleMonitorResponse.java new file mode 100644 index 0000000..75a4c19 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/workbench/SampleMonitorResponse.java @@ -0,0 +1,37 @@ +package com.casic.missiles.dto.business.workbench; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/4/19 13:53 + */ +@Data +public class SampleMonitorResponse { + @ApiModelProperty(value = "样品id", dataType = "String") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "当前检测实验室", dataType = "String") + private String currentSegment; + + @ApiModelProperty(value = "下一检测实验室", dataType = "String") + private String nextSegment; + + @ApiModelProperty(value = "进度", dataType = "String") + private String progress; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + //计算下一检测实验室使用 + @ApiModelProperty(hidden = true) + private Integer currentNo; +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessWorkbenchServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessWorkbenchServiceImpl.java new file mode 100644 index 0000000..d5854fa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessWorkbenchServiceImpl.java @@ -0,0 +1,67 @@ +package com.casic.missiles.service.Impl.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.labExecutive.MeasureProcessDTO; +import com.casic.missiles.dto.business.workbench.SampleMonitorResponse; +import com.casic.missiles.enums.sample.SampleStatusEnum; +import com.casic.missiles.mapper.business.BusinessLabExecutiveInfoMapper; +import com.casic.missiles.mapper.business.BusinessOrderSampleRelationMapper; +import com.casic.missiles.service.business.BusinessWorkbenchService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/4/19 14:01 + */ +@Slf4j +@Service +public class BusinessWorkbenchServiceImpl implements BusinessWorkbenchService { + @Autowired + private BusinessOrderSampleRelationMapper orderSampleRelationMapper; + @Autowired + private BusinessLabExecutiveInfoMapper labExecutiveInfoMapper; + + @Override + public Page sampleMonitor(Page page) { + Page sampleList = orderSampleRelationMapper.selectSampleMonitorListByStatus(page, SampleStatusEnum.IN_MEASURE); + //获取当前检测实验室及下一检测实验室 + List records = sampleList.getRecords(); + if(CollectionUtils.isEmpty(records)){ + return new Page<>(); + } + records.parallelStream().forEach(sample -> { + Long orderId = sample.getOrderId(); + Long sampleId = sample.getSampleId(); + List measureProcessDTOS = labExecutiveInfoMapper.selectExecutiveList(orderId, sampleId); + if (CollectionUtils.isEmpty(measureProcessDTOS)) { + log.info("业务工作台样品监控-样品检测中状态不存在当前进行检测的实验室,orderId:{},sampleId:{}", orderId, sampleId); + return; + } + List statusList = new ArrayList<>(); + statusList.add(SampleStatusEnum.TO_HANDOUT); + statusList.add(SampleStatusEnum.IN_MEASURE); + statusList.add(SampleStatusEnum.MEASURE_COMPLETE); + measureProcessDTOS.forEach(measureProcessDTO -> { + if(statusList.contains(measureProcessDTO.getMeasureStatus())){ + sample.setCurrentSegment(measureProcessDTO.getMeasureSegment()); + sample.setCurrentNo(measureProcessDTO.getMeasureSequence()); + return; + } + }); + MeasureProcessDTO measureProcessDTO = measureProcessDTOS.stream().filter(s -> sample.getCurrentNo().equals(s.getMeasureSequence())).collect(Collectors.toList()).get(0); + if(Objects.nonNull(measureProcessDTO)){ + sample.setNextSegment(measureProcessDTO.getMeasureSegment()); + } + }); + return sampleList; + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/BusinessWorkbenchService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/BusinessWorkbenchService.java new file mode 100644 index 0000000..9208c82 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/BusinessWorkbenchService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.workbench.SampleMonitorResponse; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/4/19 14:00 + */ +public interface BusinessWorkbenchService { + Page sampleMonitor(Page page); +}