From 852d294263831752a184fa8a16f33aafee7ba309 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 29 一月 2026 13:48:43 +0800
Subject: [PATCH] 不合格管理:新增OA审核状态、物料属性,时间区间字段;以及导出功能

---
 inspect-server/src/main/resources/mapper/InsUnqualifiedHandlerMapper.xml                          |   67 +++++++----
 ruoyi-admin-ztns/src/main/resources/application-ztns.yml                                          |    4 
 inspect-server/src/main/java/com/ruoyi/inspect/excel/InsUnqualifiedHandlerExcelData.java          |   68 +++++++++++
 inspect-server/src/main/java/com/ruoyi/inspect/vo/UnqualifiedHandlerVO.java                       |    5 
 inspect-server/src/main/resources/mapper/InsOrderMapper.xml                                       |   68 +++++++++++
 inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java    |    8 +
 inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnqualifiedHandlerMapper.java            |    3 
 inspect-server/src/main/java/com/ruoyi/inspect/dto/UnqualifiedHandlerDto.java                     |   23 +++
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java |   67 +++++++++++
 inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedHandlerService.java          |    4 
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java          |   20 +++
 11 files changed, 300 insertions(+), 37 deletions(-)

diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java
index 6a51cca..5b1141a 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java
@@ -127,7 +127,6 @@
         return Result.success(unqualifiedHandlerService.deleteUnqualifiedHandler(id));
     }
 
-
     @ApiOperation(value = "涓嬭浇闄勪欢")
     @GetMapping("/downFile")
     public Result<?> oaDownFile(Integer id) {
@@ -138,4 +137,11 @@
         return Result.success(map);
     }
 
+    @ApiOperation(value = "瀵煎嚭涓嶅悎鏍煎鐞嗚褰�")
+    @GetMapping("/exportUnqualifiedHandler")
+    public void exportUnqualifiedHandler(UnqualifiedHandlerDto unqualifiedHandlerDto,HttpServletResponse response) {
+        unqualifiedHandlerService.exportUnqualifiedHandler(unqualifiedHandlerDto,response);
+    }
+
+
 }
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/UnqualifiedHandlerDto.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/UnqualifiedHandlerDto.java
index d4eb38c..8594292 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/dto/UnqualifiedHandlerDto.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/dto/UnqualifiedHandlerDto.java
@@ -8,6 +8,7 @@
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -16,6 +17,9 @@
 
     @ApiModelProperty("鍩�")
     private String contract;
+
+    @ApiModelProperty("OA娴佺▼鐘舵��")
+    private String operation;
 
     @ApiModelProperty("璁㈠崟鍙�")
     private String orderNo;
@@ -114,7 +118,6 @@
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private LocalDateTime invalidDate;
 
-
     @ApiModelProperty("瀹℃壒鏃ユ湡")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private LocalDateTime approvedDate;
@@ -131,7 +134,6 @@
     @ApiModelProperty("閲囪喘鍗曚綅")
     private String buyUnitMeas;
 
-
     private Integer isSource;
 
     private Integer number;
@@ -142,10 +144,25 @@
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private LocalDateTime receiverDate;
 
-
     @ApiModelProperty("闄勪欢鍒楄〃")
     private List<InsUnqualifiedHandlerFile> unqualifiedHandlerFiles;
 
+    /**
+     * 鍙嶉寮�濮嬫棩鏈�
+     */
+    @ApiModelProperty(value = "鍙嶉寮�濮嬫棩鏈�")
+    private String feedbackStartTime;
 
