From 03df670a1dfbcae8031e84e15dff0b77365f0af6 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 14 八月 2025 16:39:37 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into pim_zss

---
 src/main/java/com/ruoyi/approve/utils/StartAndEndDateDto.java              |    3 
 src/main/java/com/ruoyi/lavorissue/mapper/LavorIssueMapper.java            |    2 
 src/main/java/com/ruoyi/home/controller/HomeController.java                |    3 
 src/main/java/com/ruoyi/lavorissue/service/LavorIssueService.java          |    3 
 src/main/java/com/ruoyi/home/service/HomeService.java                      |    3 
 src/main/resources/mapper/lavorissue/LavorIssueMapper.xml                  |   36 ++++++
 src/main/java/com/ruoyi/lavorissue/pojo/LaborIssue.java                    |   49 +++++++++
 src/main/java/com/ruoyi/lavorissue/service/impl/LavorIssueServiceImpl.java |   96 ++++++++++++++++++
 src/main/java/com/ruoyi/lavorissue/controller/LavorIssueController.java    |   31 ++++++
 src/main/java/com/ruoyi/lavorissue/dto/StatisticsLaborIssue.java           |   30 ++++++
 src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java             |   32 ++++++
 11 files changed, 276 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/ruoyi/approve/utils/StartAndEndDateDto.java b/src/main/java/com/ruoyi/approve/utils/StartAndEndDateDto.java
index 0c9eb11..fdf4c38 100644
--- a/src/main/java/com/ruoyi/approve/utils/StartAndEndDateDto.java
+++ b/src/main/java/com/ruoyi/approve/utils/StartAndEndDateDto.java
@@ -1,5 +1,6 @@
 package com.ruoyi.approve.utils;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -13,9 +14,11 @@
 public class StartAndEndDateDto {
 
     @ApiModelProperty("寮�濮嬫椂闂�")
+    @TableField(exist = false)
     private String startDate;
 
     @ApiModelProperty("缁撴潫鏃堕棿")
+    @TableField(exist = false)
     private String endDate;
 
 }
