From 92442dca5ac89b58daa7129428cc72dcf001fb39 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期三, 24 七月 2024 15:22:47 +0800
Subject: [PATCH] 加班工时

---
 performance-server/src/main/java/com/yuanchu/mom/pojo/PerformanceShift.java                          |    3 
 system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java                               |   32 +--
 performance-server/src/main/java/com/yuanchu/mom/controller/ShiftTimeController.java                 |   63 ++++++
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java               |  108 ++++++++--
 performance-server/src/main/resources/mapper/ShiftTimeMapper.xml                                     |   17 +
 performance-server/src/main/resources/mapper/AuxiliaryOutputWorkingHoursMapper.xml                   |    3 
 performance-server/src/main/java/com/yuanchu/mom/service/ShiftTimeService.java                       |   22 ++
 performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOriginalHoursServiceImpl.java |  148 +++++++-------
 performance-server/src/main/java/com/yuanchu/mom/pojo/ShiftTime.java                                 |   59 +++++
 performance-server/src/main/java/com/yuanchu/mom/pojo/AuxiliaryCorrectionHours.java                  |   62 +++---
 performance-server/src/main/java/com/yuanchu/mom/mapper/ShiftTimeMapper.java                         |   16 +
 performance-server/src/main/java/com/yuanchu/mom/service/impl/ShiftTimeServiceImpl.java              |   35 +++
 system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java                                          |    6 
 performance-server/src/main/java/com/yuanchu/mom/mapper/AuxiliaryOutputWorkingHoursMapper.java       |    2 
 14 files changed, 421 insertions(+), 155 deletions(-)

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 8c51007..499f5ca 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
@@ -50,6 +50,7 @@
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
@@ -79,6 +80,10 @@
     private InsOrderStateMapper insOrderStateMapper;
     @Resource
     private InsProductMapper insProductMapper;
+    @Resource
+    private ShiftTimeMapper shiftTimeMapper;
+    @Resource
+    private PerformanceShiftMapper performanceShiftMapper;
 
     @Value("${wordUrl}")
     private String wordUrl;
@@ -100,6 +105,9 @@
 
     @Resource
     AuxiliaryOutputWorkingHoursMapper auxiliaryOutputWorkingHoursMapper;
+
+    @Resource
+    AuxiliaryOutputWorkingHoursService auxiliaryOutputWorkingHoursService;
 
     @Resource
     private InformationNotificationService informationNotificationService;
@@ -495,6 +503,7 @@
                         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")));
+                        map.put("w", insValue.get("w"));
                         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 + "");
@@ -572,31 +581,80 @@
                 //鏌ヨ妫�楠屽崟淇℃伅
                 InsOrder insOrder = insOrderMapper.selectById(insSampleMapper.selectById(insProduct.getInsSampleId()).getInsOrderId());
                 //鏍¢獙濡傛灉杩欎釜浜鸿繖涓娴嬮」鐩凡缁忔坊鍔犺繃浜嗗垯涓嶉渶瑕佸啀鏂板
