Procházet zdrojové kódy

外部报验功能-构件跟踪、项目外部报验点导出

wangming před 1 rokem
rodič
revize
104180591a

+ 6 - 0
business-common/pom.xml

@@ -22,6 +22,12 @@
             <version>1.0-SNAPSHOT</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.rongwei</groupId>
+            <artifactId>rw-common-component</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+
         <dependency>
             <groupId>com.rongwei</groupId>
             <artifactId>rw-admin-common</artifactId>

+ 0 - 15
business-common/src/main/java/com/rongwei/bscommon/sys/dao/SysFileItemDao.java

@@ -1,15 +0,0 @@
-package com.rongwei.bscommon.sys.dao;
-
-import com.rongwei.rwcommon.base.BaseDao;
-import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
-
-/**
- * 文件表
- * 
- * @author chenshun
- * @email sunlightcs@gmail.com
- * @date 2019-10-08 14:53:10
- */
-public interface SysFileItemDao extends BaseDao<SysFileItemDo> {
-	
-}

+ 50 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxItpProjectNodesDao.java

@@ -2,6 +2,11 @@ package com.rongwei.bscommon.sys.dao;
 
 import com.rongwei.bsentity.domain.ZhcxItpProjectNodesDo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -13,4 +18,49 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ZhcxItpProjectNodesDao extends BaseMapper<ZhcxItpProjectNodesDo> {
 
+    @Select("SELECT * FROM ZHCX_PROJECT_MANAGE WHERE ID = #{projectId}")
+    Map<String, Object> getProjectByProjectId(@Param("projectId") String projectId);
+
+    /**
+     * 获取报验点列表
+     *
+     * @param projectId
+     * @return
+     */
+    @Select("SELECT " +
+            " * " +
+            "FROM " +
+            " ZHCX_ITP_PROJECT_NODES n " +
+            "WHERE " +
+            " n.deleted = '0' " +
+            " AND n.PROJECTID = #{projectId} " +
+            " AND ((n.LEVEL = '3' " +
+            "  AND n.ISNEEDOUT = 'true') " +
+            " OR (n.LEVEL = '2' " +
+            "  AND n.deleted = '0' " +
+            "  AND n.ID IN ( " +
+            "  SELECT " +
+            "    DISTINCT pid " +
+            "  FROM " +
+            "    ZHCX_ITP_PROJECT_NODES l2 " +
+            "  WHERE " +
+            "    l2.deleted = '0' " +
+            "   AND l2.PROJECTID = #{projectId} " +
+            "   AND l2.ISNEEDOUT = 'true')) " +
+            " OR (n.LEVEL = '1' " +
+            "  AND n.deleted = '0' " +
+            "  AND n.ID IN ( " +
+            "  SELECT " +
+            "   DISTINCT l2.pid " +
+            "  FROM " +
+            "   ZHCX_ITP_PROJECT_NODES l2 " +
+            "  JOIN ZHCX_ITP_PROJECT_NODES l3 ON " +
+            "   l2.ID = l3.PID " +
+            "   AND l2.deleted = '0' " +
+            "   AND l3.deleted = '0' " +
+            "  WHERE " +
+            "   l3.PROJECTID = #{projectId} " +
+            "   AND l3.ISNEEDOUT = 'true')) " +
+            " )")
+    List<ZhcxItpProjectNodesDo> getNodesByProjectId(String projectId);
 }

+ 0 - 18
business-common/src/main/java/com/rongwei/bscommon/sys/service/SysFileItemService.java

@@ -1,18 +0,0 @@
-package com.rongwei.bscommon.sys.service;
-
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
-
-
-/**
- * 文件表
- *
- * @author chenshun
- * @email sunlightcs@gmail.com
- * @date 2019-10-08 14:53:10
- */
-public interface SysFileItemService extends IService<SysFileItemDo> {
-
-}
-

+ 11 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxItpProjectNodesService.java

@@ -2,8 +2,11 @@ package com.rongwei.bscommon.sys.service;
 
 import com.rongwei.bsentity.domain.ZhcxItpProjectNodesDo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.bsentity.dto.OutsideInspectionProjectPointDto;
 import com.rongwei.bsentity.vo.CopyNodeVo;
