Jelajahi Sumber

20221009
报销申请

sunruiqi 2 tahun lalu
induk
melakukan
67624ec75d
14 mengubah file dengan 817 tambahan dan 0 penghapusan
  1. 80 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/controller/ReimbursementInfoController.java
  2. 42 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/domain/ReimbursementAmountInfo.java
  3. 81 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/domain/ReimbursementDetailInfo.java
  4. 61 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/domain/ReimbursementInfo.java
  5. 7 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/mapper/ReimbursementAmountInfoMapper.java
  6. 7 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/mapper/ReimbursementDetailInfoMapper.java
  7. 16 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/mapper/ReimbursementInfoMapper.java
  8. 27 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/mapper/xml/ReimbursementInfoMapper.xml
  9. 285 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/service/ReimbursementInfoService.java
  10. 53 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/service/dto/QueryListDto.java
  11. 71 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/service/dto/RetureListDto.java
  12. 74 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/service/dto/SaveInfoDto.java
  13. 4 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/workClientInfo/domain/WorkClientInfo.java
  14. 9 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/workClientInfo/service/WorkClientService.java

+ 80 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/controller/ReimbursementInfoController.java

@@ -0,0 +1,80 @@
+package com.jeeplus.test.reimbursement.reimbursementInfo.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.reimbursement.reimbursementInfo.service.ReimbursementInfoService;
+import com.jeeplus.test.reimbursement.reimbursementInfo.service.dto.QueryListDto;
+import com.jeeplus.test.reimbursement.reimbursementInfo.service.dto.RetureListDto;
+import com.jeeplus.test.reimbursement.reimbursementInfo.service.dto.SaveInfoDto;
+import com.jeeplus.test.workContract.domain.WorkContractInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@Api(tags ="报销申请")
+@RequestMapping(value = "/reimbursement/info")
+public class ReimbursementInfoController {
+
+    @Resource
+    private ReimbursementInfoService service;
+
+    /**
+     * 列表查询
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "列表查询")
+    @GetMapping("/list")
+    public ResponseEntity<IPage<RetureListDto>> list(Page<RetureListDto> page, QueryListDto dto) throws Exception{
+        IPage<RetureListDto> iPage = service.list(page, dto);
+        return ResponseEntity.ok(iPage);
+    }
+
+    /**
+     * 新增/修改
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "新增、修改")
+    @PostMapping("/save")
+    public ResponseEntity<String> save(@RequestBody SaveInfoDto dto) throws Exception{
+        String s = service.save(dto);
+        return ResponseEntity.ok(s);
+    }
+
+    /**
+     * 删除
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "删除")
+    @PostMapping("/remove")
+    public ResponseEntity<String> remove(@RequestParam String id){
+        String s = service.remove(id);
+        return ResponseEntity.ok(s);
+    }
+
+    /**
+     * 查询
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "查询")
+    @PostMapping("/findById")
+    public ResponseEntity<SaveInfoDto> findById(@RequestParam String id) throws Exception{
+        SaveInfoDto dto = service.findById(id);
+        return ResponseEntity.ok(dto);
+    }
+
+    @ApiOperation(value = "发票号判断")
+    @GetMapping("/checkNumber")
+    public ResponseEntity<Boolean> checkNumber(@RequestParam String number) {
+        Boolean is = service.checkNumber(number);
+        return ResponseEntity.ok(is);
+    }
+}

+ 42 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/domain/ReimbursementAmountInfo.java

@@ -0,0 +1,42 @@
+package com.jeeplus.test.reimbursement.reimbursementInfo.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import org.apache.poi.hpsf.Decimal;
+
+@Data
+@TableName(value = "reimbursement_amount_info")
+public class ReimbursementAmountInfo extends BaseEntity {
+
+    /**
+     * 关联id
+     */
+    private String infoId;
+
+    /**
+     * 发票代码
+     */
+    private String code;
+
+    /**
+     * 发票编号
+     */
+    private String number;
+
+    /**
+     * 金额
+     */
+    private Decimal amount;
+
+    /**
+     * 税额
+     */
+    private Decimal taxAmount;
+
+    /**
+     * 价税合计
+     */
+    private Decimal count;
+
+}

+ 81 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/domain/ReimbursementDetailInfo.java

