From 0800df1e422c8f7e5fee825410bfed8344ee3629 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期二, 11 三月 2025 09:40:17 +0800
Subject: [PATCH] 检验下单:数据查看

---
 inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderService.java          |    3 
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java |   17 +----
 inspect-server/src/main/java/com/ruoyi/inspect/comparater/CustomComparator.java      |  100 +++++++++++++++++++++++++++++++++
 inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java    |   22 +++++--
 4 files changed, 122 insertions(+), 20 deletions(-)

diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/comparater/CustomComparator.java b/inspect-server/src/main/java/com/ruoyi/inspect/comparater/CustomComparator.java
new file mode 100644
index 0000000..f4dba96
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/comparater/CustomComparator.java
@@ -0,0 +1,100 @@
+package com.ruoyi.inspect.comparater;
+
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.inspect.dto.SampleProductDto2;
+import com.ruoyi.system.service.ISysDictDataService;
+import com.ruoyi.system.service.ISysDictTypeService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.text.Collator;
+import java.util.*;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+/**
+     * 鏁版嵁鏌ョ湅鎺ュ彛锛岃嚜瀹氫箟鎺掑簭瑙勫垯
+     */
+@Component
+public class CustomComparator implements Comparator<SampleProductDto2> {
+
+    public CustomComparator(ISysDictTypeService dictTypeService) {
+        this.dictTypeService = dictTypeService;
+    }
+
+    private final ISysDictTypeService dictTypeService;
+
+    @Override
+    public int compare(SampleProductDto2 o1, SampleProductDto2 o2) {
+        //鏍规嵁璇曢獙瀹ゆ帓搴�
+        if(StringUtils.isNotBlank(o1.getSonLaboratory())&& StringUtils.isNotBlank(o2.getSonLaboratory())){
+            if(!Objects.equals(o1.getSonLaboratory(),o2.getSonLaboratory())){
+                Collator instance = Collator.getInstance(Locale.CHINA);
+                return instance.compare(o1.getSonLaboratory(),o2.getSonLaboratory());
+            }
+        }
+        //鏌ヨ鍏ㄨ壊璋憋紝杩囨护鑹叉爣骞舵帓搴�
+        List<String> colorList = dictTypeService.selectDictDataByType("fiber_color_type").stream()
+                .sorted(Comparator.comparing(SysDictData::getDictSort))
+                .map(SysDictData::getDictLabel)
+                .collect(Collectors.toList());
+        //鍏堟寜鏍峰搧缂栧彿鍗囧簭
+        if(!Objects.equals(o1.getSampleCode(),o2.getSampleCode())){
+            if(containsOnlyDigits(o1.getSampleCode()) && containsOnlyDigits(o2.getSampleCode())){
+//                Integer o1Num = Integer.parseInt(o1.getSampleCode());
+//                Integer o2Num = Integer.parseInt(o2.getSampleCode());
+                Long o1Num = Long.parseLong(o1.getSampleCode());
+                Long o2Num = Long.parseLong(o2.getSampleCode());
+                return o1Num.compareTo(o2Num);
+            }
+            return o1.getSampleCode().compareTo(o2.getSampleCode());
+        }
+        //鏍规嵁濂楃鑹叉爣浠ュ強鍏夌氦鑹叉爣鎺掑簭
+        if(StringUtils.isNotBlank(o1.getBushColor())&& StringUtils.isNotBlank(o2.getBushColor())){
+            //濂楃鑹叉爣鎺掑簭
+            if(!Objects.equals(o1.getBushColor(),o2.getBushColor())){
+                Integer o1Index = colorList.indexOf(o1.getBushColor());
+                Integer o2Index = colorList.indexOf(o2.getBushColor());
+                return o1Index.compareTo(o2Index);
+            }
+            //鍏夌氦甯︽帓搴�
+            if(StringUtils.isNotBlank(o1.getCode())&& StringUtils.isNotBlank(o2.getCode())){
+                if(!Objects.equals(o1.getCode(),o2.getCode())){
+                    return o1.getCode().compareTo(o2.getCode());
+                }
+            }
+            //鍏夌氦鑹叉爣鎺掑簭
+            if(StringUtils.isNotBlank(o1.getColor())&& StringUtils.isNotBlank(o2.getColor())){
+                if(!Objects.equals(o1.getColor(),o2.getColor())){
+                    Integer o1Index = colorList.indexOf(o1.getColor());
+                    Integer o2Index = colorList.indexOf(o2.getColor());
+                    return o1Index.compareTo(o2Index);
+                }
+            }
+
+        }
+        //鏍规嵁妫�楠岄」鎺掑簭
+        if(!Objects.equals(o1.getInspectionItem(),o2.getInspectionItem())){
+            List<String> specialItems = Arrays.asList("鑰愮幆澧冨簲鍔涘紑瑁�","鐑敹缂╃巼");
+            if(specialItems.contains(o1.getInspectionItem()) && specialItems.contains(o2.getInspectionItem())){
+                return Integer.MAX_VALUE;
+            }
+            Collator instance = Collator.getInstance(Locale.CHINA);
+            return instance.compare(o1.getInspectionItem(),o2.getInspectionItem());
+        }
+        //妫�楠屽瓙椤规帓搴�
+        if(StringUtils.isNotBlank(o1.getInspectionItemSubclass())&& StringUtils.isNotBlank(o2.getInspectionItemSubclass())){
+            if(!Objects.equals(o1.getInspectionItemSubclass(),o2.getInspectionItemSubclass())){
+                Collator instance = Collator.getInstance(Locale.CHINA);
+                return instance.compare(o1.getInspectionItemSubclass(),o2.getInspectionItemSubclass());
+            }
+        }
+        return 0;
+    }
+
+    public static boolean containsOnlyDigits(String str) {
+        String regex = "\\d+"; // 鍖归厤涓�涓垨澶氫釜鏁板瓧
+        return Pattern.matches(regex, str);
+    }
+
+}
\ No newline at end of file
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java
index 1a95be3..074496d 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java
@@ -3,7 +3,9 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.JackSonUtil;
 import com.ruoyi.inspect.dto.*;
 import com.ruoyi.inspect.pojo.InsOrder;
