Ver código fonte

马士基报告导出

wangxuan 3 meses atrás
pai
commit
d6ec589694

+ 34 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxItpTemplateNodesDao.java

@@ -3,6 +3,7 @@ package com.rongwei.bscommon.sys.dao;
 import com.rongwei.bsentity.domain.ZhcxItpTemplateNodesDo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.rongwei.bsentity.vo.ZhcxItpTemplateNodesVo;
+import com.rongwei.bsentity.vo.report.ZhcxTempExport;
 import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -27,4 +28,37 @@ public interface ZhcxItpTemplateNodesDao extends BaseMapper<ZhcxItpTemplateNodes
 
     @Delete("delete from ZHCX_ITP_TEMPLATE_NODES where ITPID = #{itpId}")
     void delByItpId(@Param("itpId") String itpId);
+
+    @Select("SELECT x.* FROM INCONTROL.ZHCX_TEMP_EXPORT x WHERE DELETED = '0' and TYPED = #{typed} ORDER BY x.VERSION DESC LIMIT 1")
+    ZhcxTempExport getFileIdByCes(@Param("typed") String typed);
+
+    @Select("SELECT \n" +
+            "    subquery.SERIALNUMBER AS num,\n" +
+            "    subquery.conclusion,\n" +
+            "    subquery.SUPERVISION AS supervision,\n" +
+            "    subquery.CHECKENDTIME AS checktime\n" +
+            "FROM (\n" +
+            "    SELECT\n" +
+            "        i.SERIALNUMBER,\n" +
+            "        CASE \n" +
+            "            WHEN sd.INSPECTIONCONCLUSION = '30' THEN 'Conditionally Accepted'\n" +
+            "            WHEN sd.INSPECTIONCONCLUSION = '20' THEN 'Rejected'\n" +
+            "            ELSE 'Accepted'\n" +
+            "        END AS conclusion,\n" +
+            "        sd.SUPERVISION,\n" +
+            "        sd.CHECKENDTIME,\n" +
+            "        ROW_NUMBER() OVER (PARTITION BY i.SERIALNUMBER ORDER BY sd.CHECKENDTIME DESC) as rn\n" +
+            "    FROM\n" +
+            "        ZHCX_OUTSIDE_INSPECTION_ITP i\n" +
+            "        LEFT JOIN ZHCX_OUTSIDE_INSPECTION_ITP_SUPERVISION_DISPATCH sd ON i.ID = sd.ITPID \n" +
+            "    WHERE\n" +
+            "        i.DELETED = '0' \n" +
+            "        AND i.INSPECTIONSTATUS = '30' \n" +
+            "        AND i.SERIALNUMBER IS NOT NULL \n" +
+            "        AND i.SERIALNUMBER != '' \n" +
+            "        AND i.PROJECTCODE = #{projectCode}\n" +
+            "        AND ( i.MACHINENO LIKE CONCAT('%', #{machineno}, '%') OR i.STRUCTUREMACHINENO LIKE CONCAT('%', #{machineno}, '%') )\n" +
+            ") subquery\n" +
+            "WHERE subquery.rn = 1")
+    List<ZhcxTempExport> getOutSideInspectionItpListData(@Param("projectCode")String projectCode,@Param("machineno") String machineno);
 }

+ 9 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxItpTemplateNodesService.java

@@ -7,6 +7,7 @@ import com.rongwei.bsentity.dto.node.ImportNodeRequest;
 import com.rongwei.bsentity.vo.CopyNodeVo;
 import com.rongwei.bsentity.vo.ZhcxItpTemplateNodeSyncProjectVo;
 import com.rongwei.bsentity.vo.ZhcxItpTemplateNodesVo;
+import com.rongwei.rwcommon.base.R;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
@@ -50,4 +51,12 @@ public interface ZhcxItpTemplateNodesService extends IService<ZhcxItpTemplateNod
      * @param file
      */
     void templateExcelImport(MultipartFile file);