@@ -0,0 +1,81 @@
+package com.jeeplus.test.reimbursement.reimbursementInfo.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import org.apache.poi.hpsf.Decimal;
+
+@Data
+@TableName(value = "reimbursement_detail_info")
+public class ReimbursementDetailInfo extends BaseEntity {
+
+    /**
+     * 关联id
+     */
+    private String infoId;
+
+    /**
+     * 报销人
+     */
+    private String userId;
+
+    /**
+     * 报销人名称
+     */
+    private String userName;
+
+    /**
+     * 报销部门
+     */
+    private String deptId;
+
+    /**
+     * 报销部门名称
+     */
+    private String deptName;
+
+    /**
+     * 报销类型
+     */
+    private String typeId;
+
+    /**
+     * 报销类型名称
+     */
+    private String typeName;
+
+    /**
+     * 报销项目
+     */
+    private String projectId;
+
+    /**
+     * 报销项目名称
+     */
+    private String projectName;
+
+    /**
+     * 报告号
+     */
+    private String reportNumber;
+
+    /**
+     * 费用(元)
+     */
+    private Decimal number;
+
+    /**
+     * 收据张数
+     */
+    private Integer receiptNumber;
+
+    /**
+     * 出差天数
+     */
+    private Integer days;
+
+    /**
+     * 内容
+     */
+    private String content;
+}

+ 61 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/domain/ReimbursementInfo.java

@@ -0,0 +1,61 @@
+package com.jeeplus.test.reimbursement.reimbursementInfo.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+@TableName(value = "reimbursement_info")
+public class ReimbursementInfo extends BaseEntity {
+
+    /**
+     * 经办人id
+     */
+    private String userId;
+
+    /**
+     * 经办人名称
+     */
+    private String userName;
+
+    /**
+     * 报销编号
+     */
+    private String no;
+
+    /**
+     * 所属部门
+     */
+    private String department;
+
+    /**
+     * 报销日期
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date remiDate;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 状态
+     */
+    private String type;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     *
+     */
+    private String processInstanceId;
+}

+ 7 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/mapper/ReimbursementAmountInfoMapper.java

@@ -0,0 +1,7 @@
+package com.jeeplus.test.reimbursement.reimbursementInfo.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.reimbursement.reimbursementInfo.domain.ReimbursementAmountInfo;
+
+public interface ReimbursementAmountInfoMapper extends BaseMapper<ReimbursementAmountInfo> {
+}

+ 7 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/mapper/ReimbursementDetailInfoMapper.java

@@ -0,0 +1,7 @@
+package com.jeeplus.test.reimbursement.reimbursementInfo.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.reimbursement.reimbursementInfo.domain.ReimbursementDetailInfo;
+
+public interface ReimbursementDetailInfoMapper extends BaseMapper<ReimbursementDetailInfo> {
+}

+ 16 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/mapper/ReimbursementInfoMapper.java

