Kaynağa Gözat

补助报表

bing 1 yıl önce
ebeveyn
işleme
10011c6263

+ 33 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/CountTypeEnum.java

@@ -0,0 +1,33 @@
+package org.dromara.common.core.enums;
+
+/**
+ * 统计方式
+ */
+public enum CountTypeEnum {
+    year("0","按年"),
+    month("1","按月"),
+    date("2","按日");
+
+    private final String code;
+    private final String name;
+
+    CountTypeEnum(String code, String name) {
+        this.code = code;
+        this.name = name;
+    }
+
+    public String code() {
+        return this.code;
+    }
+
+    public String message() {
+        return this.name;
+    }
+
+
+    @Override
+    public String toString() {
+        return this.name();
+    }
+
+}

+ 18 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/controller/PtSubsidyitemController.java

@@ -6,6 +6,8 @@ import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyReportBo;
+import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyReportVo;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -103,4 +105,20 @@ public class PtSubsidyitemController extends BaseController {
                           @PathVariable Long[] itemIds) {
                           @PathVariable Long[] itemIds) {
         return toAjax(ptSubsidyitemService.deleteWithValidByIds(List.of(itemIds), true));
         return toAjax(ptSubsidyitemService.deleteWithValidByIds(List.of(itemIds), true));
     }
     }
+
+    // 补助报表
+    @SaCheckPermission("subsidy:ptSubsidyitem:ptSubsidyitemReport")
+    @GetMapping("/queryReport")
+    public TableDataInfo<PtSubsidyReportVo> queryReport(PtSubsidyReportBo bo, PageQuery pageQuery) {
+        return ptSubsidyitemService.queryPageReportList(bo, pageQuery);
+    }
+
+    //补助报表导出
+    @SaCheckPermission("subsidy:ptSubsidyitem:ptSubsidyitemReport")
+    @Log(title = "补助报表导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportReport")
+    public void exportReport(PtSubsidyReportBo bo, HttpServletResponse response) {
+        List<PtSubsidyReportVo> list = ptSubsidyitemService.queryReportList(bo);
+        ExcelUtil.exportExcel(list, "补助报表", PtSubsidyReportVo.class, response);
+    }
 }
 }

+ 45 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/domain/bo/PtSubsidyReportBo.java

@@ -0,0 +1,45 @@
+package org.dromara.backstage.cardCenter.domain.bo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 补助报表参数
+ *
+ */
+@Data
+public class PtSubsidyReportBo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1622303989650597970L;
+    /**
+     * 统计方式
+     */
+    private String countType;
+
+    /**
+     * 补助类型
+     */
+    private String subsidyType;
+
+    /**
+     * 创建者
+     */
+    private String createByName;
+
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date beginCountTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date endCountTime;
+
+
+}

+ 73 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/domain/vo/PtSubsidyReportVo.java

@@ -0,0 +1,73 @@
+package org.dromara.backstage.cardCenter.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.backstage.cardCenter.domain.PtSubsidyitem;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+ * 补助报表 VO对象
+ *
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PtSubsidyReportVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 到账日期
+     */
+    @ExcelProperty(value = "日期")
+   /* @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")*/
+    private String fillDate;
+
+    /**
+     * 补助类型
+     */
+    @ExcelProperty(value = "补助类型", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "SUBTYPE")
+    private String subsidyType;
+
+    /**
+     * 补助金额
+     */
+    @ExcelProperty(value = "补助总金额(元)")
+    private BigDecimal fillMoney;
+
+
+    @ExcelProperty(value = "笔数")
+    private Long countNumber;
+
+    @ExcelProperty(value = "已领金额(元)")
+    private BigDecimal receiveMoney;
+
+    @ExcelProperty(value = "已领笔数")
+    private Long receiveNumber;
+
+    @ExcelProperty(value = "未领金额")
+    private BigDecimal notReceiveMoney;
+
+    @ExcelProperty(value = "未领笔数")
+    private Long notReceiveNumber;
+
+    /**
+     * 用户编号/工号
+     */
+    @ExcelProperty(value = "创建者")
+    private String createByName;
+
+}

