zhuwei 1 rok pred
rodič
commit
29fa6a22c9
15 zmenil súbory, kde vykonal 221 pridanie a 105 odobranie
  1. 15 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/TextdictInfo.java
  2. 4 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MiddleMeterApplyVO.java
  3. 2 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/StartPayMeterFormVO.java
  4. 0 14
      blade-service/blade-business/src/main/java/org/springblade/business/controller/EVisaTaskCheckController.java
  5. 4 0
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/controller/EVisaController.java
  6. 35 13
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/impl/EVisaServiceImpl.java
  7. 29 37
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  8. 3 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/TextdictInfoMapper.xml
  9. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  10. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java
  11. 12 7
      blade-service/blade-manager/src/main/java/org/springblade/manager/utils/FileUtils.java
  12. 28 5
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java
  13. 23 12
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.xml
  14. 12 6
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/StartPayMeterFormMapper.xml
  15. 52 9
      blade-service/blade-meter/src/main/java/org/springblade/meter/utils/FileUtils.java

+ 15 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/TextdictInfo.java

@@ -106,4 +106,19 @@ public class TextdictInfo implements Serializable {
      * 是否删除
      */
     private Integer isDeleted;
+
+    /**
+     * 时间对应key
+     */
+    private String timeColKey;
+
+    /**
+     * 时间对应名称
+     */
+    private String timeName;
+
+    /**
+     * 是否需要时间 1需要 0不需要
+     */
+    private int timeState;
 }

+ 4 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MiddleMeterApplyVO.java

@@ -50,4 +50,8 @@ public class MiddleMeterApplyVO extends MiddleMeterApply {
 	@ApiModelProperty(value = "期数Pdf")
 	private String periodPdfUrl;
 
+	@ApiModelProperty(value = "任务Id")
+	private String taskId;
+
+
 }

+ 2 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/StartPayMeterFormVO.java

@@ -44,4 +44,6 @@ public class StartPayMeterFormVO extends StartPayMeterForm {
 	@ApiModelProperty(value = "附件列表")
 	private List<AttachmentForm> fileList;
 
+	@ApiModelProperty(value = "任务Id")
+	private String taskId;
 }

+ 0 - 14
blade-service/blade-business/src/main/java/org/springblade/business/controller/EVisaTaskCheckController.java

