Browse Source

Merge remote-tracking branch 'origin/master' into master

yangyj 1 year ago
parent
commit
0121f69c65

+ 6 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ContractInfoVO2.java

@@ -1,8 +1,10 @@
 package org.springblade.manager.vo;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.meter.entity.MeterContractInfo;
 
 import java.io.Serializable;
 import java.util.List;
@@ -18,5 +20,9 @@ public class ContractInfoVO2 implements Serializable {
      * WbsTreeContractList
      */
     private List<WbsTreeContractVO3> wbsTreeContractList;
+    /**
+     * meterContractInfo
+     */
+    private MeterContractInfo meterContractInfo;
 
 }

+ 4 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ReportResult.java

@@ -25,6 +25,10 @@ public class ReportResult {
     private Long excelId;
     /**表名*/
     private String name;
+
+    /**表名主键Id*/
+    private Long pkeyId;
+
     /**pdf本地路径*/
     private String pdfPath;
     /**pdf的oss路径*/

+ 6 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java

@@ -86,6 +86,12 @@ public class ContractInfoController extends BladeController {
     @ApiOperation(value = "详情2", notes = "传入contractInfo")
     public R<ContractInfoVO2> detail2(ContractInfo contractInfo) {
         ContractInfoVO2 detail = contractInfoService.selectByCondition(contractInfo);
+        if (detail != null) {
+            MeterContractInfo meterContractInfo = jdbcTemplate.query("SELECT * FROM s_meter_contract_info WHERE contract_id = " + contractInfo.getId(), new BeanPropertyRowMapper<>(MeterContractInfo.class)).stream().findAny().orElse(null);
+            if (meterContractInfo != null) {
+                detail.setMeterContractInfo(meterContractInfo);
+            }
+        }
         return R.data(detail);
     }
 

+ 0 - 6
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -2499,13 +2499,10 @@ public class ExcelTabController extends BladeController {
                                         x1 = 1;
                                     }
                                     int y1 = Integer.parseInt(data.children().get(0).attr("y1"));
-
                                     final CellRange cellRange = sheet.getCellRange(y1, x1);
-
                                     cellRange.setText(e.getId() + "");
                                     cellRange.getCellStyle().getFont().setColor(Color.white);
                                 }
-
                             }
                         });
                     }
@@ -2513,11 +2510,8 @@ public class ExcelTabController extends BladeController {
                     Long fileName = SnowFlakeUtil.getId();
                     String onePdfPath = file_path + "/pdf//" + fileName + ".pdf";
                     sheet.saveToPdf(onePdfPath);
-
                     BladeFile bladeFile = this.newIOSSClient.uploadFile(fileName + ".pdf", onePdfPath);
-
                     pdfUrls.add(bladeFile.getLink());
-
                     wb.dispose();
                 }
             }

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/TableElementConverter.java

@@ -470,6 +470,7 @@ public class TableElementConverter implements ITableElementConverter {
                    rt.setInitTableName(report.getInitTableName());
                    rt.setName(report.getNodeName());
                    rt.setExcelId(report.getExcelId());
+                   rt.setPkeyId(report.getPKeyId()); //返回表单的主表Id
                    reportResults.add(rt);
                    List<FormData> fds =group.get(report.getInitTableName());
                    if(fds.size()>0){

+ 18 - 16
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java

@@ -810,14 +810,16 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
                     }
                 }
 
-                /*总承包合同段(计量合同段)*/
-            } else if (contractInfo.getContractType().equals(4)) {
-                if (ObjectUtil.isNotEmpty(contractInfo.getMeterContractInfo())) {
-                    MeterContractInfo meterContractInfo = contractInfo.getMeterContractInfo();
-                    meterContractInfo.setContractId(contractInfo.getId());
-                    meterContractInfoClient.saveOrUpdate(meterContractInfo);
-                }
+
+            }
+            /*总承包合同段(计量合同段)*/
+            //else if (contractInfo.getContractType().equals(4)) {
+            if (ObjectUtil.isNotEmpty(contractInfo.getMeterContractInfo())) {
+                MeterContractInfo meterContractInfo = contractInfo.getMeterContractInfo();
+                meterContractInfo.setContractId(contractInfo.getId());
+                meterContractInfoClient.saveOrUpdate(meterContractInfo);
             }
+            //}
 
             return this.submitContractRelevantInfo(row, contractInfo);
 
