Procházet zdrojové kódy

发票明细功能

lizhenhao před 2 roky
rodič
revize
23ebc808fe

+ 40 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/controller/FinanceInvoiceController.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.common.utils.ResponseUtil;
 import com.jeeplus.sys.constant.enums.LogTypeEnum;
 import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.test.finance.invoice.domain.FinanceInvoice;
@@ -14,7 +15,9 @@ import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceDTO;
 import com.jeeplus.test.program.configuration.fileDict.domain.ProgramFileDict;
 import com.jeeplus.test.program.configuration.fileDict.service.ProgramFileDictService;
 import com.jeeplus.test.program.configuration.fileDict.service.dto.ProgramFileDictDTO;
+import com.jeeplus.test.program.configuration.projectList.service.dto.ProjectListDto;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -62,6 +65,18 @@ public class FinanceInvoiceController {
     }
 
     /**
+     * 查询发票号是否存在
+     * @param number
+     * @return
+     */
+    @ApiLog("查询发票号是否存在")
+    @GetMapping("queryByNumber")
+    public ResponseEntity queryByNumber(@RequestParam("number") String number, @RequestParam(value="id", required = false) String id) {
+        Boolean bool = financeInvoiceService.queryByNumber ( number, id );
+        return ResponseEntity.ok (bool);
+    }
+
+    /**
      * 保存发票数据
      * @param financeInvoiceDTO
      * @return
@@ -75,6 +90,19 @@ public class FinanceInvoiceController {
     }
 
     /**
+     * 保存发票数据-流程
+     * @param financeInvoiceDTO
+     * @return
+     */
+    @ApiLog(value = "保存发票数据-流程", type = LogTypeEnum.SAVE)
+    @PreAuthorize("hasAnyAuthority('finance:invoice:add','finance:invoice:edit')")
+    @PostMapping("saveForm")
+    public ResponseEntity saveForm(@Valid @RequestBody FinanceInvoiceDTO financeInvoiceDTO) throws Exception {
+        String id = financeInvoiceService.saveForm(financeInvoiceDTO);
+        return ResponseUtil.newInstance().add("businessTable", "finance_invoice").add("businessId", id).ok ("操作成功");
+    }
+
+    /**
      * 删除附件类型
      * @param ids
      * @return
@@ -85,4 +113,16 @@ public class FinanceInvoiceController {
     public ResponseEntity delete(String ids) {
         return financeInvoiceService.deleteByIds(ids);
     }
+
+    /**
+     * 根据id修改状态值status
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "根据id修改状态值status")
+    @PostMapping(value = "/updateStatusById")
+    public ResponseEntity<String> updateStatusById(@RequestBody FinanceInvoiceDTO dto) {
+        String s = financeInvoiceService.updateStatusById(dto);
+        return ResponseEntity.ok(s);
+    }
 }

+ 25 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/domain/FinanceInvoice.java

@@ -118,9 +118,34 @@ public class FinanceInvoice extends BaseEntity {
     private String reconciliationPeople;
 
     /**
+     * 实际开票单位id
+     */
+    private String billingWorkplaceRealId;
+
+    /**
+     * 开票人id
+     */
+    private String billingPeopleId;
+
+    /**
      * 对账地区
      */
     private String reconciliationArea;
 
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     * 流程信息
+     */
+    private String processDefinitionId;
+
     private static final long serialVersionUID = 1L;
 }

+ 66 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/domain/FinanceInvoiceDetail.java

@@ -0,0 +1,66 @@
+package com.jeeplus.test.finance.invoice.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 财务管理-发票明细
+ * @TableName finance_invoice_detail
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("finance_invoice_detail")
+public class FinanceInvoiceDetail extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 发票id
+     */
+    private String invoiceId;
+
+    /**
+     * 发票代码
+     */
+    private String code;
+
+    /**
+     * 发票号
+     */
+    private String number;
+
+    /**
+     * 开票金额(元)
+     */
+    private String account;
+
+    /**
+     * 税率
+     */
+    private String rate;
+
+    /**
+     * 金额
+     */
+    private String amount;
+
+    /**
+     * 税额
+     */
+    private String tax;
+
+    /**
+     * 累计登记金额
+     */
+    private String allAmount;
+
+    private static final long serialVersionUID = 1L;
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/mapper/FinanceInvoiceDetailMapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.test.finance.invoice.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.finance.invoice.domain.FinanceInvoiceDetail;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Entity generator.domain.FinanceInvoiceDetail
+ */
+@Mapper
+public interface FinanceInvoiceDetailMapper extends BaseMapper<FinanceInvoiceDetail> {
+
+}
+
+
+
+

