Ver código fonte

计量材料pdf

zhuwei 1 ano atrás
pai
commit
7c3b99c063

+ 0 - 2
blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java

@@ -4,7 +4,6 @@ import cn.hutool.core.io.FileUtil;
 import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.aliyun.oss.common.utils.IOUtils;
 import com.drew.imaging.ImageMetadataReader;
 import com.drew.imaging.ImageProcessingException;
 import com.drew.metadata.Metadata;
@@ -522,5 +521,4 @@ public class CommonUtil {
         System.out.println("replaceOssUrl " + url);
         return url;
     }
-
 }

+ 5 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/DefaultConfig.java

@@ -83,4 +83,9 @@ public class DefaultConfig extends BaseEntity {
 	 */
 	private int appCheck;
 
+	/**
+	 * 大屏首页引导
+	 */
+	private int isDatavTour;
+
 }

+ 3 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/DefaultConfigController.java

@@ -166,6 +166,9 @@ public class DefaultConfigController extends BladeController {
 			if (StringUtils.isNotEmpty(newConfig.getAppCheck()+"")) {
 				oldConfig.setAppCheck(newConfig.getAppCheck());
 			}
+			if (StringUtils.isNotEmpty(newConfig.getIsDatavTour()+"")) {
+				oldConfig.setIsDatavTour(newConfig.getIsDatavTour());
+			}
             oldConfig.setOpinionView(newConfig.getOpinionView());
             return R.data(this.defaultConfigService.updateById(oldConfig));
         }

+ 4 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -197,6 +197,8 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         //查询对应的数据
         TaskApprovalVO vo = new TaskApprovalVO();
         ContractLog log = this.contractLogService.getById(formDataId);
+        ProjectInfo projectInfo = this.projectClient.getById(log.getProjectId() + "");
+        vo.setRemarkType(projectInfo.getRemarkType() + "");
         if (log != null && (StringUtils.isNotEmpty(log.getPdfUrl()) || StringUtils.isNotEmpty(log.getEVisaPdfUrl()))) {
             vo.setApprovalFileList(log.getFileName(), StringUtils.isNotEmpty(log.getEVisaPdfUrl()) ? log.getEVisaPdfUrl() : log.getPdfUrl());
         }