@@ -0,0 +1,16 @@
+package com.jeeplus.test.reimbursement.reimbursementInfo.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.reimbursement.reimbursementInfo.domain.ReimbursementInfo;
+import com.jeeplus.test.reimbursement.reimbursementInfo.service.dto.RetureListDto;
+import org.apache.ibatis.annotations.Param;
+
+public interface ReimbursementInfoMapper extends BaseMapper<ReimbursementInfo> {
+
+    IPage<RetureListDto> findList (Page<RetureListDto> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
+
+}

+ 27 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/mapper/xml/ReimbursementInfoMapper.xml

@@ -0,0 +1,27 @@
+<?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.jeeplus.test.reimbursement.reimbursementInfo.mapper.ReimbursementInfoMapper">
+
+	<select id="findList" resultType="com.jeeplus.test.reimbursement.reimbursementInfo.service.dto.RetureListDto">
+		SELECT
+			a.id,
+			a.`no`,
+			b.type_id,
+			b.type_name,
+			b.project_id,
+			b.project_name,
+			b.report_number,
+			a.user_name,
+			b.user_name AS `name`,
+			b.dept_name,
+			a.reim_date,
+			b.number
+		FROM
+			reimbursement_info a
+			LEFT JOIN reimbursement_detail_info b ON a.id = b.info_id
+			LEFT JOIN sys_user c ON a.create_by =  c.id
+			${ew.customSqlSegment}
+		ORDER BY a.update_date DESC
+	</select>
+
+</mapper>

+ 285 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/service/ReimbursementInfoService.java

@@ -0,0 +1,285 @@
+package com.jeeplus.test.reimbursement.reimbursementInfo.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.utils.StringUtils;
+import com.jeeplus.sys.utils.UserUtils;
+import com.jeeplus.test.mould.service.SerialnumTplService;
+import com.jeeplus.test.oss.domain.WorkAttachment;
+import com.jeeplus.test.oss.mapper.OssServiceMapper;
+import com.jeeplus.test.reimbursement.reimbursementInfo.domain.ReimbursementAmountInfo;
+import com.jeeplus.test.reimbursement.reimbursementInfo.domain.ReimbursementDetailInfo;
+import com.jeeplus.test.reimbursement.reimbursementInfo.domain.ReimbursementInfo;
+import com.jeeplus.test.reimbursement.reimbursementInfo.mapper.ReimbursementAmountInfoMapper;
+import com.jeeplus.test.reimbursement.reimbursementInfo.mapper.ReimbursementDetailInfoMapper;
+import com.jeeplus.test.reimbursement.reimbursementInfo.mapper.ReimbursementInfoMapper;
+import com.jeeplus.test.reimbursement.reimbursementInfo.service.dto.QueryListDto;
+import com.jeeplus.test.reimbursement.reimbursementInfo.service.dto.RetureListDto;
+import com.jeeplus.test.reimbursement.reimbursementInfo.service.dto.SaveInfoDto;
+import com.jeeplus.test.workContract.service.WorkContractService;
+import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
+import org.apache.commons.beanutils.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+@Service
+public class ReimbursementInfoService {
+
+    @Resource
+    private ReimbursementInfoMapper infoMapper;
+
+    @Resource
+    private ReimbursementDetailInfoMapper detailInfoMapper;
+
+    @Resource
+    private ReimbursementAmountInfoMapper amountInfoMapper;
+
+    @Resource
+    private OssServiceMapper ossServiceMapper;
+
+    @Resource
+    private SerialnumTplService serialnumTplService;
+
+    @Resource
+    private WorkContractService workContractService;
+
+    /**
+     * 列表查询
+     */
+    public IPage<RetureListDto> list(Page<RetureListDto> page , QueryListDto dto) throws Exception{
+        QueryWrapper<QueryListDto> queryWrapper = QueryWrapperGenerator.buildQueryCondition(dto, QueryListDto.class);
+        /**
+         * a表是reimbursementInfo
+         * b表是reimbursementDetailInfo
+         * c表是sysUser
+         */
+        // 报销项目
+        if (StringUtils.isNotEmpty(dto.getProject())) {
+            queryWrapper.eq("b.project_id", dto.getProject()).or().like("b.project_name", dto.getProject());
+        }
+        // 报销时间
+        if (dto.getDates() != null) {
+            queryWrapper.between("a.create_date", dto.getDates()[0], dto.getDates()[1]);
+        }
+        // 经办人
+        if (StringUtils.isNotEmpty(dto.getHandled())) {
+            queryWrapper.eq("a.create_by", dto.getHandled()).or().like("c.user_name", dto.getHandled());
+        }
+        // 报销人
+        if (StringUtils.isNotEmpty(dto.getRemiBy())) {
+            queryWrapper.eq("b.user_id", dto.getRemiBy()).or().like("b.user_name", dto.getRemiBy());
+        }
+        // 报销状态
+        if (StringUtils.isNotEmpty(dto.getType())) {
+            queryWrapper.eq("a.type", dto.getType());
+        }
+        // 报销部门
+        if (StringUtils.isNotEmpty(dto.getDepartment())) {
+            queryWrapper.eq("b.dept_id", dto.getDepartment()).or().like("b.dept_name", dto.getDepartment());
+        }
+        // 报销类别
+        if (StringUtils.isNotEmpty(dto.getRemiType())) {
+            queryWrapper.eq("b.type_id", dto.getRemiType()).or().like("b.type_name", dto.getRemiType());
+        }
+        // 报销金额
+        if (dto.getAmounts() != null) {
+            if (StringUtils.isNotEmpty(dto.getAmounts()[0])) {
+                queryWrapper.ge("b.number", dto.getAmounts()[0]);
+            }
+            if (StringUtils.isNotEmpty(dto.getAmounts()[1])) {
+                queryWrapper.le("b.number", dto.getAmounts()[1]);
+            }
+        }
+        // 报告号
+        if (StringUtils.isNotEmpty(dto.getReportNumber())) {
+            queryWrapper.like("b.report_number", dto.getReportNumber());
+        }
+        return infoMapper.findList(page, queryWrapper);
+    }
+
+    public String save(SaveInfoDto dto) throws Exception{
+        // 获取当前登录人信息
+        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        if (StringUtils.isNotEmpty(dto.getId())) {
+            return update(dto, userDTO);
+        } else {
+            return add(dto, userDTO);
+        }
+    }
+
+    public String add(SaveInfoDto dto, UserDTO userDTO) throws Exception{
+        // 生成id
+        String id = UUID.randomUUID().toString().replace("-", "");
+        // 生成编号
+        String no = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), dto.BIZ_CODE);
+        // 保存基础信息表信息
+        ReimbursementInfo info = new ReimbursementInfo();
+        BeanUtils.copyProperties(dto, info);
+        info.setId(id);
+        info.setCreateBy(userDTO.getId());
+        info.setCreateDate(new Date());
+        info.setUpdateBy(userDTO.getId());
+        info.setUpdateDate(new Date());
+        info.setDelFlag(0);
+        infoMapper.insert(info);
+        // 保存详情列表信息
+        if (CollectionUtils.isNotEmpty(dto.getDetailInfos())) {
+            for (ReimbursementDetailInfo detailInfo : dto.getDetailInfos()) {
+                // 生成id
+                String detailId = UUID.randomUUID().toString().replace("-", "");
+                detailInfo.setId(detailId);
+                detailInfo.setCreateBy(userDTO.getId());
+                detailInfo.setCreateDate(new Date());
+                detailInfo.setUpdateBy(userDTO.getId());
+                detailInfo.setUpdateDate(new Date());
+                detailInfo.setDelFlag(0);
+                // 保存基础表信息主键值
+                detailInfo.setInfoId(id);
+                detailInfoMapper.insert(detailInfo);
+            }
+        }
+        // 保存专用发票列表信息
+        if (CollectionUtils.isNotEmpty(dto.getAmountInfos())) {
+            for (ReimbursementAmountInfo amountInfo : dto.getAmountInfos()) {
+                // 生成id
+                String amountId = UUID.randomUUID().toString().replace("-", "");
+                amountInfo.setId(amountId);
+                amountInfo.setCreateBy(userDTO.getId());
+                amountInfo.setCreateDate(new Date());
+                amountInfo.setUpdateBy(userDTO.getId());
+                amountInfo.setUpdateDate(new Date());
+                amountInfo.setDelFlag(0);
+                // 保存基础表信息主键值
+                amountInfo.setInfoId(id);
+                amountInfoMapper.insert(amountInfo);
+            }
+        }
+        // 保存附件列表信息
+        if (CollectionUtils.isNotEmpty(dto.getWorkAttachments())) {
+            workContractService.saveFiles(dto.getWorkAttachments(), userDTO, id);
+        }
+        return "操作成功";
+    }
+
+    public String update(SaveInfoDto dto, UserDTO userDTO) throws Exception{
+        // 修改基础信息
+        ReimbursementInfo info = new ReimbursementInfo();
+        BeanUtils.copyProperties(dto, info);
+        info.setUpdateBy(userDTO.getId());
+        info.setUpdateDate(new Date());
+        infoMapper.updateById(info);
+        // 修改报销详情列表信息
+        // 删除原有数据
+        LambdaQueryWrapper<ReimbursementDetailInfo> detailWrapper = new LambdaQueryWrapper<>();
+        detailWrapper.eq(ReimbursementDetailInfo::getInfoId, dto.getId());
+        detailInfoMapper.delete(detailWrapper);
+        if (CollectionUtils.isNotEmpty(dto.getDetailInfos())) {
+            for (ReimbursementDetailInfo detailInfo : dto.getDetailInfos()) {
+                // 生成id
+                String detailId = UUID.randomUUID().toString().replace("-", "");
+                detailInfo.setId(detailId);
+                detailInfo.setCreateBy(userDTO.getId());
+                detailInfo.setCreateDate(new Date());
+                detailInfo.setUpdateBy(userDTO.getId());
+                detailInfo.setUpdateDate(new Date());
+                detailInfo.setDelFlag(0);
+                // 保存基础表信息主键值
+                detailInfo.setInfoId(dto.getId());
+                detailInfoMapper.insert(detailInfo);
+            }
+        }
+        // 修改专用发票信息列表
+        // 删除原有数据
+        LambdaQueryWrapper<ReimbursementAmountInfo> amountWrapper = new LambdaQueryWrapper<>();
+        amountWrapper.eq(ReimbursementAmountInfo::getInfoId, dto.getId());
+        amountInfoMapper.delete(amountWrapper);
+        if (CollectionUtils.isNotEmpty(dto.getAmountInfos())) {
+            for (ReimbursementAmountInfo amountInfo : dto.getAmountInfos()) {
+                // 生成id
+                String amountId = UUID.randomUUID().toString().replace("-", "");
+                amountInfo.setId(amountId);
+                amountInfo.setCreateBy(userDTO.getId());
+                amountInfo.setCreateDate(new Date());
+                amountInfo.setUpdateBy(userDTO.getId());
+                amountInfo.setUpdateDate(new Date());
+                amountInfo.setDelFlag(0);
+                // 保存基础表信息主键值
+                amountInfo.setInfoId(dto.getId());
+                amountInfoMapper.insert(amountInfo);
+            }
+        }
+        // 修改附件信息列表
+        if (CollectionUtils.isNotEmpty(dto.getWorkAttachments())) {
+            workContractService.updateFiles(dto.getWorkAttachments(), userDTO, dto.getId());
+        }
+        return "操作成功";
+    }
+
+    public String remove(String id) {
+        // 删除基础信息表
+        infoMapper.deleteById(id);
+        // 删除详情列表
+        LambdaQueryWrapper<ReimbursementDetailInfo> detailInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        detailInfoLambdaQueryWrapper.eq(ReimbursementDetailInfo::getInfoId, id);
+        detailInfoMapper.delete(detailInfoLambdaQueryWrapper);
+        // 删除专用发票信息列表
+        LambdaQueryWrapper<ReimbursementAmountInfo> amountInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        amountInfoLambdaQueryWrapper.eq(ReimbursementAmountInfo::getInfoId, id);
+        amountInfoMapper.delete(amountInfoLambdaQueryWrapper);
+        // 删除附件信息
+        LambdaQueryWrapper<WorkAttachment> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(WorkAttachment::getAttachmentId, id);
+        ossServiceMapper.delete(wrapper);
+        return "操作成功";
+    }
+
+    public SaveInfoDto findById(String id) throws Exception{
+        SaveInfoDto dto = new SaveInfoDto();
+        // 查询基础信息表
+        ReimbursementInfo info = infoMapper.selectById(id);
+        BeanUtils.copyProperties(info, dto);
+        // 查询详情列表
+        LambdaQueryWrapper<ReimbursementDetailInfo> detailInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        detailInfoLambdaQueryWrapper.eq(ReimbursementDetailInfo::getInfoId, id);
+        List<ReimbursementDetailInfo> detailInfos = detailInfoMapper.selectList(detailInfoLambdaQueryWrapper);
+        dto.setDetailInfos(detailInfos);
+        // 查询专用发票信息列表
+        LambdaQueryWrapper<ReimbursementAmountInfo> amountInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        amountInfoLambdaQueryWrapper.eq(ReimbursementAmountInfo::getInfoId, id);
+        List<ReimbursementAmountInfo> amountInfos = amountInfoMapper.selectList(amountInfoLambdaQueryWrapper);
+        dto.setAmountInfos(amountInfos);
+        // 查询附件信息
+        LambdaQueryWrapper<WorkAttachment> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(WorkAttachment::getAttachmentId, id);
+        List<WorkAttachment> workAttachments = ossServiceMapper.selectList(wrapper);
+        List<WorkAttachmentDto> dtos = new ArrayList<>();
+        for (WorkAttachment i : workAttachments) {
+            WorkAttachmentDto workAttachmentDto = new WorkAttachmentDto();
+            BeanUtils.copyProperties(i, workAttachmentDto);
+            workAttachmentDto.setCreateBy(UserUtils.get(i.getId()));
+            dtos.add(workAttachmentDto);
+        }
+        dto.setWorkAttachments(dtos);
+        return dto;
+    }
+
+    public Boolean checkNumber(String number) {
+        LambdaQueryWrapper<ReimbursementAmountInfo> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ReimbursementAmountInfo::getNumber, number);
+        List<ReimbursementAmountInfo> infos = amountInfoMapper.selectList(wrapper);
+        if (CollectionUtils.isNotEmpty(infos)) {
+            return true;
+        }
+        return false;
+    }
+}