+ 42 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/mapper/xml/FinanceInvoiceDetailMapper.xml

@@ -0,0 +1,42 @@
+<?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.finance.invoice.mapper.FinanceInvoiceDetailMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceDetailDTO">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
+            <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/>
+            <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+            <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+            <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+            <result property="invoiceId" column="invoice_id" jdbcType="VARCHAR"/>
+            <result property="code" column="code" jdbcType="VARCHAR"/>
+            <result property="number" column="number" jdbcType="VARCHAR"/>
+            <result property="account" column="account" jdbcType="VARCHAR"/>
+            <result property="rate" column="rate" jdbcType="VARCHAR"/>
+            <result property="amount" column="amount" jdbcType="VARCHAR"/>
+            <result property="tax" column="tax" jdbcType="VARCHAR"/>
+            <result property="allAmount" column="all_amount" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        fid.id,
+        fid.create_by,
+        fid.create_date,
+        fid.update_by,
+        fid.update_date,
+        fid.del_flag,
+        fid.remarks,
+        fid.invoice_id,
+        fid.code,
+        fid.number,
+        fid.account,
+        fid.rate,
+        fid.amount,
+        fid.tax,
+        fid.all_amount
+    </sql>
+</mapper>

+ 37 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/mapper/xml/FinanceInvoiceMapper.xml

@@ -32,9 +32,33 @@
             <result property="billingPeopleReal" column="billing_people_real" jdbcType="VARCHAR"/>
             <result property="reconciliationPeople" column="reconciliation_people" jdbcType="VARCHAR"/>
             <result property="reconciliationArea" column="reconciliation_area" jdbcType="VARCHAR"/>
+            <result property="billingWorkplaceRealId" column="billing_workplace_real_id" jdbcType="VARCHAR"/>
+            <result property="billingPeopleId" column="billing_people_id" jdbcType="VARCHAR"/>
+            <result property="status" column="status" jdbcType="VARCHAR"/>
+            <result property="procInsId" column="proc_ins_id" jdbcType="VARCHAR"/>
+            <result property="processDefinitionId" column="process_definition_id" jdbcType="VARCHAR"/>
             <collection property="financeInvoiceBaseDTOList" column="id" select="getBaseList" ofType="com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceBaseDTO"></collection>
+            <collection property="financeInvoiceDetailDTOList" column="id" select="getFidList" ofType="com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceDetailDTO"></collection>
     </resultMap>
 
+    <sql id="FID_Column_List">
+        fid.id,
+        fid.create_by,
+        fid.create_date,
+        fid.update_by,
+        fid.update_date,
+        fid.del_flag,
+        fid.remarks,
+        fid.invoice_id,
+        fid.code,
+        fid.number,
+        fid.account,
+        fid.rate,
+        fid.amount,
+        fid.tax,
+        fid.all_amount
+    </sql>
+
     <sql id="FIB_Column_List">
         fib.id,
         fib.create_by,
@@ -80,9 +104,21 @@
         fi.collect_date,
         fi.billing_people_real,
         fi.reconciliation_people,
-        fi.reconciliation_area
+        fi.reconciliation_area,
+        fi.billing_workplace_real_id,
+        fi.billing_people_id,
+        fi.status,
+        fi.proc_ins_id,
+        fi.process_definition_id
     </sql>
 
+    <select id="getFidList" resultType="com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceDetailDTO">
+        select
+        <include refid="FID_Column_List"></include>
+        from finance_invoice_detail fid
+        where fid.del_flag = '0' and fid.invoice_id = ${id}
+    </select>
+
     <select id="getBaseList" resultType="com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceBaseDTO">
         select
         <include refid="FIB_Column_List"></include>

+ 138 - 7
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/service/FinanceInvoiceService.java

@@ -12,25 +12,33 @@ import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.sys.utils.UserUtils;
 import com.jeeplus.test.finance.invoice.domain.FinanceInvoice;
 import com.jeeplus.test.finance.invoice.domain.FinanceInvoiceBase;
+import com.jeeplus.test.finance.invoice.domain.FinanceInvoiceDetail;
 import com.jeeplus.test.finance.invoice.mapper.FinanceInvoiceBaseMapper;
