lizhenhao 2 anni fa
parent
commit
c1441ec081
16 ha cambiato i file con 674 aggiunte e 18 eliminazioni
  1. 43 2
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/controller/FinanceInvoiceController.java
  2. 28 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/domain/FinanceInvoice.java
  3. 46 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/domain/FinanceInvoiceInvalid.java
  4. 51 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/domain/FinanceInvoiceReceivables.java
  5. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/mapper/FinanceInvoiceInvalidMapper.java
  6. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/mapper/FinanceInvoiceReceivablesMapper.java
  7. 34 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/mapper/xml/FinanceInvoiceInvalidMapper.xml
  8. 52 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/mapper/xml/FinanceInvoiceMapper.xml
  9. 36 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/mapper/xml/FinanceInvoiceReceivablesMapper.xml
  10. 138 15
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/service/FinanceInvoiceService.java
  11. 9 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/service/dto/FinanceDTO.java
  12. 72 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/service/dto/FinanceInvoiceDTO.java
  13. 43 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/service/dto/FinanceInvoiceInvalidDTO.java
  14. 54 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/service/dto/FinanceInvoiceReceivablesDTO.java
  15. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/service/mapstruct/FinanceInvoiceInvalidWrapper.java
  16. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/service/mapstruct/FinanceInvoiceReceivablesWrapper.java

+ 43 - 2
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/controller/FinanceInvoiceController.java

@@ -11,7 +11,9 @@ import com.jeeplus.sys.constant.enums.LogTypeEnum;
 import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.test.finance.invoice.domain.FinanceInvoice;
 import com.jeeplus.test.finance.invoice.service.FinanceInvoiceService;
+import com.jeeplus.test.finance.invoice.service.dto.FinanceDTO;
 import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceDTO;
+import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceReceivablesDTO;
 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;
