From d9de769c21b1600d94f52eaceb4382aaa3523575 Mon Sep 17 00:00:00 2001
From: Crunchy <3114200645@qq.com>
Date: 星期五, 19 七月 2024 17:55:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderService.java                                 |    5 
 performance-server/src/main/java/com/yuanchu/mom/controller/AuxiliaryWorkingHoursDayController.java       |   10 
 inspect-server/src/main/resources/mapper/InsSampleMapper.xml                                              |   30 ++
 inspect-server/src/main/java/com/yuanchu/mom/dto/CostStatisticsDto.java                                   |   21 +
 performance-server/src/main/java/com/yuanchu/mom/dto/AuxiliaryOriginalHoursDto.java                       |    1 
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java                    |   44 +++
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java                        |  133 +++++++----
 performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOutputWorkingHoursServiceImpl.java |   56 +++-
 performance-server/src/main/resources/mapper/AuxiliaryOriginalHoursMapper.xml                             |    2 
 performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOriginalHoursServiceImpl.java      |  124 ++++++++++
 inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java                                       |    6 
 performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryWorkingHoursDayServiceImpl.java    |   54 +++-
 inspect-server/src/main/resources/mapper/InsOrderMapper.xml                                               |  120 ++++++++++
 inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderController.java                           |   10 
 performance-server/src/main/java/com/yuanchu/mom/dto/HoursDay.java                                        |   12 +
 performance-server/src/main/java/com/yuanchu/mom/service/AuxiliaryWorkingHoursDayService.java             |    4 
 inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProduct.java                                         |    4 
 17 files changed, 525 insertions(+), 111 deletions(-)

diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderController.java
index 0af2a5a..169a309 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderController.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderController.java
@@ -23,6 +23,8 @@
 import lombok.AllArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.List;
@@ -179,4 +181,12 @@
     public Result<?> labelPrinting(String ids) {
         return Result.success(insOrderService.labelPrinting(ids));
     }
+
+    @ValueClassify("璐圭敤缁熻")
+    @ApiOperation(value = "璐圭敤缁熻瀵煎嚭")
+    @PostMapping("/export")
+    public void export(@RequestBody Map<String, Object> data,HttpServletResponse response) throws Exception {
+        CostStatisticsDto costStatisticsDto = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), CostStatisticsDto.class);
+       insOrderService.export(costStatisticsDto,response);
+    }
 }
\ No newline at end of file
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/dto/CostStatisticsDto.java b/inspect-server/src/main/java/com/yuanchu/mom/dto/CostStatisticsDto.java
index 35b2b21..10d4e84 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/dto/CostStatisticsDto.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/dto/CostStatisticsDto.java
@@ -1,5 +1,7 @@
 package com.yuanchu.mom.dto;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.yuanchu.mom.annotation.ValueTableShow;
@@ -14,39 +16,58 @@
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ValueTableShow(value = 1, name = "涓嬪崟鏃堕棿")
+    @ExcelProperty(value ={"涓ぉ绉戞妧妫�娴嬩腑蹇冩牱鍝佺櫥璁拌〃","ZTT/QR-30-01-01","鏃ユ湡"})
     private LocalDateTime createTime;
 
     @ValueTableShow(value = 2, name = "濮旀墭缂栧彿")
+    @ExcelProperty(value ={"涓ぉ绉戞妧妫�娴嬩腑蹇冩牱鍝佺櫥璁拌〃","ZTT/QR-30-01-01","妫�楠岀紪鍙�"})
     private String entrustCode;
 
     @ValueTableShow(value = 3, name = "鏍峰搧鍚嶇О")
+    @ExcelProperty(value ={"涓ぉ绉戞妧妫�娴嬩腑蹇冩牱鍝佺櫥璁拌〃","鏍峰搧鍚嶇О"})
     private String sample;
 
     @ValueTableShow(value = 4, name = "瑙勬牸鍨嬪彿")
+    @ExcelProperty(value ={"涓ぉ绉戞妧妫�娴嬩腑蹇冩牱鍝佺櫥璁拌〃","瑙勬牸鍨嬪彿"})
     private String model;
 
     @ValueTableShow(value = 5, name = "鏍峰搧鏁伴噺")
+    @ExcelProperty(value ={"涓ぉ绉戞妧妫�娴嬩腑蹇冩牱鍝佺櫥璁拌〃","鏍峰搧鏁伴噺"})
     private Integer num;
 
     @ValueTableShow(value = 6, name = "鎬讳环")
+    @ExcelProperty(value ={"涓ぉ绉戞妧妫�娴嬩腑蹇冩牱鍝佺櫥璁拌〃","鎬讳环"})
     private BigDecimal price;
 
     @ValueTableShow(value = 7, name = "璇曢獙椤圭洰")
+    @ExcelProperty(value ={"涓ぉ绉戞妧妫�娴嬩腑蹇冩牱鍝佺櫥璁拌〃","璇曢獙椤圭洰"})
     private String inspectionItem;
 
     @ValueTableShow(value = 8, name = "濮旀墭鍗曚綅")
+    @ExcelProperty(value ={"涓ぉ绉戞妧妫�娴嬩腑蹇冩牱鍝佺櫥璁拌〃","濮旀墭鍗曚綅"})
     private String company;
 
     @ValueTableShow(value = 9, name = "濮旀墭浜�")
+    @ExcelProperty(value ={"涓ぉ绉戞妧妫�娴嬩腑蹇冩牱鍝佺櫥璁拌〃","濮旀墭浜�"})
     private String name;
 
+    @ExcelProperty(value ={"涓ぉ绉戞妧妫�娴嬩腑蹇冩牱鍝佺櫥璁拌〃","鐢熶骇鍗曚綅"})
+    private String production;
+
+    @ExcelProperty(value ={"涓ぉ绉戞妧妫�娴嬩腑蹇冩牱鍝佺櫥璁拌〃","宸ョ▼鍚嶇О"})
+    private String engineering;
+
+    @ExcelIgnore
     private Integer createUser;
 
+    @ExcelIgnore
     private Integer insSampleId;
 
+    @ExcelIgnore
     private Double cost;//宸ユ椂
 
     @TableField(exist = false,select = false)
+    @ExcelIgnore
     private String dates;
 
 
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProduct.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProduct.java
index 14dd76e..a0f694d 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProduct.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProduct.java
@@ -221,4 +221,8 @@
     private Integer insFibersId;
 
     private Integer standardMethodListId;
+
+    //杩斿洖鐨�20搴﹀父娓╃殑璁$畻鍊�(娓╁害寰幆)
+    @TableField(exist = false ,select = false)
+    private String complue;
 }
\ No newline at end of file
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderService.java
index f00cc68..2479a02 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderService.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderService.java
@@ -6,6 +6,9 @@
 import com.yuanchu.mom.dto.*;
 import com.yuanchu.mom.pojo.InsOrder;
 
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -41,4 +44,6 @@
     int updateStatus(Integer id);
 
     List<SampleProductDto3> labelPrinting(String ids);
+
+    void export(CostStatisticsDto costStatisticsDto,HttpServletResponse response)throws IOException, ServletException;
 }
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
index 6bf6f97..192afae 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
@@ -136,9 +136,10 @@
     public Map<String, Object> selectInsOrderPlanList(Page page, InsOrderPlanDTO insOrderPlanDTO) {
         Map<String, Object> map = new HashMap<>();
         map.put("head", PrintChina.printChina(InsOrderPlanVO.class));
-        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId(null);
-        Integer userId = map1.get("userId");
-        if (ObjectUtil.isNotEmpty(insOrderPlanDTO.getUserId())) {
+        Integer userId = null;
+        if (ObjectUtil.isNotEmpty(insOrderPlanDTO.getUserId()) ) {
+            Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId(null);
+             userId = map1.get("userId");
             insOrderPlanDTO.setUserId(userId.longValue());
         }
         IPage<InsOrderPlanVO> insOrderPage = insSampleMapper.findInsSampleAndOrder(page, QueryWrappers.queryWrappers(insOrderPlanDTO), userId);
@@ -217,7 +218,11 @@
         List<String> collect = new ArrayList<>();
         List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId).select(InsSample::getId));
         List<Integer> ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList());
