Browse Source

修改导出合同数据

caizhen 4 years ago
parent
commit
07aaa10e3c

+ 34 - 84
lift-business-service/src/main/java/cn/com/ty/lift/business/contract/dao/entity/model/response/ContractExportDto.java

@@ -21,35 +21,17 @@ public class ContractExportDto {
      */
     private String contractCode;
 
-    /**
-     * 项目名称
-     * 通过projectId关联表查询
-     */
-    private String projectName;
-
-
-    /**
-     * 项目内容
-     */
-    private String projectContent;
-
-
-
     /**
      * 客户名称
      */
     private String memberName;
 
-
     /**
-     * 区域名称
+     * 收付款类型
+     * 维保,大修
      */
-    private String regionName;
+    private String payType;
 
-    /**
-     * 合同金额
-     */
-    private BigDecimal moneys;
 
     /**
      * 收付款编号
@@ -60,115 +42,83 @@ public class ContractExportDto {
 
 
     /**
-     * 收付款类型
-     * 维保,大修
-     */
-    private String payType;
-
-    /**
-     * 期数
-     * 关联payment
-     */
-    private String periods;
-
-    /**
-     * 收款负责人
-     * payment
-     */
-    private String collectionMan;
-
-    /**
-     * 应收时间
+     * 项目名称
+     * 通过projectId关联表查询
      */
-    private String planDate;
+    private String projectName;
 
-    /**
-     * 开票金额
-     */
-    private BigDecimal amountInvoice;
 
     /**
-     * 开票日期
+     * 项目内容
      */
-    private LocalDateTime billingDate;
+    private String projectContent;
 
     /**
-     * 发票类型
+     * 本期应收
      */
-    private Integer invoiceType;
+    private BigDecimal nowMoney;
 
 
     /**
-     * 实收时间
+     * 合同金额
      */
-    private String workDate;
+    private BigDecimal moneys;
 
     /**
-     * 实收金额
+     * 应收时间
      */
-    private BigDecimal workMoney;
+    private String planDate;
 
 
     /**
-     * 本期应收
+     * 期数
+     * 关联payment
      */
-    private BigDecimal nowMoney;
+    private String periods;
 
-    /**
-     * 账期
-     */
-    private Integer paymentDays;
 
     /**
-     * 合同来源
-     *  1 : 商保新增 ;2 : 免保转签;3 : 续签;4 : 免保
+     * 收款负责人
+     * payment
      */
-    private String source;
-
+    private String collectionMan;
 
     /**
-     * 合同类型
-     * 合同类型(1 : 半包;2:大包;3:清包;4:全包;5:大修)
+     * 区域名称
      */
-    private String type;
+    private String regionName;
 
-    /**
-     * 合同开始时间
-     */
-    private LocalDate starDate;
 
     /**
-     * 合同结束时间
+     * 账期
      */
-    private LocalDate endDate;
+    private Integer paymentDays;
 
 
     /**
-     * 台量
+     * 开票金额
      */
-    private Integer liftNum;
+    private BigDecimal amountInvoice;
 
     /**
-     * 签约时间
+     * 开票日期
      */
-    private LocalDate givenDate;
+    private LocalDateTime billingDate;
 
     /**
-     * 签约人
+     * 发票类型
      */
-    private String givenUser;
+    private Integer invoiceType;
 
 
     /**
-     * 未收
+     * 实收时间
      */
-    private BigDecimal NoPayMoney;
-
+    private String workDate;
 
     /**
-     * 配件条款
+     * 实收金额
      */
-    private String partsRules;
-
+    private BigDecimal workMoney;
 
 }

+ 91 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/contract/dao/entity/model/response/ContractManageExportDto.java

