From 66c8426d63806000326b1341a7e19200afa5fa72 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期三, 23 九月 2026 16:56:24 +0800
Subject: [PATCH] fix(data): 修复样品名称查询
---
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsSampleReceiptServiceImpl.java | 165 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 165 insertions(+), 0 deletions(-)
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsSampleReceiptServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsSampleReceiptServiceImpl.java
new file mode 100644
index 0000000..90e6e7e
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsSampleReceiptServiceImpl.java
@@ -0,0 +1,165 @@
+package com.ruoyi.inspect.service.impl;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.inspect.dto.SampleReceiptActionDto;
+import com.ruoyi.inspect.dto.SampleReceiptPageDto;
+import com.ruoyi.inspect.dto.SampleReceiptQueryDto;
+import com.ruoyi.inspect.mapper.InsOrderMapper;
+import com.ruoyi.inspect.mapper.InsOrderStandardTemplateMapper;
+import com.ruoyi.inspect.mapper.InsProductMapper;
+import com.ruoyi.inspect.mapper.InsSampleMapper;
+import com.ruoyi.inspect.mapper.InsSampleReceiptMapper;
+import com.ruoyi.inspect.mapper.InsSampleUserMapper;
+import com.ruoyi.inspect.pojo.InsOrder;
+import com.ruoyi.inspect.pojo.InsOrderStandardTemplate;
+import com.ruoyi.inspect.pojo.InsProduct;
+import com.ruoyi.inspect.pojo.InsSample;
+import com.ruoyi.inspect.pojo.InsSampleReceipt;
+import com.ruoyi.inspect.pojo.InsSampleUser;
+import com.ruoyi.inspect.service.InsOrderService;
+import com.ruoyi.inspect.service.InsOrderStateService;
+import com.ruoyi.inspect.service.InsSampleReceiptService;
+import com.ruoyi.system.mapper.UserMapper;
+import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+public class InsSampleReceiptServiceImpl extends ServiceImpl<InsSampleReceiptMapper, InsSampleReceipt>
+ implements InsSampleReceiptService {
+ private final InsSampleReceiptMapper receiptMapper;
+ private final InsOrderMapper insOrderMapper;
+ private final InsOrderStandardTemplateMapper insOrderStandardTemplateMapper;
+ private final InsSampleMapper insSampleMapper;
+ private final InsProductMapper insProductMapper;
+ private final InsSampleUserMapper insSampleUserMapper;
+ private final InsOrderStateService insOrderStateService;
+ private final InsOrderService insOrderService;
+ private final UserMapper userMapper;
+
+ @Override
+ public com.baomidou.mybatisplus.core.metadata.IPage<SampleReceiptPageDto> page(Page<?> page, SampleReceiptQueryDto query) {
+ return receiptMapper.selectPage(page, query);
+ }
+
+ @Override
+ public SampleReceiptPageDto detail(Integer id) {
+ return receiptMapper.selectDetail(id);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void submit(SampleReceiptActionDto dto) {
+ if (dto == null || dto.getReceiptId() == null || dto.getMainInspectorId() == null) {
+ throw new ErrorException("璇烽�夋嫨涓绘楠屼汉");
+ }
+ InsSampleReceipt receipt = receiptMapper.selectForUpdate(dto.getReceiptId());
+ ensurePending(receipt);
+ InsOrder order = insOrderMapper.selectById(receipt.getInsOrderId());
+ if (order == null || !Integer.valueOf(1).equals(order.getState())) {
+ throw new ErrorException("璇ュ鎵樺綋鍓嶇姸鎬佷笉鍏佽鏍峰搧鎺ユ敹");
+ }
+ List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
+ .eq(InsSample::getInsOrderId, order.getId()).orderByAsc(InsSample::getId));
+ if (samples.size() != 1 || !samples.get(0).getId().equals(receipt.getInsSampleId())) {
+ throw new ErrorException("璇ュ鎵樼殑鏍峰搧鏁伴噺寮傚父锛岃妫�鏌ヤ笅鍗曟暟鎹�");
+ }
+ InsSample sample = samples.get(0);
+ // 鍙蛋鏂拌仛鐩寸粦妯℃澘娴佺▼锛氬鎵樺崟蹇呴』宸茬粦瀹氬師濮嬭褰曟ā鏉匡紙涓嬪崟鏃剁敓鎴愯鍗曟ā鏉垮揩鐓э級
+ Long snapshotCount = insOrderStandardTemplateMapper.selectCount(Wrappers.<InsOrderStandardTemplate>lambdaQuery()
+ .eq(InsOrderStandardTemplate::getInsOrderId, order.getId()));
+ if (snapshotCount == 0) {
+ throw new ErrorException("璇ュ鎵樻湭缁戝畾鍘熷璁板綍妯℃澘锛屼笉鑳芥彁浜ゆ楠�");
+ }
+ Long productCount = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
+ .eq(InsProduct::getInsSampleId, sample.getId()).eq(InsProduct::getState, 1));
+ if (productCount == 0) {
+ throw new ErrorException("璇ュ鎵樻湭缁戝畾妫�楠岄」鐩紝涓嶈兘鎻愪氦妫�楠�");
+ }
+ if (userMapper.selectById(dto.getMainInspectorId()) == null) {
+ throw new ErrorException("涓绘楠屼汉涓嶅瓨鍦ㄦ垨宸插仠鐢�");
+ }
+ if (insOrderStateService.count(Wrappers.lambdaQuery(com.ruoyi.inspect.pojo.InsOrderState.class)
+ .eq(com.ruoyi.inspect.pojo.InsOrderState::getInsOrderId, order.getId())) > 0
+ || insSampleUserMapper.selectCount(Wrappers.<InsSampleUser>lambdaQuery()
+ .eq(InsSampleUser::getInsSampleId, order.getId())) > 0) {
+ throw new ErrorException("璇ュ鎵樺凡杩涘叆妫�楠屼换鍔★紝涓嶈兘閲嶅鎻愪氦");
+ }
+ String appointed = LocalDateTime.now().plusHours(insProductMapper.selectOrderManDay(order.getId()))
+ .format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+ insOrderService.upInsOrder(order.getId(), sample.getId(), appointed, dto.getMainInspectorId(), null);
+ receipt.setStatus(1);
+ receipt.setMainInspectorId(dto.getMainInspectorId());
+ receipt.setReceiveUserId(SecurityUtils.getUserId().intValue());
+ receipt.setReceiveTime(LocalDateTime.now());
+ receipt.setSubmitTime(LocalDateTime.now());
+ receiptMapper.updateById(receipt);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void reject(SampleReceiptActionDto dto) {
+ if (dto == null || dto.getReceiptId() == null || StringUtils.isBlank(dto.getRemark())) {
+ throw new ErrorException("璇峰~鍐欐嫆鏀跺娉�");
+ }
+ if (dto.getRemark().trim().length() > 500) {
+ throw new ErrorException("鎷掓敹澶囨敞涓嶈兘瓒呰繃500涓瓧绗�");
+ }
+ InsSampleReceipt receipt = receiptMapper.selectForUpdate(dto.getReceiptId());
+ ensurePending(receipt);
+ if (insOrderStateService.count(Wrappers.lambdaQuery(com.ruoyi.inspect.pojo.InsOrderState.class)
+ .eq(com.ruoyi.inspect.pojo.InsOrderState::getInsOrderId, receipt.getInsOrderId())) > 0) {
+ throw new ErrorException("璇ュ鎵樺凡杩涘叆妫�楠屼换鍔★紝涓嶈兘鎷掓敹");
+ }
+ receipt.setStatus(2);
+ receipt.setRejectRemark(dto.getRemark().trim());
+ receipt.setReceiveUserId(SecurityUtils.getUserId().intValue());
+ receipt.setReceiveTime(LocalDateTime.now());
+ receiptMapper.updateById(receipt);
+ InsOrder order = new InsOrder();
+ order.setId(receipt.getInsOrderId());
+ order.setState(5);
+ insOrderMapper.updateById(order);
+ }
+
+ private void ensurePending(InsSampleReceipt receipt) {
+ if (receipt == null || !Integer.valueOf(0).equals(receipt.getStatus())) {
+ throw new ErrorException("璇ユ牱鍝佹帴鏀惰褰曞凡琚鐞嗭紝璇峰埛鏂板悗閲嶈瘯");
+ }
+ }
+
+ @Override
+ public void export(SampleReceiptQueryDto query, HttpServletResponse response) {
+ List<SampleReceiptPageDto> list = receiptMapper.selectExportList(query);
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding("UTF-8");
+ try {
+ String fileName = URLEncoder.encode("鏍峰搧鎺ユ敹瀵煎嚭", "UTF-8");
+ response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+ ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream())
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
+ WriteSheet sheet = EasyExcel.writerSheet(0, "鏍峰搧鎺ユ敹瀵煎嚭").head(SampleReceiptPageDto.class).build();
+ excelWriter.write(list, sheet);
+ excelWriter.finish();
+ } catch (IOException e) {
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
+}
--
Gitblit v1.9.3