+ 53 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/service/dto/QueryListDto.java

@@ -0,0 +1,53 @@
+package com.jeeplus.test.reimbursement.reimbursementInfo.service.dto;
+
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+public class QueryListDto extends BaseEntity {
+
+    /**
+     * 报销项目
+     */
+    private String project;
+
+    /**
+     * 报销时间
+     */
+    private String[] dates;
+
+    /**
+     * 经办人
+     */
+    private String handled;
+
+    /**
+     * 报销人
+     */
+    private String remiBy;
+
+    /**
+     * 报销状态
+     */
+    private String type;
+
+    /**
+     * 报销部门
+     */
+    private String department;
+
+    /**
+     * 报销类别
+     */
+    private String remiType;
+
+    /**
+     * 报销金额
+     */
+    private String[] amounts;
+
+    /**
+     * 报告号
+     */
+    private String reportNumber;
+}

+ 71 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/service/dto/RetureListDto.java

@@ -0,0 +1,71 @@
+package com.jeeplus.test.reimbursement.reimbursementInfo.service.dto;
+
+import lombok.Data;
+import org.apache.poi.hpsf.Decimal;
+
+import java.util.Date;
+
+@Data
+public class RetureListDto {
+
+    /**
+     * 基础表主键值
+     */
+    private String id;
+
+    /**
+     * 报销编号
+     */
+    private String no;
+
+    /**
+     * 报销类别id
+     */
+    private String typeId;
+
+    /**
+     * 报销类别
+     */
+    private String typeName;
+
+    /**
+     * 报销项目id
+     */
+    private String projectId;
+
+    /**
+     * 报销项目
+     */
+    private String projectName;
+
+    /**
+     * 报告号
+     */
+    private String reportNumber;
+
+    /**
+     * 经办人
+     */
+    private String userName;
+
+    /**
+     * 报销人
+     */
+    private String name;
+
+    /**
+     * 报销部门
+     */
+    private String deptName;
+
+    /**
+     * 报销日期
+     */
+    private Date reimDate;
+
+    /**
+     * 报销金额
+     */
+    private Decimal amount;
+
+}