+ 10 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/mapper/PtSubsidyitemMapper.java

@@ -1,9 +1,16 @@
 package org.dromara.backstage.cardCenter.mapper;
 package org.dromara.backstage.cardCenter.mapper;
 
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.dromara.backstage.basics.domain.PtOperator;
 import org.dromara.backstage.cardCenter.domain.PtSubsidyitem;
 import org.dromara.backstage.cardCenter.domain.PtSubsidyitem;
+import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyReportBo;
+import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyReportVo;
 import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyitemVo;
 import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyitemVo;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 
 
+import java.util.List;
+
 /**
 /**
  * 补助明细Mapper接口
  * 补助明细Mapper接口
  *
  *
@@ -12,4 +19,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
  */
  */
 public interface PtSubsidyitemMapper extends BaseMapperPlus<PtSubsidyitem, PtSubsidyitemVo> {
 public interface PtSubsidyitemMapper extends BaseMapperPlus<PtSubsidyitem, PtSubsidyitemVo> {
 
 
+    List<PtSubsidyReportVo> queryReportList(@Param("bo")PtSubsidyReportBo bo);
+    Page<PtSubsidyReportVo> queryReportPageList(@Param("page") Page<PtSubsidyReportVo> page, @Param("bo")PtSubsidyReportBo bo);
+
 }
 }

+ 5 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/service/IPtSubsidyitemService.java

@@ -1,6 +1,8 @@
 package org.dromara.backstage.cardCenter.service;
 package org.dromara.backstage.cardCenter.service;
 
 
 import org.dromara.backstage.cardCenter.domain.PtSubsidyitem;
 import org.dromara.backstage.cardCenter.domain.PtSubsidyitem;