+import com.jeeplus.test.finance.invoice.mapper.FinanceInvoiceDetailMapper;
 import com.jeeplus.test.finance.invoice.mapper.FinanceInvoiceMapper;
 import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceBaseDTO;
 import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceDTO;
+import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceDetailDTO;
 import com.jeeplus.test.finance.invoice.service.mapstruct.FinanceInvoiceBaseWrapper;
+import com.jeeplus.test.finance.invoice.service.mapstruct.FinanceInvoiceDetailWrapper;
 import com.jeeplus.test.finance.invoice.service.mapstruct.FinanceInvoiceWrapper;
 import com.jeeplus.test.mould.service.SerialnumTplService;
-import com.jeeplus.test.program.configuration.fileDict.domain.ProgramFileDict;
-import com.jeeplus.test.program.configuration.fileDict.mapper.ProgramFileDictMapper;
-import com.jeeplus.test.program.configuration.fileDict.service.dto.ProgramFileDictDTO;
-import com.jeeplus.test.program.configuration.fileDict.service.mapstruct.ProgramFileDictWrapper;
-import com.jeeplus.test.roster.service.dto.RosterBaseDTO;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.jeeplus.test.oss.domain.WorkAttachment;
+import com.jeeplus.test.oss.mapper.OssServiceMapper;
+import com.jeeplus.test.workContract.mapper.WorkContractInfoMapper;
+import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
+import org.flowable.editor.language.json.converter.util.CollectionUtils;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
+import java.util.UUID;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 @Service
@@ -42,7 +50,13 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
     @Resource
     private FinanceInvoiceBaseMapper financeInvoiceBaseMapper;
     @Resource
+    private FinanceInvoiceDetailMapper financeInvoiceDetailMapper;
+    @Resource
     private SerialnumTplService serialnumTplService;
+    @Resource
+    private OssServiceMapper ossServiceMapper;
+    @Resource
+    private WorkContractInfoMapper workContractInfoMapper;
 
     public IPage<FinanceInvoiceDTO> findList(Page<FinanceInvoiceDTO> page, QueryWrapper<FinanceInvoice> queryWrapper){
         queryWrapper.eq("fi.del_flag","0");
@@ -53,10 +67,19 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
 
         FinanceInvoiceDTO financeInvoiceDTO = financeInvoiceMapper.queryById(id);
 
+        // 查询附件信息
+        List<WorkAttachmentDto> fileList = workContractInfoMapper.findDtos(id);
+        if (CollectionUtils.isNotEmpty(fileList)) {
+            for (WorkAttachmentDto i : fileList) {
+                i.setCreateBy(UserUtils.get(i.getBy()));
+            }
+        }
+        financeInvoiceDTO.setWorkAttachmentDtoList(fileList);
+
         return financeInvoiceDTO;
     }
 
