Browse Source

危险作业导出

wangbo 3 months ago
parent
commit
f632d2a5b2
30 changed files with 2035 additions and 23 deletions
  1. 8 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspCombustibleGasDetectionDao.java
  2. 10 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspDhzyDao.java
  3. 7 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspInspectionInformationTableDao.java
  4. 8 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspJobConfigFxbsDao.java
  5. 8 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspJobSjzyDao.java
  6. 7 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspSpecialPersonalInformationDao.java
  7. 8 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/AspCombustibleGasDetectionService.java
  8. 8 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/AspDhzyService.java
  9. 7 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/AspInspectionInformationTableService.java
  10. 9 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/AspJobConfigFxbsService.java
  11. 9 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/AspJobSjzyService.java
  12. 7 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/AspSpecialPersonalInformationService.java
  13. 13 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/RiskJobService.java
  14. 12 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspCombustibleGasDetectionServiceImpl.java
  15. 11 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspInspectionInformationTableServiceImpl.java
  16. 15 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspJobConfigFxbsServiceImpl.java
  17. 12 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspJobSjzyServiceImpl.java
  18. 11 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspSpecialPersonalInformationServiceImpl.java
  19. 54 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/CustomMailMergeDataSource.java
  20. 12 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/DhzyServiceImpl.java
  21. 602 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/RiskJobServiceImpl.java
  22. BIN
      js-security/security-common/src/main/resources/导出PDF(动火作业待修改).docx
  23. 122 0
      js-security/security-entity/src/main/java/com/rongwe/scentity/domian/AspCombustibleGasDetectionDo.java
  24. 465 23
      js-security/security-entity/src/main/java/com/rongwe/scentity/domian/AspDhzyDo.java
  25. 126 0
      js-security/security-entity/src/main/java/com/rongwe/scentity/domian/AspInspectionInformationTableDo.java
  26. 123 0
      js-security/security-entity/src/main/java/com/rongwe/scentity/domian/AspJobConfigDo.java
  27. 98 0
      js-security/security-entity/src/main/java/com/rongwe/scentity/domian/AspJobConfigFxbsDo.java
  28. 89 0
      js-security/security-entity/src/main/java/com/rongwe/scentity/domian/AspJobSjzyDo.java
  29. 141 0
      js-security/security-entity/src/main/java/com/rongwe/scentity/domian/AspSpecialPersonalInformationDo.java
  30. 33 0
      js-security/security-server/src/main/java/com/rongwei/savecheck/controller/RiskJobController.java

+ 8 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspCombustibleGasDetectionDao.java

@@ -0,0 +1,8 @@
+package com.rongwei.sfcommon.sys.dao;
+
+
+import com.rongwe.scentity.domian.AspCombustibleGasDetectionDo;
+import com.rongwei.rwcommon.base.BaseDao;
+
+public interface AspCombustibleGasDetectionDao extends BaseDao<AspCombustibleGasDetectionDo> {
+}

+ 10 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspDhzyDao.java

@@ -0,0 +1,10 @@
+package com.rongwei.sfcommon.sys.dao;
+
+
+import com.rongwe.scentity.domian.AspDhzyDo;
+import com.rongwei.rwcommon.base.BaseDao;
+
+public interface AspDhzyDao extends BaseDao<AspDhzyDo> {
+
+
+}

+ 7 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspInspectionInformationTableDao.java

@@ -0,0 +1,7 @@
+package com.rongwei.sfcommon.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwe.scentity.domian.AspInspectionInformationTableDo;
+
+public interface AspInspectionInformationTableDao extends BaseMapper<AspInspectionInformationTableDo> {
+}

+ 8 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspJobConfigFxbsDao.java

@@ -0,0 +1,8 @@
+package com.rongwei.sfcommon.sys.dao;
+
+import com.rongwe.scentity.domian.AspJobConfigFxbsDo;
+import com.rongwei.rwcommon.base.BaseDao;
+
+
+public interface AspJobConfigFxbsDao extends BaseDao<AspJobConfigFxbsDo> {
+}

+ 8 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspJobSjzyDao.java

@@ -0,0 +1,8 @@
+package com.rongwei.sfcommon.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwe.scentity.domian.AspJobSjzyDo;
+
+
+public interface AspJobSjzyDao extends BaseMapper<AspJobSjzyDo> {
+}

+ 7 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspSpecialPersonalInformationDao.java

@@ -0,0 +1,7 @@
+package com.rongwei.sfcommon.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwe.scentity.domian.AspSpecialPersonalInformationDo;
+
+public interface AspSpecialPersonalInformationDao extends BaseMapper<AspSpecialPersonalInformationDo> {
+}

+ 8 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/AspCombustibleGasDetectionService.java

@@ -0,0 +1,8 @@
+package com.rongwei.sfcommon.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwe.scentity.domian.AspCombustibleGasDetectionDo;
+
+
+public interface AspCombustibleGasDetectionService extends IService<AspCombustibleGasDetectionDo> {
+}

+ 8 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/AspDhzyService.java

@@ -0,0 +1,8 @@
+package com.rongwei.sfcommon.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwe.scentity.domian.AspDhzyDo;
+
+
+public interface AspDhzyService extends IService<AspDhzyDo> {
+}

+ 7 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/AspInspectionInformationTableService.java

@@ -0,0 +1,7 @@
+package com.rongwei.sfcommon.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwe.scentity.domian.AspInspectionInformationTableDo;
+
+public interface AspInspectionInformationTableService extends IService<AspInspectionInformationTableDo> {
+}

+ 9 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/AspJobConfigFxbsService.java

@@ -0,0 +1,9 @@
+package com.rongwei.sfcommon.sys.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwe.scentity.domian.AspJobConfigFxbsDo;
+
+
+public interface AspJobConfigFxbsService extends IService<AspJobConfigFxbsDo> {
+}

+ 9 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/AspJobSjzyService.java

@@ -0,0 +1,9 @@
+package com.rongwei.sfcommon.sys.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwe.scentity.domian.AspJobSjzyDo;
+
+
+public interface AspJobSjzyService extends IService<AspJobSjzyDo> {
+}

+ 7 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/AspSpecialPersonalInformationService.java

@@ -0,0 +1,7 @@
+package com.rongwei.sfcommon.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwe.scentity.domian.AspSpecialPersonalInformationDo;
+
+public interface AspSpecialPersonalInformationService extends IService<AspSpecialPersonalInformationDo> {
+}

+ 13 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/RiskJobService.java

@@ -0,0 +1,13 @@
+package com.rongwei.sfcommon.sys.service;
+
+
+import javax.servlet.http.HttpServletResponse;
+
+public interface    RiskJobService {
+
+
+     void riskJobExport2(String id,String jobtype, HttpServletResponse response);
+
+
+//    void riskJobExport(ExcelFormData excelData, HttpServletResponse response) throws Exception;
+}

+ 12 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspCombustibleGasDetectionServiceImpl.java

@@ -0,0 +1,12 @@
+package com.rongwei.sfcommon.sys.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwe.scentity.domian.AspCombustibleGasDetectionDo;
+import com.rongwei.sfcommon.sys.dao.AspCombustibleGasDetectionDao;
+import com.rongwei.sfcommon.sys.service.AspCombustibleGasDetectionService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AspCombustibleGasDetectionServiceImpl extends ServiceImpl<AspCombustibleGasDetectionDao, AspCombustibleGasDetectionDo> implements AspCombustibleGasDetectionService {
+}

+ 11 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspInspectionInformationTableServiceImpl.java

@@ -0,0 +1,11 @@
+package com.rongwei.sfcommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwe.scentity.domian.AspInspectionInformationTableDo;
+import com.rongwei.sfcommon.sys.dao.AspInspectionInformationTableDao;
+import com.rongwei.sfcommon.sys.service.AspInspectionInformationTableService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AspInspectionInformationTableServiceImpl extends ServiceImpl<AspInspectionInformationTableDao, AspInspectionInformationTableDo>  implements AspInspectionInformationTableService {
+}