@@ -886,14 +888,15 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
                     }
                 }
 
-                /*总承包合同段(计量合同段)*/
-            } else if (contractInfo.getContractType().equals(4)) {
-                if (ObjectUtil.isNotEmpty(contractInfo.getMeterContractInfo())) {
-                    MeterContractInfo meterContractInfo = contractInfo.getMeterContractInfo();
-                    meterContractInfo.setContractId(contractInfo.getId());
-                    meterContractInfoClient.saveOrUpdate(meterContractInfo);
-                }
             }
+            /*总承包合同段(计量合同段)*/
+            //else if (contractInfo.getContractType().equals(4)) {
+            if (ObjectUtil.isNotEmpty(contractInfo.getMeterContractInfo())) {
+                MeterContractInfo meterContractInfo = contractInfo.getMeterContractInfo();
+                meterContractInfo.setContractId(contractInfo.getId());
+                meterContractInfoClient.saveOrUpdate(meterContractInfo);
+            }
+            //}
 
             return this.submitContractRelevantInfo(row, contractInfo);
         }
@@ -937,7 +940,6 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
                     addList.add(newObj);
                 }
 
-
                 if (addList.size() > 0) {
                     //保存数据
                     saveUserInfoByProjectService.saveBatch(addList);
@@ -991,7 +993,7 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
 //                }
                 //删除之前所有的地址,再新增
                 projectContractAreaMapper.delete(new LambdaQueryWrapper<ProjectContractArea>()
-                    .eq(ProjectContractArea::getContractId,projectContractArea.getContractId()));
+                        .eq(ProjectContractArea::getContractId, projectContractArea.getContractId()));
                 int res = projectContractAreaMapper.insert(projectContractArea);
                 return res > 0;
 //                return true;

+ 4 - 0
blade-service/blade-meter/pom.xml

@@ -75,6 +75,10 @@
             <version>5.5.13</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>org.jsoup</groupId>
+            <artifactId>jsoup</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

+ 80 - 18
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -22,12 +22,15 @@ import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.time.DateUtils;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.jsoup.Jsoup;
+import org.jsoup.select.Elements;
 import org.springblade.business.entity.FixedFlow;
 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.constant.CommonConstant;
 import org.springblade.common.utils.BaseUtils;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.common.utils.SnowFlakeUtil;
@@ -44,6 +47,7 @@ import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.feign.ArchiveFileTaskClient;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.ContractRelationJlyz;
+import org.springblade.manager.entity.TextdictInfo;
 import org.springblade.manager.feign.FormulaClient;
 import org.springblade.manager.vo.ReportResult;
 import org.springblade.meter.dto.*;