@@ -45,9 +47,9 @@ public class FinanceInvoiceController {
     @ApiLog("查询发票列表")
     @PreAuthorize("hasAuthority('finance:invoice:list')")
     @GetMapping("list")
-    public ResponseEntity<IPage<FinanceInvoiceDTO>> data(FinanceInvoiceDTO financeInvoiceDTO, Page<FinanceInvoiceDTO> page) {
+    public ResponseEntity<IPage<FinanceInvoiceDTO>> data(FinanceInvoiceDTO financeInvoiceDTO, Page<FinanceInvoiceDTO> page) throws Exception {
         IPage<FinanceInvoiceDTO> result = new Page<FinanceInvoiceDTO>();
-        result = financeInvoiceService.findList (page,new QueryWrapper<FinanceInvoice>());
+        result = financeInvoiceService.findList (page,financeInvoiceDTO);
         return ResponseEntity.ok (result);
     }
 
@@ -103,6 +105,33 @@ public class FinanceInvoiceController {
     }
 
     /**
+     * 作废发票数据-流程
+     * @param financeInvoiceDTO
+     * @return
+     */
+    @ApiLog(value = "作废发票数据-流程", type = LogTypeEnum.SAVE)
+    @PreAuthorize("hasAnyAuthority('finance:invoice:add','finance:invoice:edit')")
+    @PostMapping("saveFormInvalid")
+    public ResponseEntity saveFormInvalid(@Valid @RequestBody FinanceInvoiceDTO financeInvoiceDTO) throws Exception {
+        String id = financeInvoiceService.saveFormInvalid(financeInvoiceDTO);
+        return ResponseUtil.newInstance().add("businessTable", "finance_invoice_invalid").add("businessId", id).ok ("操作成功");
+    }
+
+    /**
+     * 根据发票作废数据的id查询发票id
+     * @param id
+     * @return
+     */
+    @GetMapping("queryIdByInvalidId")
+    @ApiOperation(value = "查询发票号是否存在")
+    public ResponseEntity<FinanceDTO> queryIdByInvalidId(@RequestParam String id) {
+        String businessId = financeInvoiceService.queryIdByInvalidId ( id );
+        FinanceDTO financeDTO = new FinanceDTO();
+        financeDTO.setBusinessId(businessId);
+        return ResponseEntity.ok(financeDTO);
+    }
+
+    /**
      * 删除附件类型
      * @param ids
      * @return
@@ -125,4 +154,16 @@ public class FinanceInvoiceController {
         String s = financeInvoiceService.updateStatusById(dto);
         return ResponseEntity.ok(s);
     }
+
+    /**
+     * 确认收款
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "确认收款")
+    @PostMapping(value = "/isReceivables")
+    public ResponseEntity<String> isReceivables(@RequestBody FinanceInvoiceDTO dto) {
+        String s = financeInvoiceService.isReceivables(dto);
+        return ResponseEntity.ok(s);
+    }
 }

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

@@ -5,6 +5,8 @@ import java.util.Date;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.query.Query;
+import com.jeeplus.core.query.QueryType;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -25,11 +27,13 @@ public class FinanceInvoice extends BaseEntity {
     /**
      * 发票类型
      */
+    @Query(tableColumn = "fi.type",type = QueryType.EQ)
     private String type;
 
     /**
      * 发票申请编号
      */
+    @Query(tableColumn = "fi.no",type = QueryType.LIKE)
     private String no;
 
     /**
@@ -40,6 +44,7 @@ public class FinanceInvoice extends BaseEntity {
     /**
      * 实际开票单位
      */
+    @Query(tableColumn = "fi.billing_workplace_real",type = QueryType.LIKE)
     private String billingWorkplaceReal;
 
     /**
@@ -75,11 +80,13 @@ public class FinanceInvoice extends BaseEntity {
     /**
      * 收款类型
      */
+    @Query(tableColumn = "fi.receivables_type",type = QueryType.EQ)
     private String receivablesType;
 
     /**
      * 开票内容
      */
+    @Query(tableColumn = "fi.billing_content",type = QueryType.EQ)
     private String billingContent;
 
     /**
@@ -115,11 +122,13 @@ public class FinanceInvoice extends BaseEntity {
     /**
      * 对账人
      */
+    @Query(tableColumn = "fi.reconciliation_people",type = QueryType.EQ)
     private String reconciliationPeople;
 
     /**
      * 实际开票单位id
      */
+    @Query(tableColumn = "fi.billing_workplace_real_id",type = QueryType.EQ)
     private String billingWorkplaceRealId;
 
     /**
@@ -130,11 +139,13 @@ public class FinanceInvoice extends BaseEntity {
     /**
      * 对账地区
      */
+    @Query(tableColumn = "fi.reconciliation_area",type = QueryType.EQ)
     private String reconciliationArea;
 
     /**
      * 状态
      */
+    @Query(tableColumn = "fi.status",type = QueryType.EQ)
     private String status;
 
     /**
@@ -147,5 +158,22 @@ public class FinanceInvoice extends BaseEntity {
      */
     private String processDefinitionId;
 
+    /**
+     * 是否确认收款
+     */
+    @Query(tableColumn = "fi.receivables_status",type = QueryType.EQ)
+    private String receivablesStatus;
+
+    /**
+     * 是否作废
+     */
+    @Query(tableColumn = "fi.invalid_status",type = QueryType.EQ)
+    private String invalidStatus;
+
+    /**
+     * 收款日期
+     */
+    private Date receivablesDate;
+
     private static final long serialVersionUID = 1L;
 }

+ 46 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/domain/FinanceInvoiceInvalid.java

@@ -0,0 +1,46 @@
+package com.jeeplus.test.finance.invoice.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 财务管理-发票-发票作废
+ * @TableName finance_invoice_invalid
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("finance_invoice_invalid")
+public class FinanceInvoiceInvalid extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 发票id
+     */
+    private String invoiceId;
+
+    /**
+     * 是否作废
+     */
+    private String invalidStatus;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     * 流程信息
+     */
+    private String processDefinitionId;
+
+    private static final long serialVersionUID = 1L;
+}

+ 51 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/domain/FinanceInvoiceReceivables.java

@@ -0,0 +1,51 @@
+package com.jeeplus.test.finance.invoice.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 财务管理-发票-收款明细
+ * @TableName finance_invoice_receivables
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("finance_invoice_receivables")
+public class FinanceInvoiceReceivables extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 发票id
+     */
+    private String invoiceId;
+
+    /**
+     * 汇款单位
+     */
+    private String remittanceUnit;
+
+    /**
+     * 汇款金额
+     */
+    private String remittanceAmount;
+
+    /**
+     * 汇款时间
+     */
+    private Date remittanceDate;
+
+    /**
+     * 是否收款
+     */
+    private String status;
+
+    private static final long serialVersionUID = 1L;
+}

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

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

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

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

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

