Browse Source

派单 -任务 监理审核 下载资料调整

zhuang 1 year ago
parent
commit
a8f3221484

+ 1 - 3
business-common/pom.xml

@@ -3,7 +3,7 @@
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
-        <artifactId>rw-business</artifactId>
+        <artifactId>quality-inspection</artifactId>
         <groupId>com.rongwei</groupId>
         <version>1.0-SNAPSHOT</version>
     </parent>
@@ -21,13 +21,11 @@
             <artifactId>business-entity</artifactId>
             <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 - 1
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxItpProjectNodesService.java

@@ -4,7 +4,6 @@ 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;

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

@@ -3,13 +3,13 @@ package com.rongwei.bscommon.sys.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.rongwei.bsentity.domain.ZhcxOutsideInspectionItpDo;
 import com.rongwei.bsentity.vo.OperOutsideInspectionVo;
+import com.rongwei.bsentity.vo.ZhcxOutsideExportVo;
 import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.vo.generalsql.MasterSlaveUpdateVo;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.FileNotFoundException;
 import java.util.List;
-import java.util.Map;
 
 public interface ZhcxOutsideInspectionItpService extends IService<ZhcxOutsideInspectionItpDo> {
 
@@ -33,6 +33,6 @@ public interface ZhcxOutsideInspectionItpService extends IService<ZhcxOutsideIns
      */
     void reInspection(String id, MasterSlaveUpdateVo masterSlaveUpdate);
 
-    int downloadFile(Map<String, Object> map, HttpServletResponse response) throws FileNotFoundException;
+    int downloadFile(ZhcxOutsideExportVo zhcxOutsideExportVo, HttpServletResponse response) throws FileNotFoundException;
 }
 

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

@@ -7,6 +7,7 @@ import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import cn.hutool.core.util.ZipUtil;
+import com.aspose.words.Document;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -19,9 +20,10 @@ import com.rongwei.bscommon.sys.dao.ZhcxOutsideInspectionItpDao;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwei.bsentity.domain.ZhcxOutsideInspectionItpSupervisionDispatchDo;
 import com.rongwei.bsentity.dto.NotifyDto;
-import com.rongwei.bsentity.vo.OperOutsideInspectionVo;
-import com.rongwei.bsentity.vo.SupervisionVo;
+import com.rongwei.bsentity.vo.*;
 import com.rongwei.commonservice.serial.service.SysSerialNumberService;
+import com.rongwei.rwadmincommon.system.domain.PagePartDo;
+import com.rongwei.rwadmincommon.system.service.PagePartService;
 import com.rongwei.rwadmincommon.system.service.SysGeneralCRUDService;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.base.R;
@@ -30,6 +32,11 @@ import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommon.utils.StringUtils;
 import com.rongwei.rwcommon.vo.MailDo;
 import com.rongwei.rwcommon.vo.generalsql.MasterSlaveUpdateVo;
+import com.rongwei.rwcommoncomponent.excel.aspose.DetailTable;
+import com.rongwei.rwcommoncomponent.excel.aspose.ExcelExportUtil;
+import com.rongwei.rwcommoncomponent.excel.aspose.ExcelFormData;
+import com.rongwei.rwcommoncomponent.excel.aspose.ParseFormParam;
+import com.rongwei.rwcommoncomponent.excel.vo.FormData;
 import com.rongwei.rwcommoncomponent.file.service.SysFileItemService;
 import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
 import com.rongwei.rwcommonentity.commonservers.vo.SysSerialVo;
@@ -43,6 +50,7 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -83,6 +91,8 @@ public class ZhcxOutsideInspectionItpServiceImpl extends ServiceImpl<ZhcxOutside
 
     @Autowired
     private ZhcxOutsideInspectionComponentTrackService inspectionComponentTrackService;
+    @Autowired
+    private PagePartService pagePartService;
 
     @Autowired
     private SysNotifyFeginService notifyFeginService;
@@ -596,12 +606,11 @@ public class ZhcxOutsideInspectionItpServiceImpl extends ServiceImpl<ZhcxOutside
     }
 
     @Override