-                Long count = auxiliaryOutputWorkingHoursMapper.selectCount(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
-                        .eq(AuxiliaryOutputWorkingHours::getCheck, userId)
-                        .eq(AuxiliaryOutputWorkingHours::getInspectionItem, insProduct.getInspectionItem())
-                        .eq(AuxiliaryOutputWorkingHours::getInspectionItemSubclass, insProduct.getInspectionItemSubclass())
-                        .eq(AuxiliaryOutputWorkingHours::getOrderNo, insOrder.getEntrustCode()));
-                if (count == 0 && ObjectUtils.isNotEmpty(insProduct.getManHour())) {
-                    //娣诲姞姣忎釜浜虹殑浜ч噺宸ユ椂,瑕佸垽鏂綋鍓嶆椂闂存槸鍚︽槸杩欎釜浜虹殑鎺掔彮鏃堕棿,濡傛灉涓嶆槸鍒欐槸鍔犵彮
-                    AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHours = new AuxiliaryOutputWorkingHours();
-                    auxiliaryOutputWorkingHours.setInspectionItem(insProduct.getInspectionItem());//妫�娴嬬埗椤�
-                    auxiliaryOutputWorkingHours.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());//妫�娴嬪瓙椤�
-                    auxiliaryOutputWorkingHours.setSample(insSampleMapper.selectById(insProduct.getInsSampleId()).getSampleCode());//鏍峰搧缂栧彿
-                    auxiliaryOutputWorkingHours.setOrderNo(insOrder.getEntrustCode());//闈炲姞鐝鎵樺崟鍙�
-                    auxiliaryOutputWorkingHours.setWorkTime(insProduct.getManHour());//闈炲姞鐝伐鏃�
-                    auxiliaryOutputWorkingHours.setAmount(1);//闈炲姞鐝暟閲�
-                    auxiliaryOutputWorkingHours.setOutputWorkTime(insProduct.getManHour());//浜ч噺宸ユ椂
-                    auxiliaryOutputWorkingHours.setManHourGroup(insProduct.getManHourGroup());//宸ユ椂鍒嗙粍
-                    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-                    DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-                    auxiliaryOutputWorkingHours.setDateTime(LocalDateTime.now().toLocalDate().atStartOfDay().format(formatters));//鏃ユ湡
-                    LocalDateTime localDateTime = LocalDateTime.now();
-                    DateTime parse = DateUtil.parse(localDateTime.format(formatter));
-                    auxiliaryOutputWorkingHours.setWeekDay(getWeek(localDateTime.format(formatters)));//鏄熸湡
-                    auxiliaryOutputWorkingHours.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1))));//鍛ㄦ
-                    auxiliaryOutputWorkingHours.setCheck(userId);//妫�娴嬩汉
-                    auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours);
+                //棣栧厛鍒ゆ柇褰撳墠浜虹殑褰撳墠鏃堕棿鏄惁鏄帓鐝椂闂村唴,濡傛灉涓嶆槸灏辨槸鍔犵彮
+                LocalDateTime today = LocalDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT);
+                PerformanceShift performanceShift = performanceShiftMapper.selectOne(Wrappers.<PerformanceShift>lambdaQuery()
+                        .eq(PerformanceShift::getUserId, userId)
+                        .eq(PerformanceShift::getWorkTime, today));
+                if (ObjectUtils.isNotEmpty(performanceShift)){
+                    ShiftTime shiftTime = shiftTimeMapper.selectOne(Wrappers.<ShiftTime>lambdaQuery().eq(ShiftTime::getShift, performanceShift.getShift()));
+                    if (ObjectUtils.isNotEmpty(shiftTime)){
+                        DateTimeFormatter forma = DateTimeFormatter.ofPattern("HH:mm");
+                        LocalTime now = LocalTime.now();
+                        LocalTime startTime = LocalTime.parse(shiftTime.getStartTime(), forma);
+                        LocalTime endTime = LocalTime.parse(shiftTime.getEndTime(), forma);
+                        // 妫�鏌ュ綋鍓嶆椂闂存槸鍚﹀湪鑼冨洿鍐咃紙鍖呮嫭杈圭晫锛�
+                        boolean isWithinRange = !now.isBefore(startTime) && !now.isAfter(endTime);
+                        //鍔犵彮
+                        AuxiliaryOutputWorkingHours count1 = auxiliaryOutputWorkingHoursMapper.selectOne(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
+                                .eq(AuxiliaryOutputWorkingHours::getCheck, userId)
+                                .eq(AuxiliaryOutputWorkingHours::getInspectionItem, insProduct.getInspectionItem())
+                                .eq(AuxiliaryOutputWorkingHours::getInspectionItemSubclass, insProduct.getInspectionItemSubclass())
+                                .eq(AuxiliaryOutputWorkingHours::getOvertimeOrderNo, insOrder.getEntrustCode()));
+                        //闈炲姞鐝�
+                        AuxiliaryOutputWorkingHours count2 = auxiliaryOutputWorkingHoursMapper.selectOne(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
+                                .eq(AuxiliaryOutputWorkingHours::getCheck, userId)
+                                .eq(AuxiliaryOutputWorkingHours::getInspectionItem, insProduct.getInspectionItem())
+                                .eq(AuxiliaryOutputWorkingHours::getInspectionItemSubclass, insProduct.getInspectionItemSubclass())
+                                .eq(AuxiliaryOutputWorkingHours::getOrderNo, insOrder.getEntrustCode()));
+                        AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHours = new AuxiliaryOutputWorkingHours();
+                        if (ObjectUtils.isNotEmpty(count1) ){
+                             auxiliaryOutputWorkingHours = count1;
+                        }
+                        else if (ObjectUtils.isNotEmpty(count2) ){
+                             auxiliaryOutputWorkingHours = count2;
+                        }
+                        if (ObjectUtils.isNotEmpty(insProduct.getManHour())) {
+                            if (isWithinRange && ObjectUtils.isEmpty(count2)) {
+                                //鍦ㄦ椂闂村唴灏辨槸姝e父涓婄彮
+                                auxiliaryOutputWorkingHours.setInspectionItem(insProduct.getInspectionItem());//妫�娴嬬埗椤�
+                                auxiliaryOutputWorkingHours.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());//妫�娴嬪瓙椤�
+                                auxiliaryOutputWorkingHours.setSample(insSampleMapper.selectById(insProduct.getInsSampleId()).getSampleCode());//鏍峰搧缂栧彿
+                                auxiliaryOutputWorkingHours.setOrderNo(insOrder.getEntrustCode());//闈炲姞鐝鎵樺崟鍙�
+                                auxiliaryOutputWorkingHours.setWorkTime(insProduct.getManHour());//闈炲姞鐝伐鏃�
+                                auxiliaryOutputWorkingHours.setAmount(1);//闈炲姞鐝暟閲�
+                                auxiliaryOutputWorkingHours.setOutputWorkTime((ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getOvertimeWorkTime())?auxiliaryOutputWorkingHours.getOvertimeWorkTime():0)+(ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getWorkTime())?auxiliaryOutputWorkingHours.getWorkTime():0));//浜ч噺宸ユ椂
+                                auxiliaryOutputWorkingHours.setManHourGroup(insProduct.getManHourGroup());//宸ユ椂鍒嗙粍
+                                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+                                DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                                auxiliaryOutputWorkingHours.setDateTime(LocalDateTime.now().toLocalDate().atStartOfDay().format(formatters));//鏃ユ湡
+                                LocalDateTime localDateTime = LocalDateTime.now();
+                                DateTime parse = DateUtil.parse(localDateTime.format(formatter));
+                                auxiliaryOutputWorkingHours.setWeekDay(getWeek(localDateTime.format(formatters)));//鏄熸湡
+                                auxiliaryOutputWorkingHours.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1))));//鍛ㄦ
+                                auxiliaryOutputWorkingHours.setCheck(userId);//妫�娴嬩汉
+                            } else if(ObjectUtils.isEmpty(count1)) {
+                                //鍔犵彮
+                                auxiliaryOutputWorkingHours.setInspectionItem(insProduct.getInspectionItem());//妫�娴嬬埗椤�
+                                auxiliaryOutputWorkingHours.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());//妫�娴嬪瓙椤�
+                                auxiliaryOutputWorkingHours.setSample(insSampleMapper.selectById(insProduct.getInsSampleId()).getSampleCode());//鏍峰搧缂栧彿
+                                auxiliaryOutputWorkingHours.setOvertimeOrderNo(insOrder.getEntrustCode());//鍔犵彮濮旀墭鍗曞彿
+                                auxiliaryOutputWorkingHours.setOvertimeWorkTime(insProduct.getManHour());//鍔犵彮宸ユ椂
+                                auxiliaryOutputWorkingHours.setOvertimeAmount(1);//鍔犵彮鏁伴噺
+                                auxiliaryOutputWorkingHours.setOutputWorkTime((ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getOvertimeWorkTime())?auxiliaryOutputWorkingHours.getOvertimeWorkTime():0)+(ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getWorkTime())?auxiliaryOutputWorkingHours.getWorkTime():0));//浜ч噺宸ユ椂
+                                auxiliaryOutputWorkingHours.setManHourGroup(insProduct.getManHourGroup());//宸ユ椂鍒嗙粍
+                                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+                                DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                                auxiliaryOutputWorkingHours.setDateTime(LocalDateTime.now().toLocalDate().atStartOfDay().format(formatters));//鏃ユ湡
+                                LocalDateTime localDateTime = LocalDateTime.now();
+                                DateTime parse = DateUtil.parse(localDateTime.format(formatter));
+                                auxiliaryOutputWorkingHours.setWeekDay(getWeek(localDateTime.format(formatters)));//鏄熸湡
+                                auxiliaryOutputWorkingHours.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1))));//鍛ㄦ
+                                auxiliaryOutputWorkingHours.setCheck(userId);//妫�娴嬩汉
+                            }
+                            auxiliaryOutputWorkingHoursService.saveOrUpdate(auxiliaryOutputWorkingHours);
+                        }
+                    }
                 }
 
                 InsSample insSample = insSampleMapper.selectById(insProductMapper.selectById(insProduct.getId()).getInsSampleId());