@@ -46,8 +48,6 @@
         return Result.success(insOrderService.selectInsOrderParameter(page, sampleOrderDto));
     }
 
-
-
     //鐢ㄤ簬妫�楠屼笅鍗曞尯鍒煡鐪嬫墍鏈夎鍗曞拰鍙煡鐪嬪悓涓�涓鎵樺崟浣嶇殑璁㈠崟
     @ApiOperation(value = "鍒ゆ柇褰撳墠瀹㈡埛绱ф�ラ搴︽槸鍚︾敤瀹�")
     @GetMapping("/hasSendUrgentOrder")
@@ -65,12 +65,14 @@
 
     @ApiOperation(value = "鍒嗛厤鎸夐挳")
     @PostMapping("/upInsOrder")
+    @Log(title = "妫�楠屼笅鍗�", businessType = BusinessType.UPDATE)
     public Result<?> upInsOrder(@RequestBody UpInsOrderDTO upInsOrderDTO) {
         return Result.success(insOrderService.upInsOrder(upInsOrderDTO));
     }
 
     @ApiOperation(value = "涓嬪崟鎸夐挳")
     @PostMapping("/addInsOrder")
+    @Log(title = "妫�楠屼笅鍗�", businessType = BusinessType.INSERT)
     public Result<?> addInsOrder(String str) {
         Map<String, Object> map = JSON.parseObject(str, Map.class);
         JSONArray jsonArray = JSON.parseArray(map.get("list")+"");
@@ -90,6 +92,7 @@
 
     @ApiOperation(value = "鏌ヨ妫�楠屼笅鍗曞唴瀹硅鎯�")
     @GetMapping("/getInsOrder")
+    @Log(title = "妫�楠屼笅鍗�", businessType = BusinessType.OTHER)
     public Result<?> getInsOrder(Integer orderId) {
         return Result.success(insOrderService.getInsOrder(orderId));
     }
@@ -100,18 +103,21 @@
             @ApiImplicitParam(name = "state", value = "瀹℃牳缁撴灉 1:閫氳繃 2锛氫笉閫氳繃", dataTypeClass = Integer.class)
     })
     @PostMapping("/upInsOrderOfState")
+    @Log(title = "妫�楠屼笅鍗�", businessType = BusinessType.UPDATE)
     public Result<?> upInsOrderOfState(@RequestBody InsOrder insOrder) {
         return Result.success(insOrderService.upInsOrderOfState(insOrder));
     }
 
     @ApiOperation(value = "淇濆瓨妫�楠屾ā鏉挎寜閽�")
     @PostMapping("/addInsOrderTemplate")