-        List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().in(InsProduct::getInsSampleId, ids).eq(InsProduct::getSonLaboratory, laboratory).eq(InsProduct::getState, 1).eq(InsProduct::getInsResult, 0));
+        List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+                .in(InsProduct::getInsSampleId, ids)
+                .eq(InsProduct::getSonLaboratory, laboratory)
+                .eq(InsProduct::getState, 1)
+                .eq(InsProduct::getInsResult, 0));
         if (insProducts.size() > 0) {
             collect = insProducts.stream().map(insProduct -> {
                 return insProduct.getInspectionItem() + "-" + insProduct.getInspectionItemSubclass();
@@ -361,6 +366,16 @@
                                 if (ObjectUtils.isNotEmpty(insProductResult)) {
                                     insProduct.setInsProductResult(insProductResult);
                                 }
+                                //姹傚悓绛夋潯浠朵笅1娆″惊鐜�20搴﹀父娓╃殑璁$畻鍊�
+                                InsProductResult insProductResult1 = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId,insProductMapper.selectOne(Wrappers.<InsProduct>lambdaQuery()
+                                        .eq(InsProduct::getInsSampleId,sampleId)
+                                        .eq(InsProduct::getInspectionItem, "1")
+                                        .eq(InsProduct::getInspectionItemSubclass, "20鈩�(甯告俯)")
+                                        .eq(InsProduct::getInspectionItemClass, insProduct.getInspectionItemClass())
+                                        .eq(InsProduct::getInsFiberId, fiber.getId())).getId() ));
+                                if (!insProductResult1.getComValue().equals("[]")) {
+                                    insProduct.setComplue(insProductResult1.getComValue().split(":")[1].split("\"")[1]);
+                                }
                                 productVo.setInsProduct(insProduct);
                                 productVos.add(productVo);
                             }
@@ -383,6 +398,16 @@
                             productVo.setColor(fiber.getColor());
                             productVo.setBushColor(fiber.getBushColor());
                             insProduct.setInsProductResult(insProductResult);
+                            //姹傚悓绛夋潯浠朵笅1娆″惊鐜�20搴﹀父娓╃殑璁$畻鍊�
+                            InsProductResult insProductResult1 = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId,insProductMapper.selectOne(Wrappers.<InsProduct>lambdaQuery()
+                                    .eq(InsProduct::getInsSampleId,sampleId)
+                                    .eq(InsProduct::getInspectionItem, "1")
+                                    .eq(InsProduct::getInspectionItemSubclass, "20鈩�(甯告俯)")
+                                    .eq(InsProduct::getInspectionItemClass, insProduct.getInspectionItemClass())
+                                    .eq(InsProduct::getInsFiberId, fiber.getId())).getId() ));
+                            if (!insProductResult1.getComValue().equals("[]")) {
+                                insProduct.setComplue(insProductResult1.getComValue().split(":")[1].split("\"")[1]);
+                            }
                             productVo.setInsProduct(insProduct);
                             productVos.add(productVo);
                         }
@@ -434,6 +459,8 @@
                         JSONObject insValue = JSON.parseObject(JSON.toJSONString(o));
                         Map<String, Object> map = new HashMap<>();
                         map.put("v", JSON.parseObject(JSON.toJSONString(insValue.get("v"))).get("v"));
+                        map.put("r", JSON.toJSONString(insValue.get("r")));
+                        map.put("c", JSON.toJSONString(insValue.get("c")));
                         try {
                             if ((insValue.get("u") == null || insValue.get("u").equals("")) && StrUtil.isNotEmpty(JSON.parseObject(JSON.toJSONString(insValue.get("v"))).get("v").toString())) {
                                 map.put("u", userId + "");
@@ -3341,7 +3368,6 @@
                 map2.put(product.getTemplateId(), standardTemplateService.getStandTempThingById(product.getTemplateId()) + "");
                 thing = map2.get(product.getTemplateId());
             }
-//            thing = map2.get(product.getTemplateId());
             if (StrUtil.isNotEmpty(thing)) {
                 JSONObject sheet = JSON.parseObject(JSON.toJSONString(JSON.parseArray(JSON.toJSONString(JSON.parseObject(thing).get("data"))).get(0)));
                 JSONObject config = JSON.parseObject(JSON.toJSONString(sheet.get("config")));
@@ -3360,7 +3386,13 @@
     public int submitPlan(Integer orderId, String laboratory, Integer verifyUser) {
         List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId).select(InsSample::getId));
         List<Integer> ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList());
-        List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().in(InsProduct::getInsSampleId, ids).eq(InsProduct::getSonLaboratory, laboratory).eq(InsProduct::getState, 1).isNull(InsProduct::getInsResult).isNull(InsProduct::getInsFiberId).isNull(InsProduct::getInsFibersId));
+        List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+                .in(InsProduct::getInsSampleId, ids)
+                .eq(InsProduct::getSonLaboratory, laboratory)
+                .eq(InsProduct::getState, 1)
+                .isNull(InsProduct::getInsResult)
+                .isNull(InsProduct::getInsFiberId)
+                .isNull(InsProduct::getInsFibersId));
         insProducts.addAll(insProductMapper.selectFiberInsProduct(ids, laboratory));
         if (insProducts.size() > 0) {
             String str = "";
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
index 103b180..c9689b7 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
@@ -2,6 +2,10 @@
 
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+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.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -25,6 +29,10 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -84,13 +92,13 @@
         Integer roleId = user.getRoleId();
         //鑾峰彇褰撳墠浜烘墍灞炲疄楠屽id
         String departLimsId = user.getDepartLimsId();
-        String laboratory=null;
-        if (ObjectUtils.isNotEmpty(departLimsId) && !departLimsId.equals("")){
+        String laboratory = null;
+        if (ObjectUtils.isNotEmpty(departLimsId) && !departLimsId.equals("")) {
             String[] split = departLimsId.split(",");
-             //鏌ヨ瀵瑰簲鏋舵瀯鍚嶇О(閫氫俊瀹為獙瀹�,鐢靛姏瀹為獙瀹�,妫�娴嬪姙)
-            String departLims=baseMapper.seldepLimsId(Integer.parseInt(split[split.length - 1]));
-            if (departLims.contains("瀹為獙瀹�")){
-                 laboratory=departLims;
+            //鏌ヨ瀵瑰簲鏋舵瀯鍚嶇О(閫氫俊瀹為獙瀹�,鐢靛姏瀹為獙瀹�,妫�娴嬪姙)
+            String departLims = baseMapper.seldepLimsId(Integer.parseInt(split[split.length - 1]));
+            if (departLims.contains("瀹為獙瀹�")) {
+                laboratory = departLims;
             }
         }
         //鍒ゆ柇鏄惁鏄叏閮ㄦ潈闄�
@@ -108,7 +116,7 @@
                 }
             }
         }
-        map.put("body", insOrderMapper.selectInsOrderPage(page, QueryWrappers.queryWrappers(sampleOrderDto),laboratory));
+        map.put("body", insOrderMapper.selectInsOrderPage(page, QueryWrappers.queryWrappers(sampleOrderDto), laboratory));
         return map;
     }
 
@@ -336,6 +344,8 @@
                 //鍒ゆ柇鐑惊鐜」鐩殑娣诲姞鍜屾俯鍗囪瘯楠岄」鐩殑娣诲姞
                 else if (product.getInspectionItem().equals("鐑惊鐜�") || product.getInspectionItem().equals("娓╁崌璇曢獙")) {
                     List<InsProduct> insProductess = new ArrayList<>();
+                    product.setId(null);
+                    product.setInsSampleId(sampleId);
                     insProductess.add(product);
                     List<InsProduct> insProductes = new ArrayList<>();
                     List<InsProduct> insProducts = new ArrayList<>();
@@ -363,8 +373,6 @@
                         insProduct.setInspectionItemType("0");
                         insProduct.setInspectionValueType("1");
                         insProducts.add(insProduct);
-                        insProductes.add(insProduct);
-                        insProductess.add(insProduct);
                     }
                     //鐑惊鐜墠鏈夊娆″惊鐜鏁�
                     if (product.getInspectionItem().equals("鐑惊鐜�")) {
@@ -379,20 +387,19 @@
                             insProductess.add(insProduct1);
                         }
                     }