+ 15 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspJobConfigFxbsServiceImpl.java

@@ -0,0 +1,15 @@
+package com.rongwei.sfcommon.sys.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwe.scentity.domian.AspJobConfigFxbsDo;
+import com.rongwei.sfcommon.sys.dao.AspJobConfigFxbsDao;
+import com.rongwei.sfcommon.sys.service.AspJobConfigFxbsService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AspJobConfigFxbsServiceImpl extends ServiceImpl<AspJobConfigFxbsDao, AspJobConfigFxbsDo> implements AspJobConfigFxbsService {
+
+
+
+}

+ 12 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspJobSjzyServiceImpl.java

@@ -0,0 +1,12 @@
+package com.rongwei.sfcommon.sys.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwe.scentity.domian.AspJobSjzyDo;
+import com.rongwei.sfcommon.sys.dao.AspJobSjzyDao;
+import com.rongwei.sfcommon.sys.service.AspJobSjzyService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AspJobSjzyServiceImpl extends ServiceImpl<AspJobSjzyDao, AspJobSjzyDo> implements AspJobSjzyService {
+}

+ 11 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspSpecialPersonalInformationServiceImpl.java

@@ -0,0 +1,11 @@
+package com.rongwei.sfcommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwe.scentity.domian.AspSpecialPersonalInformationDo;
+import com.rongwei.sfcommon.sys.dao.AspSpecialPersonalInformationDao;
+import com.rongwei.sfcommon.sys.service.AspSpecialPersonalInformationService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AspSpecialPersonalInformationServiceImpl extends ServiceImpl<AspSpecialPersonalInformationDao, AspSpecialPersonalInformationDo> implements AspSpecialPersonalInformationService {
+}

+ 54 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/CustomMailMergeDataSource.java

@@ -0,0 +1,54 @@
+package com.rongwei.sfcommon.sys.service.impl;
+
+import com.aspose.words.IMailMergeDataSource;
+import com.aspose.words.ref.Ref;
+
+import java.util.List;
+import java.util.Map;
+
+public class CustomMailMergeDataSource implements IMailMergeDataSource {
+    private List<Map<String, String>> dataList;  // 数据源
+    private int index = -1;  // 当前行的索引
+    private final String tableName;
+    // 构造函数
+    public CustomMailMergeDataSource(List<Map<String, String>> dataList , String tableName) {
+        this.dataList = dataList;
+        this.tableName = tableName;
+    }
+
+    // 实现 getTableName() 方法
+    @Override
+    public String getTableName() {
+        return tableName; // 例如返回 Word 模板中的区域名
+    }
+
+    // 实现 moveNext() 方法
+    @Override
+    public boolean moveNext() {
+        index++;  // 游标向前移动
+        return index < dataList.size();  // 如果还有数据,返回 true
+    }
+
+    // 实现 getValue() 方法
+    @Override
+    public boolean getValue(String var1, Ref<Object> var2) {
+        if (index >= 0 && index < dataList.size()) {
+            Map<String, String> currentItem = dataList.get(index);  // 获取当前行的数据
+            String value = currentItem.get(var1);  // 获取字段值
+            var2.set(value);  // 将值设置到 Ref 对象中
+            return value != null;  // 如果字段有值,返回 true
+        }
+        return false;  // 如果没有数据,返回 false
+    }
+
+    // 实现 getChildDataSource() 方法
+    @Override
+    public IMailMergeDataSource getChildDataSource(String var1) {
+        return null;  // 如果没有子数据源,可以返回 null,或者根据需求返回一个子数据源
+    }
+
+    // 重置数据源游标
+    public void reset() {
+        index = -1;  // 将索引重置到初始位置
+    }
+}

+ 12 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/DhzyServiceImpl.java

@@ -0,0 +1,12 @@
+package com.rongwei.sfcommon.sys.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwe.scentity.domian.AspDhzyDo;
+import com.rongwei.sfcommon.sys.dao.AspDhzyDao;
+import com.rongwei.sfcommon.sys.service.AspDhzyService;
+import org.springframework.stereotype.Service;
+
+@Service("dhzyService")
+public class DhzyServiceImpl  extends ServiceImpl<AspDhzyDao, AspDhzyDo> implements AspDhzyService {
+}

+ 602 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/RiskJobServiceImpl.java