+    @Log(title = "妫�楠屼笅鍗�", businessType = BusinessType.INSERT)
     public Result<?> addInsOrderTemplate(@RequestBody InsOrderTemplate insOrderTemplate) {
         return Result.success(insOrderTemplateService.addInsOrderTemplate(insOrderTemplate));
     }
 
     @ApiOperation(value = "鍒犻櫎妫�楠屾ā鏉挎寜閽�")
     @PostMapping("/delInsOrderTemplate")
+    @Log(title = "妫�楠屼笅鍗�", businessType = BusinessType.DELETE)
     public Result<?> delInsOrderTemplate(Integer id) {
         return Result.success(insOrderTemplateService.delInsOrderTemplate(id));
     }
@@ -130,8 +136,7 @@
 
     @ApiOperation(value = "閫氳繃妫�楠屽崟鏌ヨ妫�楠屾暟鎹紙鏁版嵁鏌ョ湅锛�")
     @GetMapping("/selectSampleAndProductByOrderId")
-    public Result<?> selectSampleAndProductByOrderId(@RequestBody Map<String, Object> data) throws Exception {
-        SampleProductDto2 sampleProductDto = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), SampleProductDto2.class);
+    public Result<?> selectSampleAndProductByOrderId(SampleProductDto2 sampleProductDto) {
         return Result.success(insOrderService.selectSampleAndProductByOrderId(sampleProductDto));
     }
     //鏁版嵁鏌ョ湅涓嬬殑鏌ョ湅璇︽儏锛堝崟鏍瑰瀭鐩寸噧鐑у拰鏉惧绠�
@@ -142,6 +147,7 @@
 
     @ApiOperation(value = "瀵煎嚭宸叉濮旀墭鍗�")
     @PostMapping("/exportChecked")
+    @Log(title = "妫�楠屼笅鍗�", businessType = BusinessType.EXPORT)
     public void exportChecked(@RequestBody Map<String, Object> data, HttpServletResponse response) {
         insOrderService.exportChecked(data,response);
     }
@@ -155,6 +161,7 @@
 
     @ApiOperation(value = "鎾ら攢鎸夐挳")
     @PutMapping("/updateStatus")