+
+    /**
+     * 监理执行检验项目完成word导出
+     * @param map 项目信息+机号信息
+     * @param response
+     * @return
+     */
+    R cesProjectWordImport(Map<String, Object> map, HttpServletResponse response);
 }

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

@@ -1,11 +1,14 @@
 package com.rongwei.bscommon.sys.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.aspose.cells.SaveFormat;
 import com.aspose.cells.Workbook;
+import com.aspose.words.Document;
+import com.aspose.words.MailMergeCleanupOptions;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.rongwei.bscommon.sys.service.*;
@@ -20,15 +23,21 @@ import com.rongwei.bsentity.dto.node.*;
 import com.rongwei.bsentity.vo.CopyNodeVo;
 import com.rongwei.bsentity.vo.ZhcxItpTemplateNodeSyncProjectVo;
 import com.rongwei.bsentity.vo.ZhcxItpTemplateNodesVo;
+import com.rongwei.bsentity.vo.report.ZhcxTempExport;
 import com.rongwei.commonservice.service.dao.CommonSqlDao;
 import com.rongwei.rwadmincommon.system.domain.SysDictDo;
 import com.rongwei.rwadmincommon.system.domain.SysOrganizationDo;
 import com.rongwei.rwadmincommon.system.service.SysDictService;
 import com.rongwei.rwadmincommon.system.service.SysOrganizationService;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
+import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.base.exception.CustomException;
 import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommon.utils.StringUtils;
+import com.rongwei.rwcommoncomponent.excel.aspose.ExcelExportUtil;
+import com.rongwei.rwcommoncomponent.excel.vo.FormData;
+import com.rongwei.rwcommoncomponent.file.service.SysFileItemService;
+import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
 import lombok.val;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -83,6 +92,9 @@ public class ZhcxItpTemplateNodesServiceImpl extends ServiceImpl<ZhcxItpTemplate
 
     @Autowired
     private ZhcxCoreInspectionDetailService zhcxCoreInspectionDetailService;
