From c80a342eacd6b639c486eb47afdf04984d54183e Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期二, 03 二月 2026 13:25:13 +0800
Subject: [PATCH] 不合格管理:重新提交oa功能调整3

---
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java |   86 +++++++++++++++++++++++++++++++++++++------
 1 files changed, 74 insertions(+), 12 deletions(-)

diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java
index d4c2a25..79490a1 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java
@@ -1,6 +1,9 @@
 package com.ruoyi.inspect.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -10,6 +13,8 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.enums.ContractType;
 import com.ruoyi.common.oa.OAProcess;
 import com.ruoyi.common.oa.OAProperty;
 import com.ruoyi.common.oa.OAResult;
@@ -18,6 +23,7 @@
 import com.ruoyi.framework.exception.ErrorException;
 import com.ruoyi.inspect.dto.PushOADto;
 import com.ruoyi.inspect.dto.UnqualifiedHandlerDto;
+import com.ruoyi.inspect.excel.InsUnqualifiedHandlerExcelData;
 import com.ruoyi.inspect.mapper.InsOrderMapper;
 import com.ruoyi.inspect.mapper.InsUnqualifiedHandlerMapper;
 import com.ruoyi.inspect.pojo.CommonOa;
@@ -28,19 +34,23 @@
 import com.ruoyi.inspect.service.InsUnqualifiedHandlerFileService;
 import com.ruoyi.inspect.service.InsUnqualifiedHandlerService;
 import com.ruoyi.inspect.vo.UnqualifiedHandlerVO;
-import com.ruoyi.system.mapper.UserMapper;
-import com.ruoyi.system.service.UserService;
+import com.ruoyi.system.service.ISysDictTypeService;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @author 27233
@@ -60,21 +70,61 @@
     private InsUnqualifiedHandlerFileService insUnqualifiedHandlerFileService;
     @Resource
     private InsOrderMapper insOrderMapper;