@@ -56,6 +60,7 @@ 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.cache.ParamCache;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
@@ -250,7 +255,7 @@ public class TaskController extends BladeController {
                     try {
                         this.buildTaskInfo(taskId, approvalDTO, aopParamsSet, 1);
                     } catch (Exception e) {
-                        throw new ServiceException("创建审批任务异常,操作失败:" + e.getMessage());
+                        throw new ServiceException("创建审批任务异常," + e.getMessage());
                     }
 
                     /*修改数据源状态为=待审批*/
@@ -320,7 +325,7 @@ public class TaskController extends BladeController {
                     try {
                         this.buildTaskInfo(taskId, approvalDTO, aopParamsSet, 2);
                     } catch (Exception e) {
-                        throw new ServiceException("创建审批任务异常,操作失败:" + e.getMessage());
+                        throw new ServiceException("创建审批任务异常," + e.getMessage());
                     }
 
                     /*修改数据源状态为=待审批*/
@@ -385,7 +390,7 @@ public class TaskController extends BladeController {
                     try {
                         this.buildTaskInfo(taskId, approvalDTO, aopParamsSet, 3);
                     } catch (Exception e) {
-                        throw new ServiceException("创建审批任务异常,操作失败:" + e.getMessage());
+                        throw new ServiceException("创建审批任务异常," + e.getMessage());
                     }
 
                     /*修改数据源状态为=待审批*/
@@ -483,7 +488,7 @@ public class TaskController extends BladeController {
                 try {
                     this.buildTaskInfo(taskId, approvalDTO, aopParamsSet, 4);
                 } catch (Exception e) {
-                    throw new ServiceException("创建审批任务异常,操作失败:" + e.getMessage());
+                    throw new ServiceException("创建审批任务异常," + e.getMessage());
                 }
 
                 return R.data(200, aopParamsSet, "操作成功");
@@ -530,7 +535,7 @@ public class TaskController extends BladeController {
         }
         R<Object> objectR = archiveFileTaskClient.checkTaskUserCertificateInfo(approvalDTO.getTaskUserIds());
         if (!objectR.isSuccess()) {
-            throw new ServiceException("选择的任务人没有签字证书信息,请联系管理员");
+            throw new ServiceException(objectR.getMsg());
         }
 
         /*主任务*/
@@ -2195,13 +2200,12 @@ public class TaskController extends BladeController {
 
             /*单条业务数据状态*/
             updateCopyDataStatus(task, dto);
-
+            String reportId = null;
             /*最终审批轮次*/
             if (isCurrentUserLastApprove) {
                 //TODO 重新生成报表,执行电签(电签失败直接return或抛出异常,不修改下方状态)
-                Long reportId = 0L;
-                if (task.getMeterTaskType() == 3 || task.getMeterTaskType() == 2) { //2材料,3开工
-                    MaterialStartStatement materialS = materialStartStatementService.getBaseMapper().selectOne(Wrappers.<MaterialStartStatement>lambdaQuery().eq(MaterialStartStatement::getContractId, task.getContractId()).eq(MaterialStartStatement::getMeterPeriodId, task.getFormDataId()).eq(MaterialStartStatement::getType, task.getMeterTaskType() - 1));
+                if(task.getMeterTaskType()==3 || task.getMeterTaskType()==2){ //2材料,3开工
+                    MaterialStartStatement materialS = materialStartStatementService.getBaseMapper().selectOne(Wrappers.<MaterialStartStatement>lambdaQuery().eq(MaterialStartStatement::getContractId, task.getContractId()).eq(MaterialStartStatement::getMeterPeriodId, task.getFormDataId()).eq(MaterialStartStatement::getType, task.getMeterTaskType()-1));
                     if (materialS == null || Func.isNull(materialS)) {
                         MeterPeriod me = periodService.getById(task.getFormDataId());
                         MaterialStartStatement data = new MaterialStartStatement();
@@ -2209,7 +2213,9 @@ public class TaskController extends BladeController {
                         data.setContractId(Func.toLong(task.getContractId()));
                         data.setMeterPeriodId(Func.toLong(task.getFormDataId()));
                         data.setPrintDate(me.getFormPrintDate());
-                        if (task.getMeterTaskType() == 2) {
+                        data.setPeriodNumber(me.getPeriodNumber());
+                        data.setProjectId(me.getProjectId());
+                        if(task.getMeterTaskType()==2){
                             data.setRepaymentCause("材料预付款");
                             data.setStatementName("材料预付款--" + me.getPeriodName());
                             data.setType(1);
@@ -2221,9 +2227,9 @@ public class TaskController extends BladeController {
                             data.setType(2);
                         }
                         materialStartStatementService.saveOrUpdate(data);
-                        reportId = data.getId();
+                        reportId = data.getId()+"";
                     } else {
-                        reportId = materialS.getId();
+                        reportId = materialS.getId()+"";
                     }
                 } else if (task.getMeterTaskType() == 1) { // 1中间
                     InterimPayCertificate inData = interimPayCertificateService.getBaseMapper().selectOne(Wrappers.<InterimPayCertificate>lambdaQuery().eq(InterimPayCertificate::getContractId, task.getContractId()).eq(InterimPayCertificate::getContractPeriodId, task.getFormDataId()));
@@ -2236,14 +2242,13 @@ public class TaskController extends BladeController {
                         inData2.setCertificateNumber(task.getFormDataId());
                         inData2.setPeriodNumber(me.getPeriodNumber());
                         inData2.setPrintDate(me.getFormPrintDate());
+                        inData2.setProjectId(me.getProjectId());
                         interimPayCertificateService.save(inData2);
-                        reportId = inData2.getId();
+                        reportId = inData2.getId()+"";
                     }
-                    reportId = inData.getId();
+                    reportId = inData.getId()+"";
                 }
                 /**计量公式执行 0中间,1材料,2开工*/
-                meterPdfInfo(reportId + "", 1);
-
                 /*复制业务数据状态>主任务状态>替换数据*/
                 updateCopyDataApproveStatus(task, dto).updateTaskStatus(task).displace(task, dto);
             }
@@ -2256,6 +2261,11 @@ public class TaskController extends BladeController {
                 String param = taskParallel.getTaskUser() + "," + task.getProjectId() + "," + task.getContractId();
                 aopParamsSet.add(param);
             }
+            //
+            if(reportId!=null && StringUtils.isNotEmpty(reportId) && (task.getMeterTaskType()==3 ||task.getMeterTaskType()==1 || task.getMeterTaskType()==2)){
+                meterPdfInfo(reportId + "", task.getMeterTaskType()-1);
+            }
+
             return R.data(200, aopParamsSet, "操作成功");
         }
         return R.fail("操作失败");
@@ -2314,6 +2324,7 @@ public class TaskController extends BladeController {
                 isCurrentUserLastApprover = true;
             }
         }
+
         return isCurrentUserLastApprover;
     }
 
@@ -2736,6 +2747,8 @@ public class TaskController extends BladeController {
                                 }
                                 /*设置表头*/
                                 setTitle(sheet, tile);
+                                /*添加电签*/
+                                setDQInfo(sheet,rs.getUrl());
                                 //去掉表格虚线
                                 sheet.setPrintGridlines(false);
                                 //设置 整个工作表为一页
@@ -2804,6 +2817,55 @@ public class TaskController extends BladeController {
         }
     }
 
+    // 添加电签信息数据
+    public void setDQInfo(Sheet sheet, String htmlUrl) {
+        String file_path = CollectionUtils.getSysLocalFileUrl();
+        // 添加电签关键字Id
+        String sys_file_net_url = ParamCache.getValue(CommonConstant.SYS_FILE_NET_URL);
+        File file = null;
+        InputStream fileInputStream;
+        try {
+            file = ResourceUtil.getFile(htmlUrl);
+            if (file.exists()) {
+                fileInputStream = new FileInputStream(file);
+            } else {
+                String path = sys_file_net_url + htmlUrl.replaceAll("//", "/").replaceAll(file_path, "");
+                fileInputStream = CommonUtil.getOSSInputStream(path);
+            }
+            String htmlString = IoUtil.readToString(fileInputStream);
+            org.jsoup.nodes.Document htmldoc = Jsoup.parse(htmlString);
+            Elements dqlist = htmldoc.getElementsByAttribute("dqid");
+            if(dqlist!=null && !dqlist.isEmpty()){
+                dqlist.forEach(element -> {
+                    int y1 = Func.toInt(element.attr("y1"));
+                    int x1 = Func.toInt(element.attr("x1"));
+
+                    Row row = sheet.getRow(y1 - 1);
+                    if (row != null) {
+                        Cell cell = row.getCell(x1 - 1);
+                        if (cell != null) {
+
+                            cell.setCellValue(element.attr("dqid"));
+
+                            Workbook workbook = cell.getSheet().getWorkbook();
+                            CellStyle cellStyle = workbook.createCellStyle();
+                            cellStyle.cloneStyleFrom(cell.getCellStyle());
+
+                            Font newFont = workbook.createFont();
+                            newFont.setColor(IndexedColors.WHITE.getIndex());
+                            newFont.setFontHeightInPoints((short) 2);
+                            cellStyle.setFont(newFont);
+
+                            cell.setCellStyle(cellStyle);
+                        }
+                    }
+                });
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
     @Data
     class Report {
         public final String[] REPORT_TYPE = new String[]{"s_interim_pay_certificate", "s_material_start_statement", "s_material_start_statement"};
@@ -2920,7 +2982,7 @@ public class TaskController extends BladeController {
                 String resultString = StringUtils.join(userIds, ",");
                 R<Object> objectR = archiveFileTaskClient.checkTaskUserCertificateInfo(resultString);
                 if (!objectR.isSuccess()) {
-                    throw new ServiceException("预设流程选择的任务人没有签字证书信息");
+                    throw new ServiceException(objectR.getMsg());
                 }
             }
 
@@ -3031,7 +3093,7 @@ public class TaskController extends BladeController {
                 String resultString = StringUtils.join(userIds, ",");
                 R<Object> objectR = archiveFileTaskClient.checkTaskUserCertificateInfo(resultString);
                 if (!objectR.isSuccess()) {
-                    throw new ServiceException("预设流程选择的任务人没有签字证书信息");
+                    throw new ServiceException(objectR.getMsg());
                 }
             }