钱惠东 hace 1 semana
padre
commit
f623838c0c

+ 6 - 0
RuoYi-Vue-fast-master/pom.xml

@@ -376,6 +376,12 @@
             <version>1.0.6</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>4.0.3</version>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 6 - 0
RuoYi-Vue-fast-master/src/main/java/com/ruoyi/project/business/controller/contract/TqContractController.java

@@ -179,4 +179,10 @@ public class TqContractController extends BaseController
     {
         return success(tqContractService.contractSigningStatistic(params));
     }
+
+    @PostMapping(value = "/contractSigningStatistic/export")
+    public AjaxResult contractSigningStatisticExport(TqContractDto params)
+    {
+        return success(tqContractService.contractSigningStatisticExport(params));
+    }
 }

+ 2 - 0
RuoYi-Vue-fast-master/src/main/java/com/ruoyi/project/business/service/ITqContractService.java

@@ -84,4 +84,6 @@ public interface ITqContractService
     void exportContract(Long id);
 
     ContractSigningStatistic contractSigningStatistic(TqContractDto params);
+
+    boolean contractSigningStatisticExport(TqContractDto params);
 }

+ 29 - 0
RuoYi-Vue-fast-master/src/main/java/com/ruoyi/project/business/service/impl/TqContractServiceImpl.java

@@ -1,12 +1,18 @@
 package com.ruoyi.project.business.service.impl;
 
 import java.io.File;
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.text.DecimalFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.metadata.WriteTable;
 import com.alibaba.fastjson2.JSONObject;
+import com.ruoyi.common.importExcel.excel.EasyPoiHelper;
 import org.springframework.beans.BeanUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.google.common.base.Functions;
@@ -54,6 +60,7 @@ import com.ruoyi.project.business.service.ITqContractService;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 
 import static com.ruoyi.common.utils.DateUtils.getMonthEnd;
 import static com.ruoyi.common.utils.DateUtils.getMonthStart;
@@ -670,4 +677,26 @@ public class TqContractServiceImpl implements ITqContractService
         }
         return result;
     }
+
+    @Override
+    public boolean contractSigningStatisticExport(TqContractDto params) {
+        ContractSigningStatistic contractSigningStatistic = contractSigningStatistic(params);
+        Integer year = contractSigningStatistic.getYear();
+
+        // 返回生成的excel文件
+        HttpServletResponse response =ServletUtils.getResponse();
+        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+        response.setCharacterEncoding("utf-8");
+        try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build()) {
+
+            excelWriter.write(contractSigningStatistic.getSigningAreaColStatistics(), EasyExcel.writerSheet(year + "国际各区域签单").build());
+            excelWriter.write(contractSigningStatistic.getProductionAreaColStatistics(), EasyExcel.writerSheet(year + "国际各区域排产").build());
+            excelWriter.write(contractSigningStatistic.getDeliveryMonthColStatistics(), EasyExcel.writerSheet(year + "发货金额").build());
+            excelWriter.write(contractSigningStatistic.getProductionMonthColStatistics(), EasyExcel.writerSheet(year + "排产金额").build());
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new ServiceException("导出失败");
+        }
+        return true;
+    }
 }

+ 12 - 0
RuoYi-Vue-fast-master/src/main/java/com/ruoyi/project/business/service/quotation/impl/TqQuotationServiceImpl.java

@@ -60,6 +60,7 @@ import com.ruoyi.project.business.service.quotation.ITqSpecificationNonStandardS
 import com.ruoyi.project.business.service.quotation.ITqSpecificationService;
 
 import java.io.File;
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.DecimalFormat;
@@ -1254,6 +1255,14 @@ public class TqQuotationServiceImpl extends ServiceImpl<TqQuotationMapper, TqQuo
                 String code = paraItemNameMap.get(key);
                 String path = RuoYiConfig.getProfile() + StringUtils.substringAfter(imageMap.get(key).get(0).getPrarSource(), Constants.RESOURCE_PREFIX);
                 FileImageProvider file = new FileImageProvider(new File(path), true);
+                try {
+                    if (file.getImageInfo().getWidth() > 600f){
+                        file.setWidth(600f);
+                        file.setResize(true);
+                    }
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
                 if (nonNull(exist) && Objects.isNull(exist.getCodeRight())){
                     exist.setCodeRight(code);
                     exist.setPhotoRight(file);
@@ -1312,6 +1321,9 @@ public class TqQuotationServiceImpl extends ServiceImpl<TqQuotationMapper, TqQuo
         file.setWidth(600f);
         file.setResize(true);
         map.put("preview", file);
+        if (new File(path).exists()){
+            map.put("showPreview", true);
+        }
 
         // 3. 填充模板并返回
         new CommonDocUtils()

BIN
RuoYi-Vue-fast-master/src/main/resources/wordTemplate/报价单.docx


+ 6 - 0
ruoyi-ui-vue2/src/views/board/contractSigningStatistic/index.vue

@@ -102,6 +102,7 @@ export default {
   data() {
     return {
       loading: false,
+      exportLoading: false,
       showSummary: false,
       queryParams: {
         weekData: null,
@@ -135,6 +136,11 @@ export default {
         this.showSummary = true;
       });
     },
+    handleExport() {
+      this.download('/business/contract/contractSigningStatistic/export', {
+        ...this.queryParams
+      }, `周、月签约、排产、发货_${new Date().getTime()}.xlsx`)
+    },
     getWeekCountSummaries() {
       return [
         <div><span>周合计</span><br/><span>月合计</span></div>,