@@ -0,0 +1,602 @@
+package com.rongwei.sfcommon.sys.service.impl;
+
+import com.aspose.cells.DocumentPropertyCollection;
+import com.aspose.words.Document;
+import com.aspose.words.DocumentBuilder;
+import com.aspose.words.MailMergeCleanupOptions;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.rongwe.scentity.domian.*;
+import com.rongwei.commonservice.service.dao.FileItemDao;
+import com.rongwei.rwadmincommon.system.dao.SysDictDao;
+import com.rongwei.rwadmincommon.system.domain.SysDictDo;
+import com.rongwei.rwcommon.base.exception.CustomException;
+import com.rongwei.rwcommon.utils.StringUtils;
+import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
+import com.rongwei.sfcommon.sys.service.*;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.stereotype.Service;
+import com.rongwei.rwcommon.base.BaseDo;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.URLEncoder;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+@Slf4j
+public class RiskJobServiceImpl implements RiskJobService {
+    private static final Logger logger = LoggerFactory.getLogger(RiskJobServiceImpl.class.getName());
+    public static final String DEFAULT_FONT_NAME = "仿宋";
+
+    public static final Map<String, String> CHECK_BOX= new HashMap<String, String>() {{
+        put("DHFS", "dhfs");
+
+    }};
+
+
+    public static final List<String> IMG_SUFFIX = new ArrayList<String>() {{
+        add("png");
+        add("jpg");
+        add("jpeg");
+        add("bmp");
+        add("gif");
+        add("svg");
+        add("webp");
+    }};
+
+    @Autowired
+    AspJobConfigFxbsService aspJobConfigFxbsService;
+
+    @Autowired
+    AspDhzyService dhzyService;
+
+    @Autowired
+    AspCombustibleGasDetectionService aspCombustibleGasDetectionService;
+
+    @Autowired
+    AspJobSjzyService aspJobSjzyService;
+
+    @Autowired
+    private SysDictDao sysDictDao;
+    @Autowired
+    private FileItemDao fileItemDao;
+
+    @Autowired
+     AspInspectionInformationTableService aspInspectionInformationTableService;
+    @Autowired
+    AspSpecialPersonalInformationService aspSpecialPersonalInformationService;
+/*
+
+    private  Map<String, IService<?>> jobTypeServiceMap = new HashMap<>();
+    @PostConstruct
+    public void init() {
+        jobTypeServiceMap.put("动火作业", dhzyService);
+//        jobTypeServiceMap.put("高处作业", gczyService);
+//        jobTypeServiceMap.put("受限空间", sxkjzyService);
+//        jobTypeServiceMap.put("吊装作业", dzzyService);
+//        jobTypeServiceMap.put("临时用电", lsydzyService);
+//        jobTypeServiceMap.put("断路作业", dlzyService);
+//        jobTypeServiceMap.put("动土作业", dtzyService);
+//        jobTypeServiceMap.put("盲板作业", mbzyService);
+    }
+
+    public void riskJobExport2(String id, String jobtype, HttpServletResponse response) {
+        IService<?> service = jobTypeServiceMap.get(jobtype);
+        if (service == null) {
+            throw new RuntimeException("不支持的作业类型: " + jobtype);
+        }
+
+        Object jobDo = service.getById(id);
+        if (jobDo == null) {
+            throw new RuntimeException("未查询到作业数据");
+        }
+
+        Map<String, String> wordMap = extractWordMap(jobDo);
+
+        List<Map<String, String>> fxbsList = queryFxbsList(jobDo);
+        List<Map<String, String>> qtjcList = queryQtjcList(jobDo);
+
+        // 调用你原有的 response 导出方法
+        response(wordMap, response, qtjcList);
+    }
+    private Map<String, String> extractWordMap(Object jobDo) {
+        Map<String, String> map = new HashMap<>();
+        if (jobDo instanceof DhzyDo) {
+            DhzyDo dhzy = (DhzyDo) jobDo;
+            map.put("SQDW", defaultEmptyStr(dhzy.getSqdw()));
+            map.put("SQR", defaultEmptyStr(dhzy.getSqr()));
+            map.put("ZYNR", defaultEmptyStr(dhzy.getZynr()));
+            map.put("ZYZBH", defaultEmptyStr(dhzy.getZyzbh()));
+            map.put("DHZYJB", defaultEmptyStr(dhzy.getDhzyjb()));
+            map.put("DHFS", defaultEmptyStr(dhzy.getDhfs()));
+            // 动火特有字段...
+        } else if (jobDo instanceof GczyDo) {
+            GczyDo gczy = (GczyDo) jobDo;
+            map.put("SQDW", defaultEmptyStr(gczy.getSqdw()));
+            map.put("SQR", defaultEmptyStr(gczy.getSqr()));
+            map.put("ZYNR", defaultEmptyStr(gczy.getZynr()));
+            map.put("ZYZBH", defaultEmptyStr(gczy.getZyzbh()));
+            map.put("GCJB", defaultEmptyStr(gczy.getGcjb()));
+            map.put("GCDW", defaultEmptyStr(gczy.getGcdw()));
+            // 高处特有字段...
+        }
+        // 受限空间、吊装作业... 依次补充
+        return map;
+    }
+
+//风险辨识
+    private List<Map<String, String>> queryFxbsList(Object jobDo) {
+        String tenantId = "";
+        String jobType = "";
+
+        // 根据 jobDo 类型判断并获取 tenantId 和 jobType
+        if (jobDo instanceof DhzyDo ) {
+            DhzyDo dhzy = (DhzyDo) jobDo;
+            tenantId = dhzy.getTenantid();
+            jobType = dhzy.getJobtype();
+        } else if (jobDo instanceof GczyDo gczy) {
+
+            tenantId = gczy.getTenantid();
+            jobType = gczy.getJobtype();
+        }
+        // 可以继续添加更多 else if 来支持其他类型,比如:受限空间、吊装作业等
+
+        // 查询风险辨识数据
+        QueryWrapper<AspJobConfigFxbsDo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("tenantid", tenantId);
+        queryWrapper.eq("jobtype", jobType);
+        queryWrapper.eq("deleted", '0');
+
+        // 获取风险辨识数据列表
+        List<AspJobConfigFxbsDo> fxbsList = aspJobConfigFxbsService.list(queryWrapper);
+
+        List<Map<String, String>> fxbs = new ArrayList<>();
+        for (AspJobConfigFxbsDo item : fxbsList) {
+            Map<String, String> subItem = new HashMap<>();
+            subItem.put("FXBSX", defaultEmptyStr(item.getFxbsx()));
+            fxbs.add(subItem);
+        }
+        return fxbs;
+    }
+
+    //气体检测
+    private List<Map<String, String>> queryQtjcList(Object jobDo) {
+        String tenantId = "";
+        String jobType = "";
+
+        // 根据 jobDo 类型判断并获取 tenantId 和 jobType
+        if (jobDo instanceof DhzyDo ) {
+            DhzyDo dhzy = (DhzyDo) jobDo;
+            tenantId = dhzy.getTenantid();
+            jobType = dhzy.getJobtype();
+        } else if (jobDo instanceof GczyDo ) {
+            tenantId = gczy.getTenantid();
+            jobType = gczy.getJobtype();
+        }
+        // 可以继续添加更多 else if 来支持其他类型
+
+        // 查询气体检测数据
+        QueryWrapper<AspCombustibleGasDetectionDo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("tenantid", tenantId);
+        queryWrapper.eq("jobtype", jobType);
+        queryWrapper.eq("deleted", '0');
+
+        // 获取气体检测数据列表
+        List<AspCombustibleGasDetectionDo> qtjcList = aspCombustibleGasDetectionService.list(queryWrapper);
+
+        List<Map<String, String>> qtjc = new ArrayList<>();
+        for (AspCombustibleGasDetectionDo item : qtjcList) {
+            Map<String, String> subItem = new HashMap<>();
+            subItem.put("COMBUSTIBLEGASLETCONTENT", defaultEmptyStr(item.getCombustiblegasletcontent()));
+            subItem.put("OXYGENCONTENT", defaultEmptyStr(item.getOxygencontent()));
+            subItem.put("TOXICGAS", defaultEmptyStr(item.getToxicgas()));
+            subItem.put("SAMPLINGTIME", defaultEmptyStr(item.getSamplingtime()));
+            subItem.put("LELSAMPLINGSITE", defaultEmptyStr(item.getLelsamplingsite()));
+            subItem.put("ANALYST", defaultEmptyStr(item.getAnalyst()));
+            qtjc.add(subItem);
+        }
+        return qtjc;
+    }
+
+
+
+
+//    private String defaultEmptyStr(Object obj) {
+//        return obj == null ? "" : obj.toString();
+//    }
+
+*/
+
+    public void riskJobExport2(String id, String jobtype, HttpServletResponse response){
+        Map<String, String> wordMap = new HashMap<>();
+
+        AspDhzyDo dhzyDo = dhzyService.getById(id);
+
+        List<SysDictDo> sysDictDoList = sysDictDao.selectList(new LambdaQueryWrapper<SysDictDo>()
+                .eq(BaseDo::getDeleted, "0")
+                .in(SysDictDo::getDicttype, "dhfs","dhzyjb"));
+        SysDictDo sysDictDo = null;
+
+        //动火方式
+        String dhfs = dhzyDo.getDhfs();
+        String[] dhfsValues = dhfs.split(",");
+        Map<String, String> dictValueNameMap = sysDictDoList.stream()
+                .filter(dict -> "dhfs".equals(dict.getDicttype()))
+                .collect(Collectors.toMap(SysDictDo::getValue, SysDictDo::getName));
+        List<String> dhfsNames = Arrays.stream(dhfsValues)
+                .map(String::trim)
+                .map(dictValueNameMap::get)
+                .filter(Objects::nonNull)
+                .collect(Collectors.toList());
+        String DHFS = String.join(",", dhfsNames);
+
+        //动火作业级别
+        String dhzyjb = dhzyDo.getDhzyjb();
+        sysDictDo = sysDictDoList.stream()
+                .filter(dict -> "dhzyjb".equals(dict.getDicttype()) &&
+                        dict.getValue().equals(dhzyjb))
+                .findFirst()
+                .orElse(null);
+        String DHZYJB = sysDictDo == null ? "" : sysDictDo.getName();
+
+
+
+
+
+
+
+        QueryWrapper<AspJobConfigFxbsDo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("tenantid", dhzyDo.getTenantid());
+        queryWrapper.eq("jobtype", dhzyDo.getJobtype());
+        queryWrapper.eq("deleted", '0');
+        List<AspJobConfigFxbsDo> fxbsList = aspJobConfigFxbsService.list(queryWrapper);
+        // 创建一个与 fxbsList 大小相同的数组
+        String[] fxbs = new String[fxbsList.size()];
+        // 将 fxbsList 中的元素复制到数组中
+        for (int i = 0; i < fxbsList.size(); i++) {
+            fxbs[i] = fxbsList.get(i).getFxbsx();
+        }
+//        List<Map<String, String>> fxbs = new ArrayList<>();
+//        for (AspJobConfigFxbsDo item : fxbsList) {
+//            Map<String, String> subItem = new HashMap<>();
+//            // 根据实际情况添加属性到 Map 中
+//            subItem.put("FXBSX", defaultEmptyStr(item.getFxbsx()));
+//            fxbs.add(subItem);
+//        }
+
+//气体检查
+        QueryWrapper<AspCombustibleGasDetectionDo> queryWrapper1 = new QueryWrapper<>();
+        queryWrapper1.eq("jobid", dhzyDo.getId());
+        queryWrapper1.eq("deleted", '0');
+        List<AspCombustibleGasDetectionDo> qtjcList = aspCombustibleGasDetectionService.list(queryWrapper1);
+
+        List<Map<String, String>> subList1 = new ArrayList<>();
+        for (AspCombustibleGasDetectionDo item : qtjcList) {
+            Map<String, String> subItem = new HashMap<>();
+            // 根据实际情况添加属性到 Map 中
+            subItem.put("COMBUSTIBLEGASLETCONTENT", defaultEmptyStr(item.getCombustiblegasletcontent()));
+            subItem.put("OXYGENCONTENT",defaultEmptyStr(item.getOxygencontent()));
+            subItem.put("TOXICGAS", defaultEmptyStr(item.getToxicgas()));
+            subItem.put("SAMPLINGTIME", defaultEmptyStr(item.getSamplingtime()));
+            subItem.put("LELSAMPLINGSITE", defaultEmptyStr(item.getLelsamplingsite()));
+            subItem.put("ANALYST", defaultEmptyStr(item.getAnalyst()));
+            subList1.add(subItem);
+        }
+
+        //关联作业查询
+        QueryWrapper<AspJobSjzyDo> queryWrapper2 = new QueryWrapper<>();
+        queryWrapper2.eq("JOBID",dhzyDo.getId());
+        queryWrapper2.eq("DELETED","0");
+        List<AspJobSjzyDo> resultList = aspJobSjzyService.list(queryWrapper2);
+        //        JOBTYPE  SJZYZBH
+        if (!resultList.isEmpty()) {
+            String jobTypeString = resultList.stream()
+                    .map(AspJobSjzyDo::getJobtype)
+                    .distinct()
+                    .collect(Collectors.joining(","));
+            String sjzyzbhString = resultList.stream()
+                    .map(AspJobSjzyDo::getSjzyzbh)
+                    .distinct()
+                    .collect(Collectors.joining(","));
+            wordMap.put("SJQTZYLX",defaultEmptyStr(jobTypeString) );
+            wordMap.put("SJQTTSZYZBH", defaultEmptyStr(sjzyzbhString));
+        }
+
+
+//安全措施
+        QueryWrapper<AspInspectionInformationTableDo> queryWrapper3 = new QueryWrapper<>();
+
+        queryWrapper3.eq("jobid", dhzyDo.getId());
+        queryWrapper3.eq("deleted", '0');
+        List<AspInspectionInformationTableDo> aqcsList = aspInspectionInformationTableService.list(queryWrapper3);
+        List<Map<String, String>> subList2 = new ArrayList<>();
+        for (AspInspectionInformationTableDo item : aqcsList) {
+            Map<String, String> subItem2 = new HashMap<>();
+            // 根据实际情况添加属性到 Map 中
+            subItem2.put("MAINSAFETYMEASURES", defaultEmptyStr(item.getMainsafetymeasures()));
+            subItem2.put("WHETHERITINVOLVES",defaultEmptyStr(item.getWhetheritinvolves()));
+            subItem2.put("CHECKUSER", defaultEmptyStr(item.getCheckuser()));
+            subList2.add(subItem2);
+        }
+
+
+//   动火人以及证书编号
+//        aspSpecialPersonalInformationService
+        QueryWrapper<AspSpecialPersonalInformationDo> queryWrapper4 = new QueryWrapper<>();
+        queryWrapper3.eq("jobid", dhzyDo.getId());
+        queryWrapper3.eq("deleted", '0');
+        List<AspSpecialPersonalInformationDo> dhrList = aspSpecialPersonalInformationService.list(queryWrapper4);
+
+        String dhrxx = dhrList.stream()
+                .map(item -> item.getName() + "," + item.getCertificateno())
+                .collect(Collectors.joining(" "));
+        if (!resultList.isEmpty()) {
+            wordMap.put("DHRJZSBH",defaultEmptyStr(dhrxx) );
+        }
+//        CERTIFICATENO name    小王,123 小明456
+//        List<Map<String, String>> subList2 = new ArrayList<>();
+//        for (AspInspectionInformationTableDo item : aqcsList) {
+//            Map<String, String> subItem2 = new HashMap<>();
+//            // 根据实际情况添加属性到 Map 中
+//            subItem2.put("MAINSAFETYMEASURES", defaultEmptyStr(item.getMainsafetymeasures()));
+//            subItem2.put("WHETHERITINVOLVES",defaultEmptyStr(item.getWhetheritinvolves()));
+//            subItem2.put("CHECKUSER", defaultEmptyStr(item.getCheckuser()));
+//            subList2.add(subItem2);
+//        }
+
+
+
+
+
+//
+//        dhzyDo.getFxbs();//风险辨识
+
+
+        wordMap.put("SQDW", defaultEmptyStr( dhzyDo.getSqdw()));
+        wordMap.put("SQR", defaultEmptyStr( dhzyDo.getSqr()));
+        wordMap.put("ZYZBH", defaultEmptyStr( dhzyDo.getZyzbh()));
+        wordMap.put("ZYNR", defaultEmptyStr( dhzyDo.getZynr()));
+
+        wordMap.put("DHZYJB", defaultEmptyStr( DHZYJB));
+//        wordMap.put("DHFS",dhfs);
+        wordMap.put("DHFS",DHFS);
+
+        wordMap.put("DHDD", defaultEmptyStr( dhzyDo.getDhdd()));
+        wordMap.put("ZYWZ", defaultEmptyStr( dhzyDo.getZywz()));
+        wordMap.put("ZYDWMC", defaultEmptyStr( dhzyDo.getZydwmc()));
+        wordMap.put("ZYFZR", defaultEmptyStr( dhzyDo.getZyfzr()));
+        wordMap.put("ZYKSSJ", defaultEmptyStr( dhzyDo.getZykssj()));
+        wordMap.put("ZYJSSJ", defaultEmptyStr( dhzyDo.getZyjssj()));
+
+        wordMap.put("JHRQM", defaultEmptyStr( dhzyDo.getJhrqm()));
+        wordMap.put("AQJDRQM", defaultEmptyStr( dhzyDo.getAqjdrqm()));
+        wordMap.put("JSJDRQM", defaultEmptyStr( dhzyDo.getJsjdrqm()));
+        wordMap.put("SDBMFZRQZ", defaultEmptyStr( dhzyDo.getSdbmfzrqz()));
+
+          String fxbsx = defaultEmptyStr( dhzyDo.getFxbs());
+
+        response(wordMap, response ,subList1,subList2,fxbs ,fxbsx , sysDictDoList );
+
+    }
+
+    public String defaultEmptyStr(Object str) {
+        if (str == null) {
+            return "";
+        }
+        if (str instanceof Date) {
+//            return new SimpleDateFormat("yyyy-MM-dd").format(str);
+            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format((Date) str);
+        }
+        return str.toString();
+    }
+
+    public void checkBoxDispose(Map<String, String> wordMap, Document document, String[] fxbs, String fxbsx, List<SysDictDo> sysDictDoList) {
+        try {
+            DocumentBuilder builder = new DocumentBuilder(document);
+            if (fxbs.length > 0) {
+                String bsx = "FXBS";
+                builder.moveToMergeField(bsx);
+                for (String info : fxbs) {
+                    builder.getFont().setName(DEFAULT_FONT_NAME);
+                    builder.write(info);
+                    builder.getFont().setName("Wingdings");
+                    if (StringUtils.isBlank(fxbsx)) {
+                        // 如果 wordMap 中 FXBS 键的值为空,复选框不勾选
+                        builder.write("\u00A8");
+                    } else {
+                        String[] values = fxbsx.split(",");
+                        boolean isChecked = false;
+                        for (String value : values) {
+                            if (value.trim().equals(info)) {
+                                // 如果 FXBS 键的值中包含当前选项,复选框勾选
+                                isChecked = true;
+                                break;
+                            }
+                        }
+                        builder.write(isChecked ? "\u00FE" : "\u00A8");
+                    }
+                    builder.write(" ");
+                }
+            }
+            for (Map.Entry<String, String> entry : CHECK_BOX.entrySet()) {
+                String k = entry.getKey();
+                String v = entry.getValue();
+                builder.moveToMergeField(k);
+                List<SysDictDo> dicts = sysDictDoList.stream().filter(dict -> v.equals(dict.getDicttype()) && !dict.getPid().equals("-1"))
+                        .sorted(Comparator.comparing(SysDictDo::getSort).reversed())
+                        .collect(Collectors.toList());
+                for (SysDictDo info : dicts) {
+                    builder.getFont().setName(DEFAULT_FONT_NAME);
+                    builder.write(info.getName());
+                    builder.getFont().setName("Wingdings");
+                    builder.write(StringUtils.isBlank(wordMap.get(k)) ? "\u00A8" : wordMap.get(k).contains(info.getName()) ? "\u00FE" : "\u00A8");
+                    builder.write(" ");
+                }
+            }
+
+
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+
+
+
+
+
+
+
+
+//
+//    public void response(Map<String, String> wordMap, HttpServletResponse response) {
+//        try (InputStream inputStream = new ClassPathResource("导出PDF(动火作业待修改).docx").getInputStream();
+//             OutputStream outputStream = response.getOutputStream()) {
+//            // 加载 Word 文档模板
+//            Document doc = new Document(inputStream);
+//            // 如果 wordMap 不为空,执行邮件合并操作
+//            if (wordMap != null) {
+//                doc.getMailMerge().execute(wordMap.keySet().toArray(new String[0]), wordMap.values().toArray(new String[0]));
+//            }
+//            // 设置清理选项,移除未使用的字段和空表格行
+//            doc.getMailMerge().setCleanupOptions(MailMergeCleanupOptions.REMOVE_UNUSED_FIELDS);
+//            doc.getMailMerge().setCleanupOptions(MailMergeCleanupOptions.REMOVE_EMPTY_TABLE_ROWS);
+//            // 删除文档中的字段
+//            doc.getMailMerge().deleteFields();
+//
+//            // 设置响应头,表明返回的是 PDF 文件
+//            response.setContentType("application/pdf");
+//            // 设置响应头,指定文件名和下载方式
+//            response.setHeader("Content-Disposition", "attachment;filename=ComplaintForm.pdf");
+//
+//            // 将文档保存为 PDF 格式并输出到响应流
+//            doc.save(outputStream, SaveFormat.PDF);
+//            outputStream.flush();
+//        } catch (IOException e) {
+//            // 抛出自定义异常
+//            throw new CustomException("文件导出异常");
+//        } catch (Exception e) {
+//            throw new RuntimeException(e);
+//        }
+//    }
+
+
+    public void response(Map<String, String> wordMap, HttpServletResponse response , List<Map<String, String>> subList1,List<Map<String, String>> subList2, String[] fxbs, String fxbsx, List<SysDictDo> sysDictDoList) {
+        try (InputStream inputStream = new ClassPathResource("导出PDF(动火作业待修改).docx").getInputStream();
+             OutputStream outputStream = response.getOutputStream()) {
+            if (inputStream == null) {
+                log.error("无法找到指定的 Word 模板文件");
+                throw new FileNotFoundException("无法找到 Word 模板文件");
+            }
+            Document doc = new Document(inputStream);
+            log.info("文档加载成功");
+            if (wordMap != null) {
+                log.info("执行邮件合并");
+                checkBoxDispose(wordMap, doc, fxbs ,fxbsx,sysDictDoList );
+                // 删除图片字段,防止插入为 ID
+                List<String> imageBookmarks = Arrays.asList("JHRQM", "AQJDRQM", "JSJDRQM","SDBMFZRQZ");
+                Map<String, String> textMap = new HashMap<>(wordMap);
+                imageBookmarks.forEach(textMap::remove);
+//                doc.getMailMerge().execute(wordMap.keySet().toArray(new String[0]), wordMap.values().toArray(new String[0]));
+                doc.getMailMerge().execute(textMap.keySet().toArray(new String[0]), textMap.values().toArray(new String[0]));
+                // 插入图片签名
+                insertImageToBookmark(doc, "SDBMFZRQZ", wordMap.get("SDBMFZRQZ"));
+                insertImageToBookmark(doc, "JHRQM", wordMap.get("JHRQM"));
+                insertImageToBookmark(doc, "AQJDRQM", wordMap.get("AQJDRQM"));
+                insertImageToBookmark(doc, "JSJDRQM", wordMap.get("JSJDRQM"));
+                if (!subList1.isEmpty()) {
+                    log.info("执行 List1 区域合并");
+                    CustomMailMergeDataSource dataSource = new CustomMailMergeDataSource(subList1,"list1");
+                    // 执行嵌套邮件合并
+                    doc.getMailMerge().executeWithRegions(dataSource);
+                }
+                if (!subList2.isEmpty()) {
+                    log.info("执行 List2 区域合并");
+                    CustomMailMergeDataSource dataSource2 = new CustomMailMergeDataSource(subList2,"list2");
+                    // 执行嵌套邮件合并
+                    doc.getMailMerge().executeWithRegions(dataSource2);
+                }
+
+            }
+
+            doc.getMailMerge().setCleanupOptions(MailMergeCleanupOptions.REMOVE_UNUSED_FIELDS | MailMergeCleanupOptions.REMOVE_EMPTY_TABLE_ROWS);
+            doc.getMailMerge().deleteFields();
+
+            // 设置返回 PDF 的响应头
+            response.setContentType("application/pdf");
+            String fileName = URLEncoder.encode("导出结果.pdf", "UTF-8").replaceAll("\\+", "%20");
+            response.setHeader("Content-Disposition", "inline; filename*=UTF-8''" + fileName);
+
+            log.info("开始输出 PDF 至前端");
+
+            // 输出为 PDF 流
+            doc.save(response.getOutputStream(), com.aspose.words.SaveFormat.PDF);
+
+
+
+
+
+
+
+
+/*            log.info("开始保存为 PDF");
+
+//            response.setContentType("application/octet-stream;charset=ISO8859-1");
+//            response.setHeader("Content-Disposition", "inline; filename=exported_file.pdf");
+            // 如果需要本地保存
+            LocalDateTime now = LocalDateTime.now();
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+            String formattedTime = now.format(formatter);
+            String fileName = "dh" + formattedTime + ".docx";
+            String localPath = "D:\\test\\" + fileName;
+            File file = new File(localPath);
+            if (!file.getParentFile().exists()) {
+                file.getParentFile().mkdirs();
+            }
+//            doc.save(localPath,com.aspose.words.SaveFormat.DOCX);
+            try {
+                doc.save(localPath,com.aspose.words.SaveFormat.DOCX);
+//                doc.save(response.getOutputStream(), com.aspose.words.SaveFormat.DOCX);
+            } catch (Exception e) {
+                log.error("保存 PDF 时出错", e);
+                throw new RuntimeException("文件导出异常", e);
+            }*/
+
+        } catch (IOException e) {
+            log.error("文件导出过程中出现 IO 异常", e);
+            throw new CustomException("文件导出异常");
+        } catch (Exception e) {
+            log.error("文件导出过程中出现未知异常", e);
+            throw new RuntimeException("文件导出过程中出现未知异常", e);
+        }
+
+    }
+
+    @SneakyThrows
+    public void insertImageToBookmark(Document doc, String bookmark, String fileId) {
+        if (StringUtils.isBlank(fileId)) return;
+
+        SysFileItemDo file = fileItemDao.selectById(fileId);
+        if (file == null || !IMG_SUFFIX.contains(file.getFiletype().toLowerCase())) return;
+//
+        try (InputStream inputStream = Files.newInputStream( Paths.get(file.getFullpath())   )  ) {
+            DocumentBuilder builder = new DocumentBuilder(doc);
+            builder.moveToMergeField(bookmark); // 移动到书签
+            builder.insertImage(inputStream, 100, 50); // 自行设置图片大小
+        }
+    }
+
+
+
+}

BIN
js-security/security-common/src/main/resources/导出PDF(动火作业待修改).docx


+ 122 - 0
js-security/security-entity/src/main/java/com/rongwe/scentity/domian/AspCombustibleGasDetectionDo.java

@@ -0,0 +1,122 @@
+package com.rongwe.scentity.domian;
+
+
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 可燃气体检测
+ * @TableName asp_combustible_gas_detection
+ */
+@Data
+@TableName(value ="asp_combustible_gas_detection")
+public class AspCombustibleGasDetectionDo extends BaseDo implements Serializable {
+    /**
+     * 主键ID
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 是否删除Y/N
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    private Date createdate;
+
+    /**
+     * 创建用户ID
+     */
+    private String createuserid;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 修改用户ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 创建人
+     */
+    private String createusername;
+
+    /**
+     * 修改人
+     */
+    private String modifyusername;
+
+    /**
+     * 作业ID
+     */
+    private String jobid;
+
+    /**
+     * 作业类型
+     */
+    private String jobtype;
+
+    /**
+     *  LEL采样地点
+     */
+    private String lelsamplingsite;
+
+    /**
+     * 采样时间
+     */
+    private Date samplingtime;
+
+    /**
+     * 分析人
+     */
+    private String analyst;
+
+    /**
+     * 可燃气体(%LEL)
+     */
+    private String combustiblegasletcontent;
+
+    /**
+     * 氧含量
+     */
+    private String oxygencontent;
+
+    /**
+     * 有毒气体
+     */
+    private String toxicgas;
+
+    /**
+     * 作业票编号
+     */
+    private String jobnumber;
+
+
+}

+ 465 - 23
js-security/security-entity/src/main/java/com/rongwe/scentity/domian/AspDhzyDo.java

@@ -19,212 +19,654 @@ import java.util.Date;
 public class AspDhzyDo extends BaseDo implements Serializable {
 
     private static final long serialVersionUID = 1L;
-
     /**
      * 主键ID
      */
     @TableId
     private String id;
+
     /**
      * 是否在四色图区域,0:否,1:是
      */
     private String sfsstqy;
+
     /**
      * 风险四色图ID,当作业在四色图区域内时必填
      */
     private String fssstid;
+
     /**
      * 作业证编号
      */
     private String zyzbh;
+
     /**
      * 作业申请单位
      */
     private String sqdw;
+
     /**
      * 作业申请人
      */
     private String sqr;
+
     /**
      * 作业申请时间
      */
     private Date zysqsj;
+
     /**
      * 作业内容
      */
     private String zynr;
+
     /**
      * 作业位置
      */
     private String zywz;
+
     /**
      * 动火作业级别,1:特级,2:一级,3:二级
      */
     private String dhzyjb;
+
     /**
-     * 动火方式
+     * 动火方式,多选
      */
     private String dhfs;
+
     /**
      * 作业实施开始时间
      */
     private Date zykssj;
+
     /**
      * 作业实施结束时间
      */
     private Date zyjssj;
+
     /**
      * 作业负责人
      */
     private String zyfzr;
+
     /**
-     * 作业人员信息
+     * 作业人员信息,姓名、身份证号、特殊作业工种、特殊工作证号,逗号分隔
      */
     private String zyryxx;
+
     /**
-     * 作业单位类型
+     * 作业单位类型,1:本厂,2:第三方/承包商
      */
     private String zydwlx;
+
     /**
      * 作业单位名称
      */
     private String zydwmc;
+
     /**
-     * 涉及的其他特殊作业
+     * 涉及的其他特殊作业,1:是,0:否
      */
     private String sfsjqttszy;
+
     /**
-     * 涉及的其他特殊作业安全作业证编号
+     * 涉及的其他特殊作业安全作业证编号,若涉及则必填
      */
     private String sjqttszyzbh;
+
     /**
-     * 风险辨识
+     * 风险辨识,多选
      */
     private String fxbs;
+
     /**
      * 风险预防措施
      */
     private String fxyfcs;
+
     /**
-     * 防护用品
+     * 防护用品,多选
      */
     private String fhyp;
+
     /**
      * 监护人
      */
     private String jhr;
+
     /**
-     * 监护人岗位
+     * 监护人岗位(废弃)
      */
     private String jhrgw;
+
     /**
-     * 监护人证件编号
+     * 监护人证件编号(占存工号)
      */
     private String jhrzjbh;
+
+    /**
+     * 监护人签名
+     */
+    private String jhrqm;
+
+    /**
+     * 监护人ID
+     */
+    private String jhrid;
+
     /**
      * 验收人
      */
     private String ysr;
+
     /**
      * 安全交底人
      */
     private String aqjdr;
+
     /**
-     * 当前状态
+     * 当前状态,1:作业前,2:作业中,3:作业后
      */
     private String dqzt;
+
     /**
      * 接受交底人
      */
     private String jsjdr;
+
     /**
      * 经度
      */
     private BigDecimal longitude;
+
     /**
      * 纬度
      */
     private BigDecimal latitude;
+
     /**
      * 视频回放地址
      */
-    private String video_url;
+    @TableField("VIDEO_URL")
+    private String videoUrl;
+
     /**
      * 创建时间
      */
-    private Date create_time;
+    @TableField("CREATE_TIME")
+    private Date createTime;
+
     /**
      * 创建人
      */
-    private String create_by;
+    @TableField("CREATE_BY")
+    private String createBy;
+
     /**
      * 最后修改时间
      */
-    private Date update_time;
+    @TableField("UPDATE_TIME")
+    private Date updateTime;
+
     /**
      * 最后修改人
      */
-    private String update_by;
+    @TableField("UPDATE_BY")
+    private String updateBy;
+
     /**
-     * 删除标识
+     * 删除标识,0:正常,1:已删除
      */
-    private String delete_mark;
+    @TableField("DELETE_MARK")
+    private Integer deleteMark;
+
     /**
      * 企业编码
      */
-    private String company_code;
+    @TableField("COMPANY_CODE")
+    private Integer companyCode;
+
     /**
-     * 电子作业票附件
+     * 电子作业票附件,base64编码的pdf文件
      */
-    private String fileUrl;
+    private String fileurl;
+
     /**
      * 计划开始时间
      */
     private Date jhkssj;
+
     /**
      * 计划结束时间
      */
     private Date jhjssj;
+
     /**
-     * JAS附件
+     * JAS附件,base64编码的pdf文件,不超过5M
      */
-    private String jsaFileUrl;
+    private String jsafileurl;
 
+    /**
+     *
+     */
     private String tenantid;
+
     /**
      * 扩展json格式配置
      */
     private String roption;
+
     /**
      * 是否删除Y/N
      */
     private String deleted;
+
     /**
      * 备注
      */
     private String remark;
+
     /**
      * 创建时间
      */
     private Date createdate;
+
     /**
      * 创建用户ID
      */
     private String createuserid;
+
     /**
      * 修改日期
      */
     private Date modifydate;
+
     /**
      * 修改用户ID
      */
     private String modifyuserid;
+
     /**
      * 创建人名称
      */
     private String createusername;
+
     /**
      * 修改人名称
      */
     private String modifyusername;
+
+    /**
+     * 其他风险辨识
+     */
+    private String fxbsother;
+
+    /**
+     * 其他防护用品
+     */
+    private String fhypother;
+
+    /**
+     * 报备人ID
+     */
+    private String bbrid;
+
+    /**
+     * 报备人名称
+     */
+    private String bbrname;
+
+    /**
+     * 报备部门ID
+     */
+    private String bbbmid;
+
+    /**
+     * 报备部门名称
+     */
+    private String bbbmname;
+
+    /**
+     * 报备时间
+     */
+    private Date bbsj;
+
+    /**
+     * 主要使用器具
+     */
+    private String mainappliance;
+
+    /**
+     * 动火地点
+     */
+    private String dhdd;
+
+    /**
+     * 作业前图片
+     */
+    private String zyqtp;
+
+    /**
+     * 监控摄像头
+     */
+    private String jksxt;
+
+    /**
+     * 作业单位ID
+     */
+    private String zydwid;
+
+    /**
+     * 申请单位类型
+     */
+    private String sqdwlx;
+
+    /**
+     * 申请单位
+     */
+    private String sqszdw;
+
+    /**
+     * 作业负责人ID
+     */
+    private String zyfzrid;
+
+    /**
+     * 安全交底人ID
+     */
+    private String aqjdrid;
+
+    /**
+     * 作业状态
+     */
+    private String zyzt;
+
+    /**
+     * 涉及作业证编号ID
+     */
+    private String sjzyzbhid;
+
+    /**
+     * 检查人id
+     */
+    private String inspectorid;
+
+    /**
+     * 检查人名称
+     */
+    private String inspector;
+
+    /**
+     * 检查时间
+     */
+    private Date inspectiontime;
+
+    /**
+     * 节假日/夜班/重大活动
+     */
+    private String jjrybzdhd;
+
+    /**
+     * 四色图名称
+     */
+    private String fssstname;
+
+    /**
+     * 作业类型
+     */
+    private String jobtype;
+
+    /**
+     * 作业类型ID
+     */
+    private String jobtypeid;
+
+    /**
+     * 同步状态
+     */
+    private String tbzt;
+
+    /**
+     * 同步日志
+     */
+    private String tbrz;
+
+    /**
+     * 作业交底图
+     */
+    private String zyjdt;
+
+    /**
+     * 承包商名称
+     */
+    private String cbsname;
+
+    /**
+     * 承包商ID
+     */
+    private String cbsid;
+
+    /**
+     * 属地部门负责人签字
+     */
+    private String sdbmfzrqz;
+
+    /**
+     * 安全交底人签名
+     */
+    private String aqjdrqm;
+
+    /**
+     * 接受交底人签名
+     */
+    private String jsjdrqm;
+//    /**
+//     * 主键ID
+//     */
+//    @TableId
+//    private String id;
+//    /**
+//     * 是否在四色图区域,0:否,1:是
+//     */
+//    private String sfsstqy;
+//    /**
+//     * 风险四色图ID,当作业在四色图区域内时必填
+//     */
+//    private String fssstid;
+//    /**
+//     * 作业证编号
+//     */
+//    private String zyzbh;
+//    /**
+//     * 作业申请单位
+//     */
+//    private String sqdw;
+//    /**
+//     * 作业申请人
+//     */
+//    private String sqr;
+//    /**
+//     * 作业申请时间
+//     */
+//    private Date zysqsj;
+//    /**
+//     * 作业内容
+//     */
+//    private String zynr;
+//    /**
+//     * 作业位置
+//     */
+//    private String zywz;
+//    /**
+//     * 动火作业级别,1:特级,2:一级,3:二级
+//     */
+//    private String dhzyjb;
+//    /**
+//     * 动火方式
+//     */
+//    private String dhfs;
+//    /**
+//     * 作业实施开始时间
+//     */
+//    private Date zykssj;
+//    /**
+//     * 作业实施结束时间
+//     */
+//    private Date zyjssj;
+//    /**
+//     * 作业负责人
+//     */
+//    private String zyfzr;
+//    /**
+//     * 作业人员信息
+//     */
+//    private String zyryxx;
+//    /**
+//     * 作业单位类型
+//     */
+//    private String zydwlx;
+//    /**
+//     * 作业单位名称
+//     */
+//    private String zydwmc;
+//    /**
+//     * 涉及的其他特殊作业
+//     */
+//    private String sfsjqttszy;
+//    /**
+//     * 涉及的其他特殊作业安全作业证编号
+//     */
+//    private String sjqttszyzbh;
+//    /**
+//     * 风险辨识
+//     */
+//    private String fxbs;
+//    /**
+//     * 风险预防措施
+//     */
+//    private String fxyfcs;
+//    /**
+//     * 防护用品
+//     */
+//    private String fhyp;
+//    /**
+//     * 监护人
+//     */
+//    private String jhr;
+//    /**
+//     * 监护人岗位
+//     */
+//    private String jhrgw;
+//    /**
+//     * 监护人证件编号
+//     */
+//    private String jhrzjbh;
+//    /**
+//     * 验收人
+//     */
+//    private String ysr;
+//    /**
+//     * 安全交底人
+//     */
+//    private String aqjdr;
+//    /**
+//     * 当前状态
+//     */
+//    private String dqzt;
+//    /**
+//     * 接受交底人
+//     */
+//    private String jsjdr;
+//    /**
+//     * 经度
+//     */
+//    private BigDecimal longitude;
+//    /**
+//     * 纬度
+//     */
+//    private BigDecimal latitude;
+//    /**
+//     * 视频回放地址
+//     */
+//    private String video_url;
+//    /**
+//     * 创建时间
+//     */
+//    private Date create_time;
+//    /**
+//     * 创建人
+//     */
+//    private String create_by;
+//    /**
+//     * 最后修改时间
+//     */
+//    private Date update_time;
+//    /**
+//     * 最后修改人
+//     */
+//    private String update_by;
+//    /**
+//     * 删除标识
+//     */
+//    private String delete_mark;
+//    /**
+//     * 企业编码
+//     */
+//    private String company_code;
+//    /**
+//     * 电子作业票附件
+//     */
+//    private String fileUrl;
+//    /**
+//     * 计划开始时间
+//     */
+//    private Date jhkssj;
+//    /**
+//     * 计划结束时间
+//     */
+//    private Date jhjssj;
+//    /**
+//     * JAS附件
+//     */
+//    private String jsaFileUrl;
+//
+//    private String tenantid;
+//    /**
+//     * 扩展json格式配置
+//     */
+//    private String roption;
+//    /**
+//     * 是否删除Y/N
+//     */
+//    private String deleted;
+//    /**
+//     * 备注
+//     */
+//    private String remark;
+//    /**
+//     * 创建时间
+//     */
+//    private Date createdate;
+//    /**
+//     * 创建用户ID
+//     */
+//    private String createuserid;
+//    /**
+//     * 修改日期
+//     */
+//    private Date modifydate;
+//    /**
+//     * 修改用户ID
+//     */
+//    private String modifyuserid;
+//    /**
+//     * 创建人名称
+//     */
+//    private String createusername;
+//    /**
+//     * 修改人名称
+//     */
+//    private String modifyusername;
+
 }

+ 126 - 0
js-security/security-entity/src/main/java/com/rongwe/scentity/domian/AspInspectionInformationTableDo.java

@@ -0,0 +1,126 @@
+package com.rongwe.scentity.domian;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 检查记录
+ * @TableName asp_inspection_information_table
+ */
+@Data
+@TableName("asp_inspection_information_table")
+
+public class AspInspectionInformationTableDo extends BaseDo implements Serializable {
+    /**
+     * 主键ID
+     */
+    private String id;
+
+    /**
+     * 
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 是否删除Y/N
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    private Date createdate;
+
+    /**
+     * 创建用户ID
+     */
+    private String createuserid;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 修改用户ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 创建人
+     */
+    private String createusername;
+
+    /**
+     * 修改人
+     */
+    private String modifyusername;
+
+    /**
+     * 主要安全措施
+     */
+    private String mainsafetymeasures;
+
+    /**
+     * 发现项
+     */
+    private String discoveryitems;
+
+    /**
+     * 是否关闭
+     */
+    private String whethertoclose;
+
+    /**
+     * 附件
+     */
+    private String attachment;
+
+    /**
+     * 检查记录 ID
+     */
+    private String inspectrecordsid;
+
+    /**
+     * 作业管理 ID
+     */
+    private String jobid;
+
+    /**
+     * 是否涉及
+     */
+    private String whetheritinvolves;
+
+    /**
+     * 检查人ID
+     */
+    private String checkuserid;
+
+    /**
+     * 检查人名称
+     */
+    private String checkuser;
+
+    /**
+     * 检查时间
+     */
+    private Date checkdate;
+
+    private static final long serialVersionUID = 1L;
+
+
+}

+ 123 - 0
js-security/security-entity/src/main/java/com/rongwe/scentity/domian/AspJobConfigDo.java

@@ -0,0 +1,123 @@
+package com.rongwe.scentity.domian;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 危险作业——作业配置
+ * @TableName asp_job_config
+ */
+@Data
+@TableName(value ="asp_job_config")
+public class AspJobConfigDo extends BaseDo implements Serializable {
+    /**
+     * 主键ID
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 是否删除Y/N
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    private Date createdate;
+
+    /**
+     * 创建用户ID
+     */
+    private String createuserid;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 修改用户ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 创建人
+     */
+    private String createusername;
+
+    /**
+     * 修改人
+     */
+    private String modifyusername;
+
+    /**
+     * 作业类型
+     */
+    private String jobtype;
+
+    /**
+     * 等级
+     */
+    private String joblevel;
+
+    /**
+     * 防范风险
+     */
+    private String preventionwarn;
+
+    /**
+     * 基本要求
+     */
+    private String basicrequirement;
+
+    /**
+     * 作业许可范围
+     */
+    private String jobscope;
+
+    /**
+     * 应急措施
+     */
+    private String measure;
+
+    /**
+     * 其他注意事项
+     */
+    private String othernotes;
+
+    /**
+     * 确认内容
+     */
+    private String confirmcontent;
+
+    /**
+     * 完工验收提示信息
+     */
+    private String wgystsxx;
+
+    /**
+     * 作业类型ID
+     */
+    private String jobtypeid;
+}

+ 98 - 0
js-security/security-entity/src/main/java/com/rongwe/scentity/domian/AspJobConfigFxbsDo.java

@@ -0,0 +1,98 @@
+package com.rongwe.scentity.domian;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 危险作业——作业配置风险辨识
+ * @TableName asp_job_config_fxbs
+ */
+@Data
+@TableName(value ="asp_job_config_fxbs")
+public class AspJobConfigFxbsDo extends BaseDo implements Serializable {
+    /**
+     * 主键ID
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 是否删除Y/N
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    private Date createdate;
+
+    /**
+     * 创建用户ID
+     */
+    private String createuserid;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 修改用户ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 创建人
+     */
+    private String createusername;
+
+    /**
+     * 修改人
+     */
+    private String modifyusername;
+
+    /**
+     * 作业类型ID
+     */
+    private String jobtypeid;
+
+    /**
+     * 风险辨识项
+     */
+    private String fxbsx;
+
+    /**
+     * 是否必须
+     */
+    private String sfbx;
+
+    /**
+     * 作业类型
+     */
+    private String jobtype;
+    /**
+     * 序号
+     */
+    private  int  son;
+
+}

+ 89 - 0
js-security/security-entity/src/main/java/com/rongwe/scentity/domian/AspJobSjzyDo.java

@@ -0,0 +1,89 @@
+package com.rongwe.scentity.domian;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 危险作业——涉及作业列表
+ * @TableName asp_job_sjzy
+ */
+@Data
+@TableName(value ="asp_job_sjzy")
+public class AspJobSjzyDo extends BaseDo implements Serializable {
+    /**
+     * 主键ID
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 是否删除Y/N
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    private Date createdate;
+
+    /**
+     * 创建用户ID
+     */
+    private String createuserid;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 修改用户ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 创建人
+     */
+    private String createusername;
+
+    /**
+     * 修改人
+     */
+    private String modifyusername;
+
+    /**
+     * 作业类型
+     */
+    private String jobtype;
+
+    /**
+     * 作业证编号
+     */
+    private String sjzyzbh;
+
+    /**
+     * 作业ID
+     */
+    private String jobid;
+
+}

+ 141 - 0
js-security/security-entity/src/main/java/com/rongwe/scentity/domian/AspSpecialPersonalInformationDo.java

@@ -0,0 +1,141 @@
+package com.rongwe.scentity.domian;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 人员证书选择
+ * @TableName asp_special_personal_information
+ */
+@Data
+@TableName(value ="asp_special_personal_information")
+public class AspSpecialPersonalInformationDo extends BaseDo implements Serializable {
+    /**
+     * 主键ID
+     */
+    private String id;
+
+    /**
+     * 
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 是否删除Y/N
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    private Date createdate;
+
+    /**
+     * 创建用户ID
+     */
+    private String createuserid;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 修改用户ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 创建人
+     */
+    private String createusername;
+
+    /**
+     * 修改人
+     */
+    private String modifyusername;
+
+    /**
+     * 部门ID
+     */
+    private String orgid;
+
+    /**
+     * 部门名称
+     */
+    private String orgname;
+
+    /**
+     * 姓名
+     */
+    private String name;
+
+    /**
+     * 性别
+     */
+    private String sex;
+
+    /**
+     * 身份证号
+     */
+    private String idcard;
+
+    /**
+     * 作业种类
+     */
+    private String certificatesort;
+
+    /**
+     * 档案编号
+     */
+    private String fileno;
+
+    /**
+     * 证件编号
+     */
+    private String certificateno;
+
+    /**
+     * 证书类别
+     */
+    private String jobtype;
+
+    /**
+     * 发证日期
+     */
+    private Date dareofissuance;
+
+    /**
+     * 复审日期
+     */
+    private Date reviewdate;
+
+    /**
+     * 预警级别
+     */
+    private String reminderstate;
+
+    /**
+     * 作业ID
+     */
+    private String jobid;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+}

+ 33 - 0
js-security/security-server/src/main/java/com/rongwei/savecheck/controller/RiskJobController.java

@@ -0,0 +1,33 @@
+package com.rongwei.savecheck.controller;
+
+
+import com.rongwei.sfcommon.sys.service.RiskJobService;
+import lombok.extern.slf4j.Slf4j;
+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 javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+@RestController
+@RequestMapping("risk")
+@Slf4j
+public class RiskJobController {
+    @Autowired
+    private RiskJobService riskJobService;
+
+
+    @PostMapping("/formExcelExport")
+    public void formExcelExport(@RequestBody Map<String, String> params, HttpServletResponse response) throws Exception {
+        String id = params.get("id");
+        String jobtype = params.get("jobtype");
+        riskJobService.riskJobExport2(id, jobtype, response);
+    }
+
+
+
+
+}