@@ -0,0 +1,91 @@
+package cn.com.ty.lift.business.contract.dao.entity.model.response;
+
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * 合同管理导出数据
+ */
+public class ContractManageExportDto {
+
+    /**
+     * 项目名称
+     * 通过projectId关联表查询
+     */
+    private String projectName;
+
+
+    /**
+     * 客户名称
+     */
+    private String memberName;
+
+
+    /**
+     * 区域名称
+     */
+    private String regionName;
+
+    /**
+     * 合同编号
+     */
+    private String contractCode;
+
+
+    /**
+     * 合同来源
+     *  1 : 商保新增 ;2 : 免保转签;3 : 续签;4 : 免保
+     */
+    private String source;
+
+
+    /**
+     * 合同类型
+     * 合同类型(1 : 半包;2:大包;3:清包;4:全包;5:大修)
+     */
+    private String type;
+
+    /**
+     * 合同开始时间
+     */
+    private LocalDate starDate;
+
+    /**
+     * 合同结束时间
+     */
+    private LocalDate endDate;
+
+
+    /**
+     * 台量
+     */
+    private Integer liftNum;
+
+    /**
+     * 签约时间
+     */
+    private LocalDate givenDate;
+
+    /**
+     * 签约人
+     */
+    private String givenUser;
+
+    /**
+     * 实收金额
+     */
+    private BigDecimal workMoney;
+
+
+    /**
+     * 未收
+     */
+    private BigDecimal NoPayMoney;
+
+
+    /**
+     * 配件条款
+     */
+    private String partsRules;
+}

+ 6 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/contract/dao/mapper/ContractsMapper.java

@@ -3,6 +3,7 @@ package cn.com.ty.lift.business.contract.dao.mapper;
 import cn.com.ty.lift.business.contract.dao.entity.Contracts;
 import cn.com.ty.lift.business.contract.dao.entity.model.request.ContractRequest;
 import cn.com.ty.lift.business.contract.dao.entity.model.response.ContractExportDto;
+import cn.com.ty.lift.business.contract.dao.entity.model.response.ContractManageExportDto;
 import cn.com.ty.lift.business.contract.dao.entity.model.response.ContractResponse;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -23,4 +24,9 @@ public interface ContractsMapper extends BaseMapper<Contracts> {
 
     List<ContractExportDto> findAllErContracts(@Param("request")ContractRequest request);
 
+    List<ContractManageExportDto> findAllContractsManageData(@Param("request")ContractRequest request);
+
+    List<ContractManageExportDto> findAllErContractsManageData(@Param("request")ContractRequest request);
+
+
 }

+ 48 - 15
lift-business-service/src/main/java/cn/com/ty/lift/business/contract/service/ContractService.java

@@ -7,19 +7,16 @@ import cn.com.ty.lift.business.contract.dao.entity.ContractsHistory;
 import cn.com.ty.lift.business.contract.dao.entity.Payment;
 import cn.com.ty.lift.business.contract.dao.entity.model.request.ContractRequest;
 import cn.com.ty.lift.business.contract.dao.entity.model.response.ContractExportDto;
+import cn.com.ty.lift.business.contract.dao.entity.model.response.ContractManageExportDto;
 import cn.com.ty.lift.business.contract.dao.entity.model.response.ContractResponse;
 import cn.com.ty.lift.business.contract.dao.mapper.ContractsMapper;
 import cn.com.ty.lift.business.framework.util.MessageUtils;
 import cn.com.ty.lift.business.project.dao.entity.Project;
 import cn.com.ty.lift.business.project.service.ProjectService;
 import cn.com.ty.lift.common.utils.DateUtils;
-import cn.com.ty.lift.common.utils.ValuePool;
 import cn.com.xwy.boot.web.dto.RestResponse;
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.poi.excel.ExcelUtil;
 import cn.hutool.poi.excel.ExcelWriter;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -31,9 +28,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import javax.annotation.Resource;