@@ -0,0 +1,34 @@
+<?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.FinanceInvoiceInvalidMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceInvalidDTO">
+            <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="invalidStatus" column="invalid_status" jdbcType="VARCHAR"/>
+            <result property="procInsId" column="proc_ins_id" jdbcType="VARCHAR"/>
+            <result property="processDefinitionId" column="process_definition_id" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        fii.id,
+        fii.create_by,
+        fii.create_date,
+        fii.update_by,
+        fii.update_date,
+        fii.del_flag,
+        fii.remarks,
+        fii.invoice_id,
+        fii.invalid_status,
+        fii.proc_ins_id,
+        fii.process_definition_id
+    </sql>
+</mapper>

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

@@ -37,10 +37,44 @@
             <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"/>
+            <result property="receivablesStatus" column="receivables_status" jdbcType="VARCHAR"/>
+            <result property="invalidStatus" column="invalid_status" jdbcType="VARCHAR"/>
+            <result property="receivablesDate" column="receivables_date" jdbcType="TIMESTAMP"/>
+            <association property="financeInvoiceInvalidDTO" column="id" select="getFii" javaType="com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceInvalidDTO"></association>
+            <collection property="financeInvoiceReceivablesDTOList" column="id" select="getFirList" ofType="com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceReceivablesDTO"></collection>
             <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="FIR_Column_List">
+        fir.id,
+        fir.create_by,
+        fir.create_date,
+        fir.update_by,
+        fir.update_date,
+        fir.del_flag,
+        fir.remarks,
+        fir.invoice_id,
+        fir.remittance_unit,
+        fir.remittance_amount,
+        fir.remittance_date,
+        fir.status
+    </sql>
+
+    <sql id="FII_Column_List">
+        fii.id,
+        fii.create_by,
+        fii.create_date,
+        fii.update_by,
+        fii.update_date,
+        fii.del_flag,
+        fii.remarks,
+        fii.invoice_id,
+        fii.invalid_status,
+        fii.proc_ins_id,
+        fii.process_definition_id
+    </sql>
+
     <sql id="FID_Column_List">
         fid.id,
         fid.create_by,
@@ -109,9 +143,26 @@
         fi.billing_people_id,
         fi.status,
         fi.proc_ins_id,
-        fi.process_definition_id
+        fi.process_definition_id,
+        fi.receivables_status,
+        fi.invalid_status,
+        fi.receivables_date
     </sql>
 
+    <select id="getFii" resultType="com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceInvalidDTO">
+        select
+        <include refid="FII_Column_List"></include>
+        from finance_invoice_invalid fii
+        where fii.del_flag = '0' and fii.invoice_id = ${id}
+    </select>
+
+    <select id="getFirList" resultType="com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceReceivablesDTO">
+        select
+        <include refid="FIR_Column_List"></include>
+        from finance_invoice_receivables fir
+        where fir.del_flag = '0' and fir.invoice_id = ${id}
+    </select>
+
     <select id="getFidList" resultType="com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceDetailDTO">
         select
         <include refid="FID_Column_List"></include>

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

@@ -0,0 +1,36 @@
+<?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.FinanceInvoiceReceivablesMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceReceivablesDTO">
+            <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="remittanceUnit" column="remittance_unit" jdbcType="VARCHAR"/>
+            <result property="remittanceAmount" column="remittance_amount" jdbcType="VARCHAR"/>
+            <result property="remittanceDate" column="remittance_date" jdbcType="TIMESTAMP"/>
+            <result property="status" column="status" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        fir.id,
+        fir.create_by,
+        fir.create_date,
+        fir.update_by,
+        fir.update_date,
+        fir.del_flag,
+        fir.remarks,
+        fir.invoice_id,
+        fir.remittance_unit,
+        fir.remittance_amount,
+        fir.remittance_date,
+        fir.status
+    </sql>
+</mapper>

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