-                        if (count > 1) {
-                            //寰幆瓒呰繃1娆�
-                            for (int j = 2; j <= count; j++) {
-                                for (InsProduct insProduct : insProductes) {
-                                    InsProduct insProduct1 = new InsProduct();
-                                    BeanUtils.copyProperties(insProduct, insProduct1);
-                                    insProduct1.setInspectionItem(j + "");//寰幆娆℃暟
-                                    insProductess.add(insProduct1);
-                                }
+                    if (count > 1) {
+                        //寰幆瓒呰繃1娆�
+                        for (int j = 2; j <= count; j++) {
+                            for (InsProduct insProduct : insProductes) {
+                                InsProduct insProduct1 = new InsProduct();
+                                BeanUtils.copyProperties(insProduct, insProduct1);
+                                insProduct1.setInspectionItem(j + "");//寰幆娆℃暟
+                                insProductess.add(insProduct1);
                             }
                         }
+                    }
                     insProductService.saveBatch(insProductess);
-                }
-                else {
+                } else {
                     if (!is) {
                         switch (type) {
                             case 1:
@@ -473,34 +480,22 @@
         map.put("head", PrintChina.printChina(CostStatisticsDto.class));
         Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("costStatistics");
         if (map1.get("look") == 1) costStatisticsDto.setCreateUser(map1.get("userId"));
-        IPage<CostStatisticsDto> costStatisticsDtoIPage = insOrderMapper.selectCostStatistics(page, QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59"));
-        List<CostStatisticsDto> costStatisticsDtoList = costStatisticsDtoIPage.getRecords();
-        for (CostStatisticsDto statisticsDto : costStatisticsDtoList) {
-            statisticsDto.setNum(1);
-        }
-        List<CostStatisticsDto> costStatisticsDtoList1 = deduplicateAndSumCounts(costStatisticsDtoList);
-        costStatisticsDtoIPage.setRecords(costStatisticsDtoList1);
-        map.put("body", costStatisticsDtoIPage);
-        return map;
-    }
-    private static List<CostStatisticsDto> deduplicateAndSumCounts(List<CostStatisticsDto> list) {
-        // 浣跨敤涓�涓� Map 鏉ュ瓨鏀惧凡缁忓嚭鐜拌繃鐨� inspectionItem + entrustCode + sample 鐨勭粍鍚�
-        Map<String, CostStatisticsDto> map = new HashMap<>();
-        // 閬嶅巻鍒楄〃杩涜鍘婚噸鍜岃鏁�
-        for (CostStatisticsDto dto : list) {
-            String key = dto.getInspectionItem() + dto.getEntrustCode() + dto.getSample();
-            if (map.containsKey(key)) {
-                // 濡傛灉宸茬粡瀛樺湪锛屽垯绱姞鏁伴噺
-                CostStatisticsDto existingDto = map.get(key);
-                existingDto.setNum(existingDto.getNum() + dto.getNum());
-                existingDto.setPrice(existingDto.getPrice().add(dto.getPrice()));
+        IPage<CostStatisticsDto> dtoIPage = insOrderMapper.selectCostStatistics(page, QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59"));
+        List<CostStatisticsDto> collect = dtoIPage.getRecords().stream().map(dto -> {
+            Set<String> uniqueTags = new HashSet<>();
+            if (dto.getInspectionItem().contains(",")) {
+                for (String s : dto.getInspectionItem().split(",")) {
+                    uniqueTags.add(s.split("@")[0]);
+                }
             } else {
-                // 濡傛灉涓嶅瓨鍦紝鍒欐斁鍏� Map 涓�
-                map.put(key, dto);
+                uniqueTags.add(dto.getInspectionItem().split("@")[0]);
             }
-        }
-        // 灏� Map 涓殑鍊艰浆涓� List 杩斿洖
-        return new ArrayList<>(map.values());
+            dto.setInspectionItem(uniqueTags.toString());
+            return dto;
+        }).collect(Collectors.toList());
+        dtoIPage.setRecords(collect);
+        map.put("body", dtoIPage);
+        return map;
     }
 
     @Override
@@ -511,16 +506,11 @@
         costStatisticsDto.setDates(null);
         List<CostStatisticsDto> costStatisticsDtos = insOrderMapper.selectCostStatistics2(QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59"));
         double totalPrice = costStatisticsDtos.stream()
-                .filter(distinctByKey(dto -> Arrays.asList(dto.getEntrustCode(), dto.getSample(), dto.getCost())))
                 .filter(dto -> dto.getPrice() != null) // 杩囨护鎺変环鏍间负 null 鐨勫璞�
-                .mapToDouble(value -> value.getPrice().doubleValue())
+                .mapToDouble(value -> value.getPrice().doubleValue() * value.getNum())
                 .sum();
         map.put("total", totalPrice);
         return map;
-    }
-    public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
-        Map<Object, Boolean> seen = new ConcurrentHashMap<>();
-        return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
     }
 
     @Override
@@ -558,6 +548,45 @@
         }).collect(Collectors.toList());
         return sampleProductDto3s;
     }
+
+    @Override
+    public void export(CostStatisticsDto costStatisticsDto,HttpServletResponse response) throws IOException {
+        //鏌ヨ瀵煎嚭鐨勮垂鐢ㄧ粺璁℃暟鎹�
+        String dates = costStatisticsDto.getDates();
+        String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
+        costStatisticsDto.setDates(null);
+        List<CostStatisticsDto> costStatisticsDtos = insOrderMapper.selectCostStatistics2(QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59"));
+        costStatisticsDtos = costStatisticsDtos.stream().map(dto -> {
+            Set<String> uniqueTags = new HashSet<>();
+            if (dto.getInspectionItem().contains(",")) {
+                for (String s : dto.getInspectionItem().split(",")) {
+                    uniqueTags.add(s.split("@")[0]);
+                }
+            } else {
+                uniqueTags.add(dto.getInspectionItem().split("@")[0]);
+            }
+            dto.setInspectionItem(uniqueTags.toString());
+            return dto;
+        }).collect(Collectors.toList());
+
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("UTF-8");
+        // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴
+        String fileName = URLEncoder.encode("鏍峰搧璐圭敤缁熻瀵煎嚭", "UTF-8");
+        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+        try {
+            // 鏂板缓ExcelWriter
+            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
+
+            WriteSheet mainSheet = EasyExcel.writerSheet( "鏍峰搧璐圭敤缁熻瀵煎嚭").head(CostStatisticsDto.class).build();
+            excelWriter.write(costStatisticsDtos, mainSheet);
+
+            // 鍏抽棴娴�
+            excelWriter.finish();
+        } catch (IOException e) {
+            throw new RuntimeException("瀵煎嚭澶辫触");
+        }
+    }
 }
 
 
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java b/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java
index 2f724d6..d4e6ec2 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java
@@ -22,6 +22,11 @@
     @ValueTableShow(value = 5,name = "鐘舵��")
     private String insState;
 
+    @ValueTableShow(value = 5,name = "璐熻矗浜�")
+    private String userName;
+
+    private Integer userId;
+
     @ValueTableShow(value = 8,name = "妫�楠屽紑濮嬫椂闂�")
     private String insTime;
 
@@ -34,7 +39,6 @@
     @ValueTableShow(value = 8,name = "鐞嗙敱")
     private String verifyTell;
 
-    private Integer userId;
 
     private String sonLaboratory;
 
diff --git a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
index a0b49ae..8c0fbce 100644
--- a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
@@ -146,7 +146,7 @@
     </select>
     <select id="selectCostStatistics" resultType="com.yuanchu.mom.dto.CostStatisticsDto">
         select * from (
-        SELECT
+        <!--SELECT
         i.id,
         i.entrust_code,
         i.create_time,
@@ -170,7 +170,55 @@
         SEPARATOR ',') inspection_item2 from ins_product where state = 1 GROUP BY ins_sample_id,man_hour_group) b GROUP
         BY b.ins_sample_id) c ON c.ins_sample_id = isa.id
         where (i.state = 1 or i.state = 3 or i.state = 4)