diff --git a/src/main/java/com/ruoyi/home/controller/HomeController.java b/src/main/java/com/ruoyi/home/controller/HomeController.java
index 137b4b8..d0af0b5 100644
--- a/src/main/java/com/ruoyi/home/controller/HomeController.java
+++ b/src/main/java/com/ruoyi/home/controller/HomeController.java
@@ -21,6 +21,7 @@
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.text.ParseException;
 import java.util.List;
 
 /**
@@ -63,7 +64,7 @@
     @GetMapping("/todos")
     @Log(title = "寰呭姙浜嬮」", businessType = BusinessType.OTHER)
     @ApiOperation("寰呭姙浜嬮」")
-    public AjaxResult todos(ApproveProcess req) {
+    public AjaxResult todos(ApproveProcess req) throws ParseException {
         List<ApproveProcess> approveProcessList = homeService.todos();
         return AjaxResult.success(approveProcessList);
     }
diff --git a/src/main/java/com/ruoyi/home/service/HomeService.java b/src/main/java/com/ruoyi/home/service/HomeService.java
index 49e7530..1902488 100644
--- a/src/main/java/com/ruoyi/home/service/HomeService.java
+++ b/src/main/java/com/ruoyi/home/service/HomeService.java
@@ -6,6 +6,7 @@
 import com.ruoyi.home.dto.QualityStatisticsDto;
 import com.ruoyi.home.dto.StatisticsReceivablePayableDto;
 
+import java.text.ParseException;
 import java.util.List;
 
 /**
@@ -22,7 +23,7 @@
 
     QualityStatisticsDto qualityStatistics();
 
-    List<ApproveProcess> todos();
+    List<ApproveProcess> todos() throws ParseException;
 
     StatisticsReceivablePayableDto statisticsReceivablePayable(Integer type);
 }
diff --git a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
index 606388c..7dea6df 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -8,6 +8,8 @@
 import com.ruoyi.framework.security.LoginUser;
 import com.ruoyi.home.dto.*;
 import com.ruoyi.home.service.HomeService;
+import com.ruoyi.lavorissue.mapper.LavorIssueMapper;
+import com.ruoyi.lavorissue.pojo.LaborIssue;
 import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper;
 import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
 import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
@@ -33,6 +35,8 @@
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.time.*;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
@@ -73,6 +77,9 @@
 
     @Autowired
     private PaymentRegistrationMapper paymentRegistrationMapper;
+
+    @Autowired
+    private LavorIssueMapper lavorIssueMapper;
 
     @Autowired
     private SysDeptMapper sysDeptMapper;
@@ -302,14 +309,35 @@
     }
 
     @Override
-    public List<ApproveProcess> todos() {
+    public List<ApproveProcess> todos() throws ParseException {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>();
         approveProcessLambdaQueryWrapper.eq(ApproveProcess::getApproveDelete, 0)
                 .eq(ApproveProcess::getApproveUserCurrentId, loginUser.getUserId())
                 .ne(ApproveProcess::getApproveStatus, 2)
                 .eq(ApproveProcess::getTenantId, loginUser.getTenantId());
-        return approveProcessMapper.selectList(approveProcessLambdaQueryWrapper);
+        List<ApproveProcess> approveProcesses = approveProcessMapper.selectList(approveProcessLambdaQueryWrapper);
+        if(CollectionUtils.isEmpty(approveProcesses)){
+            approveProcesses = new ArrayList<>();
+        }
+        // 鏌ヨ鏈鐢ㄥ姵淇濊褰�
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+        LaborIssue laborIssue1 = new LaborIssue();
+        laborIssue1.setAdoptedDate(new Date());
+        laborIssue1.setIssueDate(sdf.parse(sdf.format(new Date())));
+        List<LaborIssue> laborIssues = lavorIssueMapper.list(laborIssue1);
+        if(!CollectionUtils.isEmpty(laborIssues)){
+            for (LaborIssue laborIssue : laborIssues) {
+                ApproveProcess approveProcess = new ApproveProcess();
+                approveProcess.setApproveId(laborIssue.getOrderNo());
+                approveProcess.setApproveDeptName(sysDeptMapper.selectDeptById(loginUser.getTenantId()).getDeptName());
+                approveProcess.setApproveTime(laborIssue.getIssueDate());
+                approveProcess.setApproveReason(laborIssue.getDictTypeName() + "-" + laborIssue.getDictName() + "瓒呮椂鏈鍙�");
+                approveProcesses.add(approveProcess);
+            }
+        }
+        return approveProcesses;
     }
 
     /**
diff --git a/src/main/java/com/ruoyi/lavorissue/controller/LavorIssueController.java b/src/main/java/com/ruoyi/lavorissue/controller/LavorIssueController.java
index 596e879..ccff5e6 100644
--- a/src/main/java/com/ruoyi/lavorissue/controller/LavorIssueController.java
+++ b/src/main/java/com/ruoyi/lavorissue/controller/LavorIssueController.java
@@ -1,13 +1,18 @@
 package com.ruoyi.lavorissue.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.pojo.ApproveProcess;
+import com.ruoyi.approve.utils.DailyRedisCounter;
+import com.ruoyi.approve.utils.StartAndEndDateDto;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.lavorissue.dto.StatisticsLaborIssue;
 import com.ruoyi.lavorissue.mapper.LavorIssueMapper;
 import com.ruoyi.lavorissue.pojo.LaborIssue;
 import com.ruoyi.lavorissue.service.LavorIssueService;
@@ -17,9 +22,12 @@
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
@@ -53,6 +61,19 @@
     @ApiOperation("鍔充繚鍙戞斁-娣诲姞")
     @Transactional(rollbackFor = Exception.class)
     public AjaxResult add(@RequestBody LaborIssue laborIssue){
+        String today = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
+        StartAndEndDateDto dateTime = DailyRedisCounter.getDateTime();
+        Long approveId = lavorIssueMapper.selectCount(new LambdaQueryWrapper<LaborIssue>()
+                .gt(LaborIssue::getCreateTime, dateTime.getStartDate())
+                .lt(LaborIssue::getCreateTime, dateTime.getEndDate()));
+        String formattedCount = String.format("%03d", approveId + 1);
+        laborIssue.setOrderNo(today + formattedCount);
+        List<LaborIssue> laborIssues = lavorIssueMapper.selectList(new LambdaQueryWrapper<LaborIssue>()
+                .like(LaborIssue::getOrderNo, today));
+        if(!CollectionUtils.isEmpty(laborIssues)){
+            long l = Long.parseLong(laborIssues.get(laborIssues.size() - 1).getOrderNo());
+            laborIssue.setOrderNo(String.format("%03d", l + 1));
+        }
         boolean save = laborIssueService.save(laborIssue);
         return save ? AjaxResult.success() : AjaxResult.error();
     }
@@ -75,6 +96,14 @@
         return delete ? AjaxResult.success() : AjaxResult.error();
     }
 
+    @GetMapping("/statistics")
+    @ApiOperation("鍔充繚鍙戞斁-缁熻")
+    public AjaxResult statistics(StatisticsLaborIssue req) throws Exception {
+        StatisticsLaborIssue statisticsLaborIssue = laborIssueService.statistics(req);
+        return AjaxResult.success(statisticsLaborIssue);
+    }
+
+
 
     /**
      * 鍔充繚鍙戞斁-瀵煎嚭
@@ -85,7 +114,7 @@
     public void export(HttpServletResponse response) {
         Long tenantId = SecurityUtils.getLoginUser().getTenantId();
         ExcelUtil<LaborIssue> util = new ExcelUtil<LaborIssue>(LaborIssue.class);
-        List<LaborIssue> list = lavorIssueMapper.list();
+        List<LaborIssue> list = lavorIssueMapper.list(new LaborIssue());
         SysDept sysDept = sysDeptMapper.selectDeptById(tenantId);
         if(sysDept == null){
             throw new RuntimeException("閮ㄩ棬涓嶅瓨鍦�!");
diff --git a/src/main/java/com/ruoyi/lavorissue/dto/StatisticsLaborIssue.java b/src/main/java/com/ruoyi/lavorissue/dto/StatisticsLaborIssue.java
new file mode 100644
index 0000000..7e7a4a2
--- /dev/null
+++ b/src/main/java/com/ruoyi/lavorissue/dto/StatisticsLaborIssue.java
@@ -0,0 +1,30 @@
+package com.ruoyi.lavorissue.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author :yys
+ * @date : 2025/8/14 11:53
+ */
+@Data
+@ApiModel
+public class StatisticsLaborIssue {
+
+    private Integer season;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date issueDate;
+
+    private Long ylqNum = 0L;
+
+    private Long wlqNum = 0L;
+
+    private Long csylqNum = 0L;
+
+    private Long cswlqNum = 0L;
+
+}
diff --git a/src/main/java/com/ruoyi/lavorissue/mapper/LavorIssueMapper.java b/src/main/java/com/ruoyi/lavorissue/mapper/LavorIssueMapper.java
index 3623fba..8fa8999 100644
--- a/src/main/java/com/ruoyi/lavorissue/mapper/LavorIssueMapper.java
+++ b/src/main/java/com/ruoyi/lavorissue/mapper/LavorIssueMapper.java
@@ -23,5 +23,5 @@
      */
     IPage<LaborIssue> listPage(Page page, @Param("req") LaborIssue laborIssue);
 