@@ -2,29 +2,27 @@ package com.jeeplus.test.finance.invoice.service;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
+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.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
+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.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.domain.*;
+import com.jeeplus.test.finance.invoice.mapper.*;
 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.finance.invoice.service.dto.FinanceInvoiceReceivablesDTO;
+import com.jeeplus.test.finance.invoice.service.mapstruct.*;
 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.rank.domain.Rank;
 import com.jeeplus.test.workContract.mapper.WorkContractInfoMapper;
 import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
 import org.flowable.editor.language.json.converter.util.CollectionUtils;
@@ -34,12 +32,11 @@ 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.text.SimpleDateFormat;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 @Service
 @Transactional
@@ -52,14 +49,75 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
     @Resource
     private FinanceInvoiceDetailMapper financeInvoiceDetailMapper;
     @Resource
+    private FinanceInvoiceReceivablesMapper financeInvoiceReceivablesMapper;
+    @Resource
+    private FinanceInvoiceInvalidMapper financeInvoiceInvalidMapper;
+    @Resource
     private SerialnumTplService serialnumTplService;
     @Resource
     private OssServiceMapper ossServiceMapper;
     @Resource
     private WorkContractInfoMapper workContractInfoMapper;
 
-    public IPage<FinanceInvoiceDTO> findList(Page<FinanceInvoiceDTO> page, QueryWrapper<FinanceInvoice> queryWrapper){
+    public IPage<FinanceInvoiceDTO> findList(Page<FinanceInvoiceDTO> page, FinanceInvoiceDTO financeInvoiceDTO) throws Exception{
+        QueryWrapper<FinanceInvoice> queryWrapper = QueryWrapperGenerator.buildQueryCondition ( FinanceInvoiceWrapper.INSTANCE.toEntity(financeInvoiceDTO), FinanceInvoice.class );
         queryWrapper.eq("fi.del_flag","0");
+        ArrayList<String> searchIdList = new ArrayList<>();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        if (ObjectUtil.isNotEmpty(financeInvoiceDTO)) {
+            if (StringUtils.isNotBlank(financeInvoiceDTO.getNumber())) {
+                List<FinanceInvoiceDetail> financeInvoiceDetails = financeInvoiceDetailMapper.selectList(new LambdaQueryWrapper<FinanceInvoiceDetail>().like(FinanceInvoiceDetail::getNumber, financeInvoiceDTO.getNumber()));
+                List<String> ids = financeInvoiceDetails.stream().distinct().map(FinanceInvoiceDetail::getInvoiceId).collect(Collectors.toList());
+                ids.stream().forEach(item->{
+                    searchIdList.add(item);
+                });
+            }
+            if (StringUtils.isNotBlank(financeInvoiceDTO.getAccountBegin())&&StringUtils.isNotBlank(financeInvoiceDTO.getAccountEnd())) {
+                List<FinanceInvoice> financeInvoices = financeInvoiceMapper.selectList(new LambdaQueryWrapper<FinanceInvoice>()
+                        .between(FinanceInvoice::getAccount, financeInvoiceDTO.getAccountBegin(), financeInvoiceDTO.getAccountEnd()));
+                List<String> ids = financeInvoices.stream().distinct().map(FinanceInvoice::getId).collect(Collectors.toList());
+                ids.stream().forEach(item->{
+                    searchIdList.add(item);
+                });
+            }
+            if (StringUtils.isNotBlank(financeInvoiceDTO.getBillingDateBegin())&&StringUtils.isNotBlank(financeInvoiceDTO.getBillingDateEnd())) {
+                List<FinanceInvoice> financeInvoices = financeInvoiceMapper.selectList(new LambdaQueryWrapper<FinanceInvoice>()
+                        .between(FinanceInvoice::getBillingDate, sdf.parse(financeInvoiceDTO.getBillingDateBegin()), sdf.parse(financeInvoiceDTO.getBillingDateEnd())));
+                List<String> ids = financeInvoices.stream().distinct().map(FinanceInvoice::getId).collect(Collectors.toList());
+                ids.stream().forEach(item->{
+                    searchIdList.add(item);
+                });
+            }
+            if (StringUtils.isNotBlank(financeInvoiceDTO.getRemittanceDateBegin())&&StringUtils.isNotBlank(financeInvoiceDTO.getRemittanceDateEnd())) {
+                List<FinanceInvoice> financeInvoices = financeInvoiceMapper.selectList(new LambdaQueryWrapper<FinanceInvoice>()
+                        .between(FinanceInvoice::getReceivablesDate, sdf.parse(financeInvoiceDTO.getRemittanceDateBegin()), sdf.parse(financeInvoiceDTO.getRemittanceDateEnd())));
+                List<String> ids = financeInvoices.stream().distinct().map(FinanceInvoice::getId).collect(Collectors.toList());
+                ids.stream().forEach(item->{
+                    searchIdList.add(item);
+                });
+            }
+            if (StringUtils.isNotBlank(financeInvoiceDTO.getProgramId())||StringUtils.isNotBlank(financeInvoiceDTO.getProgramName())) {
+                if (StringUtils.isNotBlank(financeInvoiceDTO.getProgramId())){
+                    List<FinanceInvoiceBase> financeInvoiceBaseList = financeInvoiceBaseMapper.selectList(new LambdaQueryWrapper<FinanceInvoiceBase>()
+                            .eq(FinanceInvoiceBase::getProgramId,financeInvoiceDTO.getProgramId()));
+                    List<String> ids = financeInvoiceBaseList.stream().distinct().map(FinanceInvoiceBase::getInvoiceId).collect(Collectors.toList());
+                    ids.stream().forEach(item->{
+                        searchIdList.add(item);
+                    });
+                }else{
+                    List<FinanceInvoiceBase> financeInvoiceBaseList = financeInvoiceBaseMapper.selectList(new LambdaQueryWrapper<FinanceInvoiceBase>()
+                            .eq(FinanceInvoiceBase::getProgramName,financeInvoiceDTO.getProgramName()));
+                    List<String> ids = financeInvoiceBaseList.stream().distinct().map(FinanceInvoiceBase::getInvoiceId).collect(Collectors.toList());
+                    ids.stream().forEach(item->{
+                        searchIdList.add(item);
+                    });
+                }
+            }
+        }
+        if (CollectionUtil.isNotEmpty(searchIdList)){
+            List<String> ids = searchIdList.stream().distinct().collect(Collectors.toList());
+            queryWrapper.in("fi.id",ids);
+        }
         return financeInvoiceMapper.findList(page,queryWrapper);
     }
 
@@ -74,7 +132,9 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
                 i.setCreateBy(UserUtils.get(i.getBy()));
             }
         }