diff --git a/performance-server/src/main/java/com/yuanchu/mom/controller/ShiftTimeController.java b/performance-server/src/main/java/com/yuanchu/mom/controller/ShiftTimeController.java
new file mode 100644
index 0000000..80c41d3
--- /dev/null
+++ b/performance-server/src/main/java/com/yuanchu/mom/controller/ShiftTimeController.java
@@ -0,0 +1,63 @@
+package com.yuanchu.mom.controller;
+
+import com.yuanchu.mom.annotation.ValueAuth;
+import com.yuanchu.mom.annotation.ValueClassify;
+import com.yuanchu.mom.dto.PerformanceShiftAddDto;
+import com.yuanchu.mom.pojo.ShiftTime;
+import com.yuanchu.mom.service.PerformanceShiftService;
+import com.yuanchu.mom.service.ShiftTimeService;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 鐝瀵瑰簲鐨勬椂闂� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-07-24 11:22:17
+ */
+@Api(tags = "缁╂晥绠$悊-鐝")
+@RestController
+@RequestMapping("/shiftTime")
+public class ShiftTimeController {
+
+    @Autowired
+    private ShiftTimeService shiftTimeService;
+
+    @ValueAuth
+    @ApiOperation(value = "鎺掔彮鏃堕棿閰嶇疆")
+    @PostMapping("add")
+    public Result<?> shiftTimeAdd(@RequestBody ShiftTime shiftTime) {
+        shiftTimeService.shiftTimeAdd(shiftTime);
+        return Result.success();
+    }
+
+    @ValueClassify("鐝")
+    @ApiOperation(value = "鎺掔彮鏃堕棿閰嶇疆鏌ヨ")
+    @PostMapping("list")
+    public Result<?> shiftTimeList() {
+        return Result.success(shiftTimeService.shiftTimeList());
+    }
+
+    @ValueAuth
+    @ApiOperation(value = "鎺掔彮鏃堕棿閰嶇疆鍒犻櫎")
+    @PostMapping("remove")
+    public Result<?> shiftTimeRemove(Long id) {
+        return Result.success(shiftTimeService.removeById(id));
+    }
+
+    @ValueAuth
+    @ApiOperation(value = "鎺掔彮鏃堕棿閰嶇疆淇敼")
+    @PostMapping("update")
+    public Result<?> shiftTimeUpdate(@RequestBody ShiftTime shiftTime) {
+        return Result.success(shiftTimeService.updateById(shiftTime));
+    }
+
+}
diff --git a/performance-server/src/main/java/com/yuanchu/mom/mapper/AuxiliaryOutputWorkingHoursMapper.java b/performance-server/src/main/java/com/yuanchu/mom/mapper/AuxiliaryOutputWorkingHoursMapper.java
index b94f040..4ded00e 100644
--- a/performance-server/src/main/java/com/yuanchu/mom/mapper/AuxiliaryOutputWorkingHoursMapper.java
+++ b/performance-server/src/main/java/com/yuanchu/mom/mapper/AuxiliaryOutputWorkingHoursMapper.java
@@ -30,7 +30,7 @@
     List<AuxiliaryOutputWorkingHoursDto> selectDataByUser(@Param("ids") List<Integer> ids);
 
     //鏌ヨ璇ユ湀鐨勪骇閲忓伐鏃�
-    List<Map<String, Object>> totalHours(@Param("month") String month, @Param("ids") List<Integer> ids);
+    List<Map<String, Object>> totalHours(@Param("month") String month, @Param("ids") List<Integer> ids, @Param("type") String type);
 
 
     List<AuxiliaryOutputWorkingHours> selectListByIds(@Param("ids") List<Integer> ids);
diff --git a/performance-server/src/main/java/com/yuanchu/mom/mapper/ShiftTimeMapper.java b/performance-server/src/main/java/com/yuanchu/mom/mapper/ShiftTimeMapper.java
new file mode 100644
index 0000000..52bb695
--- /dev/null
+++ b/performance-server/src/main/java/com/yuanchu/mom/mapper/ShiftTimeMapper.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.mapper;
+
+import com.yuanchu.mom.pojo.ShiftTime;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 鐝瀵瑰簲鐨勬椂闂� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-07-24 11:22:17
+ */
+public interface ShiftTimeMapper extends BaseMapper<ShiftTime> {
+
+}
diff --git a/performance-server/src/main/java/com/yuanchu/mom/pojo/AuxiliaryCorrectionHours.java b/performance-server/src/main/java/com/yuanchu/mom/pojo/AuxiliaryCorrectionHours.java
index 9d59780..31b97c9 100644
--- a/performance-server/src/main/java/com/yuanchu/mom/pojo/AuxiliaryCorrectionHours.java
+++ b/performance-server/src/main/java/com/yuanchu/mom/pojo/AuxiliaryCorrectionHours.java
@@ -41,157 +41,157 @@
     @ExcelProperty(value = "绫诲瀷")
     private String type;
 
-    @ApiModelProperty("1鏃�")
+    @ApiModelProperty("1")
     @ValueTableShow(4)
     @ExcelProperty(value = "1鏃�")
     private Double oneHours;
 
-    @ApiModelProperty("2鏃�")
+    @ApiModelProperty("2")
     @ValueTableShow(5)
     @ExcelProperty(value = "2鏃�")
     private Double twoHours;
 
-    @ApiModelProperty("3鏃�")
+    @ApiModelProperty("3")
     @ValueTableShow(6)
     @ExcelProperty(value = "3鏃�")
     private Double threeHours;
 
-    @ApiModelProperty("4鏃�")
+    @ApiModelProperty("4")
     @ValueTableShow(7)
     @ExcelProperty(value = "4鏃�")
     private Double fourHours;
 
-    @ApiModelProperty("5鏃�")
+    @ApiModelProperty("5")
     @ValueTableShow(8)
     @ExcelProperty(value = "5鏃�")
     private Double fiveHours;
 
-    @ApiModelProperty("6鏃�")
+    @ApiModelProperty("6")
     @ValueTableShow(9)
     @ExcelProperty(value = "6鏃�")
     private Double sixHours;
 
-    @ApiModelProperty("7鏃�")
+    @ApiModelProperty("7")
     @ValueTableShow(10)
     @ExcelProperty(value = "7鏃�")
     private Double sevenHours;
 
-    @ApiModelProperty("8鏃�")
+    @ApiModelProperty("8")
     @ValueTableShow(11)
     @ExcelProperty(value = "8鏃�")
     private Double eightHours;
 