-        ) a
+        ) a-->
+        SELECT A.id,
+        A.entrust_code,
+        A.create_time,
+        A.sample,
+        A.model,
+        A.inspection_item,
+        A.company,
+        A.`name`,
+        COUNT(1) num,
+        SUM(A.price) price,
+        SUM(A.cost) cost
+        FROM
+        (SELECT
+        i.id,
+        i.entrust_code,
+        i.create_time,
+        isa.sample,
+        isa.sample_code,
+        isa.model,
+        c.price,
+        c.cost,
+        c.inspection_item,
+        cus.company,
+        u.`name`,
+        i.create_user,
+        c.ins_sample_id
+        FROM
+        ins_order i
+        LEFT JOIN ins_sample isa ON isa.ins_order_id = i.id
+        LEFT JOIN `user` u ON u.id = i.user_id
+        left join custom cus on cus.id = u.company
+        LEFT JOIN (select SUM(b.price) price, sum(b.man_hour) cost,b.ins_sample_id,
+        GROUP_CONCAT(b.inspection_item2
+        SEPARATOR ',')
+        inspection_item from (select * ,
+        GROUP_CONCAT(CONCAT(inspection_item,'@',inspection_item_subclass) SEPARATOR ',')inspection_item2 from ins_product where state = 1 and template_id IS NOT NULL GROUP BY ins_sample_id,man_hour_group) b GROUP
+        BY b.ins_sample_id) c ON c.ins_sample_id = isa.id
+        where (i.state = 1 or i.state = 3 or i.state = 4) and c.ins_sample_id IS not  NULL)A
+        GROUP BY
+        A.id,
+        A.entrust_code,
+        A.create_time,
+        A.sample,
+        A.model,
+        A.inspection_item,
+        A.company,
+        A.`name`
+        ) B
         <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
             ${ew.customSqlSegment}
         </if>
@@ -310,7 +358,7 @@
 
     <select id="selectCostStatistics2" resultType="com.yuanchu.mom.dto.CostStatisticsDto">
         select * from (
-        SELECT
+        <!--SELECT
         i.id,
         i.entrust_code,
         i.create_time,
@@ -333,7 +381,71 @@
         SEPARATOR ',') inspection_item2 from ins_product where state = 1 GROUP BY ins_sample_id,man_hour_group) b GROUP
         BY b.ins_sample_id) c ON c.ins_sample_id = isa.id
         where (i.state = 1 or i.state = 3 or i.state = 4)
-        ) a
+        ) a-->
+        SELECT A.id,
+        A.entrust_code,
+        A.create_time,
+        A.sample,
+        A.model,
+        A.inspection_item,
+        A.company,
+        A.`name`,
+        production,
+        engineering,
+        COUNT(1) num,
+        SUM(A.price) price,
+        SUM(A.cost) cost
+        FROM
+        (SELECT
+        i.id,
+        i.entrust_code,
+        i.create_time,
+        isa.sample,
+        isa.sample_code,
+        isa.model,
+        c.price,
+        c.cost,
+        c.inspection_item,
+        cus.company,
+        u.`name`,
+        i.create_user,
+        c.ins_sample_id,
+        production,
+        engineering
+        FROM
+        ins_order i
+        LEFT JOIN ins_sample isa ON isa.ins_order_id = i.id
+        LEFT JOIN `user` u ON u.id = i.user_id
+        left join custom cus on cus.id = u.company
+        LEFT JOIN (select SUM(b.price) price, sum(b.man_hour) cost,b.ins_sample_id,
+        GROUP_CONCAT(b.inspection_item2
+        SEPARATOR ',')
+        inspection_item from (select * ,
+        GROUP_CONCAT(CONCAT(inspection_item,'',inspection_item_subclass) SEPARATOR ',')inspection_item2 from ins_product where state = 1 and template_id IS NOT NULL GROUP BY ins_sample_id,man_hour_group) b GROUP
+        BY b.ins_sample_id) c ON c.ins_sample_id = isa.id
+        where (i.state = 1 or i.state = 3 or i.state = 4) and c.ins_sample_id IS not  NULL)A
+        GROUP BY
+        A.id,
+        A.entrust_code,
+        A.create_time,
+        A.sample,
+        A.model,
+        A.inspection_item,
+        A.company,
+        A.`name`,
+        production,
+        engineering
+        ORDER BY
+        A.id,
+        A.entrust_code,
+        A.create_time,
+        A.sample,
+        A.model,
+        A.inspection_item,
+        A.company,
+        A.`name`,
+        production,
+        engineering) B
         <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
             ${ew.customSqlSegment}
         </if>