-        financeInvoiceDTO.setWorkAttachmentDtoList(fileList);
+        if(CollectionUtil.isNotEmpty(fileList)){
+            financeInvoiceDTO.setWorkAttachmentDtoList(fileList);
+        }
 
         return financeInvoiceDTO;
     }
@@ -178,6 +238,51 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
             }else{
                 financeInvoiceDetailMapper.delete(new QueryWrapper<FinanceInvoiceDetail>().lambda().eq(FinanceInvoiceDetail::getInvoiceId,financeInvoice.getId()));
             }
+            // 收款明细保存
+            if(CollectionUtil.isNotEmpty(financeInvoiceDTO.getFinanceInvoiceReceivablesDTOList())){
+                List<String> delIds = financeInvoiceDTO.getFinanceInvoiceReceivablesDTOList().stream().distinct().filter(item -> {
+                    if (StringUtils.isNotBlank(item.getId())) {
+                        return true;
+                    }
+                    return false;
+                }).map(FinanceInvoiceReceivablesDTO::getId).collect(Collectors.toList());
+                if(CollectionUtil.isNotEmpty(delIds)){
+                    financeInvoiceReceivablesMapper.delete(new QueryWrapper<FinanceInvoiceReceivables>().lambda()
+                            .eq(FinanceInvoiceReceivables::getInvoiceId,financeInvoice.getId())
+                            .notIn(FinanceInvoiceReceivables::getId,delIds));
+                }else{
+                    financeInvoiceReceivablesMapper.delete(new QueryWrapper<FinanceInvoiceReceivables>().lambda().eq(FinanceInvoiceReceivables::getInvoiceId,financeInvoice.getId()));
+                }
+                financeInvoiceDTO.getFinanceInvoiceReceivablesDTOList().stream().forEach(item->{
+                    FinanceInvoiceReceivables financeInvoiceReceivables = FinanceInvoiceReceivablesWrapper.INSTANCE.toEntity(item);
+                    if(StringUtils.isNotBlank(financeInvoiceReceivables.getId())){
+                        financeInvoiceReceivablesMapper.updateById(financeInvoiceReceivables);
+                    }else{
+                        financeInvoiceReceivables.setInvoiceId(financeInvoice.getId());
+                        financeInvoiceReceivablesMapper.insert(financeInvoiceReceivables);
+                    }
+                });
+            }else{
+                financeInvoiceReceivablesMapper.delete(new QueryWrapper<FinanceInvoiceReceivables>().lambda().eq(FinanceInvoiceReceivables::getInvoiceId,financeInvoice.getId()));
+            }
+            // 作废信息保存
+            if(ObjectUtil.isNotEmpty(financeInvoiceDTO.getFinanceInvoiceInvalidDTO())){
+                FinanceInvoiceInvalid financeInvoiceInvalid = FinanceInvoiceInvalidWrapper.INSTANCE.toEntity(financeInvoiceDTO.getFinanceInvoiceInvalidDTO());
+                if(StringUtils.isNotBlank(financeInvoiceInvalid.getId())){
+                    financeInvoiceInvalidMapper.update(financeInvoiceInvalid,
+                            new QueryWrapper<FinanceInvoiceInvalid>().lambda().eq(FinanceInvoiceInvalid::getId,financeInvoiceInvalid.getId()));
+                }else{
+                    financeInvoiceInvalid.setInvalidStatus("0");
+                    financeInvoiceInvalid.setInvoiceId(financeInvoice.getId());
+                    financeInvoiceInvalidMapper.insert(financeInvoiceInvalid);
+                }
+            }else{
+                financeInvoiceInvalidMapper.delete(new QueryWrapper<FinanceInvoiceInvalid>().lambda().eq(FinanceInvoiceInvalid::getInvoiceId,financeInvoice.getId()));
+                FinanceInvoiceInvalid financeInvoiceInvalid = new FinanceInvoiceInvalid();
+                financeInvoiceInvalid.setInvalidStatus("0");
+                financeInvoiceInvalid.setInvoiceId(financeInvoice.getId());
+                financeInvoiceInvalidMapper.insert(financeInvoiceInvalid);
+            }
         }
         return financeInvoice.getId();
     }
