From fd7bc95a3c91fb7d90a921b0ff762fa6095fabd1 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 06 三月 2025 17:21:00 +0800
Subject: [PATCH] Merge branch 'dev' into dev_zj

---
 cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessOrderServiceImpl.java |  256 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 247 insertions(+), 9 deletions(-)

diff --git a/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessOrderServiceImpl.java b/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessOrderServiceImpl.java
index 3253e43..007ac3d 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessOrderServiceImpl.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessOrderServiceImpl.java
@@ -1,7 +1,10 @@
 package com.ruoyi.process.service.impl;
 
+import cn.hutool.core.util.NumberUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.deepoove.poi.XWPFTemplate;
@@ -14,22 +17,36 @@
 import com.ruoyi.process.dto.InspectionOrderDetail;
 import com.ruoyi.process.dto.InspectionOrderExportDto;
 import com.ruoyi.process.dto.ProcessOrderDto;
+import com.ruoyi.process.dto.SampleItemDto;
 import com.ruoyi.process.mapper.ProcessOrderMapper;
+import com.ruoyi.process.mapper.ProcessSampleNewMapper;
 import com.ruoyi.process.pojo.ProcessOrder;
+import com.ruoyi.process.pojo.ProcessSampleNew;
 import com.ruoyi.process.service.ProcessOrderService;
 import com.ruoyi.system.mapper.UserMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.xwpf.usermodel.XWPFDocument;
+import org.apache.poi.xwpf.usermodel.XWPFTable;
+import org.apache.poi.xwpf.usermodel.XWPFTableCell;
+import org.apache.poi.xwpf.usermodel.XWPFTableRow;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.URLEncoder;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -40,8 +57,12 @@
  * @since 2024-11-05 03:06:20
  */
 @Service
+@Slf4j
 @Transactional(rollbackFor = Exception.class)
 public class ProcessOrderServiceImpl extends ServiceImpl<ProcessOrderMapper, ProcessOrder> implements ProcessOrderService {
+
+    @Resource
+    private ProcessSampleNewMapper processSampleNewMapper;
 
     @Resource
     private ProcessOrderMapper processOrderMapper;
@@ -55,8 +76,182 @@
     }
 
     @Override