-    @ApiModelProperty("9鏃�")
+    @ApiModelProperty("9")
     @ValueTableShow(12)
     @ExcelProperty(value = "9鏃�")
     private Double nineHours;
 
-    @ApiModelProperty("10鏃�")
+    @ApiModelProperty("10")
     @ValueTableShow(13)
     @ExcelProperty(value = "10鏃�")
     private Double tenHours;
 
-    @ApiModelProperty("11鏃�")
+    @ApiModelProperty("11")
     @ValueTableShow(14)
     @ExcelProperty(value = "11鏃�")
     private Double elevenHours;
 
-    @ApiModelProperty("12鏃�")
+    @ApiModelProperty("12")
     @ValueTableShow(15)
     @ExcelProperty(value = "12鏃�")
     private Double twelveHours;
 
-    @ApiModelProperty("13鏃�")
+    @ApiModelProperty("13")
     @ValueTableShow(16)
     @ExcelProperty(value = "13鏃�")
     private Double thirteenHours;
 
-    @ApiModelProperty("14鏃�")
+    @ApiModelProperty("14")
     @ValueTableShow(17)
     @ExcelProperty(value = "14鏃�")
     private Double fourteenHours;
 
-    @ApiModelProperty("15鏃�")
+    @ApiModelProperty("15")
     @ValueTableShow(18)
     @ExcelProperty(value = "15鏃�")
     private Double fifteenHours;
 
-    @ApiModelProperty("16鏃�")
+    @ApiModelProperty("16")
     @ValueTableShow(19)
     @ExcelProperty(value = "16鏃�")
     private Double sixteenHours;
 
-    @ApiModelProperty("17鏃�")
+    @ApiModelProperty("17")
     @ValueTableShow(20)
     @ExcelProperty(value = "17鏃�")
     private Double seventeenHours;
 
-    @ApiModelProperty("18鏃�")
+    @ApiModelProperty("18")
     @ValueTableShow(21)
     @ExcelProperty(value = "18鏃�")
     private Double eighteenHours;
 
-    @ApiModelProperty("19鏃�")
+    @ApiModelProperty("19")
     @ValueTableShow(22)
     @ExcelProperty(value = "19鏃�")
     private Double nineteenHours;
 
-    @ApiModelProperty("20鏃�")
+    @ApiModelProperty("20")
     @ValueTableShow(23)
     @ExcelProperty(value = "20鏃�")
     private Double twentyHours;
 
-    @ApiModelProperty("21鏃�")
+    @ApiModelProperty("21")
     @ValueTableShow(24)
     @ExcelProperty(value = "21鏃�")
     private Double twentyOneHours;
 
-    @ApiModelProperty("22鏃�")
+    @ApiModelProperty("22")
     @ValueTableShow(25)
     @ExcelProperty(value = "22鏃�")
     private Double twentyTwoHours;
 
-    @ApiModelProperty("23鏃�")
+    @ApiModelProperty("23")
     @ValueTableShow(26)
     @ExcelProperty(value = "23鏃�")
     private Double twentyThreeHours;
 
-    @ApiModelProperty("24鏃�")
+    @ApiModelProperty("24")
     @ValueTableShow(27)
     @ExcelProperty(value = "24鏃�")
     private Double twentyFourHours;
 
-    @ApiModelProperty("25鏃�")
+    @ApiModelProperty("25")
     @ValueTableShow(28)
     @ExcelProperty(value = "25鏃�")
     private Double twentyFiveHours;
 
-    @ApiModelProperty("26鏃�")
+    @ApiModelProperty("26")
     @ValueTableShow(29)
     @ExcelProperty(value = "26鏃�")
     private Double twentySixHours;
 
-    @ApiModelProperty("27鏃�")
+    @ApiModelProperty("27")
     @ValueTableShow(30)
     @ExcelProperty(value = "27鏃�")
     private Double twentySevenHours;
 
-    @ApiModelProperty("28鏃�")
+    @ApiModelProperty("28")
     @ValueTableShow(31)
     @ExcelProperty(value = "28鏃�")
     private Double twentyEightHours;
 
-    @ApiModelProperty("29鏃�")
+    @ApiModelProperty("29")
     @ValueTableShow(32)
     @ExcelProperty(value = "29鏃�")
     private Double twentyNineHours;
 
-    @ApiModelProperty("30鏃�")
+    @ApiModelProperty("30")
     @ValueTableShow(33)
     @ExcelProperty(value = "30鏃�")
     private Double thirtyHours;
 
-    @ApiModelProperty("31鏃�")
+    @ApiModelProperty("31")
     @ValueTableShow(34)
     @ExcelProperty(value = "31鏃�")
     private Double thirtyOneHours;