+ 74 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursement/reimbursementInfo/service/dto/SaveInfoDto.java

@@ -0,0 +1,74 @@
+package com.jeeplus.test.reimbursement.reimbursementInfo.service.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.test.oss.domain.WorkAttachment;
+import com.jeeplus.test.reimbursement.reimbursementInfo.domain.ReimbursementAmountInfo;
+import com.jeeplus.test.reimbursement.reimbursementInfo.domain.ReimbursementDetailInfo;
+import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class SaveInfoDto extends BaseEntity {
+
+    //合同编号类型(字典值)
+    public static final String BIZ_CODE = "2";
+
+    /**
+     * 经办人id
+     */
+    private String userId;
+
+    /**
+     * 经办人名称
+     */
+    private String userName;
+
+    /**
+     * 报销编号
+     */
+    private String no;
+
+    /**
+     * 所属部门
+     */
+    private String department;
+
+    /**
+     * 报销日期
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date remiDate;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 状态
+     */
+    private String type;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     *
+     */
+    private String processInstanceId;
+
+    private List<ReimbursementDetailInfo> detailInfos;
+
+    private List<ReimbursementAmountInfo> amountInfos;
+
+    private List<WorkAttachmentDto> workAttachments;
+
+}

+ 4 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/workClientInfo/domain/WorkClientInfo.java

@@ -9,6 +9,7 @@ import com.jeeplus.form.constant.TableColumn;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 客户管理Entity
@@ -158,4 +159,7 @@ public class WorkClientInfo extends BaseEntity {
 
     @TableField(exist = false)
     private String createFlag;  //创建状态
+
+    @TableField(exist = false)
+    private List<WorkClientBank> backs;
 }

+ 9 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/workClientInfo/service/WorkClientService.java

@@ -68,6 +68,15 @@ public class WorkClientService {
             queryWrapper.between("a.create_date",dates[0], dates[1]);
         }
         IPage<WorkClientInfo> pageList = workClientInfoMapper.findPageList(page, queryWrapper);
+        List<WorkClientInfo> list = pageList.getRecords();
+        if (CollectionUtils.isNotEmpty(list)) {
+            for (WorkClientInfo info : list) {
+                LambdaQueryWrapper<WorkClientBank> wrapper = new LambdaQueryWrapper<>();
+                wrapper.eq(WorkClientBank::getClientId, info.getId());
+                List<WorkClientBank> banks = workClientBankMapper.selectList(wrapper);
+                info.setBacks(banks);
+            }
+        }
         return pageList;
     }