@@ -187,6 +292,13 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
         return ResponseEntity.ok("保存成功");
     }
 
+    public String saveFormInvalid(FinanceInvoiceDTO financeInvoiceDTO) throws Exception{
+        String invoiceId = this.saveForm(financeInvoiceDTO);
+        List<FinanceInvoiceInvalid> financeInvoiceInvalids = financeInvoiceInvalidMapper.selectList(
+                new QueryWrapper<FinanceInvoiceInvalid>().lambda().eq(FinanceInvoiceInvalid::getInvoiceId, invoiceId));
+        return financeInvoiceInvalids.get(0).getId();
+    }
+
     /**
      * 添加附件
      * @param item 要添加的附件信息
@@ -232,9 +344,20 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
         return false;
     }
 
+    public String queryIdByInvalidId(String id) {
+        FinanceInvoiceInvalid financeInvoiceInvalid = financeInvoiceInvalidMapper.selectById(id);
+        return financeInvoiceInvalid.getInvoiceId();
+    }
+
     public String updateStatusById(FinanceInvoiceDTO financeInvoiceDTO) {
         FinanceInvoice financeInvoice = FinanceInvoiceWrapper.INSTANCE.toEntity(financeInvoiceDTO);
         financeInvoiceMapper.update(financeInvoice, new QueryWrapper<FinanceInvoice>().lambda().eq(FinanceInvoice::getId, financeInvoice.getId()));
         return "操作成功";
     }
+
+    public String isReceivables(FinanceInvoiceDTO financeInvoiceDTO) {
+        FinanceInvoice financeInvoice = FinanceInvoiceWrapper.INSTANCE.toEntity(financeInvoiceDTO);
+        financeInvoiceMapper.update(financeInvoice, new QueryWrapper<FinanceInvoice>().lambda().eq(FinanceInvoice::getId, financeInvoice.getId()));
+        return "操作成功";
+    }
 }

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

@@ -0,0 +1,9 @@
+package com.jeeplus.test.finance.invoice.service.dto;
+
+import lombok.Data;
+
+@Data
+public class FinanceDTO {
+
+    private String businessId;
+}

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

@@ -158,6 +158,23 @@ public class FinanceInvoiceDTO extends BaseDTO {
     private String processDefinitionId;
 
     /**
+     * 是否确认收款
+     */
+    private String receivablesStatus;
+
+    /**
+     * 是否作废
+     */
+    private String invalidStatus;
+
+    /**
+     * 收款日期
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date receivablesDate;
+
+    /**
      * 基础信息
      */
     private List<FinanceInvoiceBaseDTO> financeInvoiceBaseDTOList;