diff --git a/inspect-server/src/main/resources/mapper/InsSampleMapper.xml b/inspect-server/src/main/resources/mapper/InsSampleMapper.xml
index e822231..c644e16 100644
--- a/inspect-server/src/main/resources/mapper/InsSampleMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsSampleMapper.xml
@@ -27,7 +27,7 @@
     <select id="findInsSampleAndOrder" resultType="com.yuanchu.mom.vo.InsOrderPlanVO">
         select * from(select * from(
         SELECT
-        a.*,ios.ins_state,ios.verify_tell,isu2.order_user_id,(ios.verify_user = #{userId}) verify_user
+        a.*,ios.ins_state,ios.verify_tell,isu2.order_user_id,<!--(ios.verify_user = #{userId})--> verify_user
         FROM
         (
         SELECT
@@ -38,28 +38,48 @@
         io.send_time,
         group_concat(distinct isa.sample,' ') sample,
         isu.user_id,
+        user.name userName,
         ip.son_laboratory,
         io.ins_time
         FROM
         ins_order io
         LEFT JOIN ins_sample isa ON isa.ins_order_id = io.id
-        LEFT JOIN ( SELECT * FROM ins_sample_user GROUP BY ins_sample_id, user_id ) isu ON isu.ins_sample_id = io.id
+        LEFT JOIN ( <!--SELECT * FROM ins_sample_user GROUP BY ins_sample_id, user_id -->
+        SELECT *
+        FROM ins_sample_user u
+        WHERE (ins_sample_id, id) IN (
+        SELECT ins_sample_id, MAX(id)
+        FROM ins_sample_user
+        GROUP BY ins_sample_id
+        )
+        ORDER BY ins_sample_id, id
+        ) isu ON isu.ins_sample_id = io.id
         LEFT JOIN ins_product ip ON ip.ins_sample_id = isa.id
+        LEFT JOIN user  ON isu.user_id = user.id
         WHERE
         io.state = 1
         # AND io.ins_state != 5
         and send_time is not null
-        and (isu.user_id = #{userId} OR isu.user_id is NULL)
+        <if test="userId !=null and userId!=''">
+            and (isu.user_id = #{userId} OR isu.user_id is NULL )
+        </if>
+        OR isu.user_id is NULL
+
         GROUP BY
         ip.son_laboratory,
         io.id
         ) a
         LEFT JOIN ins_order_state ios ON ios.ins_order_id = a.id AND ios.laboratory = a.son_laboratory
         left join (SELECT td.user_id order_user_id, td.ins_sample_id FROM ins_sample_user td,(SELECT max(id) id FROM
-        ins_sample_user GROUP BY ins_sample_id) md where td.id = md.id and user_id = #{userId}) isu2 on
+        ins_sample_user GROUP BY ins_sample_id) md where td.id = md.id
+        <if test="userId !=null and userId!=''">
+            and user_id = #{userId} OR user_id is NULL
+        </if>
+        OR user_id is NULL
+        ) isu2 on
         isu2.ins_sample_id = a.id
         ORDER BY
-        a.user_id DESC,
+        <!--a.user_id DESC,-->
         a.type DESC,
         a.id
         ) b
diff --git a/performance-server/src/main/java/com/yuanchu/mom/controller/AuxiliaryWorkingHoursDayController.java b/performance-server/src/main/java/com/yuanchu/mom/controller/AuxiliaryWorkingHoursDayController.java
index e65f7e3..3cc5cb5 100644
--- a/performance-server/src/main/java/com/yuanchu/mom/controller/AuxiliaryWorkingHoursDayController.java
+++ b/performance-server/src/main/java/com/yuanchu/mom/controller/AuxiliaryWorkingHoursDayController.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yuanchu.mom.annotation.ValueClassify;
 import com.yuanchu.mom.dto.AuxiliaryWorkingHoursDayDto;
+import com.yuanchu.mom.dto.HoursDay;
 import com.yuanchu.mom.pojo.AuxiliaryWorkingHours;
 import com.yuanchu.mom.pojo.AuxiliaryWorkingHoursDay;
 import com.yuanchu.mom.service.AuxiliaryWorkingHoursDayService;
@@ -20,6 +21,7 @@
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -72,15 +74,15 @@
     @ValueClassify("宸ユ椂绠$悊")
     @ApiOperation(value = "鎵瑰噯宸ユ椂缁熻鐨勮緟鍔╁伐鏃�")
     @PostMapping("/approve")
-    public Result approve(@RequestBody AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay) {
-        return Result.success(auxiliaryWorkingHoursDayService.checkOrApprove(auxiliaryWorkingHoursDay));
+    public Result approve(@RequestBody  HoursDay hoursDay ) {
+        return Result.success(auxiliaryWorkingHoursDayService.checkOrApprove(hoursDay));
     }
 
     @ValueClassify("宸ユ椂绠$悊")
     @ApiOperation(value = "瀹℃牳宸ユ椂缁熻鐨勮緟鍔╁伐鏃�")
     @PostMapping("/check")
-    public Result check(@RequestBody AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay ) {
-        return Result.success(auxiliaryWorkingHoursDayService.checkOrApprove(auxiliaryWorkingHoursDay));
+    public Result check(@RequestBody HoursDay hoursDay ) {
+        return Result.success(auxiliaryWorkingHoursDayService.checkOrApprove(hoursDay));
     }
 
     @ValueClassify("宸ユ椂绠$悊")
diff --git a/performance-server/src/main/java/com/yuanchu/mom/dto/AuxiliaryOriginalHoursDto.java b/performance-server/src/main/java/com/yuanchu/mom/dto/AuxiliaryOriginalHoursDto.java
index 740adfa..a1ff994 100644
--- a/performance-server/src/main/java/com/yuanchu/mom/dto/AuxiliaryOriginalHoursDto.java
+++ b/performance-server/src/main/java/com/yuanchu/mom/dto/AuxiliaryOriginalHoursDto.java
@@ -5,6 +5,7 @@
 import com.yuanchu.mom.annotation.ValueTableShow;
 import com.yuanchu.mom.pojo.AuxiliaryCorrectionHours;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
 import lombok.Data;
 
 import java.text.DecimalFormat;
diff --git a/performance-server/src/main/java/com/yuanchu/mom/dto/HoursDay.java b/performance-server/src/main/java/com/yuanchu/mom/dto/HoursDay.java
new file mode 100644
index 0000000..22bc6b0
--- /dev/null
+++ b/performance-server/src/main/java/com/yuanchu/mom/dto/HoursDay.java
@@ -0,0 +1,12 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.AuxiliaryWorkingHoursDay;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class HoursDay {
+
+    private List<AuxiliaryWorkingHoursDay> auxiliaryWorkingHoursDays;
+}
diff --git a/performance-server/src/main/java/com/yuanchu/mom/service/AuxiliaryWorkingHoursDayService.java b/performance-server/src/main/java/com/yuanchu/mom/service/AuxiliaryWorkingHoursDayService.java
index 86669a0..fd84bcd 100644
--- a/performance-server/src/main/java/com/yuanchu/mom/service/AuxiliaryWorkingHoursDayService.java
+++ b/performance-server/src/main/java/com/yuanchu/mom/service/AuxiliaryWorkingHoursDayService.java
@@ -2,11 +2,13 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yuanchu.mom.dto.AuxiliaryWorkingHoursDayDto;
+import com.yuanchu.mom.dto.HoursDay;
 import com.yuanchu.mom.pojo.AuxiliaryWorkingHours;
 import com.yuanchu.mom.pojo.AuxiliaryWorkingHoursDay;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.time.LocalDateTime;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -25,7 +27,7 @@
 
     AuxiliaryWorkingHoursDay selectAuxiliaryWorkingHoursByNumber(String number);
 
-    int checkOrApprove(AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay);
+    boolean checkOrApprove(HoursDay hoursDay);
 
     int updateAuxiliaryWorkingHoursDay(AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay);
 
diff --git a/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOriginalHoursServiceImpl.java b/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOriginalHoursServiceImpl.java
index 2230285..51ec8c7 100644
--- a/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOriginalHoursServiceImpl.java
+++ b/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOriginalHoursServiceImpl.java
@@ -19,6 +19,7 @@
 import com.yuanchu.mom.pojo.User;
 import com.yuanchu.mom.service.AuxiliaryOriginalHoursService;
 import com.yuanchu.mom.utils.QueryWrappers;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -26,10 +27,7 @@
 import java.io.IOException;
 import java.net.URLEncoder;
 import java.text.DecimalFormat;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -110,19 +108,95 @@
         originalHoursDtoIPage.setSize(page.getSize());
         originalHoursDtoIPage.setCurrent(page.getCurrent());
         List<AuxiliaryOriginalHoursDto> auxiliaryOriginalHoursDtos = new ArrayList<>();
+        Map<String, AuxiliaryOriginalHoursDto> data1 = new HashMap<>();
+        Map<String, AuxiliaryOriginalHoursDto> data2 = new HashMap<>();
         //浜ч噺宸ユ椂
         List<Map<String, Object>> maps = auxiliaryOutputWorkingHoursMapper.totalHours(auxiliaryOriginalHoursLookDto.getMonth(), ids);
         if (ObjectUtils.isNotEmpty(maps)) {
-            auxiliaryOriginalHoursDtos.addAll(getData(maps, "浜ч噺宸ユ椂").values());
+            data1 = getData(maps, "浜ч噺宸ユ椂");
+            auxiliaryOriginalHoursDtos.addAll(data1.values());
         }
         //杈呭姪宸ユ椂
         List<Map<String, Object>> maps1 = auxiliaryWorkingHoursDayMapper.totalHours(auxiliaryOriginalHoursLookDto.getMonth(), ids);
         if (ObjectUtils.isNotEmpty(maps1)) {
-            auxiliaryOriginalHoursDtos.addAll(getData(maps1, "杈呭姪宸ユ椂").values());
+            data2 = getData(maps1, "杈呭姪宸ユ椂");
+            auxiliaryOriginalHoursDtos.addAll(data2.values());
         }
         //鍔犵彮宸ユ椂
-        //鎬诲伐鏃�
-        List<Map<String, Object>> maps2 = auxiliaryOriginalHoursMapper.totalHours(auxiliaryOriginalHoursLookDto.getMonth(), ids);
+        //鎬诲伐鏃�=浜ч噺宸ユ椂+杈呭姪宸ユ椂+鍔犵彮宸ユ椂
+        Map<String, AuxiliaryOriginalHoursDto> data4 = new HashMap<String, AuxiliaryOriginalHoursDto>();
+        Map<String, AuxiliaryOriginalHoursDto> data3 = data1;
+        if (data1.size()>0) {
+            if (data2.size() > 0) {
+                for (Map.Entry<String, AuxiliaryOriginalHoursDto> entry : data2.entrySet()) {
+                    String key = entry.getKey();
+                    AuxiliaryOriginalHoursDto value = entry.getValue();
+                    if (data3.containsKey(key)) {
+                        for (Map.Entry<String, AuxiliaryOriginalHoursDto> dtoEntry : data3.entrySet()) {
+                            if (dtoEntry.getKey().equals(key)) {
+                                AuxiliaryOriginalHoursDto auxiliaryOriginalHoursDto = new AuxiliaryOriginalHoursDto();
+                                AuxiliaryOriginalHoursDto hoursDto = data3.get(key);
+                                BeanUtils.copyProperties(hoursDto, auxiliaryOriginalHoursDto);
+                                auxiliaryOriginalHoursDto.setType("鎬诲伐鏃�");
+                                auxiliaryOriginalHoursDto.setOneHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getOneHours()) ? auxiliaryOriginalHoursDto.getOneHours() : 0) + (ObjectUtils.isNotEmpty(value.getOneHours()) ? value.getOneHours() : 0));
+                                auxiliaryOriginalHoursDto.setTwoHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwoHours()) ? auxiliaryOriginalHoursDto.getTwoHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwoHours()) ? value.getTwoHours() : 0));
+                                auxiliaryOriginalHoursDto.setThreeHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThreeHours()) ? auxiliaryOriginalHoursDto.getThreeHours() : 0) + (ObjectUtils.isNotEmpty(value.getThreeHours()) ? value.getThreeHours() : 0));
+                                auxiliaryOriginalHoursDto.setFourHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFourHours()) ? auxiliaryOriginalHoursDto.getFourHours() : 0) + (ObjectUtils.isNotEmpty(value.getFourHours()) ? value.getFourHours() : 0));
+                                auxiliaryOriginalHoursDto.setFiveHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFiveHours()) ? auxiliaryOriginalHoursDto.getFiveHours() : 0) + (ObjectUtils.isNotEmpty(value.getFiveHours()) ? value.getFiveHours() : 0));
+                                auxiliaryOriginalHoursDto.setSixHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSixHours()) ? auxiliaryOriginalHoursDto.getSixHours() : 0) + (ObjectUtils.isNotEmpty(value.getSixHours()) ? value.getSixHours() : 0));
+                                auxiliaryOriginalHoursDto.setSevenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSevenHours()) ? auxiliaryOriginalHoursDto.getSevenHours() : 0) + (ObjectUtils.isNotEmpty(value.getSevenHours()) ? value.getSevenHours() : 0));
+                                auxiliaryOriginalHoursDto.setEightHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getEightHours()) ? auxiliaryOriginalHoursDto.getEightHours() : 0) + (ObjectUtils.isNotEmpty(value.getEightHours()) ? value.getEightHours() : 0));
+                                auxiliaryOriginalHoursDto.setNineHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getNineHours()) ? auxiliaryOriginalHoursDto.getNineHours() : 0) + (ObjectUtils.isNotEmpty(value.getNineHours()) ? value.getNineHours() : 0));
+                                auxiliaryOriginalHoursDto.setTenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTenHours()) ? auxiliaryOriginalHoursDto.getTenHours() : 0) + (ObjectUtils.isNotEmpty(value.getTenHours()) ? value.getTenHours() : 0));
+                                auxiliaryOriginalHoursDto.setElevenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getElevenHours()) ? auxiliaryOriginalHoursDto.getElevenHours() : 0) + (ObjectUtils.isNotEmpty(value.getElevenHours()) ? value.getElevenHours() : 0));
+                                auxiliaryOriginalHoursDto.setTwelveHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwelveHours()) ? auxiliaryOriginalHoursDto.getTwelveHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwelveHours()) ? value.getTwelveHours() : 0));
+                                auxiliaryOriginalHoursDto.setThirteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThirteenHours()) ? auxiliaryOriginalHoursDto.getThirteenHours() : 0) + (ObjectUtils.isNotEmpty(value.getThirteenHours()) ? value.getThirteenHours() : 0));
+                                auxiliaryOriginalHoursDto.setFourteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFourteenHours()) ? auxiliaryOriginalHoursDto.getFourteenHours() : 0) + (ObjectUtils.isNotEmpty(value.getFourteenHours()) ? value.getFourteenHours() : 0));
+                                auxiliaryOriginalHoursDto.setFifteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFifteenHours()) ? auxiliaryOriginalHoursDto.getFifteenHours() : 0) + (ObjectUtils.isNotEmpty(value.getFifteenHours()) ? value.getFifteenHours() : 0));
+                                auxiliaryOriginalHoursDto.setSixteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSixteenHours()) ? auxiliaryOriginalHoursDto.getSixteenHours() : 0) + (ObjectUtils.isNotEmpty(value.getSixteenHours()) ? value.getSixteenHours() : 0));
+                                auxiliaryOriginalHoursDto.setSeventeenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSeventeenHours()) ? auxiliaryOriginalHoursDto.getSeventeenHours() : 0) + (ObjectUtils.isNotEmpty(value.getSeventeenHours()) ? value.getSeventeenHours() : 0));
+                                auxiliaryOriginalHoursDto.setEighteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getEighteenHours()) ? auxiliaryOriginalHoursDto.getEighteenHours() : 0) + (ObjectUtils.isNotEmpty(value.getEighteenHours()) ? value.getEighteenHours() : 0));
+                                auxiliaryOriginalHoursDto.setNineteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getNineteenHours()) ? auxiliaryOriginalHoursDto.getNineteenHours() : 0) + (ObjectUtils.isNotEmpty(value.getNineteenHours()) ? value.getNineteenHours() : 0));
+                                auxiliaryOriginalHoursDto.setTwelveHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwelveHours()) ? auxiliaryOriginalHoursDto.getTwelveHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwelveHours()) ? value.getTwelveHours() : 0));
+                                auxiliaryOriginalHoursDto.setTwentyOneHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyOneHours()) ? auxiliaryOriginalHoursDto.getTwentyOneHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyOneHours()) ? value.getTwentyOneHours() : 0));
+                                auxiliaryOriginalHoursDto.setTwentyTwoHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyTwoHours()) ? auxiliaryOriginalHoursDto.getTwentyTwoHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyTwoHours()) ? value.getTwentyTwoHours() : 0));
+                                auxiliaryOriginalHoursDto.setTwentyThreeHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyThreeHours()) ? auxiliaryOriginalHoursDto.getTwentyThreeHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyThreeHours()) ? value.getTwentyThreeHours() : 0));
+                                auxiliaryOriginalHoursDto.setTwentyFourHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyFourHours()) ? auxiliaryOriginalHoursDto.getTwentyFourHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyFourHours()) ? value.getTwentyFourHours() : 0));
+                                auxiliaryOriginalHoursDto.setTwentyFiveHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyFiveHours()) ? auxiliaryOriginalHoursDto.getTwentyFiveHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyFiveHours()) ? value.getTwentyFiveHours() : 0));
+                                auxiliaryOriginalHoursDto.setTwentySixHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentySixHours()) ? auxiliaryOriginalHoursDto.getTwentySixHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentySixHours()) ? value.getTwentySixHours() : 0));
+                                auxiliaryOriginalHoursDto.setTwentySevenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentySevenHours()) ? auxiliaryOriginalHoursDto.getTwentySevenHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentySevenHours()) ? value.getTwentySevenHours() : 0));
+                                auxiliaryOriginalHoursDto.setTwentyEightHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyEightHours()) ? auxiliaryOriginalHoursDto.getTwentyEightHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyEightHours()) ? value.getTwentyEightHours() : 0));
+                                auxiliaryOriginalHoursDto.setTwentyNineHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyNineHours()) ? auxiliaryOriginalHoursDto.getTwentyNineHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyNineHours()) ? value.getTwentyNineHours() : 0));
+                                auxiliaryOriginalHoursDto.setThirtyHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThirtyHours()) ? auxiliaryOriginalHoursDto.getThirtyHours() : 0) + (ObjectUtils.isNotEmpty(value.getThirtyHours()) ? value.getThirtyHours() : 0));
+                                auxiliaryOriginalHoursDto.setThirtyOneHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThirtyOneHours()) ? auxiliaryOriginalHoursDto.getThirtyOneHours() : 0) + (ObjectUtils.isNotEmpty(value.getThirtyOneHours()) ? value.getThirtyOneHours() : 0));
+                                auxiliaryOriginalHoursDto.setTotal((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTotal()) ? auxiliaryOriginalHoursDto.getTotal() : 0) + (ObjectUtils.isNotEmpty(value.getTotal()) ? value.getTotal() : 0));
+                                data4.put(key, auxiliaryOriginalHoursDto);
+                            } else {
+                                AuxiliaryOriginalHoursDto hoursDto = data3.get(dtoEntry.getKey());
+                                AuxiliaryOriginalHoursDto dto = new AuxiliaryOriginalHoursDto();
+                                BeanUtils.copyProperties(hoursDto, dto);
+                                dto.setType("鎬诲伐鏃�");
+                                data4.put(dtoEntry.getKey(), dto);
+                            }
+                        }
+                    } else {
+                        value.setType("鎬诲伐鏃�");
+                        data4.put(key, value);
+                    }
+                }
+            }
+            else {
+                for (Map.Entry<String, AuxiliaryOriginalHoursDto> entry : data3.entrySet()) {
+                    AuxiliaryOriginalHoursDto dto = entry.getValue();
+                    AuxiliaryOriginalHoursDto originalHoursDto = new AuxiliaryOriginalHoursDto();
+                    BeanUtils.copyProperties(dto, originalHoursDto);
+                    originalHoursDto.setType("鎬诲伐鏃�");
+                    data4.put(entry.getKey(), originalHoursDto);
+                }
+            }
+            auxiliaryOriginalHoursDtos.addAll(data4.values());
+        }
+        /*List<Map<String, Object>> maps2 = auxiliaryOriginalHoursMapper.totalHours(auxiliaryOriginalHoursLookDto.getMonth(), ids);
         if (ObjectUtils.isNotEmpty(maps2)) {
             //浜ч噺宸ユ椂+杈呭姪宸ユ椂閮戒笉涓虹┖
             auxiliaryOriginalHoursDtos.addAll(getData(maps2, "鎬诲伐鏃�").values());
@@ -132,8 +206,37 @@
             auxiliaryOriginalHoursDtos.addAll(getData(maps1, "鎬诲伐鏃�").values());
         } else if (ObjectUtils.isNotEmpty(maps)) {
             auxiliaryOriginalHoursDtos.addAll(getData(maps, "鎬诲伐鏃�").values());
+        }*/
+
+        auxiliaryOriginalHoursDtos = auxiliaryOriginalHoursDtos.stream().sorted(Comparator.comparing(AuxiliaryOriginalHoursDto::getName)).collect(Collectors.toList());
+        // 妫�鏌ユ瘡涓汉鐨勫伐鏃剁被鍨嬶紝琛ュ叏缂哄皯鐨勫伐鏃�
+        Map<String, Set<String>> workHoursMap = new HashMap<>();
+        String[] requiredHours = {"浜ч噺宸ユ椂", "杈呭姪宸ユ椂", "鍔犵彮宸ユ椂", "鎬诲伐鏃�"};
+        for (AuxiliaryOriginalHoursDto dto : auxiliaryOriginalHoursDtos) {
+            workHoursMap.computeIfAbsent(dto.getName(), k -> new HashSet<>()).add(dto.getType());
         }