-    List<LaborIssue> list();
+    List<LaborIssue> list(@Param("req") LaborIssue laborIssue);
 }
diff --git a/src/main/java/com/ruoyi/lavorissue/pojo/LaborIssue.java b/src/main/java/com/ruoyi/lavorissue/pojo/LaborIssue.java
index 2772d6e..3994833 100644
--- a/src/main/java/com/ruoyi/lavorissue/pojo/LaborIssue.java
+++ b/src/main/java/com/ruoyi/lavorissue/pojo/LaborIssue.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.approve.utils.StartAndEndDateDto;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -18,12 +19,19 @@
 @Data
 @TableName("labor_issue")
 @ApiModel
-public class LaborIssue {
+public class LaborIssue extends StartAndEndDateDto {
 
     private static final long serialVersionUID = 1L;
 
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
+
+    @TableField(exist = false)
+    @ApiModelProperty("1-宸查鍙栧姵淇濇暟閲� 2-鏈鍙栧姵淇濇暟閲� 3-瓒呮椂宸查鍙栧姵淇濇暟閲� 4-瓒呮椂鏈鍙栧姵淇濇暟閲�")
+    private Integer status;
+
+    @TableField(exist = false)
+    private Integer season;
 
     /**
      * 閮ㄩ棬鍚嶇О
@@ -32,6 +40,13 @@
     @Excel(name = "閮ㄩ棬鍚嶇О")
     @TableField(exist = false)
     private String deptName;
+
+    /**
+     * 鍔充繚鍗曞彿
+     */
+    @ApiModelProperty("鍔充繚鍗曞彿")
+    @Excel(name = "鍔充繚鍗曞彿")
+    private String orderNo;
 
     /**
      * 鍛樺伐id
@@ -56,6 +71,20 @@
     private String staffNo;
 
     /**
+     * 鍔充繚绫诲瀷-瀛楀吀
+     */
+    @ApiModelProperty("鍔充繚绫诲瀷-瀛楀吀")
+    private String dictType;
+
+    /**
+     * 鍔充繚绫诲瀷
+     */
+    @ApiModelProperty("鍔充繚绫诲瀷")
+    @Excel(name = "鍔充繚绫诲瀷")
+    @TableField(exist = false)
+    private String dictTypeName;
+
+    /**
      * 闃插叿鍚嶇О-瀛楀吀
      */
     @ApiModelProperty("闃插叿鍚嶇О-瀛楀吀")
@@ -77,6 +106,24 @@
     private Long num;
 
     /**
+     * 杩涘巶鏃ユ湡
+     */
+    @ApiModelProperty("杩涘巶鏃ユ湡")
+    @Excel(name = "杩涘巶鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date factoryDate;
+
+    /**
+     * 鍙戞斁鏃ユ湡
+     */
+    @ApiModelProperty("鍙戞斁鏃ユ湡")
+    @Excel(name = "鍙戞斁鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date issueDate;
+
+    /**
      * 棰嗙敤鏃ユ湡
      */
     @ApiModelProperty("棰嗙敤鏃ユ湡")
diff --git a/src/main/java/com/ruoyi/lavorissue/service/LavorIssueService.java b/src/main/java/com/ruoyi/lavorissue/service/LavorIssueService.java
index 4779739..5a6f765 100644
--- a/src/main/java/com/ruoyi/lavorissue/service/LavorIssueService.java
+++ b/src/main/java/com/ruoyi/lavorissue/service/LavorIssueService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.lavorissue.dto.StatisticsLaborIssue;
 import com.ruoyi.lavorissue.pojo.LaborIssue;
 
 /**
@@ -19,4 +20,6 @@
      * @return
      */
     IPage<LaborIssue> listPage(Page page, LaborIssue laborIssue);
+
+    StatisticsLaborIssue statistics(StatisticsLaborIssue req) throws  Exception;
 }
diff --git a/src/main/java/com/ruoyi/lavorissue/service/impl/LavorIssueServiceImpl.java b/src/main/java/com/ruoyi/lavorissue/service/impl/LavorIssueServiceImpl.java
index ff492b2..b6a5e27 100644
--- a/src/main/java/com/ruoyi/lavorissue/service/impl/LavorIssueServiceImpl.java
+++ b/src/main/java/com/ruoyi/lavorissue/service/impl/LavorIssueServiceImpl.java
@@ -1,14 +1,24 @@
 package com.ruoyi.lavorissue.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.approve.utils.StartAndEndDateDto;
+import com.ruoyi.lavorissue.dto.StatisticsLaborIssue;
 import com.ruoyi.lavorissue.mapper.LavorIssueMapper;
 import com.ruoyi.lavorissue.pojo.LaborIssue;
 import com.ruoyi.lavorissue.service.LavorIssueService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author :yys
@@ -23,7 +33,89 @@
 
     @Override
     public IPage<LaborIssue> listPage(Page page, LaborIssue laborIssue) {
-        IPage<LaborIssue> listPage = lavorIssueMapper.listPage(page, laborIssue);
-        return listPage;
+        StartAndEndDateDto startAndEndDateDto = getStartAndEndDateDto(laborIssue.getSeason(), laborIssue.getIssueDate());
+        laborIssue.setStartDate(startAndEndDateDto.getStartDate());
+        laborIssue.setEndDate(startAndEndDateDto.getEndDate());
+        IPage<LaborIssue> laborIssueIPage = lavorIssueMapper.listPage(page, laborIssue);
+        return laborIssueIPage;
+    }
+
+    public StartAndEndDateDto getStartAndEndDateDto(Integer season,Date payDate){
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        StartAndEndDateDto startAndEndDateDto = new StartAndEndDateDto();
+        if(season != null){
+            Calendar calendar = Calendar.getInstance();
+            int currentYear = calendar.get(Calendar.YEAR);
+            switch (season){
+                case 1:
+                    startAndEndDateDto.setStartDate(currentYear + "-01-01");
+                    startAndEndDateDto.setEndDate(currentYear + "-03-31");
+                    break;
+                case 2:
+                    startAndEndDateDto.setStartDate(currentYear + "-04-01");
+                    startAndEndDateDto.setEndDate(currentYear + "-06-30");
+                    break;
+                case 3:
+                    startAndEndDateDto.setStartDate(currentYear + "-07-01");
+                    startAndEndDateDto.setEndDate(currentYear + "-09-30");
+                    break;
+                case 4:
+                    startAndEndDateDto.setStartDate(currentYear + "-10-01");
+                    startAndEndDateDto.setEndDate(currentYear + "-12-31");
+                    break;
+            }
+        }
+        if(payDate != null){
+            Date lastDayOfMonth = getLastDayOfMonth(payDate);
+            startAndEndDateDto.setStartDate(sdf.format(payDate));
+            startAndEndDateDto.setEndDate(sdf.format(lastDayOfMonth));
+        }
+        return startAndEndDateDto;
+    }
+
+    @Override
+    public StatisticsLaborIssue statistics(StatisticsLaborIssue req) throws Exception{
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        StatisticsLaborIssue statisticsLaborIssue = new StatisticsLaborIssue();
+        StartAndEndDateDto startAndEndDateDto = getStartAndEndDateDto(req.getSeason(), req.getIssueDate());
+        LambdaQueryWrapper<LaborIssue> laborIssueLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        if(req.getSeason() != null || req.getIssueDate() != null){
+            laborIssueLambdaQueryWrapper.ge(LaborIssue::getIssueDate, startAndEndDateDto.getStartDate())
+                    .le(LaborIssue::getIssueDate, startAndEndDateDto.getEndDate());
+        }
+        List<LaborIssue> laborIssues = lavorIssueMapper.selectList(laborIssueLambdaQueryWrapper);
+        if(!CollectionUtils.isEmpty(laborIssues)){
+            Long sum = laborIssues.stream()
+                    .filter(laborIssue -> laborIssue.getAdoptedDate() != null)
+                    .mapToLong(LaborIssue::getNum)
+                    .sum();
+            statisticsLaborIssue.setYlqNum(sum);
+            statisticsLaborIssue.setWlqNum(laborIssues.stream()
+                    .filter(laborIssue -> laborIssue.getAdoptedDate() == null)
+                    .mapToLong(LaborIssue::getNum)
+                    .sum());
+            Date currentDate = new Date();
+            Date parse = sdf.parse(sdf.format(currentDate));
+            statisticsLaborIssue.setCsylqNum(laborIssues.stream()
+                    .filter(laborIssue -> laborIssue.getIssueDate() != null
+                            && laborIssue.getAdoptedDate() != null
+                            && (laborIssue.getIssueDate().before(laborIssue.getAdoptedDate())))
+                    .mapToLong(LaborIssue::getNum)
+                    .sum());
+            statisticsLaborIssue.setCswlqNum(laborIssues.stream()
+                    .filter(laborIssue -> laborIssue.getIssueDate() != null
+                            && laborIssue.getIssueDate().before(parse)
+                            && laborIssue.getAdoptedDate() == null)
+                    .mapToLong(LaborIssue::getNum)
+                    .sum());
+        }
+        return statisticsLaborIssue;
+    }
+
+    public Date getLastDayOfMonth(Date date) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date); // 璁剧疆浼犲叆鐨凞ate
+        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // 璁剧疆涓哄綋鏈堟渶鍚庝竴澶�
+        return calendar.getTime(); // 杩斿洖Date瀵硅薄
     }
 }