@@ -317,6 +319,8 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         if (archiveFileList != null && archiveFileList.size() > 0) {
             //转换数据
             TaskApprovalVO vo = new TaskApprovalVO();
+            ProjectInfo projectInfo = this.projectClient.getById(archiveFileList.get(0).getProjectId() + "");
+            vo.setRemarkType(projectInfo.getRemarkType() + "");
             for (ArchiveFile archiveFile : archiveFileList) {
                 vo.setApprovalFileList(archiveFile.getFileName(), StringUtils.isEmpty(archiveFile.getPdfFileUrl()) ? archiveFile.getFileUrl() : archiveFile.getPdfFileUrl());
             }

+ 0 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FormulaController.java

@@ -38,7 +38,6 @@ import org.springblade.manager.vo.CurrentNode;
 import org.springblade.manager.wrapper.FormulaWrapper;
 import org.springframework.beans.BeanUtils;
 import org.springframework.dao.EmptyResultDataAccessException;
-import org.springframework.http.HttpRequest;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
 import springfox.documentation.annotations.ApiIgnore;

+ 123 - 5
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -14,23 +14,27 @@ import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.time.DateUtils;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springblade.business.entity.FixedFlowLink;
 import org.springblade.business.entity.Task;
 import org.springblade.business.entity.TaskParallel;
 import org.springblade.business.feign.TaskClient;
 import org.springblade.common.constant.ClientIdConstant;
+import org.springblade.common.utils.CommonUtil;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseService;
+import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.redis.cache.BladeRedis;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.core.tool.utils.DateUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.core.tool.utils.*;
 import org.springblade.feign.ArchiveFileTaskClient;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.ContractRelationJlyz;
@@ -41,15 +45,17 @@ import org.springblade.meter.dto.*;
 import org.springblade.meter.entity.*;
 import org.springblade.meter.mapper.MiddleMeterApplyMapper;
 import org.springblade.meter.service.impl.*;
+import org.springblade.meter.utils.CollectionUtils;
 import org.springblade.meter.vo.*;
 import org.springblade.producer.bean.PushMessage;
+import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.system.user.entity.User;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import java.io.IOException;
+import java.io.*;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.math.BigDecimal;
@@ -95,6 +101,9 @@ public class TaskController extends BladeController {
     // 计量公式入口
     private final FormulaClient formulaClient;
 
+    // oss
+    private final NewIOSSClient newIOSSClient;
+
     @GetMapping("/name")
     @ApiOperationSupport(order = 1)
     @ApiOperation(value = "获取任务名称", notes = "传入合同段contractId、期数id(变更令传勾选的id字符串英文逗号拼接)、type=1(中间计量申请)、=2(材料计量单)、3=(开工预付款计量单)、=4(变更令)")
@@ -2432,4 +2441,113 @@ public class TaskController extends BladeController {
         return R.fail("操作失败");
     }
 
+
+
+
+    @GetMapping("/meterPdfInfo22")
+    @ApiOperationSupport(order = 20)
+    @ApiOperation(value = "计量生成Pdf", notes = "计量生成Pdf")
+    public R meterPdfInfo22(@RequestParam String  ContractId,@RequestParam String FormDataId,@RequestParam Integer type){
+        String file_path = CollectionUtils.getSysLocalFileUrl();
+        // 材料生成pdf
+        if(type==2){
+            // 获取填报数据
+            String sql = "SELECT * FROM s_material_start_statement where contract_id="+ContractId+" and type=1 and meter_period_id="+FormDataId+"";
+            Map<String, Object> dataInfo = jdbcTemplate.queryForMap(sql);
+            Long sid = Func.toLong(dataInfo.get("id"));
+            // 调用公式
+            List<ReportResult> sul = formulaClient.formulaExecute3(Long.parseLong(ContractId), sid,1);
+            if(sul!=null && sul.size()>=1){
+                for(ReportResult data:sul){
+                    Long excelId = data.getExcelId();
+                    String exSql = "SELECT * from m_excel_tab where id="+excelId+"";
+                    Map<String, Object> exMap = jdbcTemplate.queryForMap(exSql);
+                    if (exMap == null) {
+                        return R.fail("未获取到该表单的信息");
+                    }
+                    if (exMap.get("file_url") == null) {
+                        return R.fail("htmlUrl is null");
+                    }
+                    String pkeyId=sid+""+excelId;
+                    String pdfPath = file_path + "/pdf//" + pkeyId + ".pdf";
+                    String excelPath = file_path + "/pdf//" + pkeyId + ".xlsx";
+
+                    String excelUrl = exMap.get("file_url")+"";
+
+                    File tabPdf = null;
+                    try {
+                        tabPdf = ResourceUtil.getFile(pdfPath);
+                    } catch (FileNotFoundException e) {
+                        throw new RuntimeException(e);
+                    }
+                    if (tabPdf.exists()) {
+                        tabPdf.delete();
+                    }
+
+                    List<Map<String, Object>> data1 = data.getData();
+                    //获取excel流 和 html流
+                    try {
+                        InputStream exceInp = CommonUtil.getOSSInputStream(excelUrl);
+                        Workbook workbook = null;
+                        int index = excelUrl.lastIndexOf(".");
+                        String suffix = excelUrl.substring(index).toLowerCase();
+
+                        if (".xls".equals(suffix)) {
+                            workbook = new XSSFWorkbook(exceInp);
+                        } else if (".xlsx".equals(suffix)) {
+                            workbook = new XSSFWorkbook(exceInp);
+                        }
+                        //获取工作表
+                        Sheet sheet = workbook.getSheetAt(0);
+                        sheet.setForceFormulaRecalculation(true);
+
+                        // 写入数据
+                        List<Map<String, Object>> dataData = data.getData();
+                        if(dataData!=null && dataData.size()>=1){
+                            for(Map<String, Object> dama:dataData){
+
+                                // 循环Key
+                                for(String keys:dama.keySet()){
+                                    int y1 = Func.toInt(keys.split("_")[0]);
+                                    int x1 = Func.toInt(keys.split("_")[1]);
+                                    Row row = sheet.getRow(y1 - 1);
+                                    if (row != null) {
+                                        Cell cell = row.getCell(x1 - 1);
+                                        String dataval = dama.get(keys)+"";
+                                        if(dataval.indexOf("第")>=0 && dataval.indexOf("次支付")>=0){
+                                            String datare = dataval.replace("第","").replace("次交付","");
+                                            dataval = datare.replace("次支付","");
+                                        }
+                                        cell.setCellValue(dataval);
+                                    }
+                                }
+                            }
+                        }
+
+                        //输出流
+                        FileOutputStream outputStream = new FileOutputStream(excelPath);
+                        workbook.write(outputStream);
+
+                        CollectionUtils.excelToPdf(excelPath, pdfPath);
+                        BladeFile bladeFile = newIOSSClient.uploadFile(pkeyId + ".pdf", pdfPath);
+
+                        /*UpdateWrapper<WbsTreeContract> updateWrapper = new UpdateWrapper<>();
+                        updateWrapper.in("p_key_id", pkeyId + "");
+                        updateWrapper.set("pdf_url", fileUrl);
+                        updateWrapper.set("real_fill_rate", realFillRate);
+                        wbsTreeContractService.update(updateWrapper);*/
+
+                        //关闭流
+                        IoUtil.closeQuietly(outputStream);
+                        IoUtil.closeQuietly(exceInp);
+                    } catch (Exception e) {
+                        throw new RuntimeException(e);
+                    }
+                }
+            }
+        }
+
+        return R.success("1234");
+    }
+
 }

+ 76 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/utils/CollectionUtils.java

@@ -1,5 +1,16 @@
 package org.springblade.meter.utils;
 
+import com.aspose.cells.SaveFormat;
+import org.apache.poi.ss.usermodel.PrintSetup;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.WorkbookFactory;
+import org.springblade.common.constant.CommonConstant;
+import org.springblade.common.utils.SystemUtils;
+import org.springblade.core.tool.utils.IoUtil;
+import org.springblade.core.tool.utils.ResourceUtil;
+import org.springblade.system.cache.ParamCache;
+
+import java.io.*;
 import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.ConcurrentHashMap;
@@ -24,4 +35,69 @@ public class CollectionUtils {
         final Map<Object, Boolean> seen = new ConcurrentHashMap<>();
         return t -> Objects.isNull(seen.putIfAbsent(key.apply(t), Boolean.TRUE));
     }
+
+    public static String getSysLocalFileUrl() {
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+        if (SystemUtils.isMacOs()) {
+            file_path = "/Users/hongchuangyanfa/Desktop/";
+        } else if (SystemUtils.isWindows()) {
+            file_path = "C://upload//";
+        }
+        return file_path;
+    }
+
+
+    /**
+     * excel 转pdf
+     *
+     * @param exUrl
+     * @param pdfUrl
+     */
+    public static void excelToPdf(String exUrl, String pdfUrl) {
+
+        org.apache.poi.ss.usermodel.Workbook ss = null;
+        ByteArrayInputStream byteArrayInputStream = null;
+        InputStream pdfInput = null;
+        ByteArrayOutputStream outReport = null, bos = null;
+        try {
+            File file1 = ResourceUtil.getFile(exUrl);
+            InputStream inputStream = new FileInputStream(file1);
+            ss = WorkbookFactory.create(inputStream);
+            for (int i = 0, l = ss.getNumberOfSheets(); i < l; i++) {
+                Sheet sheet = ss.getSheetAt(i);
+                //去掉表格虚线
+                sheet.setPrintGridlines(false);
+                //设置 整个工作表为一页
+                sheet.setFitToPage(true);
+                sheet.getPrintSetup().setPaperSize(PrintSetup.A4_PAPERSIZE);
+            }
+            outReport = new ByteArrayOutputStream();
+            ss.write(outReport);
+            byteArrayInputStream = new ByteArrayInputStream(outReport.toByteArray());
+            com.aspose.cells.Workbook wb = new com.aspose.cells.Workbook(byteArrayInputStream);
+            File pdfFile = new File(pdfUrl);
+            if (!pdfFile.exists()) {
+                pdfFile.mkdir();
+            }
+            wb.save(pdfUrl, SaveFormat.PDF);
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (bos != null) {
+                IoUtil.closeQuietly(bos);
+            }
+            if (outReport != null) {
+                IoUtil.closeQuietly(outReport);
+            }
+            if (pdfInput != null) {
+                IoUtil.closeQuietly(pdfInput);
+            }
+            if (byteArrayInputStream != null) {
+                IoUtil.closeQuietly(byteArrayInputStream);
+            }
+            if (ss != null) {
+                IoUtil.closeQuietly(ss);
+            }
+        }
+    }
 }