-        originalHoursDtoIPage.setRecords(auxiliaryOriginalHoursDtos);
+        List<AuxiliaryOriginalHoursDto> result = auxiliaryOriginalHoursDtos;
+        for (String name1 : workHoursMap.keySet()) {
+            Set<String> workTypes = workHoursMap.get(name1);
+            for (String requiredHour : requiredHours) {
+                if (!workTypes.contains(requiredHour)) {
+                    AuxiliaryOriginalHoursDto auxiliaryOriginalHoursDto = new AuxiliaryOriginalHoursDto();
+                    auxiliaryOriginalHoursDto.setName(name1);
+                    auxiliaryOriginalHoursDto.setAuxiliaryCorrectionHours(null);
+                    auxiliaryOriginalHoursDto.setType(requiredHour);
+                    auxiliaryOriginalHoursDto.setMonth(auxiliaryOriginalHoursLookDto.getMonth());
+                    result.add(auxiliaryOriginalHoursDto);
+                }
+            }
+        }
+        List<String> order = Arrays.asList("浜ч噺宸ユ椂", "杈呭姪宸ユ椂", "鍔犵彮宸ユ椂", "鎬诲伐鏃�");
+        Comparator<AuxiliaryOriginalHoursDto> comparator = Comparator.comparingInt(dto -> {
+            String type = dto.getType();
+            return order.indexOf(type) == -1 ? order.size() : order.indexOf(type);
+        });
+        result = result.stream().sorted(Comparator.comparing(AuxiliaryOriginalHoursDto::getName).thenComparing(comparator)).collect(Collectors.toList());
+        originalHoursDtoIPage.setRecords(result);
+        originalHoursDtoIPage.setTotal(result.size());
         map.put("body", originalHoursDtoIPage);
         return map;
     }