@@ -797,20 +797,6 @@ public class EVisaTaskCheckController {
      */
     private List<JSONObject> queryTableEVisaConfig(JSONObject json, String eVisaPDFUrl) {
         List<JSONObject> jsonList;
-//        if (json.containsKey("theLogPrimaryKeyId") && StringUtils.isNotEmpty(json.getString("theLogPrimaryKeyId"))) {
-//            //日志,需要先获取对应的表格
-//            jsonList = this.queryTableEVisaConfig(Func.toStrList(json.getString("theLogPrimaryKeyId")));
-//
-//        } else if (json.containsKey("firstId") && StringUtils.isNotEmpty(json.getString("firstId"))) {
-//            //首件,先获取记录
-//            InformationQuery query = this.informationQueryService.getById(json.getLong("firstId"));
-//            if (query != null) {
-//                jsonList = this.queryTableEVisaConfig(Func.toStrList(this.wbsTreeContractClient.getContractNodeByPrimaryKeyId(query.getTableId()).getIsTypePrivatePid().toString()));
-//            } else {
-//                jsonList = null;
-//            }
-//
-//        } else {
             //资料填报
             List<String> ids = PDFUtil.getPdfSignIds(eVisaPDFUrl);
             if (ids == null || ids.size() == 0) {

+ 4 - 0
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/controller/EVisaController.java

@@ -167,6 +167,10 @@ public class EVisaController {
                     }
                 }
             }else if ("eVisaError".equals(eVisaStatus) || eVisaStatus.contains("eVisaError")) {
+                // 修改 主 任务 u_task 表 状态改为3
+                String up_task_par = "update u_task_parallel set status=2 ,e_visa_status=99 ,e_visa_content='"+eVisaStatus.split("####")[1]+"' where parallel_process_instance_id='"+taskApprovalVO.getParallelProcessInstanceId()+"'";
+                this.jdbcTemplate.execute("delete from u_task_batch where id="+taskApprovalVO.getId());
+                jdbcTemplate.execute(up_task_par);
 
             }else {
 

+ 35 - 13
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/impl/EVisaServiceImpl.java

@@ -259,15 +259,33 @@ public class EVisaServiceImpl implements EVisaService {
                 }
                 String dataInfo = this.taskClient.queryTaskContractId(task.getParallelProcessInstanceId());
                 String contractId = Func.toStrArray(dataInfo)[0];
+                String projectId = Func.toStrArray(dataInfo)[1];
 
                 String ids = String.join(",", eVisaConfigList);
-                String sqlinfo = "SELECT a.id,a.pyzbx,a.pyzby,b.signature_file_url,b.id as sfId,b.certificate_password,b.certificate_user_name,b.certificate_number from m_textdict_info a ,m_sign_pfx_file b where a.sig_role_id = b.pfx_type and b.project_contract_role like '%" + contractId + "%' and a.is_deleted=0 and b.is_deleted=0 and a.type=6 and a.id in(" + ids + ")";
-                List<Map<String, Object>> maps = jdbcTemplate.queryForList(sqlinfo);
+                String sqlinfo = "SELECT a.id,a.pyzbx,a.pyzby,b.signature_file_url,b.id as sfId,a.project_id,b.certificate_password,b.certificate_user_name,b.certificate_number from m_textdict_info a ,m_sign_pfx_file b where a.sig_role_id = b.pfx_type and b.project_contract_role like '%" + contractId + "%' and a.is_deleted=0 and b.is_deleted=0 and a.type=6 and a.id in(" + ids + ")";
+                List<Map<String, Object>> maps2 = jdbcTemplate.queryForList(sqlinfo);
                 System.out.println("合同-" + contractId + "--" + sqlinfo);
-                if (maps == null || maps.isEmpty()) {
+                if (maps2 == null || maps2.isEmpty()) {
                     return finalPdfUrl;
                 }
                 //
+                List<Map<String, Object>> maps = new ArrayList<>();
+                Map<String, List<Map<String, Object>>> peopleByAge = maps2.stream()
+                        .collect(Collectors.groupingBy( hada ->(Func.toStr(hada.get("id")))));
+
+                for(String keyId :peopleByAge.keySet()){
+                    List<Map<String, Object>> keyList = peopleByAge.get(keyId);
+                    if(keyList!=null && keyList.size()==1){
+                        maps.addAll(keyList);
+                    }else if(keyList!=null && keyList.size()>=2){
+                        for(Map<String, Object> datax : keyList){
+                            if((datax.get("project_id")+"").equals(projectId)){
+                                maps.add(datax);
+                            }
+                        }
+                    }
+                }
+
                 if(reType.equals("2")){ //中方中讯
                     if (maps != null && !maps.isEmpty()) {
                         String fileUrl = finalPdfUrl;
@@ -336,6 +354,7 @@ public class EVisaServiceImpl implements EVisaService {
                         vo.setSealType("3");
                         vo.setCompanySeal(true);
                         vo.setKeyword(eVisaConfig.get("id") + "");
+
                         vo.setOffSetX(eVisaConfig.get("pyzbx") + "");
                         vo.setOffSetY(eVisaConfig.get("pyzby") + "");
                         sealStrategyVOS.add(vo);
@@ -417,7 +436,6 @@ public class EVisaServiceImpl implements EVisaService {
             //获取需要签章的数据
             List<TaskApprovalVO.ApprovalFile> files = taskFile.getApprovalFileList();
 
-
             //这里的文件只会是一张拼接好的PDF
             for (TaskApprovalVO.ApprovalFile file : files) {
 
@@ -441,19 +459,19 @@ public class EVisaServiceImpl implements EVisaService {
                 String projectId = Func.toStrArray(dataInfo)[1];
 
                 if (taskFile.getRemarkType().equals("2")) {//东方 中讯 daMap.put("keyWord","1673632651551965184");
-                    String sqlinfo = " SELECT a.id as keyWord,a.project_id,(SELECT acc_code from blade_user where id='" + task.getUserId() + "' and is_deleted=0  ) as sealId from m_textdict_info a where  a.type =2 and a.id in (" + ids + ")  and sig_role_id in (SELECT DISTINCT c.role_id from m_project_assignment_user c  where c.contract_id=" + contractId + " and user_id=" + task.getUserId() + " and c.is_deleted=0 )";
+                    String sqlinfo = " SELECT * from ( SELECT a.id as keyWord,a.project_id,a.pyzbx ,a.pyzby,(SELECT acc_code from blade_user where id='" + task.getUserId() + "' and is_deleted=0  ) as sealId from m_textdict_info a where  a.type =2 and a.id in (" + ids + ")  and sig_role_id in (SELECT DISTINCT c.role_id from m_project_assignment_user c  where c.contract_id=" + contractId + " and user_id=" + task.getUserId() + " and c.is_deleted=0 ) ) x where x.sealId is not null ";
                     System.out.println("东方中讯-个人-user-id" + task.getUserId() + "--SQL=" + sqlinfo);
                     List<Map<String, Object>> maps2 = jdbcTemplate.queryForList(sqlinfo);
                     if (maps2 != null && !maps2.isEmpty()) {
                         List<Map<String, Object>> maps = new ArrayList<>();
                         Map<String, List<Map<String, Object>>> peopleByAge = maps2.stream()
-                                .collect(Collectors.groupingBy( hada ->(Func.toStr(hada.get("id")))));
+                                .collect(Collectors.groupingBy( hada ->(Func.toStr(hada.get("keyWord")))));
 
                         for(String keyId :peopleByAge.keySet()){
                             List<Map<String, Object>> keyList = peopleByAge.get(keyId);
                             if(keyList!=null && keyList.size()==1){
                                 maps.addAll(keyList);
-                            }else if(keyList!=null && keyList.size()>=1){
+                            }else if(keyList!=null && keyList.size()>=2){
                                 for(Map<String, Object> datax : keyList){
                                     if((datax.get("project_id")+"").equals(projectId)){
                                         maps.add(datax);
@@ -471,12 +489,16 @@ public class EVisaServiceImpl implements EVisaService {
                             daMa.put("showHeight",30);
                             daMa.put("showWidth",60);
                             //设置显示签字体的位置
-                            daMa.put("sealOffsetY",-15);
-                            daMa.put("sealOffsetX",-30);
-
+                            String yzx = dataMap.get("pyzby")+"";
+                            String xzx = dataMap.get("pyzbx")+"";
+                            Double sealOffsetY =Func.toDouble(yzx) -15;
+                            Double sealOffsetX =Func.toDouble(xzx) -30;
+                            daMa.put("sealOffsetX",sealOffsetX);
+                            daMa.put("sealOffsetY",sealOffsetY);
+                           // daMa.put("sealOffsetY",-15);
+                           // daMa.put("sealOffsetX",-30);
                             byte[] fileByte;
                             if (fileUrl.indexOf("aliyuncs.com") >= 0) {
-
                                 URL url =new URL(pdfUrl);
                                 fileByte = IOUtils.toByteArray(url);
                             } else {
@@ -511,7 +533,7 @@ public class EVisaServiceImpl implements EVisaService {
                         return SUCCESS + "@@@@" + taskFile.getApprovalFileList().get(0).getFileUrl();
                     }
                 } else { //安心签证
-                    String sqlinfo = " SELECT DISTINCT a.id,a.pyzbx ,a.pyzby,a.project_id,(SELECT signature_file_url from m_sign_pfx_file where is_register=1 and certificate_user_id='" + task.getUserId() + "' and is_deleted=0  ) as signature_file_url from m_textdict_info a where  a.type =2 and a.id in (" + ids + ")  and sig_role_id in (SELECT DISTINCT c.role_id from m_project_assignment_user c  where c.contract_id=" + contractId + " and user_id=" + task.getUserId() + " and c.is_deleted=0 )";
+                    String sqlinfo = "SELECT * from ( SELECT DISTINCT a.id,a.pyzbx ,a.pyzby,a.project_id,(SELECT signature_file_url from m_sign_pfx_file where is_register=1 and certificate_user_id='" + task.getUserId() + "' and is_deleted=0  ) as signature_file_url from m_textdict_info a where  a.type =2 and a.id in (" + ids + ")  and sig_role_id in (SELECT DISTINCT c.role_id from m_project_assignment_user c  where c.contract_id=" + contractId + " and user_id=" + task.getUserId() + " and c.is_deleted=0 ) ) x where x.signature_file_url is not null ";
                     List<Map<String, Object>> maps2 = jdbcTemplate.queryForList(sqlinfo);
 
                     List<Map<String, Object>> maps = new ArrayList<>();
@@ -522,7 +544,7 @@ public class EVisaServiceImpl implements EVisaService {
                         List<Map<String, Object>> keyList = peopleByAge.get(keyId);
                         if(keyList!=null && keyList.size()==1){
                             maps.addAll(keyList);
-                        }else if(keyList!=null && keyList.size()>=1){
+                        }else if(keyList!=null && keyList.size()>=2){
                             for(Map<String, Object> datax : keyList){
                                 if((datax.get("project_id")+"").equals(projectId)){
                                     maps.add(datax);

+ 29 - 37
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -751,46 +751,38 @@ public class ExcelTabController extends BladeController {
                 Elements tds = tr.select("td");
                 for (int j = 0; j < tds.size(); j++) {
                     Element data = tds.get(j);
-                    int colspan = data.attr("COLSPAN").equals("") ? 0 : Integer.parseInt(data.attr("COLSPAN"));
                     String style = data.attr("style");
                     if (style.indexOf("font-size") >= 0) {
                         int fontsize = Integer.parseInt(style.substring(style.indexOf("font-size:") + 10, style.indexOf(".0pt")));
+                        Element element=null;
                         if (isWater) {
                             if (StringUtils.isNotEmpty(data.text()) && fontsize >= 12) {
-                                trs.get(i - 1).select("td").get(0).text(projectInfo.getProjectName());
+                                 element = trs.get(i - 1).select("td").get(0);
+
                             }
                         } else {
                             if (StringUtils.isNotEmpty(data.text()) && fontsize >= 14) {
-                                trs.get(i - 1).select("td").get(0).text(projectInfo.getProjectName());
+                                element = trs.get(i - 1).select("td").get(0);
+                            }
+                        }
+                        if(element!=null && Func.isNotEmpty(element)){
+                            //
+                            Elements allElements = element.children();
+                            if(allElements.size()>=1 ){
+                                String defText = allElements.get(0).attr("deftext");
+                                if(defText!=null && Func.isNotEmpty(defText)){
+                                    element.text(defText);
+                                }else{
+                                    element.text(projectInfo.getProjectName());
+                                }
+                            }else{
+                                element.text(projectInfo.getProjectName());
                             }
                         }
                     }
                 }
             }
 
-            // 获取公式颜色
-            String tabName = wbsTreeContract.getInitTableName();
-            // 字段查询 获取公式字段
-//        String colkeys = "SELECT e_key from m_table_info a ,m_wbs_form_element b WHERE a.tab_en_name = '" + tabName + "' and a.id=b.f_id and b.id  in(SELECT element_id from m_element_formula_mapping c where c.is_deleted=0) ";
-//
-//        List<Map<String, Object>> maps = jdbcTemplate.queryForList(colkeys);
-//
-//        if (maps != null) {
-//            for (Map<String, Object> keys : maps) {
-//                String key = keys.get("e_key") + "__";
-//                Elements gscolor = doc.select("el-input[keyname~=^" + key + "]");
-//                for (Element element : gscolor) {
-//                    //System.out.println(element.parent());
-//                    element.parent().attr("gscolor", "11");
-//                }
-//
-//                Elements datecolor = doc.select("el-date-picker[keyname~=^" + key + "]");
-//                for (Element element : datecolor) {
-//                    //System.out.println(element.parent());
-//                    element.parent().attr("gscolor", "11");
-//                }
-//            }
-//        }
             WbsTreeContract process = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery()
                     .eq(WbsTreeContract::getId, wbsTreeContract.getParentId())
                     .eq(WbsTreeContract::getContractId, wbsTreeContract.getContractId())
@@ -938,12 +930,15 @@ public class ExcelTabController extends BladeController {
             Elements tds = tr.select("td");
             for (int j = 0; j < tds.size(); j++) {
                 Element data = tds.get(j);
-                //int colspan = data.attr("COLSPAN").equals("") ? 0 : Integer.parseInt(data.attr("COLSPAN"));
                 String style = data.attr("style");
                 if (style.contains("font-size")) {
                     int fontsize = Integer.parseInt(style.substring(style.indexOf("font-size:") + 10, style.indexOf(".0pt")));
                     if (StringUtils.isNotEmpty(data.text()) && fontsize >= 12) {
-                        trs.get(i - 1).select("td").get(0).text(projectInfo.getProjectName());
+                        Element element = trs.get(i - 1).select("td").get(0);
+                        String textainfo = element.text();
+                        if(textainfo ==null || textainfo == "" || Func.isEmpty(textainfo)){
+                            element.text(projectInfo.getProjectName());
+                        }
                         break;
                     }
                 }
@@ -2335,8 +2330,8 @@ public class ExcelTabController extends BladeController {
                     CellRange[] columns = sheet.getMergedCells();
                     for (int i = 0; i < columns.length; i++) {
                         CellRange cellRange = columns[i];
-                        System.out.println(cellRange.getStyle().getFont().getSize());
-                        if (cellRange.getStyle().getFont().getSize() >= 12) {
+                        System.out.println(cellRange.getText());
+                        if (cellRange.getStyle().getFont().getSize() >= 12 && Func.isNotEmpty(cellRange.getText())) {
                             String title = projectInfo.getProjectName();
                             if (title.length() >= 30) {
                                 cellRange.setRowHeight(40);
@@ -2470,8 +2465,6 @@ public class ExcelTabController extends BladeController {
                                 Elements tdDatas = trData.select("td");
                                 if (tdDatas.size() > Integer.parseInt(trtd[1])) {
                                     Element data = tdDatas.get(Integer.parseInt(trtd[1]));
-                                    //Element data = trs.get(Integer.parseInt(trtd[0])).select("td").get(Integer.parseInt(trtd[1]));
-
                                     int x1 = Integer.parseInt(data.children().get(0).attr("x1"));
                                     if (x1 == 0) {
                                         x1 = 1;
@@ -2581,10 +2574,9 @@ public class ExcelTabController extends BladeController {
                 if (businessDataMap.size() > 0) {
                     // 匹配关联
                     try {
-                        File file1 = ResourceUtil.getFile(tableNode2.getHtmlUrl());
-                        if (file1.exists()) {
-
-                            String htmlString = IoUtil.readToString(new FileInputStream(file1));
+                        if (tableNode2.getHtmlUrl()!=null) {
+                            InputStream inputStreamByUrl = FileUtils.getInputStreamByUrl(tableNode2.getHtmlUrl());
+                            String htmlString = IoUtil.readToString(inputStreamByUrl);
                             Document doc = Jsoup.parse(htmlString);
 
                             // 模糊匹配
@@ -2662,7 +2654,7 @@ public class ExcelTabController extends BladeController {
                                 }
                             }
                         }
-                    } catch (FileNotFoundException e) {
+                    } catch (Exception e) {
                         e.printStackTrace();
                     }
                     for (Map<String, Object> mysqlData : businessDataMap) {

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/TextdictInfoMapper.xml

@@ -18,6 +18,9 @@
         <result column="pyzby" property="pyzby"/>
         <result column="excel_id" property="excelId"/>
         <result column="project_id" property="projectId"/>
+        <result column="time_state" property="timeState"/>
+        <result column="time_name" property="timeName"/>
+        <result column="time_col_key" property="timeColKey"/>
     </resultMap>
 
     <select id="selectTextdictInfoPage" resultMap="textdictInfoResultMap">

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -1354,7 +1354,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
             //编号为父节点划分编号 “编号:”、“工程编号:”、“编号”、“分项工程编号”、“分部分项编号”
             Elements bhtitle = doc.select("el-input[placeholder~=^编号]");
-            if(wbsTreeContract.getWbsType()==1){
+            if(Func.isNotEmpty(wbsTreeContract.getWbsType()) && wbsTreeContract.getWbsType()==1){
                 Elements bhtitle2 = doc.select("el-input[placeholder~=^工程编号]");
                 Elements bhtitle3 = doc.select("el-input[placeholder~=^分项工程编号]");
                 Elements bhtitle4 = doc.select("el-input[placeholder~=^分部分项编号]");

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -2839,7 +2839,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         Map<String,Map<String,String>> eSignMaps=new HashMap<>();
         tableList.forEach(nt -> {
             String initTableName =nt.getInitTableName();
-            Document document =documentMap.get(nt.getInitTableName());
+            Document document = documentMap.get(nt.getInitTableName());
             coordinateMap.put(initTableName, FormulaUtils.getElementExcelCoords(document));
             eSignMaps.put(initTableName,FormulaUtils.getESignMap(document));
         });

+ 12 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/FileUtils.java

@@ -15,6 +15,7 @@ import com.sun.image.codec.jpeg.JPEGCodec;
 import com.sun.image.codec.jpeg.JPEGImageEncoder;
 import org.apache.commons.lang.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFPrintSetup;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.util.Units;
@@ -162,14 +163,18 @@ public class FileUtils {
         return -1;
     }
 
-/*    public static void main(String[] args) {
-        String outPdfUrl = "/Users/hongchuangyanfa/Desktop/pdf/outPdf.pdf";
+ /*   public static void main(String[] args) throws IOException, InvalidFormatException {
+        String exceUrl = "/Users/hongchuangyanfa/Downloads/c884eee1164699711fc783c5fe59d51f.xlsx";
+        File file = new File(exceUrl);
+        org.apache.poi.ss.usermodel.Workbook workbook = new XSSFWorkbook(file);
+        Sheet sheet = workbook.getSheetAt(0);
+
+         Row row = sheet.getRow(12 - 1);
+         if (row != null) {
+             Cell cell = row.getCell(4 - 1);
+             System.out.println(cell);
+         }
 
-        List<String> urlList = new ArrayList<>();
-        for(int i=0; i<=500 ;i++){
-            urlList.add("/Users/hongchuangyanfa/Desktop/pdf/1788120810012016640123.pdf");
-        }
-        mergePdfPublicMethods(urlList, outPdfUrl);
     }*/
 
     /**

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

@@ -22,6 +22,8 @@ import com.itextpdf.text.Document;
 import com.itextpdf.text.pdf.PdfCopy;
 import com.itextpdf.text.pdf.PdfReader;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import javassist.bytecode.stackmap.BasicBlock;
 import lombok.AllArgsConstructor;
@@ -1286,9 +1288,11 @@ public class TaskController extends BladeController {
                     }
                 }
                 //校验当前用户在第几流程
-                Integer sort = query.stream().collect(Collectors.toMap(l -> l.getFixedFlowLinkUser(), l -> l.getFixedFlowBranchSort())).get(AuthUtil.getUserId());
+ /*               Map<Long, Integer> collect = query.stream().collect(Collectors.toMap(l -> l.getFixedFlowLinkUser(), l -> l.getFixedFlowBranchSort()));
+
+                Integer sort = collect.get(AuthUtil.getUserId());
                 // 为空则代表是上报人,直接显示当前结果
-                currentUserFlow = sort;
+                currentUserFlow = sort;*/
 
                 Map<String, List<FixedFlowLink>> group = query.stream()
                         .collect(Collectors.groupingBy(obj -> obj.getFixedFlowLink() + "@@@" + obj.getFixedFlowLinkType(),
@@ -2552,7 +2556,9 @@ public class TaskController extends BladeController {
                 checkMiddleApp(dto, task, taskParallels);
             }
 
+            //判断签字状态
             boolean isCurrentUserLastApprove = checkTheTaskPersonSort(taskParallels);
+
             /*单条业务数据状态*/
             updateCopyDataStatus(task, dto);
             String reportId = null;
@@ -3402,6 +3408,22 @@ public class TaskController extends BladeController {
     }
 
 
+    @GetMapping("/backMeterTask")
+    @ApiOperationSupport(order = 22)
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "periodId", value = "期数ID"),
+            @ApiImplicitParam(name = "type", value = "类型(0中间,1材料,2开工)")
+    })
+    public R backMeterTask(@RequestParam String periodId, @RequestParam Integer type) {
+        // 0中间,1材料,2开工
+        String delTaskPall = "DELETE from u_task_parallel where process_instance_id in(SELECT process_instance_id from u_task where form_data_id ='"+periodId+"') ";
+        String delTask = "DELETE from u_task where form_data_id ='"+periodId+"'";
+        jdbcTemplate.execute(delTaskPall);
+        jdbcTemplate.execute(delTask);
+        return R.success("成功");
+    }
+
+
     @GetMapping("/meterPdfInfo")
     @ApiOperationSupport(order = 22)
     @ApiOperation(value = "计量生成Pdf", notes = "计量生成Pdf")
@@ -3922,8 +3944,9 @@ public class TaskController extends BladeController {
                 && ObjectUtil.isNotEmpty(dto.getProjectId())
                 && ObjectUtil.isNotEmpty(dto.getContractId())) {
 
+            // 获取流产下的节点流程信息
             List<SaveFixedFlowDTO.FixedBranch> fixedBranchList = dto.getFixedBranchList();
-            Set<String> allUserIds = new HashSet<>();
+            /*Set<String> allUserIds = new HashSet<>();
             Set<String> duplicateUserIds = new HashSet<>();
             for (SaveFixedFlowDTO.FixedBranch fixedBranch : fixedBranchList) {
                 String userIds = fixedBranch.getUserIds();
@@ -3945,7 +3968,7 @@ public class TaskController extends BladeController {
                     names.add(orDefault);
                 }
                 throw new ServiceException("每个任务人只能归属于一个任务中,以下任务人重复:" + String.join("、", names));
-            }
+            }*/
 
             /*检查签字证书信息*/
             List<String> userIds = dto.getFixedBranchList().stream().map(SaveFixedFlowDTO.FixedBranch::getUserIds).collect(Collectors.toList());
@@ -4128,7 +4151,7 @@ public class TaskController extends BladeController {
         } else {
             fileUrl = aPrivate.getHtmlUrl();
         }
-        try (InputStream fileInputStream = new FileInputStream(fileUrl)){
+        try (InputStream fileInputStream = FileUtils.getInputStreamByUrl(fileUrl)){
             String htmlString = IoUtil.readToString(fileInputStream);
             htmlString = htmlString.replaceAll("placeholder", "placeholderxx");
             htmlString = htmlString.replaceAll("title", "titlexx");

+ 23 - 12
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.xml

@@ -100,27 +100,38 @@
             order by mma.create_time desc
     </select>
     <select id="page3" resultType="org.springblade.meter.vo.MiddleMeterApplyVO">
-        SELECT *,
-               CASE when approve_status = 0 then '未上报' when approve_status = 1 then '待审批' when approve_status = 2 then '已审批'
-                    else '已废除' end as approveStatusName,
-               (select period_number from s_contract_meter_period cmp where cmp.id = mma.contract_period_id) as periodNumber,
-               (SELECT raw_url from s_interim_pay_certificate where contract_id=#{apply.contractId} and contract_period_id=mma.contract_period_id and is_deleted=0) as periodPdfUrl
-        FROM s_middle_meter_apply mma
-        WHERE contract_id = #{apply.contractId} and is_deleted = 0
+        SELECT a.*,b.period_number AS periodNumber ,
+        CASE
+        WHEN a.approve_status = 0 THEN
+        '未上报'
+        WHEN a.approve_status = 1 THEN
+            CONCAT('待审批',(
+                SELECT IFNULL(CONCAT( '(', group_concat( CONCAT( a.task_user_name, ',', DATEDIFF( CURDATE(), a.create_time ))), ')' ),"") AS taskUserInfo FROM u_task_parallel a,u_task b
+                    WHERE a.process_instance_id = b.process_instance_id AND b.form_data_id = b.id AND e_visa_status IS NULL AND (e_visa_content IS NULL or e_visa_content ='' ) AND b.STATUS != 3
+                ) )
+        WHEN a.approve_status = 2 THEN
+        '已审批' ELSE '已废除'
+        END AS approveStatusName ,
+        (SELECT id from u_task c where b.id=c.form_data_id) as task_id,
+        ( SELECT raw_url FROM s_interim_pay_certificate WHERE contract_id = #{apply.contractId}  AND contract_period_id = a.contract_period_id AND is_deleted = 0 ) AS periodPdfUrl
+        from
+        s_middle_meter_apply a ,s_contract_meter_period b
+        WHERE
+        a.contract_period_id = b.id
+        and a.contract_id = #{apply.contractId} and a.is_deleted = 0
         <if test="apply.contractPeriodId != -1">
-            and contract_period_id = #{apply.contractPeriodId}
+            and a.contract_period_id = #{apply.contractPeriodId}
         </if>
-
-          and contract_unit_id in (
+          and a.contract_unit_id in (
                 <foreach collection="ids" item="id"  separator=",">
                     #{id}
                 </foreach>
             )
-        order by FIELD(contract_unit_id,
+        order by FIELD(a.contract_unit_id,
             <foreach collection="ids" item="id"  separator=",">
                 #{id}
             </foreach>
-        ),create_time
+        ),a.create_time
 
     </select>
     <select id="meterPeriodAllForm" resultType="org.springblade.meter.vo.MeterInventoryDetailVO">

+ 12 - 6
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/StartPayMeterFormMapper.xml

@@ -23,14 +23,20 @@
         <result column="sort" property="sort"/>
     </resultMap>
     <select id="meterPage" resultType="org.springblade.meter.vo.StartPayMeterFormVO">
-        select *,
-               (select period_number from s_meter_period smp where smp.id = spmf.meter_period_id) as periodNumber,
-            CASE when approve_status = 0 then '未上报' when approve_status = 1 then '待审批' when approve_status = 2 then '已审批'
-            else '已废除' end as approveStatusName
+        SELECT IF(c.taskUserInfo is NULL,c.approveStatusName,CONCAT(c.approveStatusName,'',c.taskUserInfo))  as approveStatusName,c.* from (
+        select *,(select period_number from s_meter_period smp where smp.id = spmf.meter_period_id) as periodNumber,
+        CASE when approve_status = 0 then '未上报' when approve_status = 1 then '待审批' when approve_status = 2 then '已审批'
+        else '已废除' end as approveStatusName,
+        (
+        SELECT CONCAT('(',GROUP_CONCAT( CONCAT(a.task_user_name, ',', DATEDIFF(CURDATE(), a.create_time))),')') as taskUserInfo from u_task_parallel a ,u_task b where a.process_instance_id=b.process_instance_id and b.form_data_id=spmf.meter_period_id
+        and e_visa_status is null and e_visa_content is NULL
+        )	as taskUserInfo,
+        (SELECT max(id) from u_task c where spmf.meter_period_id=c.form_data_id) as task_id
         from s_start_pay_meter_form spmf
-        where contract_id = #{contractId} and is_deleted = 0
+        ) c
+        where c.contract_id = #{contractId} and c.is_deleted = 0
         <if test="meterPeriodId!=null and meterPeriodId!=''">
-            and meter_period_id = #{meterPeriodId}
+            and c.meter_period_id = #{meterPeriodId}
         </if>
     </select>
     <select id="detail" resultType="org.springblade.meter.vo.StartPayMeterFormVO">

+ 52 - 9
blade-service/blade-meter/src/main/java/org/springblade/meter/utils/FileUtils.java

@@ -11,6 +11,7 @@ import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 import org.jsoup.select.Elements;
 import org.springblade.common.constant.CommonConstant;
+import org.springblade.common.utils.CommonUtil;
 import org.springblade.common.utils.SystemUtils;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.system.cache.ParamCache;
@@ -25,15 +26,6 @@ import java.util.Map;
  * @Date 2024/5/14 16:44
  **/
 public class FileUtils {
-    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;
-    }
 
     public static void setExcelScaleToPdf(String inputPath, String outPath) {
         //读取excel文件
@@ -127,4 +119,55 @@ public class FileUtils {
             throw new ServiceException("解析HTML中key出错");
         }
     }
+
+    // 获取本地 或 远程工作流ParamCache
+    public static InputStream getInputStreamByUrl(String fileUrl) throws Exception {
+
+        File file1 = new File(fileUrl);
+        InputStream fileInputStream = null;
+        if (file1.exists()) {
+            fileInputStream = new FileInputStream(file1);
+        } else {
+            String path = getNetUrl(fileUrl);
+            fileInputStream = CommonUtil.getOSSInputStream(path);
+        }
+        return fileInputStream;
+    }
+
+    public static String getNetUrl(String fileUrl){
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+        String file_path2 = getSysLocalFileUrl();
+        String sys_file_net_url = ParamCache.getValue(CommonConstant.SYS_FILE_NET_URL);
+        if(fileUrl.indexOf("/www/wwwroot")>=0){
+            file_path2 = file_path;
+        }
+        String path = sys_file_net_url + fileUrl.replaceAll("//", "/").replaceAll(file_path2, "");
+        return path;
+    }
+
+    public static String getSysLocalFileUrl() {
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+        String sys_isonline = ParamCache.getValue(CommonConstant.SYS_ISONLINE);
+
+        if(sys_isonline.equals("3")){ //正式环境
+            if (SystemUtils.isMacOs()) {
+                file_path = "/Users/hongchuangyanfa/Desktop/";
+            } else if (SystemUtils.isWindows()) {
+                file_path = "C://upload//";
+            }
+        }else if(sys_isonline.equals("2")){ //109测试环境
+            if (SystemUtils.isMacOs()) {
+                file_path = "/Users/hongchuangyanfa/Desktop/";
+            } else if (SystemUtils.isWindows()) {
+                file_path = "C://upload//";
+            }
+        }else{  //本地环境
+            if (SystemUtils.isMacOs()) {
+                file_path = "/Users/hongchuangyanfa/Desktop/";
+            } else if (SystemUtils.isWindows()) {
+                file_path = "C://upload//";
+            }
+        }
+        return file_path;
+    }
 }