diff --git a/src/main/resources/mapper/lavorissue/LavorIssueMapper.xml b/src/main/resources/mapper/lavorissue/LavorIssueMapper.xml
index 88cf9aa..fabf558 100644
--- a/src/main/resources/mapper/lavorissue/LavorIssueMapper.xml
+++ b/src/main/resources/mapper/lavorissue/LavorIssueMapper.xml
@@ -7,13 +7,33 @@
         t1.*,
                t2.staff_name as staffName,
                t2.staff_no as staffNo,
-               t3.dict_label as dictName
+               t3.dict_label as dictName,
+               t4.dict_label as dictTypeName
         from labor_issue t1
         left join staff_join_leave_record t2 on t1.staff_id = t2.id
         left join sys_dict_data t3 on t1.dict_id = t3.dict_value
+        left join sys_dict_data t4 on t1.dict_type = t4.dict_value
         <where>
+            <if test="req.season != null and req.season != ''">
+                and (t1.issue_date &gt;= #{req.startDate} and t1.issue_date &lt;= #{req.endDate})
+            </if>
+            <if test="req.issueDate != null">
+                and (t1.issue_date &gt;= #{req.startDate} and t1.issue_date &lt;= #{req.endDate})
+            </if>
             <if test="req.staffName != null and req.staffName != ''">
-                and t2.staff_name like ('%',#{req.staffName},'%')
+                and t2.staff_name like concat('%',#{req.staffName},'%')
+            </if>
+            <if test="req.status != null and req.status == 1">
+                and t1.adopted_date is not null
+            </if>
+            <if test="req.status != null and req.status == 2">
+                and t1.adopted_date is null
+            </if>
+            <if test="req.status != null and req.status == 3">
+                and t1.adopted_date is not null and t1.issue_date &lt; t1.adopted_date
+            </if>
+            <if test="req.status != null and req.status == 4">
+                and t1.adopted_date is null and t1.issue_date &lt; current_date()
             </if>
         </where>
     </select>
@@ -22,9 +42,19 @@
             t1.*,
             t2.staff_name as staffName,
             t2.staff_no as staffNo,
-            t3.dict_label as dictName
+            t3.dict_label as dictName,
+            t4.dict_label as dictTypeName
         from labor_issue t1
                  left join staff_join_leave_record t2 on t1.staff_id = t2.id
                  left join sys_dict_data t3 on t1.dict_id = t3.dict_value
+                 left join sys_dict_data t4 on t1.dict_type = t4.dict_value
+        <where>
+            <if test="req.adoptedDate != null">
+                and t1.adopted_date is null
+            </if>
+            <if test="req.issueDate != null">
+                and t1.issue_date &lt; #{req.issueDate}
+            </if>
+        </where>
     </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3