diff --git a/performance-server/src/main/java/com/yuanchu/mom/pojo/PerformanceShift.java b/performance-server/src/main/java/com/yuanchu/mom/pojo/PerformanceShift.java
index 8fd8910..ac57b7d 100644
--- a/performance-server/src/main/java/com/yuanchu/mom/pojo/PerformanceShift.java
+++ b/performance-server/src/main/java/com/yuanchu/mom/pojo/PerformanceShift.java
@@ -1,6 +1,7 @@
 package com.yuanchu.mom.pojo;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.yuanchu.mom.common.OrderBy;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -19,7 +20,7 @@
 @Data
 @TableName("performance_shift")
 @ApiModel(value = "PerformanceShift瀵硅薄", description = "缁╂晥绠$悊-鐝")
-public class PerformanceShift implements Serializable {
+public class PerformanceShift extends OrderBy implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
diff --git a/performance-server/src/main/java/com/yuanchu/mom/pojo/ShiftTime.java b/performance-server/src/main/java/com/yuanchu/mom/pojo/ShiftTime.java
new file mode 100644
index 0000000..0f69006
--- /dev/null
+++ b/performance-server/src/main/java/com/yuanchu/mom/pojo/ShiftTime.java
@@ -0,0 +1,59 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+import com.yuanchu.mom.common.OrderBy;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 鐝瀵瑰簲鐨勬椂闂�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-07-24 11:22:17
+ */
+@Getter
+@Setter
+@TableName("shift_time")
+@ApiModel(value = "ShiftTime瀵硅薄", description = "鐝瀵瑰簲鐨勬椂闂�")
+public class ShiftTime extends OrderBy implements Serializable {
+
+    @ApiModelProperty("涓婚敭ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("鐝")
+    private String shift;
+
+    @ApiModelProperty("寮�濮嬫椂闂�")
+    private String startTime;
+
+    @ApiModelProperty("缁撴潫鏃堕棿")
+    private String endTime;
+
+    @ApiModelProperty("鍒涘缓浜篒d")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("鍒涘缓鏃ユ湡")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("鏇存柊浜篒d")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+}
diff --git a/performance-server/src/main/java/com/yuanchu/mom/service/ShiftTimeService.java b/performance-server/src/main/java/com/yuanchu/mom/service/ShiftTimeService.java
new file mode 100644
index 0000000..0705798
--- /dev/null
+++ b/performance-server/src/main/java/com/yuanchu/mom/service/ShiftTimeService.java
@@ -0,0 +1,22 @@
+package com.yuanchu.mom.service;
+
+import com.yuanchu.mom.pojo.ShiftTime;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鐝瀵瑰簲鐨勬椂闂� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-07-24 11:22:17
+ */
+public interface ShiftTimeService extends IService<ShiftTime> {
+
+    void shiftTimeAdd(ShiftTime shiftTime);
+
+    List<ShiftTime> shiftTimeList();
+
+}
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 51ec8c7..6079e42 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
@@ -110,8 +110,9 @@
         List<AuxiliaryOriginalHoursDto> auxiliaryOriginalHoursDtos = new ArrayList<>();
         Map<String, AuxiliaryOriginalHoursDto> data1 = new HashMap<>();
         Map<String, AuxiliaryOriginalHoursDto> data2 = new HashMap<>();
+        Map<String, AuxiliaryOriginalHoursDto> data3 = new HashMap<>();
         //浜ч噺宸ユ椂
-        List<Map<String, Object>> maps = auxiliaryOutputWorkingHoursMapper.totalHours(auxiliaryOriginalHoursLookDto.getMonth(), ids);
+        List<Map<String, Object>> maps = auxiliaryOutputWorkingHoursMapper.totalHours(auxiliaryOriginalHoursLookDto.getMonth(), ids,"浜ч噺宸ユ椂");
         if (ObjectUtils.isNotEmpty(maps)) {
             data1 = getData(maps, "浜ч噺宸ユ椂");
             auxiliaryOriginalHoursDtos.addAll(data1.values());
@@ -123,70 +124,23 @@
             auxiliaryOriginalHoursDtos.addAll(data2.values());
         }
         //鍔犵彮宸ユ椂
+        List<Map<String, Object>> maps2 = auxiliaryOutputWorkingHoursMapper.totalHours(auxiliaryOriginalHoursLookDto.getMonth(), ids,"鍔犵彮宸ユ椂");
+        if (ObjectUtils.isNotEmpty(maps2)) {
+            data3 = getData(maps2, "鍔犵彮宸ユ椂");
+            auxiliaryOriginalHoursDtos.addAll(data3.values());
+        }
         //鎬诲伐鏃�=浜ч噺宸ユ椂+杈呭姪宸ユ椂+鍔犵彮宸ユ椂
         Map<String, AuxiliaryOriginalHoursDto> data4 = new HashMap<String, AuxiliaryOriginalHoursDto>();
-        Map<String, AuxiliaryOriginalHoursDto> data3 = data1;
         if (data1.size()>0) {
+            Map<String, AuxiliaryOriginalHoursDto> data5 = data1;
             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);
-                    }
-                }
+                merge(data5,data4,data2);
             }