+    public void uploadFile(MultipartFile file, Integer id) {
+        ProcessOrder processOrder = processOrderMapper.selectById(id);
+        ArrayList<String> list = new ArrayList<>();
+        try (InputStream inputStream = file.getInputStream()) {
+            XWPFDocument xwpfDocument = new XWPFDocument(inputStream);
+            // 鑾峰彇鎵�鏈夎〃鏍�
+            List<XWPFTable> tables = xwpfDocument.getTables();
+            for (XWPFTable table : tables) {
+                // 鑾峰彇琛ㄦ牸鐨勮
+                List<XWPFTableRow> rows = table.getRows();
+                for (int i = 0; i < rows.size(); i++) {
+                    // 鑾峰彇姣忎竴琛�
+                    List<XWPFTableCell> tableCells = rows.get(i).getTableCells();
+                    for (int j = 0; j < tableCells.size(); j++) {
+                        // 鑾峰彇姣忎竴鍗曞厓鏍�
+                        String text = rows.get(i).getCell(j).getText();
+                        log.info("璇诲彇鐨勫唴瀹�:{}", text);
+                        list.add(text);
+                    }
+                }
+            }
+            // 鏍规嵁鑾峰彇鍒扮殑鍐呭杩涜璧嬪��
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�");
+            processOrder.setIsUpload(1); // 鏄惁涓婁紶
+            processOrder.setSampleS(list.get(1)); // 璇曟牱鍚嶇О
+            processOrder.setEntrustmentTimeS(list.get(3)); // 濮旀墭鏃堕棿
+            processOrder.setSampleTypeS(list.get(5)); // 鍨嬪彿
+            processOrder.setCompanyS(list.get(7)); // 濮旀墭鍗曚綅
+            processOrder.setProductionS(list.get(9)); // 鐢熶骇鍗曚綅
+            processOrder.setPrepareUserS(list.get(11)); // 濮旀墭浜�
+            if (NumberUtil.isNumber(list.get(13))) {
+                processOrder.setSampleNumS(Integer.parseInt(list.get(13))); // 鏍峰搧鏁伴噺
+            }
+            // 鏍峰搧鐘舵��
+            switch (list.get(15)) {
+                case "寰呭鏍�":
+                    processOrder.setInsStateS(0);
+                    break;
+                case "寰呮楠�":
+                    processOrder.setInsStateS(1);
+                    break;
+                case "宸叉楠�":
+                    processOrder.setInsStateS(4);
+                    break;
+                case "閫�鍥�":
+                    processOrder.setInsStateS(2);
+                    break;
+                case "鎾ら攢":
+                    processOrder.setInsStateS(3);
+                    break;
+            }
+            if (list.get(17).contains("鈽戞槸Yes")) {
+                processOrder.setIsLeaveS(1); // 鏄惁鐣欐牱
+            } else {
+                processOrder.setIsLeaveS(0); // 鏄惁鐣欐牱
+            }
+
+            if (list.get(19).contains("鈽戝鎵樺崟浣嶅彇鍥�")) {
+                processOrder.setProcessingS(0); // 鏍峰搧澶勭悊鏂瑰紡
+            }
+            if(list.get(19).contains("鈽戝疄楠屽澶勭悊")){
+                processOrder.setProcessingS(1); // 鏍峰搧澶勭悊鏂瑰紡
+            }
+            processOrder.setAppointedS(list.get(21)); // 绾﹀畾鏃堕棿
+            if (list.get(23).contains("鈽戣嚜鍙�")) {
+                processOrder.setSendS(1); // 鏄惁鑷彇
+            }
+            if(list.get(23).contains("鈽戝叾瀹�")) {
+                processOrder.setSendS(0); // 鏄惁鑷彇
+            }
+            // 浠�30寮�濮嬫槸鏍峰搧琛ㄦ牸鏁版嵁  鍒� 鍊间负鍒ゅ畾瑙勫垯缁撴潫
+            ArrayList<String> sampleList = new ArrayList<>();
+            for (int i = 29; i < list.size(); i++) {
+                if (list.get(i).contains("鍒ゅ畾瑙勫垯")) {
+                    break;
+                }
+                sampleList.add(list.get(i));
+            }
+            // 鏍峰搧琛ㄦ牸鏁版嵁
+            // 鏍规嵁orderId 灏嗗師鏈殑鍒犻櫎
+            processSampleNewMapper.delete(new LambdaQueryWrapper<ProcessSampleNew>().eq(ProcessSampleNew::getCnasOrderId, id));
+            for (int i = 0; i < sampleList.size(); i += 5) {
+                ProcessSampleNew processSampleNew = new ProcessSampleNew();
+                processSampleNew.setCnasOrderId(id);
+                processSampleNew.setSampleCode(sampleList.get(i + 1));
+                processSampleNew.setInspectionItem(sampleList.get(i + 2));
+                processSampleNew.setMethod(sampleList.get(i + 3));
+                processSampleNew.setRemark(sampleList.get(i + 4));
+                processSampleNewMapper.insert(processSampleNew);
+            }
+            int len = sampleList.size() + 28;
+            // 鍒ゅ畾瑙勫垯
+            processOrder.setPrepareUserUrlS(list.get(len + 4)); // 濮旀墭浜虹鍚�
+            if (StringUtils.isNotEmpty(list.get(len + 6))) {
+                String date = list.get(len + 6).substring(0, list.get(len + 6).indexOf("鏃�") + 1);
+                processOrder.setCreateTimeTwoS(date); // 濮旀墭鏃ユ湡
+            }
+
+            processOrder.setPhoneS(list.get(len + 8)); // 鑱旂郴鏂瑰紡
+            Integer comprehensiveUser = null;
+            if (StringUtils.isNotEmpty(list.get(len + 10))) {
+                List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().like(User::getName, list.get(len + 10)));
+                comprehensiveUser = users.get(0).getId();
+            }
+            processOrder.setComprehensiveUser(comprehensiveUser); // 缁煎悎瀹ょ鍚�
+
+            if (StringUtils.isNotEmpty(list.get(len + 12))) {
+                String date = list.get(len + 12).substring(0, list.get(len + 12).indexOf("鏃�") + 1);
+                if (StringUtils.isNotEmpty(date)) {
+                    LocalDate parse = LocalDate.parse(date, formatter);
+                    processOrder.setComprehensiveTime(parse); // 鎺ユ敹鏃ユ湡
+                }
+            }
+            if (StringUtils.isNotEmpty(list.get(len + 14))) {
+                List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().like(User::getName, list.get(len + 14)));
+                processOrder.setIssueUser(users.get(0).getId()); // 棰嗘牱鍛�
+            }
+            if (StringUtils.isNotEmpty(list.get(len + 16))) {
+                String date = list.get(len + 16).substring(0, list.get(len + 16).indexOf("鏃�") + 1);
+                if (StringUtils.isNotEmpty(date)) {
+                    LocalDate parse = LocalDate.parse(date, formatter);
+                    processOrder.setIssueTime(parse); // 棰嗘牱鏃ユ湡
+                }
+            }
+            processOrderMapper.updateById(processOrder);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new ErrorException("涓婁紶澶辫触");
+        }
+    }
+
+    @Override
     public ProcessOrderDto getProcessOrder(Integer id) {
-        return processOrderMapper.getProcessOrder(id);
+        ProcessOrderDto a = processOrderMapper.getProcessOrder(id);
+        // 濡傛灉涓婁紶浜嗗垯閲囩敤涓婁紶浜嗙殑瀛楁
+        if (Objects.nonNull(a.getIsUpload()) && a.getIsUpload().equals(1)) {
+            a = getNewValue(a);
+        }
+        return a;
+    }
+    public ProcessOrderDto getNewValue(ProcessOrderDto a) {
+        List<ProcessSampleNew> processSampleNews = processSampleNewMapper.selectList(new LambdaQueryWrapper<ProcessSampleNew>()
+                .eq(ProcessSampleNew::getCnasOrderId, a.getId()));
+        a.setSample(a.getSampleS()); // 璇曟牱鍚嶇О
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�");
+        if (StringUtils.isNotEmpty(a.getEntrustmentTimeS())) {
+            LocalDate parse = LocalDate.parse(a.getEntrustmentTimeS(), dateTimeFormatter);
+            LocalDateTime localDateTime = LocalDateTime.of(parse, LocalTime.MIDNIGHT);
+            a.setCreateTime(localDateTime); // 濮旀墭鏃堕棿
+        }
+        a.setSampleType(a.getSampleTypeS()); // 鍨嬪彿
+        a.setCompany(a.getCompanyS()); // 濮旀墭鍗曚綅
+        a.setProduction(a.getProductionS()); // 鐢熶骇鍗曚綅
+        a.setPrepareUser(a.getPrepareUserS()); // 濮旀墭浜�
+        a.setSampleNum(a.getSampleNumS() + ""); // 鏍峰搧鏁伴噺
+        a.setInsState(a.getInsStateS()); // 鏍峰搧鐘舵��
+        a.setIsLeave(a.getIsLeaveS()); // 鏄惁鐣欐牱
+        a.setProcessing(a.getProcessingS()); // 鏍峰搧澶勭悊鏂瑰紡
+        a.setPhone(a.getPhoneS()); // 鑱旂郴鏂瑰紡
+
+        if (StringUtils.isNotEmpty(a.getAppointedS())) {
+            LocalDate parse = LocalDate.parse(a.getAppointedS(), dateTimeFormatter);
+            a.setAppointed(parse); // 绾﹀畾鏃堕棿
+        }
+        a.setSend(a.getSendS()); // 鎶ュ憡鍙戦�佹柟寮�
+        ArrayList<SampleItemDto> sampleItemDtos = new ArrayList<>();
+        for (ProcessSampleNew b : processSampleNews) {
+            SampleItemDto sampleItemDto = new SampleItemDto();
+            sampleItemDto.setCode(b.getSampleCode());
+            sampleItemDto.setProduct(b.getInspectionItem());
+            sampleItemDto.setStandardMethodList(b.getMethod());
+            sampleItemDto.setRemark(b.getRemark());
+            sampleItemDtos.add(sampleItemDto);
+        }
+        a.setSampleItems(sampleItemDtos);
+        return a;
     }
 
     @Override