+ 0 - 1
blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java

@@ -206,7 +206,6 @@ public class MenuController extends BladeController {
         List<MenuVO> list = menuService.buttons(user.getRoleId(), user.getClientId());
         return R.data(list);
     }
-
     /**
      * 获取菜单树形结构
      */

+ 14 - 13
blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java

@@ -27,10 +27,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import feign.Request;
 import io.jsonwebtoken.Claims;
 import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
 import org.apache.http.Consts;
+import org.apache.http.HttpRequest;
 import org.apache.http.HttpResponse;
 import org.apache.http.NameValuePair;
 import org.apache.http.client.HttpClient;
@@ -77,6 +79,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import springfox.documentation.annotations.ApiIgnore;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.ByteArrayOutputStream;
@@ -452,8 +455,10 @@ public class UserController {
     @PostMapping("/loginByToken")
     @ApiOperationSupport(order = 20)
     @ApiOperation(value = "token验证加密", notes = "token验证登录")
-    public R loginByToken(String token) {
-        //  this.loginByToken2(token);
+    public R loginByToken(String token, HttpServletRequest request) {
+
+
+
         token = "bearer " + token;
         HttpClient httpClient = HttpClientBuilder.create().build();
         HttpGet httpPost = new HttpGet("http://39.108.216.210:8090/blade-auth/oauth/user-info");
@@ -473,7 +478,7 @@ public class UserController {
             if (jsonObject != null && ObjectUtil.isNotEmpty(jsonObject)) {
                 JSONObject data = jsonObject.getJSONObject("data");
                 String name = data.getString("name");
-                return this.loginByToken2(name);
+                return this.loginByToken2(name,request);
             } else {
                 return R.fail("token解析用户失败");
             }
@@ -487,7 +492,11 @@ public class UserController {
     @PostMapping("/loginByToken2")
     @ApiOperationSupport(order = 20)
     @ApiOperation(value = "token验证加密", notes = "token验证登录")
-    public R loginByToken2(String account) {
+    public R loginByToken2(String account,HttpServletRequest request) {
+        String Authorization = request.getHeader("Authorization");
+        if(Authorization==null || StringUtil.isEmpty(Authorization)){
+            Authorization="Basic Y2xpZW50OmNsaWVudF9zZWNyZXQ=";
+        }
         if (StringUtil.isBlank(account)) {
             return R.fail("请输出token");
         }
@@ -508,15 +517,7 @@ public class UserController {
 
             HttpClient httpClient = HttpClientBuilder.create().build();
             HttpPost httpPost = new HttpPost("http://39.108.216.210:8090/blade-auth/oauth/token");
-
-            if(userInfo.getSysId().equals("30")){
-                httpPost.setHeader("Authorization", "Basic YXJjaGl2ZXM6YXJjaGl2ZXNfc2VjcmV0");
-            }else if ("40".equals(userInfo.getSysId())) {
-                httpPost.setHeader("Authorization", "Basic bWVhc3VyZTptZWFzdXJlX3NlY3JldA==");
-            }else{
-                httpPost.setHeader("Authorization", "Basic YXJjaGl2ZXM6YXJjaGl2ZXNfc2VjcmV0");
-            }
-
+            httpPost.setHeader("Authorization", Authorization);
             httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
             httpPost.setHeader("Tenant-Id", userInfo.getTenantId());
             List<NameValuePair> params = new ArrayList<NameValuePair>();