-    public int downloadFile(Map<String, Object> map, HttpServletResponse response) throws FileNotFoundException {
-        Object itpid = map.get("itpid");
-        if(ObjectUtil.isEmpty(itpid)){
+    public int downloadFile(ZhcxOutsideExportVo zhcxOutsideExportVo, HttpServletResponse response) throws FileNotFoundException {
+        String itpId = zhcxOutsideExportVo.getItpid();
+        if(StringUtils.isEmpty(itpId)){
             return 0;
         }
-        String itpId = (String) itpid;
         ZhcxOutsideInspectionItpDo inspectionItpDo = getById(itpId);
         LambdaQueryWrapper<ZhcxOutsideInspectionItpSupervisionDispatchDo> wrapper = Wrappers.lambdaQuery();
         wrapper.eq(ZhcxOutsideInspectionItpSupervisionDispatchDo::getItpid,itpId);
@@ -621,6 +630,7 @@ public class ZhcxOutsideInspectionItpServiceImpl extends ServiceImpl<ZhcxOutside
         if(StringUtils.isNotBlank(files)){
             getIds(files, fileIds);
         }
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
         if(fileIds.size() > 0){
             QueryWrapper<SysFileItemDo> qw = new QueryWrapper();
             qw.in("ID", fileIds);
@@ -628,6 +638,7 @@ public class ZhcxOutsideInspectionItpServiceImpl extends ServiceImpl<ZhcxOutside
             log.info("下载数据数量:"+list.size());
             if(list.size() > 0){
                 // 获取类路径
+                //String classPath = "/Users/temp";
                 String classPath = filepath;
                 // 临时目录 以uuid+时间戳 为目录名称
                 String temp = classPath +File.separator + IdUtil.simpleUUID() + System.currentTimeMillis();
@@ -663,11 +674,19 @@ public class ZhcxOutsideInspectionItpServiceImpl extends ServiceImpl<ZhcxOutside
                                 new File(temp+File.separator+filename));
                             }
                         );
-                        // 设置响应的一些格式
+                        String format = formatter.format(inspectionItpDo.getReservationinspectiontime());
                         String fileFullName = inspectionItpDo.getProjectcode()+"-"+inspectionItpDo.getProjectname()+
                                 "-"+inspectionItpDo.getStructurename()+"-"+inspectionItpDo.getInspectioncontent()+
-                                "-"+inspectionItpDo.getReservationinspectiontime();
-                        String encodedFileName = URLEncoder.encode(inspectionItpDo.getInspectioncode()+".zip", "UTF-8").replaceAll("\\+", "%20");
+                                "-"+format;
+                        fileFullName = fileFullName.replaceAll("/","_");
+                        ExcelFormData excelData = zhcxOutsideExportVo.getExcelData();
+                        excelData.setExcelName(fileFullName+".pdf");
+                        SysFileItemDo sysFileItemDo = sysFileItemService.getById(excelData.getTemplateId());
+                        FormData formData = parseExcelPage2Data(excelData, sysFileItemDo);
+                        parseTemplateByAspose(sysFileItemDo, excelData, temp, formData);
+                        // 设置响应的一些格式
+
+                        String encodedFileName = URLEncoder.encode(fileFullName+".zip", "UTF-8").replaceAll("\\+", "%20");
                         response.setContentType("application/octet-stream");
                         response.setHeader("content-type", "application/octet-stream");
                         //response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
@@ -690,7 +709,8 @@ public class ZhcxOutsideInspectionItpServiceImpl extends ServiceImpl<ZhcxOutside
                                 i = bis.read(buffer);
                             }
                         } catch (IOException e) {
-                            throw new RuntimeException(e);
+                            e.printStackTrace();
+                            log.info("下载压缩资料报错:"+e);
                         }finally {
                             if (bis != null) {
                                 try {
@@ -711,6 +731,7 @@ public class ZhcxOutsideInspectionItpServiceImpl extends ServiceImpl<ZhcxOutside
                     }
                 } catch (Exception e) {
                     e.printStackTrace();
+                    log.info("下载资料报错:"+e);
                     return 1;
                 }finally {
                     // 删除临时目录和压缩后的文件
@@ -726,6 +747,122 @@ public class ZhcxOutsideInspectionItpServiceImpl extends ServiceImpl<ZhcxOutside
         return 2;
     }
 
+    /**
+     * 将doc文档输出到response中传给前端
+     *
+     * @param response
+     * @param filename
+     * @param doc
+     */
+    private void doc2Response(String tempPath,String filename, Document doc) {
+        try {
+            if (filename.indexOf("直打") >= 0 || filename.toLowerCase().indexOf("pdf") >= 0) {
+                doc.save(tempPath+File.separator+filename, com.aspose.words.SaveOptions.createSaveOptions(com.aspose.words.SaveFormat.PDF));
+            } else {
+                doc.save(tempPath+File.separator+filename, com.aspose.words.SaveOptions.createSaveOptions(com.aspose.words.SaveFormat.DOCX));
+            }
+        } catch (Exception e) {
+            log.error("填充失败:{}", e);
+            throw new CustomException("填充失败");
+        }
+    }
+
+    private  void wordTmplPrint(String tempPath,String filename,String templateFilePath, FormData formData)
+    {
+        log.info("准备开始填充 word 模板");
+        Document doc = ExcelExportUtil.fillWordDataByMap(templateFilePath, formData);
+        //doc保存至response
+        doc2Response(tempPath, filename, doc);
+    }
+    /**
+     * aspose 解析
+     *
+     * @param sysFileItemDo
+     * @param excelData
+     * @param response
+     * @param formData
+     */
+    private void parseTemplateByAspose(SysFileItemDo sysFileItemDo, ExcelFormData excelData, String tempPath, FormData formData) {
+        //word模板导出
+        if(sysFileItemDo.getFiletype().toLowerCase().equals("doc") || sysFileItemDo.getFiletype().toLowerCase().equals("docx")){
+            log.info("word模板导出开始");
+            this.wordTmplPrint(tempPath,excelData.getExcelName(),sysFileItemDo.getFullpath(), formData);
+        }
+    }
+    /**
+     * 解析配置获取数据
+     *
+     * @param excelData
+     * @param sysFileItemDo
+     * @return
+     */
+    private FormData parseExcelPage2Data(ExcelFormData excelData, SysFileItemDo sysFileItemDo) {
+        // 校验许可证
+//        ExcelUtils excelUtils = new ExcelUtils();
+        PagePartDo pagePartDo = pagePartService.getById(excelData.getPagepartId());
+        cn.hutool.json.JSONObject pagePartConfig = JSONUtil.parseObj(pagePartDo.getRoption());
+
+        ParseFormParam formParam = ParseFormParam.builder()
+                .formRoption(pagePartConfig)
+                .detailTables(excelData.getDetailTables())
+                .sysFileItemDo(sysFileItemDo)
+                .build();
+
+        return parsePage2Data(excelData.getFormId(), formParam);
+    }
+
+    /**
+     * 单个表单解析
+     *
+     * @param formId
+     * @param param
+     * @return
+     */
+    private FormData parsePage2Data(String formId, ParseFormParam param) {
+        //读取主表数据
+        String sqlMain = param.getFormRoption().getByPath("dataSource.formData.mainsql").toString();
+        List<Map<String,Object>> list = sysGeneralCRUDService.getDataBySql("select * from ("+sqlMain+") a where ID= '" + formId + "'");
+        list = ExcelExportUtil.convertFactData(list, param.getFormRoption(), param.getSysFileItemDo());
+        //明细数据
+        ArrayList<List<Map<String,Object>>> listall = new ArrayList<>();
+        //根据配置自动读取明细
+        for (DetailTable detailTable : param.getDetailTables()) {
+
+            if(ObjectUtil.isEmpty(detailTable.getMainRelKey())) {
+                detailTable.setMainRelKey("ID");
+            }
+
+            PagePartDo pagePartDetailDo = pagePartService.getById(detailTable.getPagepartid());
+            cn.hutool.json.JSONObject pagePartConfigDetail = JSONUtil.parseObj(pagePartDetailDo.getRoption());
+            String sqlDetailDetail = pagePartConfigDetail.getByPath("dataSource.formData.mainsql").toString();
+            List<Map<String, Object>> list1 = sysGeneralCRUDService.getDataBySql("select * from (" + sqlDetailDetail + ") a  where a.DELETED = '0' and " + detailTable.getRelationid() + "= '" + list.get(0).get(detailTable.getMainRelKey()) + "'");
+
+            // 为了处理aspose-cells模板打印bug,打印前要保证第一索引列有其所有字段,否则打印字段为空
+            // 如果list有多个map,则需要比较其他map中的所有字段
+            List<Map<String, Object>> finalList = list1;
+            if ((finalList.size() > 1)) {
+                for (int i = 1; i < finalList.size(); i++) {
+                    finalList.get(i).forEach((k, v)->{
+                        // 补上第一索引列缺失的key
+                        if (!finalList.get(0).containsKey(k)) {
+                            // TODO: 补上的value暂定为字符
+                            finalList.get(0).put(k, "");
+                        }
+                    });
+                }
+            }
+            list1 = finalList;
+            list1 = ExcelExportUtil.convertFactData(list1, pagePartConfigDetail, param.getSysFileItemDo());
+            listall.add(list1);
+        }
+
+        return FormData.builder()
+                .slaveTableDataList(listall)
+                .mainDataList(list)
+                .build();
+
+    }
+
     private void getIds(String files, List<String> fileIds) {
         String[] split = files.split("\\^_\\^");
         for(String fileItem : split){

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

@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.rongwei.bscommon.sys.dao.ZhcxSubcontractorUserDao;
 import com.rongwei.bscommon.sys.feign.RwCommonServerFeignService;
 import com.rongwei.bscommon.sys.service.ZhcxRegisterService;
 import com.rongwei.bscommon.sys.service.ZhcxSupervisionCustomUserManageService;
@@ -11,9 +12,14 @@ import com.rongwei.bscommon.sys.utils.CxConstants;
 import com.rongwei.bscommon.sys.utils.HwSmsUtil;
 import com.rongwei.bscommon.sys.utils.PasswordGenerator;
 import com.rongwei.bscommon.sys.utils.SmsCodeGenerateUtils;
+import com.rongwei.bsentity.domain.ZhcxItpProjectNodesDo;
 import com.rongwei.bsentity.domain.ZhcxSupervisionCustomUserManageDo;
 import com.rongwei.commonservice.service.RedisService;
+import com.rongwei.rwadmincommon.system.domain.SysRoleDo;
 import com.rongwei.rwadmincommon.system.domain.SysUserDo;
+import com.rongwei.rwadmincommon.system.domain.SysUserRoleDo;
+import com.rongwei.rwadmincommon.system.service.SysRoleService;
+import com.rongwei.rwadmincommon.system.service.SysUserRoleService;
 import com.rongwei.rwadmincommon.system.service.SysUserService;
 import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.utils.SecurityUtil;
@@ -38,7 +44,13 @@ public class ZhcxRegisterServiceImpl implements ZhcxRegisterService {
     @Autowired
     private ZhcxSupervisionCustomUserManageService manageService;
     @Autowired
+    private SysRoleService sysRoleService;
+    @Autowired
+    private SysUserRoleService sysUserRoleService;
+    @Autowired
     private RwCommonServerFeignService rwCommonServerFeignService;
+    @Autowired
+    private ZhcxSubcontractorUserDao zhcxSubcontractorUserDao;
 
     @Override
     public R supervisionRegister(JSONObject jsonObject) {
@@ -215,11 +227,37 @@ public class ZhcxRegisterServiceImpl implements ZhcxRegisterService {
      * 此方法遍历列表中的每个用户,将状态为"待审核"的用户状态更新为"正常",然后批量通过manageService更新到数据库中。
      */
     private void updateStatus(List<ZhcxSupervisionCustomUserManageDo> list) {
-        list.forEach((item)->{
+        SysRoleDo zgRole = sysRoleService.getOne(
+                new LambdaQueryWrapper<SysRoleDo>().eq(SysRoleDo::getCode, "role061"));
+        SysRoleDo jyyRole = sysRoleService.getOne(
+                new LambdaQueryWrapper<SysRoleDo>().eq(SysRoleDo::getCode, "role062"));
+        List<SysUserRoleDo> userRoleList = new ArrayList<>();
+        Map<String, Object> params = new HashMap<>(5);
+        SysUserRoleDo sysUserRoleDO =  null;
+        for(ZhcxSupervisionCustomUserManageDo item : list){
             if ("待审核".equals(item.getStatus())) {
                 item.setStatus("正常");
             }
-        });
+            params.put("userid", item.getUserid());
+            zhcxSubcontractorUserDao.deleteUserRole(params);
+            String[] split = item.getRole().split(",");
+            if(split.length > 0){
+                for (String role : split) {
+                    sysUserRoleDO = new SysUserRoleDo();
+                    sysUserRoleDO.setId(SecurityUtil.getUUID());
+                    sysUserRoleDO.setUserid(item.getUserid());
+                    if(zgRole.getName().contains(role)){
+                        sysUserRoleDO.setRoleid(zgRole.getId());
+                        userRoleList.add(sysUserRoleDO);
+                    }
+                    if(jyyRole.getName().contains(role)){
+                        sysUserRoleDO.setRoleid(jyyRole.getId());
+                        userRoleList.add(sysUserRoleDO);
+                    }
+                }
+            }
+        }
+        sysUserRoleService.saveBatch(userRoleList);
         manageService.updateBatchById(list);
     }
 }

+ 9 - 9
business-entity/pom.xml

@@ -3,7 +3,7 @@
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
-        <artifactId>rw-business</artifactId>
+        <artifactId>quality-inspection</artifactId>
         <groupId>com.rongwei</groupId>
         <version>1.0-SNAPSHOT</version>
     </parent>
@@ -14,14 +14,8 @@
     <dependencies>
         <dependency>
             <groupId>com.rongwei</groupId>
-            <artifactId>rw-common-config</artifactId>
-            <version>1.1-SNAPSHOT</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>com.rongwei</groupId>
-                    <artifactId>rw-common-license</artifactId>
-                </exclusion>
-            </exclusions>
+            <artifactId>rw-common-component</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
         </dependency>
 
         <dependency>
@@ -29,5 +23,11 @@
             <artifactId>rw-common-utils</artifactId>
             <version>1.1-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>com.rongwei</groupId>
+            <artifactId>rw-common-component</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 </project>

+ 15 - 0
business-entity/src/main/java/com/rongwei/bsentity/vo/ZhcxOutsideExportVo.java

@@ -0,0 +1,15 @@
+package com.rongwei.bsentity.vo;
+
+import com.rongwei.rwcommoncomponent.excel.aspose.ExcelFormData;
+import lombok.Data;
+
+/**
+ * @author zhuang
+ */
+@Data
+public class ZhcxOutsideExportVo {
+
+    private String itpid;
+
+    private ExcelFormData excelData;
+}

+ 1 - 1
business-server/pom.xml

@@ -3,7 +3,7 @@
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
-        <artifactId>rw-business</artifactId>
+        <artifactId>quality-inspection</artifactId>
         <groupId>com.rongwei</groupId>
         <version>1.0-SNAPSHOT</version>
         <relativePath/>

+ 3 - 2
business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxOperOutsideInspectionController.java

@@ -4,6 +4,7 @@ package com.rongwei.bsserver.controller;
 import com.rongwei.bscommon.sys.service.ZhcxOutsideInspectionItpService;
 import com.rongwei.bscommon.sys.utils.LockUtils;
 import com.rongwei.bsentity.vo.OperOutsideInspectionVo;
+import com.rongwei.bsentity.vo.ZhcxOutsideExportVo;
 import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.base.exception.CustomException;
 import lombok.extern.slf4j.Slf4j;
@@ -47,8 +48,8 @@ public class ZhcxOperOutsideInspectionController {
     }
 
     @RequestMapping("/downloadFile")
-    public void downloadFile(@RequestBody Map<String,Object> map, HttpServletResponse response) throws FileNotFoundException {
-        int i = inspectionService.downloadFile(map, response);
+    public void downloadFile(@RequestBody ZhcxOutsideExportVo zhcxOutsideExportVo, HttpServletResponse response) throws FileNotFoundException {
+        int i = inspectionService.downloadFile(zhcxOutsideExportVo, response);
         if(i == 0){
             throw new CustomException("暂无相关附件");
         }else if(i == 1){

+ 0 - 1
pom.xml

@@ -45,7 +45,6 @@
             <version>1.16.14</version>
             <scope>provided</scope>
         </dependency>
-
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>