-            else {
-                for (Map.Entry<String, AuxiliaryOriginalHoursDto> entry : data3.entrySet()) {
+            if (data3.size()>0){
+                merge(data5,data4,data3);
+            }
+            if(data2.size()==0 && data3.size()==0) {
+                for (Map.Entry<String, AuxiliaryOriginalHoursDto> entry : data5.entrySet()) {
                     AuxiliaryOriginalHoursDto dto = entry.getValue();
                     AuxiliaryOriginalHoursDto originalHoursDto = new AuxiliaryOriginalHoursDto();
                     BeanUtils.copyProperties(dto, originalHoursDto);
@@ -196,17 +150,6 @@
             }
             auxiliaryOriginalHoursDtos.addAll(data4.values());
         }
-        /*List<Map<String, Object>> maps2 = auxiliaryOriginalHoursMapper.totalHours(auxiliaryOriginalHoursLookDto.getMonth(), ids);
-        if (ObjectUtils.isNotEmpty(maps2)) {
-            //浜ч噺宸ユ椂+杈呭姪宸ユ椂閮戒笉涓虹┖
-            auxiliaryOriginalHoursDtos.addAll(getData(maps2, "鎬诲伐鏃�").values());
-        }
-        //濡傛灉杈呭姪宸ユ椂涓嶄负绌�
-        else if (ObjectUtils.isNotEmpty(maps1)) {
-            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());
         // 妫�鏌ユ瘡涓汉鐨勫伐鏃剁被鍨嬶紝琛ュ叏缂哄皯鐨勫伐鏃�
@@ -586,4 +529,67 @@
         }
         return dtoMap;
     }
+
+    //鍚堝苟
+    private void merge(Map<String, AuxiliaryOriginalHoursDto> data5,Map<String, AuxiliaryOriginalHoursDto> data4,Map<String, AuxiliaryOriginalHoursDto> data2) {
+        for (Map.Entry<String, AuxiliaryOriginalHoursDto> entry : data2.entrySet()) {
+            String key = entry.getKey();
+            AuxiliaryOriginalHoursDto value = entry.getValue();
+            if (data5.containsKey(key)) {
+                for (Map.Entry<String, AuxiliaryOriginalHoursDto> dtoEntry : data5.entrySet()) {
+                    if (dtoEntry.getKey().equals(key)) {
+                        AuxiliaryOriginalHoursDto auxiliaryOriginalHoursDto = new AuxiliaryOriginalHoursDto();
+                        AuxiliaryOriginalHoursDto hoursDto = data5.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));
+                        double v = ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyFourHours()) ? auxiliaryOriginalHoursDto.getTwentyFourHours() : 0;
+                        double v1 = ObjectUtils.isNotEmpty(value.getTwentyFourHours()) ? value.getTwentyFourHours() : 0;
+                        double v2 = v + v1;
+                        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 = data5.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);
+            }
+        }
+    }
 }
diff --git a/performance-server/src/main/java/com/yuanchu/mom/service/impl/ShiftTimeServiceImpl.java b/performance-server/src/main/java/com/yuanchu/mom/service/impl/ShiftTimeServiceImpl.java
new file mode 100644
index 0000000..50d2aaf
--- /dev/null
+++ b/performance-server/src/main/java/com/yuanchu/mom/service/impl/ShiftTimeServiceImpl.java
@@ -0,0 +1,35 @@
+package com.yuanchu.mom.service.impl;
+
+import com.yuanchu.mom.pojo.ShiftTime;
+import com.yuanchu.mom.mapper.ShiftTimeMapper;
+import com.yuanchu.mom.service.ShiftTimeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ * 鐝瀵瑰簲鐨勬椂闂� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-07-24 11:22:17
+ */
+@Service
+public class ShiftTimeServiceImpl extends ServiceImpl<ShiftTimeMapper, ShiftTime> implements ShiftTimeService {
+
+    @Resource
+    ShiftTimeMapper shiftTimeMapper;
+
+    @Override
+    public void shiftTimeAdd(ShiftTime shiftTime) {
+        shiftTimeMapper.insert(shiftTime);
+    }
+
+    @Override
+    public List<ShiftTime> shiftTimeList() {
+        return shiftTimeMapper.selectList(null);
+    }
+}
diff --git a/performance-server/src/main/resources/mapper/AuxiliaryOutputWorkingHoursMapper.xml b/performance-server/src/main/resources/mapper/AuxiliaryOutputWorkingHoursMapper.xml
index 31958ad..f319878 100644
--- a/performance-server/src/main/resources/mapper/AuxiliaryOutputWorkingHoursMapper.xml
+++ b/performance-server/src/main/resources/mapper/AuxiliaryOutputWorkingHoursMapper.xml
@@ -76,7 +76,8 @@
         order_no,
         sample,
         man_hour_group,
-        output_work_time as manHours
+        case when #{type}='鍔犵彮宸ユ椂' then  case when overtime_work_time is null then 0 else overtime_work_time end
+        else case when work_time is null then 0 else work_time end  end as manHours
         -- FORMAT(SUM(output_work_time), 4) as manHours
         from auxiliary_output_working_hours aowh
         left join user on user.id=aowh.`check`
diff --git a/performance-server/src/main/resources/mapper/ShiftTimeMapper.xml b/performance-server/src/main/resources/mapper/ShiftTimeMapper.xml
new file mode 100644
index 0000000..9b3814b
--- /dev/null
+++ b/performance-server/src/main/resources/mapper/ShiftTimeMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yuanchu.mom.mapper.ShiftTimeMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ShiftTime">
+        <id column="id" property="id" />
+        <result column="shift" property="shift" />
+        <result column="start_time" property="startTime" />
+        <result column="end_time" property="endTime" />
+        <result column="create_user" property="createUser" />
+        <result column="create_time" property="createTime" />
+        <result column="update_user" property="updateUser" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+</mapper>
diff --git a/system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java b/system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java
index cd06c0a..5d18f38 100644
--- a/system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java
+++ b/system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java
@@ -16,11 +16,11 @@
 // 婕旂ず渚嬪瓙锛屾墽琛� main 鏂规硶鎺у埗鍙拌緭鍏ユā鍧楄〃鍚嶅洖杞﹁嚜鍔ㄧ敓鎴愬搴旈」鐩洰褰曚腑
 public class CodeGenerator {
 
-    public static String database_url = "jdbc:mysql://10.1.200.86:3306/center-lims?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8";
+    public static String database_url = "jdbc:mysql://localhost:3306/aaa?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8";
     public static String database_username = "root";
-    public static String database_password= "zttZTT123!";
+    public static String database_password= "123456";
     public static String author = "姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃";
-    public static String model_name = "/cnas-server"; // 濡傛灉涓哄垎甯冨紡濉瓙妯″潡鍚嶇О锛屽鏋滀笉鏄垎甯冨紡涓虹┖鍗冲彲
+    public static String model_name = "/performance-server"; // 濡傛灉涓哄垎甯冨紡濉瓙妯″潡鍚嶇О锛屽鏋滀笉鏄垎甯冨紡涓虹┖鍗冲彲
     public static String setParent = "com.yuanchu.mom"; // 鍖呰矾寰�
     public static String tablePrefix = "device_"; // 璁剧疆杩囨护琛ㄥ墠缂�
     public static void main(String[] args) {
diff --git a/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java b/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
index 4e345ea..9784910 100644
--- a/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
+++ b/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
@@ -6,6 +6,7 @@
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
 import java.time.temporal.TemporalAdjusters;
 import java.time.temporal.WeekFields;
 import java.util.Locale;
@@ -16,29 +17,16 @@
 
     @Test
     void  contextLoads() {
-                // 鑾峰彇褰撳墠鏃ユ湡
-                LocalDate today = LocalDate.now();
 
-                // 鑾峰彇鏈湀鐨勭涓�澶╁拰鏈�鍚庝竴澶�
-                LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
-                LocalDate lastDayOfMonth = today.with(TemporalAdjusters.lastDayOfMonth());
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
+        String a = "09:00:00";
+        String b = "17:00:00";
+        LocalTime now = LocalTime.now();
+        LocalTime startTime = LocalTime.parse(a, formatter);
+        LocalTime endTime = LocalTime.parse(b, formatter);
 
-                // 鑾峰彇鍛ㄥ瓧娈典俊鎭紙鏍规嵁鍖哄煙璁剧疆锛�
-                WeekFields weekFields = WeekFields.of(Locale.getDefault());
-
-                // 鑾峰彇鏈湀绗竴澶╃殑鍛ㄤ竴
-                LocalDate startOfWeek = firstDayOfMonth.with(TemporalAdjusters.previousOrSame(weekFields.getFirstDayOfWeek()));
-
-                // 閬嶅巻鏈湀鎵�鏈夊ぉ鏁帮紝鎵惧嚭姣忓懆鐨勭涓�澶╁拰鏈�鍚庝竴澶�
-                LocalDate endOfWeek;
-                while (startOfWeek.isBefore(firstDayOfMonth.plusMonths(1))) {
-                    endOfWeek = startOfWeek.plusDays(6);
-                    LocalDateTime startDateTime = LocalDateTime.of(startOfWeek, LocalTime.MIDNIGHT);
-                    LocalDateTime endDateTime = LocalDateTime.of(endOfWeek, LocalTime.MIDNIGHT);
-
-                    System.out.println("Week starts on " + startDateTime + " and ends on " + endDateTime);
-
-                    startOfWeek = startOfWeek.plusWeeks(1);
-                }
+        // 妫�鏌ュ綋鍓嶆椂闂存槸鍚﹀湪鑼冨洿鍐咃紙鍖呮嫭杈圭晫锛�
+        boolean isWithinRange = !now.isBefore(startTime) && !now.isAfter(endTime);
+        System.out.println(isWithinRange);
     }
 }

--
Gitblit v1.9.3