+    /**
+     * 鍙嶉缁撴潫鏃ユ湡
+     */
+    @ApiModelProperty(value = "鍙嶉缁撴潫鏃ユ湡")
+    private String feedbackEndTime;
+
+    /**
+     * 鐗╂枡灞炴��
+     */
+    @ApiModelProperty(value = "鐗╂枡灞炴��")
+    private String materialProp;
 
 }
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/excel/InsUnqualifiedHandlerExcelData.java b/inspect-server/src/main/java/com/ruoyi/inspect/excel/InsUnqualifiedHandlerExcelData.java
new file mode 100644
index 0000000..79168cf
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/excel/InsUnqualifiedHandlerExcelData.java
@@ -0,0 +1,68 @@
+package com.ruoyi.inspect.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Data
+public class InsUnqualifiedHandlerExcelData {
+
+    @ExcelProperty("鍩�")
+    private String contract;
+
+    @ExcelProperty(value = "缂栧彿")
+    private String no;
+
+    @ExcelProperty("OA娴佺▼鐘舵��")
+    private String operation;
+
+    @ExcelProperty("璁㈠崟鍙�")
+    private String orderNo;
+
+    @ExcelProperty("闆朵欢鍙�")
+    private String partNo;
+
+    @ExcelProperty("闆朵欢鎻忚堪")
+    private String partDesc;
+
+    @ExcelProperty("鐗╂枡灞炴��")
+    private String materialProp;
+
+    @ExcelProperty(value = "鐗╂枡鍚嶇О")
+    private String materialName;
+
+    @ExcelProperty(value = "鐢熶骇鎵规")
+    private String productionBatch;
+
+    @ExcelProperty(value = "鍒拌揣鏁伴噺")
+    private String cargoQuantity;
+    
+    @ExcelProperty(value = "瑙勬牸鍨嬪彿")
+    private String specsModels;
+
+    @ExcelProperty(value = "鎶ユ鏃ユ湡")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate inspectTime;
+
+    @ExcelProperty(value = "鍙嶉浜�")
+    private String feedbackUser;
+
+    @ExcelProperty(value = "鍙嶉鏃ユ湡")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate feedbackTime;
+
+    @ExcelProperty(value = "鍒嗙被")
+    private String classification;
+
+    @ExcelProperty(value = "涓嶅悎鏍煎綊灞�")
+    private String offGradeAscription;
+    
+    @ExcelProperty(value = "涓嶅悎鏍兼弿杩�")
+    private String unqualifiedDesc;
+    
+    @ExcelProperty("渚涘簲鍟嗗悕绉�")
+    private String supplierName;
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnqualifiedHandlerMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnqualifiedHandlerMapper.java
index 171980b..1314e58 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnqualifiedHandlerMapper.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnqualifiedHandlerMapper.java
@@ -10,6 +10,7 @@
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDate;
 import java.util.List;
 
 /**
@@ -21,7 +22,7 @@
 @Mapper
 public interface InsUnqualifiedHandlerMapper extends BaseMapper<InsUnqualifiedHandler> {
 
-    IPage<UnqualifiedHandlerVO> selectPageList(IPage<UnqualifiedHandlerVO> page, @Param("ew")QueryWrapper<UnqualifiedHandlerDto> ew);
+    IPage<UnqualifiedHandlerVO> selectPageList(IPage<UnqualifiedHandlerVO> page, @Param("ew")QueryWrapper<UnqualifiedHandlerDto> ew, @Param("feedbackStartDate") String feedbackStartDate,@Param("feedbackEndDate") String feedbackEndDate);
 
     UnqualifiedHandlerVO findById(@Param("id") Long id);
 
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedHandlerService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedHandlerService.java
index 038a284..05d02bc 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedHandlerService.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedHandlerService.java
@@ -11,6 +11,7 @@
 import com.ruoyi.inspect.pojo.InsUnqualifiedHandler;
 import com.ruoyi.inspect.vo.UnqualifiedHandlerVO;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
@@ -36,4 +37,7 @@
     UnqualifiedHandlerDto getUnqualifiedHandler(Integer id);
 
     boolean deleteUnqualifiedHandler(Integer id);
+
+    void exportUnqualifiedHandler(UnqualifiedHandlerDto unqualifiedHandlerDto, HttpServletResponse response);
+
 }
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
index b203491..b77a7fd 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
@@ -1745,6 +1745,22 @@
     }
 
     /**
+     * 浣跨敤姝e垯琛ㄨ揪寮忓幓闄ゅ瓧绗︿覆鏈�鍚庝竴涓�"-"鍙婂叾鍚庨潰鐨勬墍鏈夊唴瀹�
+     * @param str 寰呭鐞嗙殑瀛楃涓诧紙鍏佽涓簄ull锛�
+     * @return 澶勭悊鍚庣殑瀛楃涓诧紝null杩斿洖null锛屾棤"-"杩斿洖鍘熷瓧绗︿覆
+     */
+    public static String removeLastHyphenAndContent(String str) {
+        // 绌哄�兼牎楠岋細閬垮厤NullPointerException
+        if (str == null || str.isEmpty()) {
+            return str;
+        }
+        // 姝e垯琛ㄨ揪寮忥細鍖归厤鏈�鍚庝竴涓�"-"鍙婂叾鍚庨潰鐨勬墍鏈夊唴瀹�
+        String regex = "-[^-]*$";
+        // 鏇挎崲鍖归厤鐨勫唴瀹逛负绌哄瓧绗︿覆
+        return str.replaceAll(regex, "");
+    }
+
+    /**
      * 灏忔姤鍛婄敓鎴�
      *
      * @param orderId
@@ -1767,7 +1783,7 @@
         IfsPartPropsRecord ifsPartPropsRecord = ifsPartPropsRecordMapper.selectOne(Wrappers.<IfsPartPropsRecord>lambdaQuery()
                 .eq(IfsPartPropsRecord::getIfsInventoryId, ifsInventoryQuantity.getId()));
         if (Objects.nonNull(ifsPartPropsRecord)) {
-            enterFactoryReport.setOuterColor(ifsPartPropsRecord.getOuterColor());
+            enterFactoryReport.setOuterColor(StringUtils.equals(ifsPartPropsRecord.getOuterColor(),"/")?ifsPartPropsRecord.getInsulationColor():ifsPartPropsRecord.getOuterColor());
         }
         enterFactoryReport.setQtyArrived(ifsInventoryQuantity.getQtyArrived() == null ? "" :
                 ifsInventoryQuantity.getQtyArrived().stripTrailingZeros().toPlainString() + ifsInventoryQuantity.getBuyUnitMeas());
@@ -1812,7 +1828,7 @@
             //鏌ヨ妫�楠屽崟娑堟伅
             InsSampleUserVO insSampleUser = insSampleUserMapper.selectUserNameByOrderId(orderId);
             if (Objects.nonNull(insSampleUser)) {
-                enterFactoryReport.setPartDesc(insSampleUser.getModel());
+                enterFactoryReport.setPartDesc(removeLastHyphenAndContent(insSampleUser.getModel()));
                 enterFactoryReport.setInspector(insSampleUser.getInspector());
                 enterFactoryReport.setInspectDate(insSampleUser.getInspectDate());
             }
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..bd46323 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,10 @@
 package com.ruoyi.inspect.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.io.IoUtil;
+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 +14,7 @@
 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.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;
@@ -29,18 +35,27 @@
 import com.ruoyi.inspect.service.InsUnqualifiedHandlerService;
 import com.ruoyi.inspect.vo.UnqualifiedHandlerVO;
 import com.ruoyi.system.mapper.UserMapper;
+import com.ruoyi.system.service.ISysDictDataService;
+import com.ruoyi.system.service.ISysDictTypeService;
 import com.ruoyi.system.service.UserService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.time.LocalDate;
 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,11 +75,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");
+            //鏌ヨ涓嶅悎鏍煎鐞嗚褰�
+            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());
+                if(StringUtils.equals(handlerExcelData.getClassification(),"0")){
+                    handlerExcelData.setClassification("涓�绫讳笉鍚堟牸");
+                }else if(StringUtils.equals(handlerExcelData.getClassification(),"1")){
+                    handlerExcelData.setClassification("浜岀被涓嶅悎鏍�");
+                }
+                if(StringUtils.equals(handlerExcelData.getOffGradeAscription(),"0")){
+                    handlerExcelData.setOffGradeAscription("鐢熶骇鍙嶉涓嶅悎鏍�");
+                }else if(StringUtils.equals(handlerExcelData.getOffGradeAscription(),"1")){
+                    handlerExcelData.setOffGradeAscription("妫�娴嬩笉鍚堟牸");
+                }
+                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
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/vo/UnqualifiedHandlerVO.java b/inspect-server/src/main/java/com/ruoyi/inspect/vo/UnqualifiedHandlerVO.java
index 9de2e52..c96b7f5 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/vo/UnqualifiedHandlerVO.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/vo/UnqualifiedHandlerVO.java
@@ -17,6 +17,9 @@
     @ApiModelProperty("鍩�")
     private String contract;
 
+    @ApiModelProperty("鐗╂枡灞炴��")
+    private String materialProp;
+
     @ApiModelProperty("璁㈠崟鍙�")
     private String orderNo;
 
@@ -144,6 +147,8 @@
     @ApiModelProperty("鎷嗗垎鏁伴噺")
     private Integer number;
 
+    @ApiModelProperty("OA娴佺▼鐘舵��")
+    private String operation;
 
     /**
      * 妫�楠岀姸鎬�
diff --git a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
index 256e792..2fa7666 100644
--- a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
@@ -509,8 +509,68 @@
               group by io.id) a
     </select>
     <select id="selectOrderInfoById" resultType="com.ruoyi.inspect.vo.IfsOrderVO">
-        select  io.*,
-                iiq.contract,
+        select
+                io.id,
+                io.entrust_code,
+                io.custom,
+                io.company,
+                io.code,
+                io.type,
+                io.appointed,
+                io.state,
+                io.tell,
+                io.remark,
+                io.remark_en,
+                io.otc_code,
+                io.user_id,
+                io.mating,
+                io.create_user,
+                io.create_time,
+                io.update_user,
+                io.update_time,
+                io.send_time,
+                io.ins_state,
+                io.factory,
+                io.laboratory,
+                io.sample_type,
+                io.sample,
+                io.ins_result,
+                io.ins_time,
+                io.processing,
+                io.is_leave,
+                io.order_type,
+                io.send,
+                io.form_type,
+                io.phone,
+                io.examine_time,
+                io.engineering,
+                io.engineering_en,
+                io.production,
+                io.production_en,
+                io.company_id,
+                io.prepare_user_id,
+                io.prepare_user,
+                io.prepare_user_en,
+                io.prepare_code,
+                io.out_entrust_code,
+                io.is_revocation,
+                io.revocation_ins_product_ids,
+                io.type_source,
+                io.ifs_inventory_id,
+                io.test_quantity,
+                io.part_detail,
+                io.is_exemption,
+                io.temperature,
+                io.humidity,
+                io.sample_status,
+                io.quarter_item_id,
+                io.sample_view,
+                io.sample_view_en,
+                io.is_first_submit,
+                io.first_submit_date,
+                io.update_batch_no,
+                io.part_desc,
+                io.supplier_name,
                 iiq.is_split_order,
                 iiq.order_type AS ifs_order_type,
                 iiq.part_no,
@@ -532,6 +592,10 @@
                     when ipps.lettering_info is not null and ipps.lettering_info!='' then ipps.lettering_info
                     else isor.lettering_info
                     end AS lettering_info,
+                case
+                    when io.ifs_inventory_id is not null and io.ifs_inventory_id!='' then iiq.contract
+                    else io.contract
+                    end AS contract,
                 ipps.start_meter_mark,
                 ipps.end_meter_mark
         from ins_order io left join ifs_inventory_quantity iiq on io.ifs_inventory_id=iiq.id
diff --git a/inspect-server/src/main/resources/mapper/InsUnqualifiedHandlerMapper.xml b/inspect-server/src/main/resources/mapper/InsUnqualifiedHandlerMapper.xml
index c91b2c0..2b65479 100644
--- a/inspect-server/src/main/resources/mapper/InsUnqualifiedHandlerMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsUnqualifiedHandlerMapper.xml
@@ -12,31 +12,48 @@
         unqualified_desc,inventory_quantity_id
     </sql>
     <select id="selectPageList" resultType="com.ruoyi.inspect.vo.UnqualifiedHandlerVO">
-        select * from (select
-            iiq.*,
-            iuh.id as handler_id,
-            iuh.no,
-            iuh.material_name,
-            iuh.production_batch,
-            iuh.cargo_quantity,
-            iuh.specs_models,
-            iuh.inspect_time,
-            iuh.feedback_user,
-            iuh.feedback_time,
-            iuh.classification,
-            iuh.off_grade_ascription,
-            iuh.unqualified_desc,
-            iuh.inventory_quantity_id,
-            iuh.oa_state,
-            iuh.request_id,
-            iuh.file_url,
-            iuh.headline
-        from
-            ins_unqualified_handler iuh
-        inner join
-            ifs_inventory_quantity iiq
-        on
-            iuh.inventory_quantity_id = iiq.id)tempA
+        select
+            *
+        from (
+            select
+                iiq.*,
+                iuh.id as handler_id,
+                iuh.no,
+                iuh.material_name,
+                iuh.production_batch,
+                iuh.cargo_quantity,
+                iuh.specs_models,
+                iuh.inspect_time,
+                iuh.feedback_user,
+                iuh.feedback_time,
+                iuh.classification,
+                iuh.off_grade_ascription,
+                iuh.unqualified_desc,
+                iuh.inventory_quantity_id,
+                iuh.oa_state,
+                iuh.request_id,
+                iuh.file_url,
+                iuh.headline,
+                coa.operation
+            from
+                ins_unqualified_handler iuh
+            inner join
+                ifs_inventory_quantity iiq
+            on
+                iuh.inventory_quantity_id = iiq.id
+            LEFT JOIN (
+            SELECT
+            *,
+            ROW_NUMBER() OVER (PARTITION BY workflow_id ORDER BY approval_time DESC, id DESC) AS rn
+            FROM
+            common_oa
+            ) AS coa ON iuh.request_id = coa.workflow_id AND coa.rn = 1
+        )tempA
+        <where>
+            <if test="feedbackStartDate!=null and feedbackEndDate !=null">
+                AND feedback_time between #{feedbackStartDate} AND #{feedbackEndDate}
+            </if>
+        </where>
         <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
             ${ew.customSqlSegment}
         </if>
diff --git a/ruoyi-admin-ztns/src/main/resources/application-ztns.yml b/ruoyi-admin-ztns/src/main/resources/application-ztns.yml
index 6726bee..57e1c97 100644
--- a/ruoyi-admin-ztns/src/main/resources/application-ztns.yml
+++ b/ruoyi-admin-ztns/src/main/resources/application-ztns.yml
@@ -179,11 +179,11 @@
     - contract: ZTNS
       ip: http://10.1.51.128
       user: lims
-      password: qCzOMJlqE8TYOHDWGva/Tw==
+      password: q1CItm6Zl7P4SQkfczu/oQ==
     - contract: KJNS
       ip: http://10.1.203.177
       user: lims
-      password: qCzOMJlqE8TYOHDWGva/Tw==
+      password: q1CItm6Zl7P4SQkfczu/oQ==
 
 # 澶囨敞 18083瀵嗙爜锛歾ttZTT123!@
 mqtt:

--
Gitblit v1.9.3