+import com.rongwei.rwcommoncomponent.excel.aspose.ExcelFormData;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
@@ -23,4 +26,12 @@ public interface ZhcxItpProjectNodesService extends IService<ZhcxItpProjectNodes
 
     List<Map<String,Object>> copyProjectNode(CopyNodeVo copyNodeVo);
 
+    /**
+     * 导出项目报验点
+     *
+     * @param excelData
+     * @param response
+     */
+    void exportProjectInspectionPoint(OutsideInspectionProjectPointDto excelData, HttpServletResponse response);
+
 }

+ 0 - 12
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/SysFileItemServiceImpl.java

@@ -1,12 +0,0 @@
-package com.rongwei.bscommon.sys.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.rongwei.bscommon.sys.dao.SysFileItemDao;
-import com.rongwei.bscommon.sys.service.SysFileItemService;
-import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
-import org.springframework.stereotype.Service;
-
-@Service("sysFileItemService")
-public class SysFileItemServiceImpl extends ServiceImpl<SysFileItemDao, SysFileItemDo> implements SysFileItemService {
-
-}

+ 174 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxItpProjectNodesServiceImpl.java

@@ -1,19 +1,34 @@
 package com.rongwei.bscommon.sys.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.aspose.cells.SaveFormat;
+import com.aspose.cells.Workbook;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.rongwei.bscommon.sys.service.*;
 import com.rongwei.bsentity.domain.*;
 import com.rongwei.bscommon.sys.dao.ZhcxItpProjectNodesDao;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bsentity.dto.ItpProjectNodeExtVo;
+import com.rongwei.bsentity.dto.ItpProjectNodeL2Vo;
+import com.rongwei.bsentity.dto.OutsideInspectionProjectPointDto;
 import com.rongwei.bsentity.vo.CopyNodeVo;
 import com.rongwei.commonservice.service.dao.CommonSqlDao;
 import com.rongwei.rwcommon.base.exception.CustomException;
+import com.rongwei.rwcommon.utils.JSONUtils;
 import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommon.utils.StringUtils;
+import com.rongwei.rwcommoncomponent.excel.aspose.ExcelExportUtil;
+import com.rongwei.rwcommoncomponent.excel.aspose.ExcelUtils;
+import com.rongwei.rwcommoncomponent.excel.vo.FormData;
+import com.rongwei.rwcommoncomponent.file.service.SysFileItemService;
+import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.*;
 
@@ -39,6 +54,13 @@ public class ZhcxItpProjectNodesServiceImpl extends ServiceImpl<ZhcxItpProjectNo
     @Autowired
     private CommonSqlDao commonSqlDao;
 