+import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyReportBo;
+import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyReportVo;
 import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyitemVo;
 import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyitemVo;
 import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyitemBo;
 import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyitemBo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -17,6 +19,8 @@ import java.util.List;
  */
  */
 public interface IPtSubsidyitemService {
 public interface IPtSubsidyitemService {
 
 
+    List<PtSubsidyReportVo> queryReportList(PtSubsidyReportBo bo);
+
     /**
     /**
      * 查询补助明细
      * 查询补助明细
      *
      *
@@ -33,6 +37,7 @@ public interface IPtSubsidyitemService {
      * @return 补助明细分页列表
      * @return 补助明细分页列表
      */
      */
     TableDataInfo<PtSubsidyitemVo> queryPageList(PtSubsidyitemBo bo, PageQuery pageQuery);
     TableDataInfo<PtSubsidyitemVo> queryPageList(PtSubsidyitemBo bo, PageQuery pageQuery);
+    TableDataInfo<PtSubsidyReportVo> queryPageReportList(PtSubsidyReportBo bo, PageQuery pageQuery);
 
 
     /**
     /**
      * 查询符合条件的补助明细列表
      * 查询符合条件的补助明细列表

+ 22 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/service/impl/PtSubsidyitemServiceImpl.java

@@ -4,6 +4,8 @@ import org.dromara.backstage.basics.domain.bo.PtAccountBo;
 import org.dromara.backstage.basics.domain.vo.PtAccountVo;
 import org.dromara.backstage.basics.domain.vo.PtAccountVo;
 import org.dromara.backstage.basics.mapper.PtAccountMapper;
 import org.dromara.backstage.basics.mapper.PtAccountMapper;
 import org.dromara.backstage.basics.service.IPtAccountService;
 import org.dromara.backstage.basics.service.IPtAccountService;
+import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyReportBo;
+import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyReportVo;
 import org.dromara.backstage.payment.domain.PtUserAccount;
 import org.dromara.backstage.payment.domain.PtUserAccount;
 import org.dromara.backstage.payment.domain.vo.PtUserAccountVo;
 import org.dromara.backstage.payment.domain.vo.PtUserAccountVo;
 import org.dromara.backstage.payment.mapper.PtUserAccountMapper;
 import org.dromara.backstage.payment.mapper.PtUserAccountMapper;
@@ -45,6 +47,15 @@ public class PtSubsidyitemServiceImpl implements IPtSubsidyitemService {
     private final PtUserAccountMapper userAccountMapper;
     private final PtUserAccountMapper userAccountMapper;
 
 
 
 
+    /**
+     * @param bo
+     * @return
+     */
+    @Override
+    public List<PtSubsidyReportVo> queryReportList(PtSubsidyReportBo bo) {
+        return baseMapper.queryReportList(bo);
+    }
+
     /**
     /**
      * 查询补助明细
      * 查询补助明细
      *
      *
@@ -71,6 +82,17 @@ public class PtSubsidyitemServiceImpl implements IPtSubsidyitemService {
         return TableDataInfo.build(result);
         return TableDataInfo.build(result);
     }
     }
 
 
+    /**
+     * @param bo
+     * @param pageQuery
+     * @return
+     */
+    @Override
+    public TableDataInfo<PtSubsidyReportVo> queryPageReportList(PtSubsidyReportBo bo, PageQuery pageQuery) {
+        Page<PtSubsidyReportVo> page = baseMapper.queryReportPageList(pageQuery.build(), bo);
+        return TableDataInfo.build(page);
+    }
+
     /**
     /**
      * 补充人员信息
      * 补充人员信息
      * @param subsidyitemVoList
      * @param subsidyitemVoList

+ 119 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/impl/PtUserAccountServiceImpl.java

@@ -4,9 +4,13 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.lang.UUID;
 import cn.hutool.core.lang.UUID;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.Builder;
+import lombok.NoArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.dromara.backstage.cardCenter.domain.bo.PtCardBo;
 import org.dromara.backstage.cardCenter.domain.bo.PtCardBo;
@@ -33,8 +37,11 @@ import org.dromara.backstage.payment.mapper.PtUserAccountMapper;
 import org.dromara.backstage.payment.service.IPtUserAccountService;
 import org.dromara.backstage.payment.service.IPtUserAccountService;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
-import java.io.IOException;
+import java.io.*;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.nio.charset.Charset;
 import java.text.MessageFormat;
 import java.text.MessageFormat;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
@@ -450,4 +457,115 @@ public class PtUserAccountServiceImpl implements IPtUserAccountService {
         }
         }
         return vo;
         return vo;
     }
     }
+
+    public static void downloadPicture(String urlList,String name,String userNumb) {
+        URL url = null;
+        int imageNumber = 0;
+
+        try {
+            url = new URL("http://172.16.137.86:8080/upload/"+urlList);
+            DataInputStream dataInputStream = new DataInputStream(url.openStream());
+
+            String imageName =  "C:\\Users\\LENOVO\\Desktop\\img\\"+name+"_"+userNumb+urlList.substring(urlList.lastIndexOf("."));
+
+            FileOutputStream fileOutputStream = new FileOutputStream(new File(imageName));
+            ByteArrayOutputStream output = new ByteArrayOutputStream();
+
+            byte[] buffer = new byte[1024];
+            int length;
+
+            while ((length = dataInputStream.read(buffer)) > 0) {
+                output.write(buffer, 0, length);
+            }
+            byte[] context=output.toByteArray();
+            fileOutputStream.write(output.toByteArray());
+            dataInputStream.close();
+            fileOutputStream.close();
+        } catch (MalformedURLException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static class ImageData{
+        private String url;
+        private String name;
+
+        private String userNumb;
+
+        public ImageData(String url, String name, String userNumb) {
+            this.url = url;
+            this.name = name;
+            this.userNumb = userNumb;
+        }
+    }
+
+    public static List<ImageData> parseTxt(String filePath){
+        return FileUtils.readLines(filePath, Charset.defaultCharset()).stream().map(line->{
+            String[] split = line.split("\\|");
+            if(split.length!=3){
+                throw new RuntimeException("txt文件格式错误");
+            }
+            String userNumb = split[0].replaceAll(" ", "");
+            String url = split[1].replaceAll(" ", "");
+            String name = split[2].replaceAll(" ", "");
+            return new ImageData(url,name,userNumb);
+        }).collect(Collectors.toList());
+    }
+
+    //使用 http form-data方式上传图片,使用hutool工具包
+    public static String uploadImage(String userNumb,String name) throws IOException {
+        //使用 http form-data方式上传图片,使用hutool工具包
+        String imagePath = "C:\\Users\\LENOVO\\Desktop\\img\\"+name+"_"+userNumb+".jpg";
+        File file = new File(imagePath);
+        Long length = file.length();
+        if(!file.exists() || length <= 0){
+            System.err.println(userNumb+" "+name+" "+"照片不存在 "+ imagePath);
+            return "error: "+ userNumb+" "+name+" "+"照片不存在";
+        }
+        Map<String,String> headers = new HashMap<>();
+        headers.put("Content-Type", "multipart/form-data");
+        headers.put("cookie", "Data=jsv2g08wiSwgsuDrAwQvLCDfueDealwvg330G2yywIAVWXnLV1M/jR6EKPdJqhxGkWwYfHnmjF6+WJk2b8t4gPWQ8T35rBBxD1GiOIQF9jM%3D; Words=MTY6OTQyNjgyNDIyOjg1ODkyODk0NTo5NDMwNzU2MzI6ODQyMDE5NjM3");
+        String json = "{\"method\":\"faceInfoUpdate.addFace\",\"params\":{\"GroupID\":1,\"PersonInfo\":{\"CertificateType\":\"IC\",\"ID\":\""+userNumb+"\"},\"ImageInfo\":{\"Lengths\":["+length+"],\"Amount\":1}},\"session\":\"1d6e61e33641e339c68a3930c4b3e949\",\"id\":120}";
+//        System.err.println(" json "+json);
+        HttpRequest form = HttpRequest.post("http://172.19.50.101/CmdCall")
+            .addHeaders(headers)
+            .form("json", json)
+            .form("data", file);
+        HttpResponse execute = form.execute();
+        String body = execute.body();
+
+        if(body.contains("error")){
+            System.err.println("error: "+ userNumb+" "+name+" "+"照片上传失败,请手动上传"+ "  " + body);
+        }else{
+            System.out.println("state : "+ userNumb+" "+name+" " + execute.isOk() + "  " + body);
+        }
+//        System.err.println("body : " + body);
+        return "ok";
+    }
+
+    public static void main(String[] args) throws IOException {
+        /*List<ImageData> list = new ArrayList<>();
+        list = parseTxt("C:\\Users\\LENOVO\\Desktop\\T_PT_User_202410221658_txt.txt");
+
+        System.err.println(list);
+
+        list.forEach(item->{
+            downloadPicture(item.url,item.name, item.userNumb);
+        });*/
+        /*File file = new File("C:\\Users\\LENOVO\\Desktop\\img\\冯晓辉_2022118036.jpg");
+        System.err.println(file.length());*/
+
+        List<ImageData> list = new ArrayList<>();
+        list = parseTxt("C:\\Users\\LENOVO\\Desktop\\userdata.txt");
+
+        for (ImageData imageData : list) {
+            uploadImage(imageData.userNumb,imageData.name);
+        }
+
+
+        System.err.println("11111");
+    }
+
 }
 }

