Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

jzh před 1 rokem
rodič
revize
f9804f3e04

+ 3 - 0
zjugis-business/src/main/java/com/zjugis/business/bean/dto/ContractApplyDto.java

@@ -20,4 +20,7 @@ public class ContractApplyDto extends PageParam {
     private Integer applyType;
 
     private String userId;
+
+
+    private String year;
 }

+ 52 - 0
zjugis-business/src/main/java/com/zjugis/business/bean/response/ContractInvoiceExcelResponse.java

@@ -0,0 +1,52 @@
+package com.zjugis.business.bean.response;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+/**
+ * @author ljy
+ * @version 1.0
+ * @date 2023/11/23 14:37
+ */
+@Data
+public class ContractInvoiceExcelResponse {
+
+    @ExcelProperty("开票单位")
+    private String invoiceCompany;
+    @ExcelProperty("合同区域经理")
+    private String xsry;
+    @ExcelProperty("项目责任部门")
+    private String zrbm;
+    @ExcelProperty("项目类别")
+    private String xmlb;
+    @ExcelProperty("项目编号")
+    private String xmbh;
+    @ExcelProperty("项目名称")
+    private String xmmc;
+    @ExcelProperty("合同编号")
+    private String contractNumber;
+    @ExcelProperty("合同名称")
+    private String name;
+    @ExcelProperty("付款单位")
+    private String payCompany;
+    @ExcelProperty("开票内容")
+    private String invoiceContent;
+    @ExcelProperty("金额(元)")
+    private String invoiceAmount;
+    @ExcelProperty("开票申请人")
+    private String applyWorkerName;
+    @ExcelProperty("付款税号")
+    private String payTaxNumber;
+    @ExcelProperty("开票备注")
+    private String invoiceBz;
+    @ExcelProperty("收款银行账户信息")
+    private String receiveBankaccount;
+    @ExcelProperty("电子发票接收人手机号")
+    private String eleInvReceivePhone;
+    @ExcelProperty("电子发票接收人邮箱")
+    private String eleInvReceiveEmail;
+    @ExcelProperty("客户名称")
+    private String customerName;
+
+
+}

+ 2 - 0
zjugis-business/src/main/java/com/zjugis/business/bean/response/ContractInvoiceResponse.java