+    @Autowired
+    private ExcelUtils excelUtils;
+
+
+    @Autowired
+    private SysFileItemService sysFileItemService;
+
     /**
      * 项目引用ITP模板节点
      * @param map
@@ -378,6 +400,158 @@ public class ZhcxItpProjectNodesServiceImpl extends ServiceImpl<ZhcxItpProjectNo
         return getProjectNodes(copyNodeVo);
     }
 
+    /**
+     * 导出项目报验点
+     *
+     * @param excelData
+     * @param response
+     */
+    @Override
+    public void exportProjectInspectionPoint(OutsideInspectionProjectPointDto excelData, HttpServletResponse response) {
+
+        //获取模板数据
+        FormData formData = getProjectFormData(excelData.getProjectId());
+
+        SysFileItemDo fileItem = sysFileItemService.getById(excelData.getFileId());
+
+        exportExcelByTemplate(formData, fileItem, response);
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param formData
+     * @param fileItem
+     * @param response
+     */
+    private void exportExcelByTemplate(FormData formData, SysFileItemDo fileItem, HttpServletResponse response) {
+        if(!excelUtils.GetLicense()) {
+            return;
+        }
+        //excel
+        Workbook workbook = ExcelExportUtil.exportExcelByAsposeWithTemplate(formData, fileItem.getFullpath());
+        //传给前端
+        wookboot2Response(response, fileItem.getFilename(), workbook);
+    }
+
+    /**
+     * excel填充到response中,传给前端
+     *
+     * @param response
+     * @param filename
+     * @param workbook
+     */
+    private void wookboot2Response(HttpServletResponse response,String filename, Workbook workbook) {
+        try {
+            //执行公式计算
+            workbook.calculateFormula();
+            if (filename.indexOf("直打") >= 0 || filename.toLowerCase().indexOf("pdf") >= 0) {
+                response.setContentType("application/pdf");
+                workbook.save(response.getOutputStream(), SaveFormat.PDF);
+            } else {
+                response.setContentType("application/octet-stream;charset=ISO8859-1");
+                response.setHeader("Content-Disposition", "attachment;filename=" + filename);
+                workbook.save(response.getOutputStream(), SaveFormat.XLSX);
+            }
+            workbook.dispose();
+        } catch (Exception e) {
+            log.error("填充失败:{}", e);
+            throw new CustomException("填充失败");
+        }
+    }
+
+    /**
+     * 获取导出数据信息
+     *
+     * @param projectId
+     * @return
+     */
+    private FormData getProjectFormData(String projectId) {
+
+        //主表单
+        List<Map<String, Object>> mainList = new ArrayList<>(1);
+        //项目信息
+        Map<String, Object> project = this.getBaseMapper().getProjectByProjectId(projectId);
+        if(ObjectUtil.isNotNull(project)) {
+            mainList.add(project);
+        } else {
+            mainList.add(Collections.emptyMap());
+        }
+
+        //从表单
+        List<ZhcxItpProjectNodesDo> l3 = new ArrayList<>();
+        Map<String, ZhcxItpProjectNodesDo> map = new HashMap<>();
+        //获取项目下报验点
+        LambdaQueryWrapper<ZhcxItpProjectNodesDo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(ZhcxItpProjectNodesDo::getProjectid, projectId)
+                .eq(ZhcxItpProjectNodesDo::getDeleted, "0");
+        List<ZhcxItpProjectNodesDo> projectNodes = list(queryWrapper);
+
+        for(ZhcxItpProjectNodesDo node : projectNodes) {
+            //报验点
+            if("3".equals(node.getLevel()) && "true".equals(node.getIsneedout())) {
+                l3.add(node);
+            }
+
+            map.put(node.getId(), node);
+        }
+
+        List<List<Map<String, Object>>> slaveList = new ArrayList<>();
+        if(ObjectUtil.isEmpty(l3)) {
+            slaveList.add(Collections.emptyList());
+            return FormData.builder()
+                    .mainDataList(mainList)
+                    .slaveTableDataList(slaveList)
+                    .build();
+        }
+
+        List<Map<String, Object>> list = new ArrayList<>();
+        int count = 0;
+        for(ZhcxItpProjectNodesDo node : l3) {
+
+            count++;
+
+            ItpProjectNodeExtVo nodeExtVo = new ItpProjectNodeExtVo();
+            BeanUtil.copyProperties(node, nodeExtVo);
+
+            ZhcxItpProjectNodesDo nodesDo = map.get(node.getPid());
+            if(ObjectUtil.isNull(nodesDo)) {
+                nodeExtVo.setL2NodeName("");
+                nodeExtVo.setL1NodeName("");
+            } else {
+                if(ObjectUtil.isEmpty(nodesDo.getPnodeid())) {
+                    //构件
+                    nodeExtVo.setL2NodeName(nodesDo.getNodename());
+                    //阶段
+                    ZhcxItpProjectNodesDo l1node = map.get(nodesDo.getPid());
+                    nodeExtVo.setL1NodeName(l1node.getNodename());
+                } else {
+                    //大小构件
+                    ZhcxItpProjectNodesDo pnode = map.get(nodesDo.getPnodeid());
+                    nodeExtVo.setL2NodeName(pnode.getNodename().concat("/").concat(nodesDo.getNodename()));
+
+                    //阶段
+                    ZhcxItpProjectNodesDo l1node = map.get(pnode.getPid());
+                    nodeExtVo.setL1NodeName(l1node.getNodename());
+                }
+
+            }
+
+            nodeExtVo.setIdx(count);
+            nodeExtVo.setTypeOfQc("H");
+            Map<String, Object> map1 = JSONUtils.toEntity(nodeExtVo, Map.class);
+            list.add(map1);
+        }
+
+        slaveList.add(list);
+
+
+        return FormData.builder()
+                .mainDataList(mainList)
+                .slaveTableDataList(slaveList)
+                .build();
+    }
+
     /**
      * 返回最新数据
      * @param copyNodeVo

+ 2 - 2
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxOutsideInspectionComponentTrackServiceImpl.java

@@ -146,8 +146,8 @@ public class ZhcxOutsideInspectionComponentTrackServiceImpl extends ServiceImpl<
         //已保存的构件和报验点,不再重新保存
         LambdaQueryWrapper<ZhcxOutsideInspectionComponentTrackDo> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(ZhcxOutsideInspectionComponentTrackDo::getStructurename, itpDo.getStructurename())
-//                .eq(ZhcxOutsideInspectionComponentTrackDo::getMachineno, itpDo.getMachineno())
-//                .eq(ZhcxOutsideInspectionComponentTrackDo::getStructuremachineno, itpDo.getStructuremachineno())
+                .eq(ZhcxOutsideInspectionComponentTrackDo::getMachineno, itpDo.getMachineno())
+                .eq(ZhcxOutsideInspectionComponentTrackDo::getStructuremachineno, itpDo.getStructuremachineno())
                 .eq(ZhcxOutsideInspectionComponentTrackDo::getDeleted, "0")
                 .eq(ZhcxOutsideInspectionComponentTrackDo::getProjectid, itpDo.getProjectid());
         int count = count(queryWrapper);

+ 1 - 1
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxOutsideInspectionItpServiceImpl.java

@@ -29,6 +29,7 @@ import com.rongwei.rwcommon.base.exception.CustomException;
 import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommon.utils.StringUtils;
 import com.rongwei.rwcommon.vo.generalsql.MasterSlaveUpdateVo;
+import com.rongwei.rwcommoncomponent.file.service.SysFileItemService;
 import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
 import com.rongwei.rwcommonentity.commonservers.vo.SysSerialVo;
 import lombok.extern.slf4j.Slf4j;
@@ -37,7 +38,6 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.ResourceUtils;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;

+ 32 - 0
business-entity/src/main/java/com/rongwei/bsentity/dto/ItpProjectNodeExtVo.java

@@ -0,0 +1,32 @@
+package com.rongwei.bsentity.dto;
+
+import com.rongwei.bsentity.domain.ZhcxItpProjectNodesDo;
+import lombok.*;
+
+@Setter
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class ItpProjectNodeExtVo extends ZhcxItpProjectNodesDo {
+
+    /**
+     * 构件名称
+     */
+    private String l2NodeName;
+
+    /**
+     * 阶段
+     */
+    private String l1NodeName;
+
+    /**
+     * 序号
+     */
+    private int idx;
+
+    /**
+     * 控制类型
+     */
+    private String typeOfQc;
+}