+    @Resource
+    private ISysDictTypeService sysDictTypeService;
 
 
     @Override
     public IPage<UnqualifiedHandlerVO> pageList(Page page, UnqualifiedHandlerDto unqualifiedHandlerDto) {
-        return baseMapper.selectPageList(page, QueryWrappers.queryWrappers(unqualifiedHandlerDto));
+        String feedbackStartDate = unqualifiedHandlerDto.getFeedbackStartTime();
+        String feedbackEndDate = unqualifiedHandlerDto.getFeedbackEndTime();
+        unqualifiedHandlerDto.setFeedbackStartTime(null);
+        unqualifiedHandlerDto.setFeedbackEndTime(null);
+        return baseMapper.selectPageList(page, QueryWrappers.queryWrappers(unqualifiedHandlerDto),feedbackStartDate,feedbackEndDate);
+    }
+
+    @Override
+    public void exportUnqualifiedHandler(UnqualifiedHandlerDto unqualifiedHandlerDto, HttpServletResponse response) {
+        response.reset();
+        try{
+            //鏌ヨ瀛楀吀
+            List<SysDictData> materialPropType = sysDictTypeService.selectDictDataByType("material_prop_type");//鐗╂枡灞炴��
+            List<SysDictData> categoriesNoConformities = sysDictTypeService.selectDictDataByType("categories_no_conformities");//涓嶅悎鏍煎垎绫�
+            List<SysDictData> attributionNoConformities = sysDictTypeService.selectDictDataByType("attribution_no_conformities");// 涓嶅悎鏍煎綊灞�
+            //鏌ヨ涓嶅悎鏍煎鐞嗚褰�
+            IPage<UnqualifiedHandlerVO> pageList = pageList(new Page<>(-1, -1), unqualifiedHandlerDto);
+            List<InsUnqualifiedHandlerExcelData> records = pageList.getRecords().stream().map(m->{
+                InsUnqualifiedHandlerExcelData handlerExcelData = new InsUnqualifiedHandlerExcelData();
+                BeanUtil.copyProperties(m,handlerExcelData);
+                handlerExcelData.setMaterialProp(materialPropType.stream().filter(f-> StringUtils.equals(f.getDictValue(),handlerExcelData.getMaterialProp())).findFirst().orElse(new SysDictData()).getDictLabel());
+                handlerExcelData.setClassification(categoriesNoConformities.stream().filter(f-> StringUtils.equals(f.getDictValue(),handlerExcelData.getClassification())).findFirst().orElse(new SysDictData()).getDictLabel());
+                handlerExcelData.setOffGradeAscription(attributionNoConformities.stream().filter(f-> StringUtils.equals(f.getDictValue(),handlerExcelData.getOffGradeAscription())).findFirst().orElse(new SysDictData()).getDictLabel());
+                return handlerExcelData;
+            }).collect(Collectors.toList());
+            //璁剧疆response
+            String fileName = "涓嶅悎鏍煎鐞嗚褰�" + ExcelTypeEnum.XLSX.getValue();
+            fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString());
+            response.setContentType("application/vnd.ms-excel");
+            response.setHeader("Cache-Control", "no-cache");
+            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+            response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
+            //瀵煎嚭
+
+            EasyExcel.write(response.getOutputStream(), InsUnqualifiedHandlerExcelData.class)
+                    .sheet()
+                    .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+                    .doWrite(records);
+        }catch (Exception e){
+            e.printStackTrace();
+            throw new RuntimeException("涓嶅悎鏍煎鐞嗚褰曞鍑哄け璐�");
+        }
+
     }
 
     @Override
     public Result pushOA(PushOADto pushOADto) {
         //鑾峰彇涓嶅悎鏍煎鐞嗚褰�
         UnqualifiedHandlerVO vo = baseMapper.findById(pushOADto.getHandlerId());
-
-        if (vo.getRequestId() != null) {
-            throw new ErrorException("璇ヤ笉鍚堟牸澶勭悊宸叉彁浜よ繃OA");
-        }
 
         //鎻愪氦oa鐩稿叧瀛楁璧嬪��
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
@@ -115,9 +165,13 @@
         boolean oa = false;
         try {
             log.info("鍙戣捣涓嶅悎鏍煎鐞哋A瀹℃牳娴佺▼");
-            String unqualifiedProcessId = oaProperty.getUnqualifiedProcessId();
+            //鏍规嵁IFS鍩熻幏鍙栧搴旂殑娴佺▼id
+            if(StringUtils.isBlank(pushOADto.getContract())){
+                throw new RuntimeException("IFS鍩熴��"+pushOADto.getContract()+"銆戜笉瀛樺湪锛孫A娴佺▼鎻愪氦澶辫触");
+            }
+            String unqualifiedProcessId = StringUtils.equals(ContractType.ZTNS.getValue(),pushOADto.getContract())?oaProperty.getUnqualifiedProcessId():oaProperty.getUnqualifiedProcessIdByKJNS();
             OAResult oaResult = OAProcess.start(mainFields, requestName, unqualifiedProcessId,SecurityUtils.getUsername());
-            log.info("涓嶅悎鏍煎鐞哋A瀹℃牳娴佺▼缁撴潫锛岃繑鍥炵粨鏋�->{}" + oaResult);
+            log.info("{}涓嶅悎鏍煎鐞哋A瀹℃牳娴佺▼缁撴潫锛岃繑鍥炵粨鏋�->{}",unqualifiedProcessId,oaResult);
             oa = oaResult.success();
             if (oa) {
                 String addWorkflowResult = oaResult.getAddWorkflowResult();
@@ -230,6 +284,7 @@
      * @return
      */
     @Override
+    @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
     public boolean updateUnqualifiedHandler(UnqualifiedHandlerDto unqualifiedHandlerDto) {
         // 鍒犻櫎闄勪欢, 閲嶆柊娣诲姞
         insUnqualifiedHandlerFileService.remove(Wrappers.<InsUnqualifiedHandlerFile>lambdaQuery()
@@ -240,8 +295,15 @@
             }
             insUnqualifiedHandlerFileService.updateBatchById(unqualifiedHandlerDto.getUnqualifiedHandlerFiles());
         }
-
-        return this.updateById(unqualifiedHandlerDto);
+        boolean isUpdated = this.updateById(unqualifiedHandlerDto);
+        if(isUpdated){
+            //鎺ㄩ�丱A
+            PushOADto pushOADto = new PushOADto();
+            pushOADto.setHandlerId(unqualifiedHandlerDto.getId());
+            pushOADto.setContract(unqualifiedHandlerDto.getContract());
+            pushOA(pushOADto);
+        }
+        return true;
     }
 
     /**

--
Gitblit v1.9.3