@@ -192,7 +295,6 @@
                         .eq(AuxiliaryCorrectionHours::getType, auxiliaryOriginalHoursDto.getType())
                         .eq(AuxiliaryCorrectionHours::getMonth, auxiliaryOriginalHoursDto.getMonth()));
                 auxiliaryOriginalHoursDto.setAuxiliaryCorrectionHours(auxiliaryCorrectionHours);
-                dtoMap.put(name, auxiliaryOriginalHoursDto);
             }
             AuxiliaryCorrectionHours auxiliaryCorrectionHours = auxiliaryOriginalHoursDto.getAuxiliaryCorrectionHours();
             switch (objectMap.get("month").toString().substring(8, 10)) {
@@ -479,6 +581,8 @@
             );
             DecimalFormat df = new DecimalFormat("#.####"); // 璁惧畾鍥涗綅灏忔暟
             auxiliaryOriginalHoursDto.setTotal(Double.parseDouble(df.format(auxiliaryOriginalHoursDto.getTotal())));
+
+            dtoMap.put(name, auxiliaryOriginalHoursDto);
         }
         return dtoMap;
     }
diff --git a/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOutputWorkingHoursServiceImpl.java b/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOutputWorkingHoursServiceImpl.java
index ee1d698..131200a 100644
--- a/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOutputWorkingHoursServiceImpl.java
+++ b/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOutputWorkingHoursServiceImpl.java
@@ -5,6 +5,7 @@
 import com.alibaba.excel.write.metadata.WriteSheet;
 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -97,22 +98,38 @@
         if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isNotEmpty(week)) {
             String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
             String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
-            map.put("body", auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHours(page,
+            IPage<AuxiliaryOutputWorkingHoursDto> auxiliaryOutputWorkingHoursDtoIPage = auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHours(page,
                     QueryWrappers.queryWrappers(auxiliaryOutputWorkingHoursDto)
                             .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59")
-                            .ge("week", weeks[0]).le("week", weeks[1]), ids));
+                            .ge("week", weeks[0]).le("week", weeks[1]), ids);
+            for (AuxiliaryOutputWorkingHoursDto record : auxiliaryOutputWorkingHoursDtoIPage.getRecords()) {
+                record.setDateTime(record.getDateTime().substring(0,10));
+            }
+            map.put("body",auxiliaryOutputWorkingHoursDtoIPage );
         } else if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isEmpty(week)) {
             String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
-            map.put("body", auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHours(page,
+            IPage<AuxiliaryOutputWorkingHoursDto> auxiliaryOutputWorkingHoursDtoIPage = auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHours(page,
                     QueryWrappers.queryWrappers(auxiliaryOutputWorkingHoursDto)
-                            .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59"), ids));
+                            .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59"), ids);
+            for (AuxiliaryOutputWorkingHoursDto record : auxiliaryOutputWorkingHoursDtoIPage.getRecords()) {
+                record.setDateTime(record.getDateTime().substring(0,10));
+            }
+            map.put("body",auxiliaryOutputWorkingHoursDtoIPage );
         } else if (ObjectUtils.isEmpty(dates) && ObjectUtils.isNotEmpty(week)) {
             String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
-            map.put("body", auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHours(page,
+            IPage<AuxiliaryOutputWorkingHoursDto> auxiliaryOutputWorkingHoursDtoIPage = auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHours(page,
                     QueryWrappers.queryWrappers(auxiliaryOutputWorkingHoursDto)
-                            .ge("week", weeks[0]).le("week", weeks[1]), ids));
+                            .ge("week", weeks[0]).le("week", weeks[1]), ids);
+            for (AuxiliaryOutputWorkingHoursDto record : auxiliaryOutputWorkingHoursDtoIPage.getRecords()) {
+                record.setDateTime(record.getDateTime().substring(0,10));
+            }
+            map.put("body", auxiliaryOutputWorkingHoursDtoIPage);
         } else {
-            map.put("body", auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHours(page, QueryWrappers.queryWrappers(auxiliaryOutputWorkingHoursDto), ids));
+            IPage<AuxiliaryOutputWorkingHoursDto> auxiliaryOutputWorkingHoursDtoIPage = auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHours(page, QueryWrappers.queryWrappers(auxiliaryOutputWorkingHoursDto), ids);
+            for (AuxiliaryOutputWorkingHoursDto record : auxiliaryOutputWorkingHoursDtoIPage.getRecords()) {
+                record.setDateTime(record.getDateTime().substring(0,10));
+            }
+            map.put("body", auxiliaryOutputWorkingHoursDtoIPage);
         }
         return map;
     }
@@ -122,17 +139,21 @@
     public Map<String, Object> collectWorkingHours(AuxiliaryOutputWorkingHoursDto auxiliaryOutputWorkingHoursDto) {
         AuxiliaryOutputWorkingHours outputWorkingHours = new AuxiliaryOutputWorkingHours();
         AuxiliaryWorkingHoursDay workingHoursDay = new AuxiliaryWorkingHoursDay();
+        List<Integer> ids = new ArrayList<>();
+        if (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHoursDto.getWeekDay())){
+            outputWorkingHours.setWeekDay(auxiliaryOutputWorkingHoursDto.getWeekDay());
+            workingHoursDay.setWeekDay(auxiliaryOutputWorkingHoursDto.getWeekDay());
+        }
         if (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHoursDto.getName())){
-            User user = userMapper.selectOne(Wrappers.<User>lambdaQuery().eq(User::getName, auxiliaryOutputWorkingHoursDto.getName()));
-            outputWorkingHours.setCheck(user.getId());
-            workingHoursDay.setNameUser(user.getId());
+            List<User> user = userMapper.selectList(Wrappers.<User>lambdaQuery().like(User::getName, auxiliaryOutputWorkingHoursDto.getName()));
+            ids.addAll(user.stream().map(User::getId).collect(Collectors.toList()));
         }
         String dates = auxiliaryOutputWorkingHoursDto.getDateTime();
         auxiliaryOutputWorkingHoursDto.setDateTime(null);
         Map<String, Object> map = new HashMap<>();
         Double sumOutputWorkTime = 0.0;
         Double sumApprovedWorkingHour = 0.0;
-        List<Integer> ids = null;
+
         //鍒ゆ柇鏄粍闀胯繕鏄粍鍛樿繕鏄鐞嗗憳
         Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectAuxiliaryOutputWorkingHours");
         User user = userMapper.selectById(map1.get("userId"));
@@ -156,6 +177,9 @@
         }
         List<AuxiliaryOutputWorkingHours> auxiliaryOutputWorkingHours = new ArrayList<>();
         List<AuxiliaryWorkingHoursDay> auxiliaryWorkingHoursDays = new ArrayList<>();