+ 16 - 0
business-entity/src/main/java/com/rongwei/bsentity/dto/ItpProjectNodeL2Vo.java

@@ -0,0 +1,16 @@
+package com.rongwei.bsentity.dto;
+
+import lombok.*;
+
+@Setter
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class ItpProjectNodeL2Vo {
+
+    /**
+     * 构件名称
+     */
+    private String l2Name;
+}

+ 21 - 0
business-entity/src/main/java/com/rongwei/bsentity/dto/OutsideInspectionProjectPointDto.java

@@ -0,0 +1,21 @@
+package com.rongwei.bsentity.dto;
+
+import lombok.*;
+
+@Setter
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class OutsideInspectionProjectPointDto {
+
+    /**
+     * 项目id
+     */
+    private String projectId;
+
+    /**
+     * 文件id
+     */
+    private String fileId;
+}

+ 15 - 0
business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxItpProjectNodesController.java

@@ -2,13 +2,17 @@ package com.rongwei.bsserver.controller;
 
 
 import com.rongwei.bscommon.sys.service.ZhcxItpProjectNodesService;
+import com.rongwei.bsentity.dto.OutsideInspectionProjectPointDto;
 import com.rongwei.bsentity.vo.CopyNodeVo;
 import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommoncomponent.excel.vo.FormData;
+import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
@@ -45,5 +49,16 @@ public class ZhcxItpProjectNodesController {
         return R.ok(maps);
     }
 
+    /**
+     * 导出excel
+     *
+     * @param excelData
+     * @param response
+     */
+    @RequestMapping("/exportByTemplate")
+    public void exportProjectInspectionPoint(@RequestBody OutsideInspectionProjectPointDto excelData, HttpServletResponse response) {
+        zhcxItpProjectNodesService.exportProjectInspectionPoint(excelData, response);
+    }
+
 }