@@ -74,6 +74,8 @@ public class ContractInvoiceResponse{
      * 开票单位ID
      */
     private String invoiceCompanyId;
+
+    private String invoiceCompany;
     /**
      * 开票备注
      */

+ 32 - 0
zjugis-business/src/main/java/com/zjugis/business/controller/ContractInvoiceController.java

@@ -4,14 +4,26 @@ package com.zjugis.business.controller;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zjugis.business.bean.dto.ContractInvoiceDto;
 import com.zjugis.business.bean.entity.ContractInvoiceRelation;
+import com.zjugis.business.bean.response.ContractInvoiceExcelResponse;
 import com.zjugis.business.bean.response.ContractInvoiceResponse;
 import com.zjugis.business.bean.response.ContractInvoiceStaticsResponse;
 import com.zjugis.business.service.ContractInvoiceRelationService;
 import com.zjugis.business.service.ContractInvoiceService;
 import com.zjugis.framework.common.pojo.CommonResult;
+import com.zjugis.framework.excel.core.util.ExcelUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
 
 /**
  * 开票表控制层
@@ -63,5 +75,25 @@ public class ContractInvoiceController {
         contractInvoiceRelationService.updateAmount(relation);
         return CommonResult.success();
     }
+
+    @PostMapping("/contract-invoice/list/excel")
+    public void export( @RequestBody ContractInvoiceDto contractInvoiceDto,
+                        HttpServletResponse response) throws IOException {
+        List<ContractInvoiceExcelResponse> invoiceList = contractInvoiceService.excel(contractInvoiceDto);
+
+        List<ContractInvoiceExcelResponse> excelList = new ArrayList<>(invoiceList.size());
+        invoiceList.forEach(invoice -> {
+            ContractInvoiceExcelResponse item = new ContractInvoiceExcelResponse();
+            BeanUtils.copyProperties(invoice,item);
+            excelList.add(item);
+        });
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        String format = simpleDateFormat.format(new Date());
+        response.setContentType("multipart/form-data");
+        response.setCharacterEncoding(String.valueOf(StandardCharsets.UTF_8));
+        response.setHeader("Content-Disposition",
+                "attachment;filename*=utf-8'zh-cn'" + URLEncoder.encode("开票"+format+".xlsx", String.valueOf(StandardCharsets.UTF_8)));
+        ExcelUtils.write(response, "开票"+format+".xlsx", "开票列表", ContractInvoiceExcelResponse.class, excelList);
+    }
 }
 

+ 1 - 1
zjugis-business/src/main/java/com/zjugis/business/mapper/ContractApplyMapper.java

@@ -24,6 +24,6 @@ public interface ContractApplyMapper extends BaseMapper<ContractApply> {
 
     SumResponse listCalc(@Param("params") ContractApplyDto contractApplyDto);
 
-    ContractApplyToPayDto selectToPayAmount();
+    ContractApplyToPayDto selectToPayAmount(@Param("params") ContractApplyDto contractApplyDto);
 }
 

+ 5 - 0
zjugis-business/src/main/java/com/zjugis/business/mapper/ContractInvoiceMapper.java

@@ -3,12 +3,15 @@ package com.zjugis.business.mapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zjugis.business.bean.dto.ContractInvoiceDto;
 import com.zjugis.business.bean.entity.ContractInvoice;
+import com.zjugis.business.bean.response.ContractInvoiceExcelResponse;
 import com.zjugis.business.bean.response.ContractInvoiceResponse;
 import com.zjugis.business.bean.response.ContractInvoiceStaticsResponse;
 import com.zjugis.framework.mybatis.core.mapper.BaseMapperX;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 
 /**
  * 开票数据库访问层
@@ -22,5 +25,7 @@ public interface ContractInvoiceMapper extends BaseMapperX<ContractInvoice> {
     Page<ContractInvoiceResponse> page(Page<ContractInvoiceResponse> page, @Param("params") ContractInvoiceDto contractMakeBillDto);
 
     ContractInvoiceStaticsResponse getStatics(@Param("params") ContractInvoiceDto entity);
+
+    List<ContractInvoiceExcelResponse> excel(@Param("params") ContractInvoiceDto contractInvoiceDto);
 }
 

+ 1 - 1
zjugis-business/src/main/java/com/zjugis/business/service/ContractApplyService.java

@@ -61,6 +61,6 @@ public interface ContractApplyService {
 
     SumResponse listCalc(ContractApplyDto contractApplyDto);
 
-    ContractApplyToPayDto selectToPayAmount();
+    ContractApplyToPayDto selectToPayAmount(ContractApplyDto dto);
 }
 

+ 3 - 0
zjugis-business/src/main/java/com/zjugis/business/service/ContractInvoiceService.java

@@ -3,6 +3,7 @@ package com.zjugis.business.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zjugis.business.bean.dto.ContractInvoiceDto;
 import com.zjugis.business.bean.entity.ContractInvoice;
+import com.zjugis.business.bean.response.ContractInvoiceExcelResponse;
 import com.zjugis.business.bean.response.ContractInvoiceResponse;
 import com.zjugis.business.bean.response.ContractInvoiceStaticsResponse;
 
@@ -31,5 +32,7 @@ public interface ContractInvoiceService {
     List<ContractInvoice> selectByContractId(String id);
 
     void updateAmountStatus(String invoiceId);
+
+    List<ContractInvoiceExcelResponse> excel(ContractInvoiceDto contractInvoiceDto);
 }
 

+ 2 - 2
zjugis-business/src/main/java/com/zjugis/business/service/impl/ContractApplyServiceImpl.java

@@ -189,8 +189,8 @@ public class ContractApplyServiceImpl implements ContractApplyService {
      * @return
      */
     @Override
-    public ContractApplyToPayDto selectToPayAmount() {
-        ContractApplyToPayDto subToPayDto = contractApplyMapper.selectToPayAmount();
+    public ContractApplyToPayDto selectToPayAmount(ContractApplyDto dto) {
+        ContractApplyToPayDto subToPayDto = contractApplyMapper.selectToPayAmount(dto);
         subToPayDto.setSubToPay(subToPayDto.getSubAmount().subtract(subToPayDto.getSubPayedAmount()));
         subToPayDto.setOutToPay(subToPayDto.getOutAmount().subtract(subToPayDto.getOutPayedAmount()));
         return subToPayDto;

+ 10 - 0
zjugis-business/src/main/java/com/zjugis/business/service/impl/ContractInvoiceServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zjugis.business.bean.dto.ContractInvoiceDto;
 import com.zjugis.business.bean.entity.*;
+import com.zjugis.business.bean.response.ContractInvoiceExcelResponse;
 import com.zjugis.business.bean.response.ContractInvoiceResponse;
 import com.zjugis.business.bean.response.ContractInvoiceStaticsResponse;
 import com.zjugis.business.constants.FlowStatusConstants;
@@ -76,6 +77,15 @@ public class ContractInvoiceServiceImpl implements ContractInvoiceService {
         return contractInvoiceMapper.page(page,entity);
     }
 
+    /**
+     * @param contractInvoiceDto
+     * @return
+     */
+    @Override
+    public List<ContractInvoiceExcelResponse> excel(ContractInvoiceDto contractInvoiceDto) {
+        return contractInvoiceMapper.excel(contractInvoiceDto);
+    }
+
     @Override
     public ContractInvoiceStaticsResponse getStatics(ContractInvoiceDto entity) {
         return contractInvoiceMapper.getStatics(entity);

+ 5 - 4
zjugis-business/src/main/java/com/zjugis/business/service/impl/ContractServiceImpl.java

@@ -177,18 +177,19 @@ public class ContractServiceImpl implements ContractService{
     @Override
     public ContractInfoResp info(InfoRequest infoRequest) {
         ContractMessageDto dto = new ContractMessageDto();
-        ContractSubDto subDto = new ContractSubDto();
+        ContractApplyDto applyDto = new ContractApplyDto();
         if(infoRequest.getYear() != null) {
             dto.setYear(String.valueOf(infoRequest.getYear()));
-            subDto.setTime(LocalDate.of(infoRequest.getYear(),1,1));
         }
         ContractMessageCountResp countResp = contractMapper.messageCount(dto);
-        ContractApplyToPayDto subToPayDto = contractApplyService.selectToPayAmount();
+        ContractApplyToPayDto subToPayDto = contractApplyService.selectToPayAmount(applyDto);
         ContractInfoResp resp = new ContractInfoResp();
         resp.setReturnAmount(countResp.getReturnAmount());
         resp.setSignAmount(countResp.getSignAmount());
         resp.setNewAmount(countResp.getNewAmount());
-        resp.setNetAmount(resp.getSignAmount().subtract(subToPayDto.getSubAmount()));
+        applyDto.setYear(String.valueOf(infoRequest.getYear()));
+        ContractApplyToPayDto yearDto = contractApplyService.selectToPayAmount(applyDto);
+        resp.setNetAmount(resp.getSignAmount().subtract(yearDto.getSubAmount()));
         resp.setSubToPay(subToPayDto.getSubToPay());
         resp.setOutToPay(subToPayDto.getOutToPay());
         return resp;

+ 3 - 0
zjugis-business/src/main/resources/mapper/oracle/ContractApplyMapper.xml

@@ -70,6 +70,9 @@
         FROM CONTRACT_APPLY
         <where>
             ISVALID = 1 AND FLOW_STATUS = 90
+            <if test="params != null and params.year != null and params.year != ''">
+                AND TO_CHAR(APPLY_DATE,'YYYY') = #{params.year,jdbcType=VARCHAR}
+            </if>
         </where>
     </select>
 </mapper>

+ 63 - 0
zjugis-business/src/main/resources/mapper/oracle/ContractInvoiceMapper.xml

@@ -119,4 +119,67 @@
             </if>
         </where>
     </select>
+
+    <select id="excel" resultType="com.zjugis.business.bean.response.ContractInvoiceExcelResponse">
+        SELECT C.NAME as invoiceCompany,U.NICKNAME AS XSRY,D.NAME as ZRBM,T3.NAME as xmlb,T2.XMBH,T2.XMMC,T1.CONTRACT_NUMBER,T1.NAME,T.PAY_COMPANY,T.INVOICE_CONTENT,T.INVOICE_AMOUNT,T.APPLY_WORKER_NAME,T.PAY_TAX_NUMBER,T.INVOICE_BZ,T.RECEIVE_BANKACCOUNT,T.ELE_INV_RECEIVE_PHONE,T.ELE_INV_RECEIVE_EMAIL,T.CUSTOMER_NAME
+        FROM CONTRACT_INVOICE T
+        LEFT JOIN CONTRACT T1 ON T1.ID=T.CONTRACT_ID
+        LEFT JOIN PROJECT T2 ON T2.ID=T.PROJECT_ID
+        LEFT JOIN PROJECT_TYPE T3 ON T3.ID = T2.PROJECT_TYPE_ID
+        LEFT JOIN ZJUGIS_OA.SYSTEM_COMPANY C ON T3.ID = T.INVOICE_COMPANY_ID
+        LEFT JOIN ZJUGIS_OA.SYSTEM_DEPT D ON D.ID = T2.ZRBM_ID
+        LEFT JOIN ZJUGIS_OA.SYSTEM_USERS U ON U.ID = T2.XSRY_ID
+        LEFT JOIN (SELECT count(1) as rc,max(RETURN_DATE) as maxd, min(RETURN_DATE) as mind,CONTRACT_INVOICE_ID,COALESCE(SUM(COALESCE(RETURN_AMOUNT,0)),0) as returnAmount FROM CONTRACT_RETURN_MONEY WHERE ISVALID = 1 GROUP BY CONTRACT_INVOICE_ID) T3 ON T3.CONTRACT_INVOICE_ID=T.ID
+        <where>
+            T.ISVALID = 1
+            <if test="params != null and params.deptId != null and params.deptId != ''">
+                AND T2.ZRBM_ID = #{params.deptId}
+            </if>
+            <if test="params != null and params.managerId != null and params.managerId != ''">
+                AND T1.AREA_MANAGER_ID = #{params.managerId,jdbcType=VARCHAR}
+            </if>
+            <if test="params != null and params.contractId != null and params.contractId != ''">
+                AND T.CONTRACT_ID = #{params.contractId,jdbcType=VARCHAR}
+            </if>
+            <if test="params != null and params.invoiceNumber != null and params.invoiceNumber != ''">
+                <bind name="invoiceNumber" value="'%'+params.invoiceNumber+'%'"/>
+                AND T.INVOICE_NUMBER like #{invoiceNumber}
+            </if>
+            <if test="params != null and params.contractName != null and params.contractName != ''">
+                <bind name="contractName" value="'%'+params.contractName+'%'"/>
+                AND T1.NAME like #{contractName}
+            </if>
+            <if test="params != null and params.xmmc != null and params.xmmc != ''">
+                <bind name="xmmc" value="'%'+params.xmmc+'%'"/>
+                AND T2.XMMC like #{xmmc}
+            </if>
+            <if test="params != null and params.flowStatus != null">
+                AND T.FLOW_STATUS = #{params.flowStatus,jdbcType=INTEGER}
+            </if>
+            <if test="params != null and params.flowStatus == null">
+                AND T.FLOW_STATUS &gt;= 90
+            </if>
+            <if test="params != null and params.payCompanyId != null and params.payCompanyId != ''">
+                AND T.PAY_COMPANY_ID = #{params.payCompanyId,jdbcType=VARCHAR}
+            </if>
+            <if test="params != null and params.invoiceOn != null">
+                AND T.INVOICE_DATE &gt;= #{params.invoiceOn,jdbcType=DATE}
+            </if>
+            <if test="params != null and params.invoiceOff != null">
+                AND T.INVOICE_DATE &lt;= #{params.invoiceOff,jdbcType=DATE}
+            </if>
+            <if test="params != null and params.returnOn != null">
+                AND T3.mind &gt;= #{params.returnOn,jdbcType=DATE}
+            </if>
+            <if test="params != null and params.returnOff != null">
+                AND T3.maxd &lt;= #{params.returnOff,jdbcType=DATE}
+            </if>
+            <if test="params != null and params.isReturn == 1">
+                AND T3.rc > 0
+            </if>
+        </where>
+        ORDER BY
+        T.FLOW_FINISHTIME desc nulls last,
+        APPLY_DATE DESC nulls last
+    </select>
 </mapper>