-import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
-import java.io.File;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.*;
@@ -301,6 +296,9 @@ public class ContractService extends ServiceImpl<ContractsMapper, Contracts> {
          */
         Map<String, String> headerAlias = new LinkedHashMap<>();
 
+        /**
+         * 收款管理数据表头
+         */
         headerAlias.put("contractCode", "合同编号");
         headerAlias.put("memberName", "客户名称");
         headerAlias.put("payType", "收款类型");
@@ -338,19 +336,54 @@ public class ContractService extends ServiceImpl<ContractsMapper, Contracts> {
         /**
          * 生成excel文件
          */
-        //获取根目录
-        ExcelWriter writer = new ExcelWriter(true, "合同数据表");
+        ExcelWriter writer = new ExcelWriter(true, "收款管理");
+        writer.setHeaderAlias(headerAlias);
+        writer.write(contractAllList,true);
+        writer.autoSizeColumnAll();
+        writer.setSheet("合同管理");
+        Map<String, String> headerAliasE = new LinkedHashMap<>();
+        headerAliasE.put("projectName", "项目");
+        headerAliasE.put("memberName", "客户名称");
+        headerAliasE.put("regionName", "区域");
+        headerAliasE.put("contractCode", "合同编号");
+        headerAliasE.put("source","来源");
+        headerAliasE.put("type","合同类型");
+        headerAliasE.put("starDate","开始时间");
+        headerAliasE.put("endDate", "结束时间");
+        headerAliasE.put("liftNum", "台量");
+        headerAliasE.put("moneys", "金额");
+        headerAliasE.put("givenDate", "签订时间");
+        headerAliasE.put("givenUser", "签订人");
+        headerAliasE.put("workMoney", "实收金额");
+        headerAliasE.put("NoPayMoney", "未收金额");
+        headerAliasE.put("partsRules", "配件条款");
+        writer.setHeaderAlias(headerAliasE);
 
-        headerAlias.forEach(writer::addHeaderAlias);
-        String fileName = DateUtils.generateCode() + ".xlsx";
+        /**
+         * 维保/大修合同管理数据
+         */
+        List<ContractManageExportDto> findAllContractsManageData=contractsMapper.findAllContractsManageData(contractRequest);
+
+        /**
+         * 急修数据
+         */
+        List<ContractManageExportDto> findAllErContractsManageData=contractsMapper.findAllErContractsManageData(contractRequest);
+
+        /**
+         * 数据合并
+         */
+        findAllContractsManageData.addAll(findAllErContractsManageData);
+        writer.write(findAllContractsManageData,true);
+        writer.autoSizeColumnAll();
         response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
-        response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
-        try (ServletOutputStream out = response.getOutputStream()) {
-            writer.write(contractAllList, true);
-            writer.autoSizeColumnAll();
-            writer.flush(out, true);
+        String fileName = DateUtils.generateCode() + ".xlsx";
+        response.setHeader("Content-Disposition","attachment;filename="+ fileName + ".xls");
+        try {
+            writer.flush(response.getOutputStream());
+            // 关闭writer,释放内存
             writer.close();
         } catch (IOException e) {
+            e.printStackTrace();
             log.error("合同数据数据导出失败", e);
         }
     }

+ 144 - 52
lift-business-service/src/main/resources/mapper/contract/ContractsMapper.xml

@@ -45,10 +45,10 @@
     </resultMap>
 
     <sql id="Base_Column_List">
-		id, project_id, mt_company_id, code, source, pay_mode, lift_num, moneys, type, status,
+        id, project_id, mt_company_id, code, source, pay_mode, lift_num, moneys, type, status,
 		given_date, given_user, star_date, end_date, create_date, next_id, previous_id, accessory_url, end_reason, remarks,
 		parts_rules
-	</sql>
+    </sql>
 
     <!-- 根据项目、合同号、合同类型、合同状态查询合同管理列表-->
     <select id="findByCondition"
@@ -130,37 +130,6 @@
         <!--合同金额-->
         c.moneys as moneys,
 
-        <!--合同来源-->
-        case c.source when 1 then '商保新增' when 2 then '免保转签' when 3 then '续签' when 4 then '免保' else '暂无' end,
-
-        <!--合同类型-->
-        case c.type when 1 then '半包' when 2 then '半包' when 3 then '清包' when 4 then '全包' when 5 then '大修' else '暂无' end,
-
-        <!--合同开始时间-->
-        c.star_date as starDate,
-
-        <!--合同结束时间-->
-        c.end_date as endDate,
-
-
-        <!--台量-->
-        c.lift_num as liftNum,
-
-
-        <!--金额=合同金额-->
-        <!--签约时间-->
-        c.given_date as givenDate,
-
-        <!--签约人-->
-        c.given_user as givenUser,
-
-        <!--未收-->
-        pay.plan_money - pay.work_money as NoPayMoney,
-
-        <!--配件条款-->
-        c.parts_rules as partsRules,
-
-
         <!--应收日期-->
         pay.plan_date as planDate,
 
@@ -240,6 +209,72 @@
         erc.cost_money as nowMoney,
         <!--合同金额-->
         c.moneys as moneys,
+        <!--应收日期-->
+        erc.cost_date as planDate,
+        <!--期数-->
+        <!--收款责任人-->
+        erc.collection_man as collectionMan,
+        <!--区域-->
+        (select area_name from region where region.id=p.region_id) as regionName,
+        <!--帐龄-->
+        erc.pay_date - erc.cost_date as paymentDays,
+        <!--开票金额-->
+        erc.invoice_money as amountInvoice,
+        <!--开票时间-->
+        erc.invoice_date as billingDate,
+        <!--发票类型-->
+        erc.invoice_type as invoiceType,
+        <!--到账时间-->
+        erc.pay_date as workDate,
+        <!--到账金额-->
+        erc.pay_money as workMoney
+        <!--表关联-->
+        from er_record_cost erc
+        LEFT JOIN emergency_repair emr on erc.er_record_id=emr.id
+        LEFT JOIN project p on emr.project_id=p.id
+        left join contracts c on c.project_id=p.id
+        <!--筛选条件-->
+        WHERE c.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
+        <if test="request.contractCode!=null and request.contractCode!=''">
+            AND c.code LIKE CONCAT('%',#{request.contractCode,jdbcType=VARCHAR},'%')
+        </if>
+        <if test="request.contractType!=null and request.contractType!=''">
+            AND c.type = #{request.contractType,jdbcType=INTEGER}
+        </if>
+        <if test="request.contractStatus!=null and request.contractStatus!=''">
+            AND c.status = #{request.contractStatus,jdbcType=INTEGER}
+        </if>
+        <if test="request.projectName!=null and request.projectName!=''">
+            AND p.project_name LIKE CONCAT('%',#{request.projectName,jdbcType=VARCHAR},'%')
+        </if>
+        <!--新增时间搜索-->
+        <!--开始时间-->
+        <if test="request.starDate!=null and request.starDate!=''">
+            AND c.star_date >=#{request.starDate}
+        </if>
+        <!--结束时间-->
+        <if test="request.endDate!=null and request.endDate!=''">
+            AND c.end_date >=#{request.endDate}
+        </if>
+    </select>
+
+    <!--导出合同管理数据-大修/维保数据-->
+    <select id="findAllContractsManageData"
+            parameterType="cn.com.ty.lift.business.contract.dao.entity.model.request.ContractRequest"
+            resultType="cn.com.ty.lift.business.contract.dao.entity.model.response.ContractManageExportDto">
+        select
+
+        <!--项目名称-->
+        p.project_name as projectName,
+
+        <!--客户名称-->
+        (select name from property_company where id=p.pp_company_id) as memberName,
+
+        <!--区域-->
+        (select area_name from region where region.id=p.region_id) as regionName,
+
+        <!--合同编号-->
+        c.code as contractCode,
 
         <!--合同来源-->
         case c.source when 1 then '商保新增' when 2 then '免保转签' when 3 then '续签' when 4 then '免保' else '暂无' end,
@@ -256,38 +291,95 @@
         <!--台量-->
         c.lift_num as liftNum,
 
-        <!--金额=合同金额-->
+        <!--合同金额-->
+        c.moneys as moneys,
+
         <!--签约时间-->
         c.given_date as givenDate,
 
         <!--签约人-->
         c.given_user as givenUser,
 
-        <!--未收-->
-        erc.cost_money - erc.pay_money as NoPayMoney,
+        <!--实收金额-->
+        pay.work_money as workMoney
 
+        <!--未收-->
+        pay.plan_money - pay.work_money as NoPayMoney,
         <!--配件条款-->
-        c.parts_rules as partsRules,
+        c.parts_rules as partsRules
+        <!--表关联-->
+        from project p
+        LEFT JOIN
+        contracts c on c.project_id=p.id
+        left join payment pay on pay.contracts_id=c.id
+        <!--筛选条件-->
+        WHERE c.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
+        <if test="request.contractCode!=null and request.contractCode!=''">
+            AND c.code LIKE CONCAT('%',#{request.contractCode,jdbcType=VARCHAR},'%')
+        </if>
+        <if test="request.contractType!=null and request.contractType!=''">
+            AND c.type = #{request.contractType,jdbcType=INTEGER}
+        </if>
+        <if test="request.contractStatus!=null and request.contractStatus!=''">
+            AND c.status = #{request.contractStatus,jdbcType=INTEGER}
+        </if>
+        <if test="request.projectName!=null and request.projectName!=''">
+            AND p.project_name LIKE CONCAT('%',#{request.projectName,jdbcType=VARCHAR},'%')
+        </if>
+        <!--新增时间搜索-->
+        <!--开始时间-->
+        <if test="request.starDate!=null and request.starDate!=''">
+            AND c.star_date >=#{request.starDate}
+        </if>
+        <!--结束时间-->
+        <if test="request.endDate!=null and request.endDate!=''">
+            AND c.end_date >=#{request.endDate}
+        </if>
+    </select>
 
-        <!--应收日期-->
-        erc.cost_date as planDate,
-        <!--期数-->
-        <!--收款责任人-->
-        erc.collection_man as collectionMan,
+    <!--急修合同合同数据-->
+    <select id="findAllErContractsManageData"
+            parameterType="cn.com.ty.lift.business.contract.dao.entity.model.request.ContractRequest"
+            resultType="cn.com.ty.lift.business.contract.dao.entity.model.response.ContractManageExportDto">
+        <!--项目名称-->
+        p.project_name as projectName,
+        <!--客户名称-->
+        (select name from property_company where id=p.pp_company_id) as memberName,
         <!--区域-->
         (select area_name from region where region.id=p.region_id) as regionName,
-        <!--帐龄-->
-        erc.pay_date - erc.cost_date as paymentDays,
-        <!--开票金额-->
-        erc.invoice_money as amountInvoice,
-        <!--开票时间-->
-        erc.invoice_date as billingDate,
-        <!--发票类型-->
-        erc.invoice_type as invoiceType,
-        <!--到账时间-->
-        erc.pay_date as workDate,
+        <!--合同编号-->
+        c.code as contractCode,
+        <!--合同来源-->
+        case c.source when 1 then '商保新增' when 2 then '免保转签' when 3 then '续签' when 4 then '免保' else '暂无' end,
+
+        <!--合同类型-->
+        case c.type when 1 then '半包' when 2 then '半包' when 3 then '清包' when 4 then '全包' when 5 then '大修' else '暂无' end,
+
+        <!--合同开始时间-->
+        c.star_date as starDate,
+
+        <!--合同结束时间-->
+        c.end_date as endDate,
+
+        <!--台量-->
+        c.lift_num as liftNum,
+        <!--合同金额-->
+        c.moneys as moneys,
+        <!--签约时间-->
+        c.given_date as givenDate,
+
+        <!--签约人-->
+        c.given_user as givenUser,
+
         <!--到账金额-->
         erc.pay_money as workMoney
+
+        <!--未收-->
+        erc.cost_money - erc.pay_money as NoPayMoney,
+
+        <!--配件条款-->
+        c.parts_rules as partsRules
+
         <!--表关联-->
         from er_record_cost erc
         LEFT JOIN emergency_repair emr on erc.er_record_id=emr.id