-    public ResponseEntity saveInvoice(FinanceInvoiceDTO financeInvoiceDTO) throws Exception{
+    public String saveForm(FinanceInvoiceDTO financeInvoiceDTO) throws Exception{
         FinanceInvoice financeInvoice = FinanceInvoiceWrapper.INSTANCE.toEntity(financeInvoiceDTO);
         if (ObjectUtil.isNotEmpty(financeInvoice)) {
             if(StringUtils.isBlank(financeInvoice.getId())){
@@ -69,6 +92,7 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
         }
         this.saveOrUpdate(financeInvoice);
         if (ObjectUtil.isNotEmpty(financeInvoiceDTO)) {
+            // 基本信息保存
             if(CollectionUtil.isNotEmpty(financeInvoiceDTO.getFinanceInvoiceBaseDTOList())){
                 List<String> delIds = financeInvoiceDTO.getFinanceInvoiceBaseDTOList().stream().distinct().filter(item->{
                     if(StringUtils.isNotBlank(item.getId())){
@@ -96,14 +120,121 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
                 financeInvoiceBaseMapper.delete(new QueryWrapper<FinanceInvoiceBase>().lambda()
                         .eq(FinanceInvoiceBase::getInvoiceId,financeInvoice.getId()));
             }
+            // 附件保存
+            if(CollectionUtil.isNotEmpty(financeInvoiceDTO.getWorkAttachmentDtoList())){
+                List<String> delIds = financeInvoiceDTO.getWorkAttachmentDtoList().stream().distinct().filter(item -> {
+                    if (StringUtils.isNotBlank(item.getId())) {
+                        return true;
+                    }
+                    return false;
+                }).map(WorkAttachmentDto::getId).collect(Collectors.toList());
+                if(CollectionUtil.isNotEmpty(delIds)){
+                    ossServiceMapper.delete(new QueryWrapper<WorkAttachment>().lambda()
+                            .eq(WorkAttachment::getAttachmentId,financeInvoice.getId())
+                            .notIn(WorkAttachment::getId,delIds));
+                }else{
+                    ossServiceMapper.delete(new QueryWrapper<WorkAttachment>().lambda().eq(WorkAttachment::getAttachmentId,financeInvoice.getId()));
+                }
+                //获取当前登录人信息
+                UserDTO userDTO = UserUtils.getCurrentUserDTO();
+                AtomicInteger j = new AtomicInteger(1);
+                List<WorkAttachmentDto> collect = financeInvoiceDTO.getWorkAttachmentDtoList().stream().filter(item -> {
+                    if (StringUtils.isNotBlank(item.getId())) {
+                        return false;
+                    }
+                    return true;
+                }).collect(Collectors.toList());
+                collect.forEach(item->{
+                    this.saveFiles(item,financeInvoice.getId(),userDTO,j);
+                    j.getAndIncrement();
+                });
+            }else{
+                ossServiceMapper.delete(new QueryWrapper<WorkAttachment>().lambda().eq(WorkAttachment::getAttachmentId,financeInvoice.getId()));
+            }
+            // 发票明细保存
+            if(CollectionUtil.isNotEmpty(financeInvoiceDTO.getFinanceInvoiceDetailDTOList())){
+                List<String> delIds = financeInvoiceDTO.getFinanceInvoiceDetailDTOList().stream().distinct().filter(item -> {
+                    if (StringUtils.isNotBlank(item.getId())) {
+                        return true;
+                    }
+                    return false;
+                }).map(FinanceInvoiceDetailDTO::getId).collect(Collectors.toList());
+                if(CollectionUtil.isNotEmpty(delIds)){
+                    financeInvoiceDetailMapper.delete(new QueryWrapper<FinanceInvoiceDetail>().lambda()
+                            .eq(FinanceInvoiceDetail::getInvoiceId,financeInvoice.getId())
+                            .notIn(FinanceInvoiceDetail::getId,delIds));
+                }else{
+                    financeInvoiceDetailMapper.delete(new QueryWrapper<FinanceInvoiceDetail>().lambda().eq(FinanceInvoiceDetail::getInvoiceId,financeInvoice.getId()));
+                }
+                financeInvoiceDTO.getFinanceInvoiceDetailDTOList().stream().forEach(item->{
+                    FinanceInvoiceDetail financeInvoiceDetail = FinanceInvoiceDetailWrapper.INSTANCE.toEntity(item);
+                    if(StringUtils.isNotBlank(financeInvoiceDetail.getId())){
+                        financeInvoiceDetailMapper.updateById(financeInvoiceDetail);
+                    }else{
+                        financeInvoiceDetail.setInvoiceId(financeInvoice.getId());
+                        financeInvoiceDetailMapper.insert(financeInvoiceDetail);
+                    }
+                });
+            }else{
+                financeInvoiceDetailMapper.delete(new QueryWrapper<FinanceInvoiceDetail>().lambda().eq(FinanceInvoiceDetail::getInvoiceId,financeInvoice.getId()));
+            }
         }
+        return financeInvoice.getId();
+    }
 
+    public ResponseEntity saveInvoice(FinanceInvoiceDTO financeInvoiceDTO) throws Exception{
+        this.saveForm(financeInvoiceDTO);
         return ResponseEntity.ok("保存成功");
     }
 
+    /**
+     * 添加附件
+     * @param item 要添加的附件信息
+     * @param id 附件id: attachmentId
+     * @param userDTO 当前登录人信息
+     * @param j 排序序号
+     */
+    public void saveFiles(WorkAttachmentDto item,String id,UserDTO userDTO,AtomicInteger j){
+        WorkAttachment i = new WorkAttachment();
+        //包含了url、size、name
+        i.setId(UUID.randomUUID().toString().replace("-", ""));
+        i.setCreateDate(new Date());
+        i.setUpdateDate(new Date());
+        i.setDelFlag(0);
+        i.setUrl(item.getUrl());
+        //文件类型处理
+        List<String> strings = Arrays.asList(item.getName().split("\\."));
+        if (CollectionUtils.isNotEmpty(strings)) {
+            i.setType(strings.get(1));
+        }
+        i.setAttachmentId(id);
+        i.setAttachmentName(item.getName());
+        i.setAttachmentFlag("invoice");
+        i.setFileSize(item.getSize());
+        i.setSort(j.get());
+        ossServiceMapper.insertWorkAttachment(i, userDTO);
+    }
+
     public ResponseEntity deleteByIds(String ids) {
         String idArray[] =ids.split(",");
         this.removeByIds (Lists.newArrayList (idArray));
         return ResponseEntity.ok ("删除成功");
     }
+
+    public Boolean queryByNumber(String number, String id) {
+        List<FinanceInvoiceDetail> financeInvoiceDetails = financeInvoiceDetailMapper.selectList(new QueryWrapper<FinanceInvoiceDetail>().lambda()
+                .eq(FinanceInvoiceDetail::getNumber, number)
+                .eq(FinanceInvoiceDetail::getDelFlag, '0')
+                .ne(StringUtils.isNotBlank(id),FinanceInvoiceDetail::getId,id));
+        if (CollectionUtil.isNotEmpty(financeInvoiceDetails)) {
+            return true;
+        }
+        return false;
+    }
+
+    public String updateStatusById(FinanceInvoiceDTO financeInvoiceDTO) {
+        FinanceInvoice financeInvoice = FinanceInvoiceWrapper.INSTANCE.toEntity(financeInvoiceDTO);
+        financeInvoiceMapper.update(financeInvoice, new QueryWrapper<FinanceInvoice>().lambda().eq(FinanceInvoice::getId, financeInvoice.getId()));
+        return "操作成功";
+    }
 }

+ 43 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/service/dto/FinanceInvoiceDTO.java

@@ -1,10 +1,14 @@
 package com.jeeplus.test.finance.invoice.service.dto;
 
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.jeeplus.core.domain.BaseEntity;
 import com.jeeplus.core.service.dto.BaseDTO;
+import com.jeeplus.test.oss.domain.WorkAttachment;
+import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 import java.util.List;
@@ -102,11 +106,15 @@ public class FinanceInvoiceDTO extends BaseDTO {
     /**
      * 开票时间
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
     private Date billingDate;
 
     /**
      * 领票时间
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
     private Date collectDate;
 
     /**
@@ -125,9 +133,44 @@ public class FinanceInvoiceDTO extends BaseDTO {
     private String reconciliationArea;
 
     /**
+     * 实际开票单位id
+     */
+    private String billingWorkplaceRealId;
+
+    /**
+     * 开票人id
+     */
+    private String billingPeopleId;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     * 流程信息
+     */
+    private String processDefinitionId;
+
+    /**
      * 基础信息
      */
     private List<FinanceInvoiceBaseDTO> financeInvoiceBaseDTOList;
 
+    /**
+     * 附件信息
+     */
+    private List<WorkAttachmentDto> workAttachmentDtoList;
+
+    /**
+     * 发票明细
+     */
+    private List<FinanceInvoiceDetailDTO> financeInvoiceDetailDTOList;
+
     private static final long serialVersionUID = 1L;
 }

+ 63 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/service/dto/FinanceInvoiceDetailDTO.java

@@ -0,0 +1,63 @@
+package com.jeeplus.test.finance.invoice.service.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 财务管理-发票明细
+ * @TableName finance_invoice_detail
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class FinanceInvoiceDetailDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 发票id
+     */
+    private String invoiceId;
+
+    /**
+     * 发票代码
+     */
+    private String code;
+
+    /**
+     * 发票号
+     */
+    private String number;
+
+    /**
+     * 开票金额(元)
+     */
+    private String account;
+
+    /**
+     * 税率
+     */
+    private String rate;
+
+    /**
+     * 金额
+     */
+    private String amount;
+
+    /**
+     * 税额
+     */
+    private String tax;
+
+    /**
+     * 累计登记金额
+     */
+    private String allAmount;
+
+    private static final long serialVersionUID = 1L;
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/service/mapstruct/FinanceInvoiceDetailWrapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.test.finance.invoice.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.finance.invoice.domain.FinanceInvoice;
+import com.jeeplus.test.finance.invoice.domain.FinanceInvoiceDetail;
+import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceDTO;
+import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceDetailDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface FinanceInvoiceDetailWrapper extends EntityWrapper<FinanceInvoiceDetailDTO, FinanceInvoiceDetail>{
+
+        FinanceInvoiceDetailWrapper INSTANCE = Mappers.getMapper(FinanceInvoiceDetailWrapper.class);
+
+}