ソースを参照

Merge remote-tracking branch 'origin/test-merge' into test-merge

cr 1 ヶ月 前
コミット
d39c315f49

+ 44 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/NeiYeLedgerVO.java

@@ -1,45 +1,74 @@
 package org.springblade.business.vo;
 
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
 
 @Data
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+//忽略为加excel注解的字段
+@ExcelIgnoreUnannotated
 public class NeiYeLedgerVO {
 
     /**
      * 单位工程
      */
     @ApiModelProperty(value = "单位工程")
+    @ExcelProperty(value = "单位工程",order = 1)
+    @ColumnWidth(30)
+    @ContentStyle(wrapped = true)
     private String unitProject;
 
     /**
      * 分部工程
      */
     @ApiModelProperty(value = "分部工程")
+    @ExcelProperty(value = "分部工程",order = 2)
+    @ColumnWidth(40)
+    @ContentStyle(wrapped = true)
     private String partProject;
 
     /**
      * 子分部工程
      */
     @ApiModelProperty(value = "子分部工程")
+    @ExcelProperty(value = "子分部工程",order = 3)
+    @ColumnWidth(40)
+    @ContentStyle(wrapped = true)
     private String partChildProject;
 
     /**
      * 分项工程
      */
     @ApiModelProperty(value = "分项工程")
+    @ExcelProperty(value = "分项工程",order = 4)
+    @ColumnWidth(40)
+    @ContentStyle(wrapped = true)
     private String subentryProject;
 
     /**
      * 子分项工程
      */
     @ApiModelProperty(value = "子分项工程")
+    @ExcelProperty(value = "子分项工程",order = 5)
+    @ColumnWidth(40)
+    @ContentStyle(wrapped = true)
     private String subentryChildProject;
 
     /**
      * 工序
      */
     @ApiModelProperty(value = "工序")
+    @ExcelProperty(value = "工序",order = 6)
+    @ColumnWidth(40)
+    @ContentStyle(wrapped = true)
     private String process;
 
     //施工台账信息 start ==================================
@@ -66,6 +95,9 @@ public class NeiYeLedgerVO {
      * 审批状态
      */
     @ApiModelProperty(value = "审批状态,1未上报,2待审批,3已审批")
+    @ExcelProperty(value = "审批状态",order = 7)
+    @ColumnWidth(15)
+    @ContentStyle(horizontalAlignment = HorizontalAlignment.CENTER)
     private String taskStatus;
 
     /**
@@ -89,22 +121,33 @@ public class NeiYeLedgerVO {
      * 是否填写了日期
      */
     @ApiModelProperty(value = "是否填写了日期")
-    private Integer dateIsComplete;
+    @ExcelProperty(value = "日期是否完整",order = 9)
+    @ColumnWidth(20)
+    @ContentStyle(horizontalAlignment = HorizontalAlignment.CENTER)
+    private String dateIsComplete;
     /**
      * 文件提名
      */
     @ApiModelProperty(value = "文件提名")
+    @ExcelProperty(value = "文件提名",order = 8)
+    @ColumnWidth(100)
+    @ContentStyle(wrapped = true)
     private String infoQueryName;
 
     /**
      * 文件pdf路径
      */
     @ApiModelProperty(value = "路径")
+    @ExcelProperty(value = "文件地址",order = 11)
+    @ColumnWidth(110)
     private String pdfUrl;
     /**
      * 附件报告
      */
     @ApiModelProperty(value = "附件报告")
+    @ColumnWidth(100)
+    @ContentStyle(wrapped = true)
+    @ExcelProperty(value = "附件报告",order = 10)
     private String fileTypeMsg;
 
     public NeiYeLedgerVO(String... values) {

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/NeiYeQueryVO.java

@@ -44,6 +44,9 @@ public class NeiYeQueryVO {
     @ApiModelProperty(value = "日期是否填报,与质检树类型一致")
     private Integer dateIsComplete;
 
+    @ApiModelProperty(value = "查询类型:1-工序,2-节点")
+    private Integer selectType = 1;
+
     private List<String> wbsIds;
 
 }

+ 1 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/QueryProcessDataVO.java

@@ -36,7 +36,7 @@ public class QueryProcessDataVO {
     /**
      * 是否填写了日期
      */
-    private Integer dateIsComplete;
+    private String dateIsComplete;
     /**
      * 文件提名
      */

+ 34 - 5
blade-service/blade-business/src/main/java/org/springblade/business/controller/NeiYeController.java

@@ -2,6 +2,7 @@ package org.springblade.business.controller;
 
 import cn.hutool.core.date.DateUtil;
 import com.aliyun.oss.ServiceException;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -25,6 +26,7 @@ import org.springblade.business.vo.NeiYeQueryVO;
 import org.springblade.business.vo.QueryProcessDataVO;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
@@ -39,6 +41,7 @@ import org.springblade.manager.feign.WbsTreeContractClient;
 import org.springblade.manager.feign.WbsTreePrivateClient;
 import org.springblade.manager.vo.WbsTreeContractTreeVOS;
 import org.springblade.system.entity.DictBiz;
+import org.springblade.system.entity.Region;
 import org.springframework.core.io.ByteArrayResource;
 import org.springframework.core.io.Resource;
 import org.springframework.http.HttpHeaders;
@@ -49,6 +52,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.SingleColumnRowMapper;
 import org.springframework.web.bind.annotation.*;
 import org.springblade.core.mp.support.Query;
+import springfox.documentation.annotations.ApiIgnore;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.ByteArrayOutputStream;
@@ -121,14 +125,17 @@ public class NeiYeController {
             }
             //不是工序,则查询当前节点下的所有填报节点
             List<QueryProcessDataVO> queryDataResult;
+            //本身就是工序节点就查本节点
+            if(node.getNodeType() == 6){
+                queryVO.setSelectType(2);
+            }
             //有些填报节点的MajorDataType为0
-            if (!new Integer("6").equals(node.getNodeType()) && ObjectUtil.isNotEmpty(node.getMajorDataType()) &&!Arrays.asList("1,2,3,4".split(",")).contains(node.getMajorDataType().toString())
-                    && !node.getNodeName().contains("开工报告") && !node.getNodeName().contains("质量检验评定表")) {
+            if (queryVO.getSelectType() != null && queryVO.getSelectType() == 1) {
                 //非填报节点
                 if (node.getParentId() == 0) {
                     queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractIdTwo("", contractType, contractId, queryVO.getDateIsComplete());
                 } else {
-                    queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractIdTwo(node.getPKeyId().toString(), contractType, contractId, queryVO.getDateIsComplete());
+                    queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractIdTwo(node.getAncestorsPId() + "," + node.getPKeyId(), contractType, contractId, queryVO.getDateIsComplete());
                 }
             } else {
                 //填报节点
@@ -280,8 +287,13 @@ public class NeiYeController {
                     return R.data(300, null, "未查询到数据");
                 }
                 //分组
-                List<List<QueryProcessDataVO>> groupList = CommonUtil.getBatchSize(queryDataResult, queryVO.getSize());
-                List<QueryProcessDataVO> groupQueryList = groupList.get(queryVO.getCurrent() == 0 ? 0 : queryVO.getCurrent() - 1);
+                List<QueryProcessDataVO> groupQueryList = null;
+                if(queryVO.getSize() != null && queryVO.getSize() > 0){
+                    List<List<QueryProcessDataVO>> groupList = CommonUtil.getBatchSize(queryDataResult, queryVO.getSize());
+                     groupQueryList = groupList.get(queryVO.getCurrent() == 0 ? 0 : queryVO.getCurrent() - 1);
+                }else{
+                    groupQueryList = queryDataResult;
+                }
 
                 //获取所有施工日志记录
                 List<String> primaryKeyIds = groupQueryList.stream().map(QueryProcessDataVO::getPrimaryKeyId).distinct().collect(Collectors.toList());
@@ -597,4 +609,21 @@ public class NeiYeController {
         }
     }
 
+
+    /**
+     * 导出业内台账
+     */
+    @PostMapping("export")
+    @ApiOperationSupport(order = 11)
+    @ApiOperation(value = "导出业内台账", notes = "传入user")
+    public void exportRegion(@RequestBody NeiYeQueryVO queryVO,HttpServletResponse response) {
+        //导出所有
+        queryVO.setSize(-1);
+        R<IPage<NeiYeLedgerVO>> iPageR = queryCurrentNodeNeiYeLedger(queryVO);
+        //获取数据
+        if(iPageR.isSuccess()){
+            List<NeiYeLedgerVO> list = iPageR.getData().getRecords();
+            ExcelUtil.export(response, "内业台账" + org.springblade.core.tool.utils.DateUtil.time(), "行政区划数据表", list, NeiYeLedgerVO.class);
+        }
+    }
 }

+ 3 - 3
blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml

@@ -434,7 +434,7 @@
                wtc.p_key_id,
                wtc.ancestors,
                wtc.major_data_type,
-               wtc.date_is_complete AS dateIsComplete,
+               case when wtc.date_is_complete = 1 then '是' else '否' end AS dateIsComplete,
                IFNULL(if(length(trim(wtc.full_name)) > 0, wtc.full_name, wtc.node_name), wtc.node_name) AS     title,
                wtc.parent_id                                                                            AS     parentId,
                uiq.id                                                                                   AS     informationQueryId,
@@ -821,7 +821,7 @@
     </select>
     <select id="queryProcessDataByParentIdAndContractIdTwo" resultMap="queryProcessDataMap">
         SELECT wtc.id                                                                                   AS treeId,
-               wtc.date_is_complete                                                                     AS dateIsComplete,
+               case when wtc.date_is_complete = 1 then '是' else '否' end                                AS dateIsComplete,
                wtc.p_key_id,
                wtc.ancestors,
                wtc.major_data_type,
@@ -845,7 +845,7 @@
                  left join m_wbs_tree_private p on wtc.is_type_private_pid = p.p_key_id
         WHERE wtc.type = 1
           AND wtc.major_data_type in (0, 1, 2, 3, 4)
-          AND wtc.ancestors like concat('%', #{parentId}, '%')
+          AND wtc.ancestors_p_id like concat(#{parentId}, '%')
           AND wtc.contract_id = #{contractId}
           AND wtc.is_deleted = 0
           AND wtc.status = 1

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -210,6 +210,7 @@
             is_concrete        = #{wbsTP.isConcrete},
             is_expernode       = #{wbsTP.isExpernode},
             is_add_conceal     = #{wbsTP.isAddConceal},
+            table_file_type     = #{wbsTP.tableFileType},
             status             = 1,
             is_deleted         = 0
             <if test="wbsTP.className!=null and wbsTP.className!=''">

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

@@ -33,7 +33,9 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
+import org.jsoup.nodes.Entities;
 import org.jsoup.nodes.Node;
+import org.jsoup.parser.Parser;
 import org.jsoup.select.Elements;
 import org.springblade.business.dto.TrialSeleInspectionRecordBaseInfoDTO;
 import org.springblade.business.dto.TrialSelfInspectionRecordDTO;
@@ -1015,19 +1017,43 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         Document doc = Jsoup.parse(htmlString);
         Element table = doc.select("table").first();
         Elements td = table.select("td");
-        Set<String> set = new HashSet<>();
+        Map<String, String> set = new HashMap<>();
         for (Element element : td) {
             if (element.childNodes().size() >= 2) {
                 String title = element.childNodes().get(1).attr("placeholder");
                 if (StringUtils.isNotBlank(title)) {
-                    set.add(title);
+                    if (title.contains("&")) {
+                        // 处理 &lt; 之类的转义字符
+                        if (title.contains("&amp;")) {
+                            title = Parser.unescapeEntities(title, false);
+                        }
+                        title = Parser.unescapeEntities(title, false);
+                    }
+                    set.put(title, title);
                 }
             }
         }
         //获取未匹配的字段
         List<WbsFormElement> list = new ArrayList<>();
         if (set != null && set.size() > 0) {
-            list = baseMapper.getUnMatchField(tabId, set);
+//            list = baseMapper.getUnMatchField(tabId, set);
+            List<WbsFormElement> elements = jdbcTemplate.query("select * from m_wbs_form_element where f_id = ? and is_deleted = 0", new Object[]{tabId}, new BeanPropertyRowMapper<>(WbsFormElement.class));
+            elements.forEach(wbsFormElement -> {
+                String name = wbsFormElement.getEName();
+                if (StringUtils.isNotBlank(name)) {
+                    if (name.contains("&")) {
+                        // 处理 &lt; 之类的转义字符
+                        if (name.contains("&amp;")) {
+                            name = Parser.unescapeEntities(name, false);
+                        }
+                        name = Parser.unescapeEntities(name, false);
+                    }
+                }
+                if (set.containsKey(name)) {
+                    return;
+                }
+                list.add(wbsFormElement);
+            });
         }
         return list;
     }

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -300,6 +300,9 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         if ((parentId + "").equals("12345678910")) {
             page.setSize(100);
         }
+        if (titleName != null) {
+            titleName = titleName.trim();
+        }
         return page.setRecords(baseMapper.tabTypeLazyTreeByProject(page, parentId, projectId, titleName));
     }