@@ -77,13 +272,56 @@
     public void exportInspectionOrder(Integer id, HttpServletResponse response) {
         ProcessOrder processOrder = baseMapper.selectById(id);
         InspectionOrderExportDto inspectionOrderExportDto = extracted(processOrder);
-        List<InspectionOrderDetail> list = baseMapper.selectInsOrder(processOrder.getInsOrderId());
-        int index = 1;
-        for (InspectionOrderDetail inspectionOrderDetail : list) {
-            inspectionOrderDetail.setIndex(index);
-            index++;
+        final List<InspectionOrderDetail> list;
+        // 濡傛灉璇ユ暟鎹笂浼犱簡鏂囦欢 灏变娇鐢ㄤ笂浼犵殑鏁版嵁
+        if(Objects.nonNull(processOrder.getIsUpload()) && processOrder.getIsUpload().equals(1)) {
+            list = new ArrayList<>();
+            List<ProcessSampleNew> processSampleNews = processSampleNewMapper.selectList(new LambdaQueryWrapper<ProcessSampleNew>()
+                    .eq(ProcessSampleNew::getCnasOrderId, id));
+            inspectionOrderExportDto.setSample(processOrder.getSampleS()); // 璇曟牱鍚嶇О
+            inspectionOrderExportDto.setCommissionDateString(processOrder.getEntrustmentTimeS()); // 濮旀墭鏃堕棿
+            inspectionOrderExportDto.setSampleType(processOrder.getSampleTypeS()); // 鍨嬪彿
+            inspectionOrderExportDto.setCompany(processOrder.getCompanyS()); // 濮旀墭鍗曚綅
+            inspectionOrderExportDto.setProduction(processOrder.getProductionS()); // 鐢熶骇鍗曚綅
+            inspectionOrderExportDto.setPrepareUser(processOrder.getPrepareUserS()); // 濮旀墭浜�
+            inspectionOrderExportDto.setSampleNum(processOrder.getSampleNumS() + ""); // 鏍峰搧鏁伴噺
+            inspectionOrderExportDto.setInsState(processOrder.getInsStateS()); // 鏍峰搧鐘舵��
+            // 鏄惁鐣欐牱
+            inspectionOrderExportDto.setIsLeave1(processOrder.getIsLeaveS() == 1 ? "鈽�" : "鈻�");
+            inspectionOrderExportDto.setIsLeave2(processOrder.getIsLeaveS() == 0 ? "鈽�" : "鈻�");
+            // 鏍峰搧澶勭悊鏂瑰紡
+            inspectionOrderExportDto.setProcessing0(processOrder.getProcessingS() == 0 ? "鈽�" : "鈻�");
+            inspectionOrderExportDto.setProcessing1(processOrder.getProcessingS() == 1 ? "鈽�" : "鈻�");
+            // 绾﹀畾鏃堕棿
+            inspectionOrderExportDto.setAppointedString(processOrder.getAppointedS());
+            // 鏄惁鑷彇
+            inspectionOrderExportDto.setSend0(processOrder.getSendS() == 0 ? "鈽�" : "鈻�");
+            inspectionOrderExportDto.setSend1(processOrder.getSendS() == 1 ? "鈽�" : "鈻�");
+            int i = 1;
+            for(ProcessSampleNew a : processSampleNews) {
+                InspectionOrderDetail inspectionOrderDetail = new InspectionOrderDetail();
+                inspectionOrderDetail.setSampleNumber(a.getSampleCode());
+                inspectionOrderDetail.setTestItem(a.getInspectionItem());
+                inspectionOrderDetail.setTestStandard(a.getMethod());
+                inspectionOrderDetail.setRemark(a.getRemark());
+                inspectionOrderDetail.setIndex(i);
+                list.add(inspectionOrderDetail);
+                i++;
+            }
+            // 濮旀墭浜虹鍚�
+            inspectionOrderExportDto.setPrepareUser(processOrder.getPrepareUserS());
+            // 濮旀墭鏃ユ湡
+            inspectionOrderExportDto.setCommissionDateString(processOrder.getEntrustmentTimeS());
+            // 鑱旂郴鏂瑰紡
+            inspectionOrderExportDto.setPhone(processOrder.getPhoneS());
+        }else {
+            list = baseMapper.selectInsOrder(processOrder.getInsOrderId());
+            int index = 1;
+            for (InspectionOrderDetail inspectionOrderDetail : list) {
+                inspectionOrderDetail.setIndex(index);
+                index++;
+            }
         }
-
         // 鑾峰彇璺緞
         InputStream inputStream = this.getClass().getResourceAsStream("/static/inspection-order.docx");
         Configure configure = Configure.builder()
@@ -133,8 +371,8 @@
 
         inspectionOrderExportDto.setIsLeave1(processOrderDto.getIsLeave() != null && processOrderDto.getIsLeave() == 1 ? "鈽�" : "鈻�");
         inspectionOrderExportDto.setIsLeave2(processOrderDto.getIsLeave() != null && processOrderDto.getIsLeave() == 0 ? "鈽�" : "鈻�");
-        inspectionOrderExportDto.setSend0(processOrderDto.getSend() != null && processOrderDto.getSend() == 1 ? "鈽�" : "鈻�");
-        inspectionOrderExportDto.setSend1(processOrderDto.getSend() != null && processOrderDto.getSend() == 0 ? "鈽�" : "鈻�");
+        inspectionOrderExportDto.setSend0(processOrderDto.getSend() != null && processOrderDto.getSend() == 0 ? "鈽�" : "鈻�");
+        inspectionOrderExportDto.setSend1(processOrderDto.getSend() != null && processOrderDto.getSend() == 1 ? "鈽�" : "鈻�");
         inspectionOrderExportDto.setProcessing0(processOrderDto.getProcessing() != null && processOrderDto.getProcessing() == 0 ? "鈽�" : "鈻�");
         inspectionOrderExportDto.setProcessing1(processOrderDto.getProcessing() != null && processOrderDto.getProcessing() == 1 ? "鈽�" : "鈻�");
         if (ObjectUtils.isNotEmpty(processOrder.getRule())) {

--
Gitblit v1.9.3