+        if (ids.size() == 0) {
+            ids=null;
+        }
         if (ObjectUtils.isNotEmpty(dates)) {
             String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
             //缁熻褰撳墠鐢ㄦ埛鐨勪骇鍝佸伐鏃�
@@ -167,7 +191,13 @@
                     .eq("state","宸叉壒鍑�")
                     .ge("date_time", split[0])
                     .le("date_time", split[1] + " 23:59:59"),ids);
-        } else {
+        }else if (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHoursDto.getWeekDay())){
+            //缁熻褰撳墠鐢ㄦ埛鐨勪骇鍝佸伐鏃�
+            auxiliaryOutputWorkingHours = auxiliaryOutputWorkingHoursMapper.selectLists(QueryWrappers.queryWrappers(outputWorkingHours),ids);
+            //缁熻褰撳墠鐢ㄦ埛鐨勮緟鍔╁伐鏃�
+            auxiliaryWorkingHoursDays = auxiliaryWorkingHoursDayMapper.selectLists(QueryWrappers.queryWrappers(workingHoursDay).eq("state","宸叉壒鍑�"),ids);
+        }
+        else {
             auxiliaryOutputWorkingHours = auxiliaryOutputWorkingHoursMapper.selectListByIds(ids);
             auxiliaryWorkingHoursDays = auxiliaryWorkingHoursDayMapper.selectListByIds(ids);
         }
@@ -183,7 +213,7 @@
         map.put("浜ч噺宸ユ椂姹囨��", sumOutputWorkTime);
         if (ObjectUtils.isNotEmpty(auxiliaryWorkingHoursDays)) {
             for (AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay : auxiliaryWorkingHoursDays) {
-                sumApprovedWorkingHour += auxiliaryWorkingHoursDay.getNonproductiveTime();
+                sumApprovedWorkingHour += auxiliaryWorkingHoursDay.getReviewerNonproductiveTime();//澶嶆牳宸ユ椂
             }
         }
         map.put("杈呭姪宸ユ椂姹囨��", sumApprovedWorkingHour);
diff --git a/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryWorkingHoursDayServiceImpl.java b/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryWorkingHoursDayServiceImpl.java
index c5814b9..80dcba5 100644
--- a/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryWorkingHoursDayServiceImpl.java
+++ b/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryWorkingHoursDayServiceImpl.java
@@ -1,11 +1,13 @@
 package com.yuanchu.mom.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yuanchu.mom.common.GetLook;
 import com.yuanchu.mom.common.PrintChina;
 import com.yuanchu.mom.dto.AuxiliaryWorkingHoursDayDto;
+import com.yuanchu.mom.dto.HoursDay;
 import com.yuanchu.mom.exception.ErrorException;
 import com.yuanchu.mom.mapper.*;
 import com.yuanchu.mom.pojo.*;
@@ -86,28 +88,44 @@
                 ids.addAll(users.stream().map(User::getId).distinct().collect(Collectors.toList()));
             }
         }
-        if (ids.size()==0){
-            ids=null;
+        if (ids.size() == 0) {
+            ids = null;
         }
         if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isNotEmpty(week)) {
             String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
             String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
-            map.put("body", auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page,
+            IPage<AuxiliaryWorkingHoursDayDto> auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page,
                     QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto)
                             .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59")
-                            .ge("week", weeks[0]).le("week", weeks[1]), ids));
+                            .ge("week", weeks[0]).le("week", weeks[1]), ids);
+            for (AuxiliaryWorkingHoursDayDto record : auxiliaryWorkingHoursDayDtoIPage.getRecords()) {
+                record.setDateTime(record.getDateTime().substring(0, 10));
+            }
+            map.put("body", auxiliaryWorkingHoursDayDtoIPage);
         } else if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isEmpty(week)) {
             String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
-            map.put("body", auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page,
+            IPage<AuxiliaryWorkingHoursDayDto> auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page,
                     QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto)
-                            .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59"), ids));
+                            .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59"), ids);
+            for (AuxiliaryWorkingHoursDayDto record : auxiliaryWorkingHoursDayDtoIPage.getRecords()) {
+                record.setDateTime(record.getDateTime().substring(0, 10));
+            }
+            map.put("body", auxiliaryWorkingHoursDayDtoIPage);
         } else if (ObjectUtils.isEmpty(dates) && ObjectUtils.isNotEmpty(week)) {
             String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
-            map.put("body", auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page,
+            IPage<AuxiliaryWorkingHoursDayDto> auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page,
                     QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto)
-                            .ge("week", weeks[0]).le("week", weeks[1]), ids));
+                            .ge("week", weeks[0]).le("week", weeks[1]), ids);
+            for (AuxiliaryWorkingHoursDayDto record : auxiliaryWorkingHoursDayDtoIPage.getRecords()) {
+                record.setDateTime(record.getDateTime().substring(0, 10));
+            }
+            map.put("body", auxiliaryWorkingHoursDayDtoIPage);
         } else {
-            map.put("body", auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page, QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto), ids));
+            IPage<AuxiliaryWorkingHoursDayDto> auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page, QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto), ids);
+            for (AuxiliaryWorkingHoursDayDto record : auxiliaryWorkingHoursDayDtoIPage.getRecords()) {
+                record.setDateTime(record.getDateTime().substring(0, 10));
+            }
+            map.put("body", auxiliaryWorkingHoursDayDtoIPage);
         }
         return map;
     }
@@ -136,12 +154,20 @@
 
     //瀹℃牳/鎵瑰噯
     @Override
-    public int checkOrApprove(AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay) {
-        if (auxiliaryWorkingHoursDay.getState().equals("宸插鏍�")) {
-            Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
-            auxiliaryWorkingHoursDay.setReviewer(userMapper.selectById(userId).getName());
+    public boolean checkOrApprove(HoursDay hoursDay) {
+        List<AuxiliaryWorkingHoursDay> auxiliaryWorkingHoursDays = hoursDay.getAuxiliaryWorkingHoursDays();
+        for (AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay : auxiliaryWorkingHoursDays) {
+            if (auxiliaryWorkingHoursDay.getState().equals("宸插鏍�")) {
+                Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+                auxiliaryWorkingHoursDay.setReviewer(userMapper.selectById(userId).getName());
+            }
+            if (auxiliaryWorkingHoursDay.getReviewerNumber() == null) {
+                auxiliaryWorkingHoursDay.setReviewerNumber(auxiliaryWorkingHoursDay.getAmount());//澶嶆牳鏁伴噺
+                auxiliaryWorkingHoursDay.setReviewerNonproductiveTime(auxiliaryWorkingHoursDay.getNonproductiveTime());//澶嶆牳宸ユ椂
+            }
+
         }
-        return auxiliaryWorkingHoursDayMapper.updateById(auxiliaryWorkingHoursDay);
+        return updateBatchById(auxiliaryWorkingHoursDays);
     }
 
     //缂栬緫
diff --git a/performance-server/src/main/resources/mapper/AuxiliaryOriginalHoursMapper.xml b/performance-server/src/main/resources/mapper/AuxiliaryOriginalHoursMapper.xml
index 0f7802d..9aee9af 100644
--- a/performance-server/src/main/resources/mapper/AuxiliaryOriginalHoursMapper.xml
+++ b/performance-server/src/main/resources/mapper/AuxiliaryOriginalHoursMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.yuanchu.mom.mapper.AuxiliaryOriginalHoursMapper">
     <select id="totalHours" resultType="java.util.Map">
-        select E.name, E.month, E.total
+        select E.name, E.month, E.total manHours
         from (select C.name, C.month, C.manHours + D.manHours as total
         from (select A.name,
         A.month,

--
Gitblit v1.9.3