+
+    @Autowired
+    private SysFileItemService sysFileItemService;
     /**
      * 新增的ITP模板节点同步到指定项目
      * @param zhcxItpTemplateNodeSyncProjectVo
@@ -655,6 +667,77 @@ public class ZhcxItpTemplateNodesServiceImpl extends ServiceImpl<ZhcxItpTemplate
         }
     }
 
+    @Override
+    public R cesProjectWordImport(Map<String, Object> map, HttpServletResponse response) {
+        if(ObjectUtil.isNull(map.get("projectId"))) {
+            return R.error("请选择项目工号");
+        }
+        if(ObjectUtil.isNull(map.get("machineno"))) {
+            return R.error("请选择机号");
+        }
+        // 从前端接收的基础信息
+        String projectId = (String) map.get("projectId");
+        String projectName = (String) map.get("projectName");
+        String projectCode = (String) map.get("projectCode");
+        String machineno = (String) map.get("machineno");
+        String machineid = (String) map.get("machineid");
+        // 获取模板信息
+        ZhcxTempExport tempExport = baseMapper.getFileIdByCes("CES");
+        if(ObjectUtil.isNull(tempExport) || ObjectUtil.isNotEmpty(tempExport.getFileId())) {
+            return R.error("获取word模板失败");
+        }
+        // 序号
+        //String serialNumbers = tempExport.getValued();
+        SysFileItemDo fileItemDo = sysFileItemService.getById(tempExport.getFileId().split("-;-")[1]);
+        if(Objects.isNull(fileItemDo) || ObjectUtil.isNotEmpty(fileItemDo.getFullpath())) {
+            return R.error("获取word模板失败");
+        }
+        // word参数值
+        FormData formData = new FormData();
+        List<Map<String, Object>> mainDataList = new ArrayList<>();
+        Map<String, Object> mainMap = new HashMap<>(16);
+        mainMap.put("projectName",projectName);
+        mainMap.put("projectCode",projectCode);
+        mainMap.put("machineno",machineno);
+        // 当前时间
+        mainMap.put("nowDate",DateUtil.today());
+        // 获取其他参数
+        List<ZhcxTempExport> temps = baseMapper.getOutSideInspectionItpListData(projectCode,machineno);
+        temps.forEach(temp -> {
+            mainMap.put(temp.getNum()+"result",temp.getConclusion());
+            mainMap.put(temp.getNum()+"by",temp.getSupervision());
+            if(temp.getChecktime() != null) {
+                mainMap.put(temp.getNum()+"date",DateUtil.format(temp.getChecktime(), "yyyy-MM-dd"));
+            }
+        });
+
+        mainDataList.add(mainMap);
+        formData.setMainDataList(mainDataList);
+        // word导出
+        Document document = ExcelExportUtil.fillWordDataByMap(fileItemDo.getFullpath(), formData);
+        exportWord(document, response);
+        return R.ok("导出成功");
+    }
+
+    /**
+     * 导出word
+     * @param doc
+     * @param response
+     */
+    public void exportWord(Document doc, HttpServletResponse response) {
+        try {
+            response.setContentType("application/octet-stream;charset=ISO8859-1");
+            response.setHeader("Content-Disposition", "attachment;filename=Accidentcompilation.docx");
+            doc.getMailMerge().setCleanupOptions(MailMergeCleanupOptions.REMOVE_UNUSED_FIELDS);
+            doc.getMailMerge().setCleanupOptions(MailMergeCleanupOptions.REMOVE_EMPTY_TABLE_ROWS);
+            doc.getMailMerge().deleteFields();
+            doc.save(response.getOutputStream(), com.aspose.words.SaveFormat.DOCX);
+        } catch (Exception e) {
+            log.error("生成检查项内容异常");
+            e.printStackTrace();
+        }
+    }
+
     /**
      * 导入辅助
      *

+ 35 - 0
business-entity/src/main/java/com/rongwei/bsentity/vo/report/ZhcxTempExport.java

@@ -0,0 +1,35 @@
+package com.rongwei.bsentity.vo.report;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.sql.Date;
+
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+public class ZhcxTempExport {
+    // 模板信息
+    private String fileId;
+
+    // 类型
+    private String typed;
+
+    // 值
+    private String valued;
+
+    // 子表_序号
+    private String num;
+
+    // 子表_报验结论
+    private String conclusion;
+
+    // 子表_监理用户
+    private String supervision;
+
+    // 子表_检验结束时间
+    private Date checktime;
+}

+ 14 - 5
business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxItpTemplateNodesController.java

@@ -2,6 +2,7 @@ package com.rongwei.bsserver.controller;
 
 
 import com.rongwei.bscommon.sys.service.ZhcxItpTemplateNodesService;
+import com.rongwei.bscommon.sys.utils.ExceptionUtils;
 import com.rongwei.bsentity.dto.node.ExportNodeRequest;
 import com.rongwei.bsentity.dto.node.ImportNodeRequest;
 import com.rongwei.bsentity.vo.CopyNodeVo;
@@ -9,10 +10,7 @@ import com.rongwei.rwcommon.base.R;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
@@ -55,11 +53,22 @@ public class ZhcxItpTemplateNodesController {
         zhcxItpTemplateNodesService.exportQcp(req, res);
     }
 
-    @PostMapping("templateExcelImport") //TEMPLATE
+    @PostMapping("templateExcelImport")
     @ApiOperation("核心检验指标模板excel导入")
     public R templateExcelImport(MultipartFile file) {
         zhcxItpTemplateNodesService.templateExcelImport(file);
         return R.ok("导入成功");
     }
+
+    @RequestMapping("cesProjectWordImport")
+    @ApiOperation("监理执行检验项目完成word导出")
+    public R importStandard(@RequestBody Map<String, Object> map, HttpServletResponse response) {
+        try {
+            return zhcxItpTemplateNodesService.cesProjectWordImport(map, response);
+        } catch (Exception e) {
+            ExceptionUtils.printExceptionDetail(e, "word导出异常");
+            return R.error("word导出异常");
+        }
+    }
 }