+ 62 - 0
ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/cardCenter/cardOperation/PtSubsidyitemMapper.xml

@@ -28,4 +28,66 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <result property="updateBy"    column="update_by"    />
             <result property="updateBy"    column="update_by"    />
             <result property="updateTime"    column="update_time"    />
             <result property="updateTime"    column="update_time"    />
     </resultMap>
     </resultMap>
+
+    <select id="queryReportList" resultType="org.dromara.backstage.cardCenter.domain.vo.PtSubsidyReportVo">
+        select (case  #{bo.countType} when '0' then to_char(i.fill_date, '%Y') when '1' then to_char(i.fill_date, '%Y-%m') else to_char(i.fill_date, '%Y-%m-%d') end) fillDate,
+               (case when #{bo.subsidyType} is not null and #{bo.subsidyType} != '' then i.subsidy_type else '所有' end) subsidyType,
+                (case when #{bo.createByName} is not null and #{bo.createByName} != '' then u.real_name else '所有' end)  createByName,
+                sum(ifnull(i.fill_money,0)) fillMoney,
+                count(*)  countNumber,
+                sum(case when i.fill_status = 'Y' then ifnull(i.fill_money,0) else 0 end) receiveMoney,
+                sum(case when i.fill_status = 'Y' then 1 else 0 end) receiveNumber,
+                sum(case when i.fill_status = 'N' then ifnull(i.fill_money,0) else 0 end) notReceiveMoney,
+                sum(case when i.fill_status = 'N' then 1 else 0 end) notReceiveNumber
+                from t_pt_subsidyItem i join t_pt_subsidy  s on i.main_id = s.main_id
+               left join t_sys_user u on s.create_by = u.user_id
+        <where>
+             i.del_flag = 0 and s.del_flag = 0
+            <if test="bo.beginCountTime != null">
+                and #{bo.beginCountTime} &lt;= to_char(i.fill_date, '%Y-%m-%d')
+            </if>
+            <if test="bo.endCountTime !=null">
+                and to_char(i.fill_date, '%Y-%m-%d')  &lt;= #{bo.endCountTime}
+            </if>
+            <if test="bo.subsidyType !=null and bo.subsidyType !=''">
+                and i.subsidy_type = #{bo.subsidyType}
+            </if>
+            <if test="bo.createByName!=null and bo.createByName!=''">
+              and u.real_name like concat('%',#{bo.createByName},'%')
+            </if>
+        </where>
+        group by fillDate, subsidyType,createByName
+        order by fillDate desc,subsidyType desc,createByName desc
+    </select>
+
+    <select id="queryReportPageList" resultType="org.dromara.backstage.cardCenter.domain.vo.PtSubsidyReportVo">
+        select (case  #{bo.countType} when '0' then to_char(i.fill_date, '%Y') when '1' then to_char(i.fill_date, '%Y-%m') else to_char(i.fill_date, '%Y-%m-%d') end) fillDate,
+        (case when #{bo.subsidyType} is not null and #{bo.subsidyType} != '' then i.subsidy_type else '所有' end) subsidyType,
+        (case when #{bo.createByName} is not null and #{bo.createByName} != '' then u.real_name else '所有' end)  createByName,
+        sum(ifnull(i.fill_money,0)) fillMoney,
+        count(*)  countNumber,
+        sum(case when i.fill_status = 'Y' then ifnull(i.fill_money,0) else 0 end) receiveMoney,
+        sum(case when i.fill_status = 'Y' then 1 else 0 end) receiveNumber,
+        sum(case when i.fill_status = 'N' then ifnull(i.fill_money,0) else 0 end) notReceiveMoney,
+        sum(case when i.fill_status = 'N' then 1 else 0 end) notReceiveNumber
+        from t_pt_subsidyItem i join t_pt_subsidy  s on i.main_id = s.main_id
+        left join t_sys_user u on s.create_by = u.user_id
+        <where>
+            i.del_flag = 0 and s.del_flag = 0
+            <if test="bo.beginCountTime != null">
+                and #{bo.beginCountTime} &lt;= to_char(i.fill_date, '%Y-%m-%d')
+            </if>
+            <if test="bo.endCountTime !=null">
+                and to_char(i.fill_date, '%Y-%m-%d')  &lt;= #{bo.endCountTime}
+            </if>
+            <if test="bo.subsidyType !=null and bo.subsidyType !=''">
+                and i.subsidy_type = #{bo.subsidyType}
+            </if>
+            <if test="bo.createByName!=null and bo.createByName!=''">
+                and u.real_name like concat('%',#{bo.createByName},'%')
+            </if>
+        </where>
+        group by fillDate, subsidyType,createByName
+        order by fillDate desc,subsidyType desc,createByName desc
+    </select>
 </mapper>
 </mapper>