@@ -172,5 +189,60 @@ public class FinanceInvoiceDTO extends BaseDTO {
      */
     private List<FinanceInvoiceDetailDTO> financeInvoiceDetailDTOList;
 
+    /**
+     * 收款明细
+     */
+    private List<FinanceInvoiceReceivablesDTO> financeInvoiceReceivablesDTOList;
+
+    /**
+     * 作废信息
+     */
+    private FinanceInvoiceInvalidDTO financeInvoiceInvalidDTO;
+
+    /**
+     * 发票号
+     */
+    private String number;
+
+    /**
+     * 开票总金额 Begin
+     */
+    private String accountBegin;
+
+    /**
+     * 开票总金额 End
+     */
+    private String accountEnd;
+
+    /**
+     * 开票日期 Begin
+     */
+    private String billingDateBegin;
+
+    /**
+     * 开票日期 End
+     */
+    private String billingDateEnd;
+
+    /**
+     * 收款日期Begin
+     */
+    private String remittanceDateBegin;
+
+    /**
+     * 收款日期End
+     */
+    private String remittanceDateEnd;
+
+    /**
+     * 项目名称
+     */
+    private String programName;
+
+    /**
+     * 项目id
+     */
+    private String programId;
+
     private static final long serialVersionUID = 1L;
 }

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

@@ -0,0 +1,43 @@
+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_invalid
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class FinanceInvoiceInvalidDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 发票id
+     */
+    private String invoiceId;
+
+    /**
+     * 是否作废
+     */
+    private String invalidStatus;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     * 流程信息
+     */
+    private String processDefinitionId;
+
+    private static final long serialVersionUID = 1L;
+}

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

@@ -0,0 +1,54 @@
+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 lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * 财务管理-发票-收款明细
+ * @TableName finance_invoice_receivables
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class FinanceInvoiceReceivablesDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 发票id
+     */
+    private String invoiceId;
+
+    /**
+     * 汇款单位
+     */
+    private String remittanceUnit;
+
+    /**
+     * 汇款金额
+     */
+    private String remittanceAmount;
+
+    /**
+     * 汇款时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date remittanceDate;
+
+    /**
+     * 是否收款
+     */
+    private String status;
+
+    private static final long serialVersionUID = 1L;
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/service/mapstruct/FinanceInvoiceInvalidWrapper.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.FinanceInvoiceInvalid;
+import com.jeeplus.test.finance.invoice.domain.FinanceInvoiceReceivables;
+import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceInvalidDTO;
+import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceReceivablesDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface FinanceInvoiceInvalidWrapper extends EntityWrapper<FinanceInvoiceInvalidDTO, FinanceInvoiceInvalid>{
+
+        FinanceInvoiceInvalidWrapper INSTANCE = Mappers.getMapper(FinanceInvoiceInvalidWrapper.class);
+
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/finance/invoice/service/mapstruct/FinanceInvoiceReceivablesWrapper.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.FinanceInvoiceBase;
+import com.jeeplus.test.finance.invoice.domain.FinanceInvoiceReceivables;
+import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceBaseDTO;
+import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceReceivablesDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface FinanceInvoiceReceivablesWrapper extends EntityWrapper<FinanceInvoiceReceivablesDTO, FinanceInvoiceReceivables>{
+
+        FinanceInvoiceReceivablesWrapper INSTANCE = Mappers.getMapper(FinanceInvoiceReceivablesWrapper.class);
+
+}