+    @Log(title = "妫�楠屼笅鍗�", businessType = BusinessType.UPDATE)
     public Result<?> updateStatus(Integer id) {
         insOrderService.updateStatus(id);
         return Result.success();
@@ -209,6 +216,7 @@
      * @param data
      * @return
      */
+    @Log(title = "妫�楠屼笅鍗�", businessType = BusinessType.UPDATE)
     @PostMapping("/revoke")
     public Result<?> revoke(@RequestBody Map<String, Object> data)   {
         insProductService.revoke(data);
@@ -253,13 +261,12 @@
         return Result.success(insProductService.revokeReviewProduct(orderId,sampleId));
     }
 
-
-
     /**
      * 鎾ら攢瀹℃牳閫氳繃
      * @param orderId
      * @return
      */
+    @Log(title = "妫�楠屼笅鍗�", businessType = BusinessType.UPDATE)
     @GetMapping("/revocationPassed")
     public Result<?> revocationPassed(Integer orderId){
         insProductService.revocationPassed(orderId);
@@ -271,6 +278,7 @@
      * @param orderId
      * @return
      */
+    @Log(title = "妫�楠屼笅鍗�", businessType = BusinessType.UPDATE)
     @GetMapping("/revocationCancel")
     public Result<?> revocationCancel(Integer orderId){
         insProductService.revocationCancel(orderId);
@@ -280,6 +288,7 @@
 
     @ApiOperation(value = "寰呮鐨勬挙閿�")
     @PutMapping("/updateInspected")
+    @Log(title = "妫�楠屼笅鍗�", businessType = BusinessType.UPDATE)
     public Result<?> updateInspected(Integer orderId,String ids){
         insProductService.updateInspected(orderId,ids);
         return Result.success();
@@ -287,6 +296,7 @@
 
     @ApiOperation(value = "鎾ら攢瀹℃牳鎸夐挳")
     @PostMapping("/checkUpdate")
+    @Log(title = "妫�楠屼笅鍗�", businessType = BusinessType.UPDATE)
     public Result<?> checkUpdate(Integer orderId,Integer state){
         insProductService.checkUpdate(orderId,state);
         return Result.success();
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderService.java
index 5efb038..59e305d 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderService.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderService.java
@@ -33,7 +33,8 @@
 
     Map<String, Object> getInsOrderAndSample(Integer id, String laboratory);
 
-    Map<String, Object> selectSampleAndProductByOrderId(SampleProductDto2 sampleProductDto);
+    List<SampleProductDto2> selectSampleAndProductByOrderId(SampleProductDto2 sampleProductDto);
+
     List<Map<String, Object>> viewDetails(Map<String,Object> map);
 
     void exportChecked(Map<String,Object> data, HttpServletResponse response);
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
index 272479d..efc2876 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
@@ -33,6 +33,7 @@
 import com.ruoyi.common.utils.QueryWrappers;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.inspect.comparater.CustomComparator;
 import com.ruoyi.inspect.dto.*;
 import com.ruoyi.inspect.excel.FiberRibboGeometricalParameterExcelData;
 import com.ruoyi.inspect.mapper.*;
@@ -933,20 +934,16 @@
     }
 
     @Override
-    public Map<String, Object> selectSampleAndProductByOrderId(SampleProductDto2 sampleProductDto) {
-        Map<String, Object> map = new HashMap<>();
-        List<Map<String, Object>> headList = new ArrayList<>();
+    public List<SampleProductDto2> selectSampleAndProductByOrderId(SampleProductDto2 sampleProductDto) {
         List<SampleProductDto2> SampleProductDto2S = null;
         if (!Objects.isNull(sampleProductDto.getId())) {
             String laboratory = insOrderMapper.selectById(sampleProductDto.getId()).getLaboratory();
             if (laboratory.equals("鐢靛姏浜у搧瀹為獙瀹�")) {
                 //鐢靛姏璇曢獙瀹ょ殑鏁版嵁鏌ョ湅锛屽垹闄ゅ厜绾ら厤缃浉鍏冲瓧娈�
-//                headList = PrintChina.printChina(SampleProductDTODL.class);
                 SampleProductDto2S = insOrderMapper.selectSampleAndProductByOrderId(
                         QueryWrappers.queryWrappers(sampleProductDto).orderByAsc("ins_product_id"),
                         sampleProductDto.getId());
             } else {
-//                headList = PrintChina.printChina(SampleProductDto2.class);
                 SampleProductDto2S = insOrderMapper.selectSampleAndProductByOrderId(
                         QueryWrappers.queryWrappers(sampleProductDto)
                                 .orderByAsc("son_laboratory"),
@@ -1020,7 +1017,7 @@
                 }
                 collect2.addAll(list);
                 SampleProductDto2S = collect2;
-//                SampleProductDto2S.sort(new CustomComparator(enumService));
+                SampleProductDto2S.sort(new CustomComparator(dictTypeService));
             }
         }
         for (SampleProductDto2 record : SampleProductDto2S) {
@@ -1037,9 +1034,7 @@
                 record.setLastValue(String.join(",", values));
             }
         }
-        map.put("head", headList);
-        map.put("body", SampleProductDto2S);
-        return map;
+        return SampleProductDto2S;
     }
 
     @Override
@@ -1942,10 +1937,6 @@
         LocalDate today = LocalDate.parse(split[1]);
         LocalTime end = LocalTime.of(23, 59, 59);
         List<CostStatisticsDto> costStatisticsDtos = insOrderMapper.selectCostStatistics2(QueryWrappers.queryWrappers(costStatisticsDto), split[0], today.atTime(end).toString(), laboratory);
-//        double totalPrice = costStatisticsDtos.stream()
-//                .filter(dto -> dto.getPrice() != null) // 杩囨护鎺変环鏍间负 null 鐨勫璞�
-//                .mapToDouble(value -> value.getPrice().doubleValue() * value.getNum())
-//                .sum();
         BigDecimal total = BigDecimal.ZERO;
         for (CostStatisticsDto dto : costStatisticsDtos) {
             if (Objects.isNull(dto.getPrice()) || dto.getPrice().compareTo(BigDecimal.ZERO) == 0) {

--
Gitblit v1.9.3