瀏覽代碼

Merge branch 'master' of http://47.110.251.215:3000/java_org/bladex

“zhifk” 2 年之前
父節點
當前提交
1d753f6301

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

@@ -40,7 +40,7 @@ public class TrialSamplingRecordVO implements Serializable {
     /**
      * 试样数量
      */
-    private Integer materialCount;
+    private String materialCount;
 
     /**
      * 是否委外 '0'=否 '1'=是

+ 0 - 1
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -1362,7 +1362,6 @@ public class InformationWriteQueryController extends BladeController {
             if (ObjectUtil.isEmpty(needCopyChildNodes) || needCopyChildNodes.size() == 0) {
                 //最下层级节点复制
                 needCopyChildNodes = new ArrayList<>();
-                needCopyChildNodes.add(needCopyNode);
             }
             needCopyChildNodes.add(needCopyNode);
             List<WbsTreeContract> nodeChildAll = new ArrayList<>(needCopyChildNodes);

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/controller/TrialDetectionController.java

@@ -139,7 +139,7 @@ public class TrialDetectionController extends BladeController {
     @PostMapping("/self/submit")
     @ApiOperationSupport(order = 11)
     @ApiOperation(value = "自检记录新增或修改", notes = "传入TrialSelfInspectionRecordDTO")
-    public R<Object> selfSubmit(@Valid @RequestBody TrialSelfInspectionRecordDTO dto) throws FileNotFoundException {
+    public R<Object> selfSubmit(@Valid @RequestBody TrialSelfInspectionRecordDTO dto){
         return R.data(iTrialSelfInspectionRecordService.selfSubmit(dto));
     }
 

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/ITrialSelfInspectionRecordService.java

@@ -15,7 +15,7 @@ public interface ITrialSelfInspectionRecordService extends BaseService<TrialSelf
 
     IPage<TrialSelfInspectionRecordVO> selfPage(IPage<TrialSelfInspectionRecord> page, TrialSelfInspectionRecordPageDTO dto) throws FileNotFoundException;
 
-    String selfSubmit(TrialSelfInspectionRecordDTO dto) throws FileNotFoundException;
+    String selfSubmit(TrialSelfInspectionRecordDTO dto);
 
     List<TrialSampleInfoVO> selfSampleList(String id);
 

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialDetectionDataServiceImpl.java

@@ -224,7 +224,7 @@ public class TrialDetectionDataServiceImpl extends BaseServiceImpl<TrialDetectio
 
         List<Map<String, String>> resultMapList = new ArrayList<>();
         //获取当前合同段下的试验节点下的表
-        WbsTreePrivate trialNode = jdbcTemplate.query("select * from m_wbs_tree_private where p_key_id =" + nodePKeyId, new BeanPropertyRowMapper<>(WbsTreePrivate.class)).stream().findAny().orElse(null);
+        WbsTreePrivate trialNode = jdbcTemplate.query("select id,project_id,wbs_id,wbs_type from m_wbs_tree_private where p_key_id =" + nodePKeyId, new BeanPropertyRowMapper<>(WbsTreePrivate.class)).stream().findAny().orElse(null);
         if (trialNode != null) {
             List<WbsTreePrivate> trialNodeTabs = jdbcTemplate.query("select p_key_id,html_url from m_wbs_tree_private where html_url is not null and is_deleted = 0 and status = 1 and type = 2 and parent_id =" + trialNode.getId() + " and project_id =" + trialNode.getProjectId() + " and wbs_id = " + trialNode.getWbsId() + " and wbs_type = " + trialNode.getWbsType() + " and (trial_tab_contract_id is null OR (trial_tab_contract_id = " + contractId + "))", new BeanPropertyRowMapper<>(WbsTreePrivate.class));
             for (WbsTreePrivate trialNodeTab : trialNodeTabs) {

+ 7 - 4
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSampleInfoServiceImpl.java

@@ -184,11 +184,11 @@ public class TrialSampleInfoServiceImpl extends BaseServiceImpl<TrialSampleInfoM
             }
             this.saveOrUpdate(trialSampleInfo);
 
-            if (obj.getId() != null && obj.getMobilizationId() != null && obj.getMobilizationId() != -1) {
-                TrialSamplingRecord trialSamplingRecord = trialSamplingRecordMapper.selectByMobilizationIdAndSampleInfoId(obj.getMobilizationId(), obj.getId());
+            if (trialSampleInfo.getId() != null && obj.getMobilizationId() != null && obj.getMobilizationId() != -1) {
+                TrialSamplingRecord trialSamplingRecord = trialSamplingRecordMapper.selectByMobilizationIdAndSampleInfoId(obj.getMobilizationId(), trialSampleInfo.getId());
                 if (trialSamplingRecord == null) {
-                    trialSamplingRecordMapper.deleteBySampleInfoId(obj.getId());
-                    trialSamplingRecordMapper.insertRecord(SnowFlakeUtil.getId(), obj.getMobilizationId(), obj.getId());
+                    trialSamplingRecordMapper.deleteBySampleInfoId(trialSampleInfo.getId());
+                    trialSamplingRecordMapper.insertRecord(SnowFlakeUtil.getId(), obj.getMobilizationId(), trialSampleInfo.getId());
                 }
             }
         }
@@ -267,6 +267,9 @@ public class TrialSampleInfoServiceImpl extends BaseServiceImpl<TrialSampleInfoM
         data.forEach(excel -> {
             TrialSampleInfo trialSampleInfo = BeanUtil.copyProperties(excel, TrialSampleInfo.class);
             if (trialSampleInfo != null) {
+                if (StringUtils.isNotEmpty(excel.getMaterialCount())) {
+                    trialSampleInfo.setMaterialCount(excel.getMaterialCount());
+                }
                 List<TrialSampleInfo> query = jdbcTemplate.query("select id,material_name from u_trial_sample_info where is_deleted = 0 and specification_number = '" + trialSampleInfo.getSpecificationNumber() + "' and contract_id = " + contractId, new BeanPropertyRowMapper<>(TrialSampleInfo.class));
                 if (query.size() > 0) {
                     TrialSampleInfo obj = query.stream().findAny().orElse(null);

+ 17 - 16
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSelfInspectionRecordServiceImpl.java

@@ -45,6 +45,7 @@ import org.springblade.system.entity.Dict;
 import org.springblade.system.feign.IDictClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
+import org.springframework.cloud.openfeign.BladeFeignClientsRegistrar;
 import org.springframework.context.annotation.Bean;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -872,7 +873,7 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public String selfSubmit(TrialSelfInspectionRecordDTO dto) throws FileNotFoundException {
+    public String selfSubmit(TrialSelfInspectionRecordDTO dto){
         //------初始当前填报的表pKeyIds------
         this.initTrialTabIds(dto);
 
@@ -885,26 +886,26 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
         if (ObjectUtil.isNotEmpty(dto.getId())) {
             //------获取最新试验记录------
             TrialSelfInspectionRecord obj = baseMapper.selectById(dto.getId());
-
-            //------编辑时记录表编号或报告单编号为Null的重新生成------
-            this.reBuildNumber(obj, dto);
-
-            //------保存实体表数据、试验记录信息、生成PDF------
             try {
+                //------编辑时记录表编号或报告单编号为Null的重新生成------
+                this.reBuildNumber(obj, dto);
+
+                //------保存实体表数据、试验记录信息、生成PDF------
                 this.submitTrialData(obj, dto);
-            } catch (Exception e) {
-                e.printStackTrace();
-                throw new RuntimeException("保存试验记录信息失败,请联系管理员 " + e.getMessage());
-            }
 
-            //------关联原材料检测报告------
-            this.rawMaterialSubmitRelation(dto, obj);
+                //------关联原材料检测报告------
+                this.rawMaterialSubmitRelation(dto, obj);
+
+                //------关联取样信息------
+                this.recordSampleSubmit(dto, obj);
 
-            //------关联取样信息------
-            this.recordSampleSubmit(dto, obj);
+                //------关联新增设备使用记录信息------
+                this.trialDeviceUseService.addDeviceUseInfo(dto);
 
-            //------关联新增设备使用记录信息------
-            this.trialDeviceUseService.addDeviceUseInfo(dto);
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw new RuntimeException(e.getMessage());
+            }
         }
         return dto.getId().toString();
     }

+ 26 - 37
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ExcelTabClientImpl.java

@@ -3,6 +3,7 @@ package org.springblade.manager.feign;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import lombok.AllArgsConstructor;
+import org.apache.commons.lang.StringUtils;
 import org.springblade.business.dto.TrialSelfInspectionRecordDTO;
 import org.springblade.business.entity.InformationQuery;
 import org.springblade.business.entity.TrialSelfInspectionRecord;
@@ -74,47 +75,35 @@ public class ExcelTabClientImpl implements ExcelTabClient {
             TableInfo tableInfo = tableInfoList.stream().findAny().orElse(null);
             if (tableInfo != null && tabIds.contains(tableInfo.getPkeyId())) {
                 //构造pdf
-                excelTabService.getBussPDFTrial(Long.valueOf(tableInfo.getPkeyId()), contractId, id, 0, 0, dto);
-
-                //重新合并pdf
-                List<TrialSelfDataRecord> query = jdbcTemplate.query("select pdf_url from u_trial_self_data_record where record_id = " + id, new BeanPropertyRowMapper<>(TrialSelfDataRecord.class));
-                List<String> pdfList = query.stream().map(TrialSelfDataRecord::getPdfUrl).collect(Collectors.toList());
-
-                String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
-                String pdfPath = file_path + "/pdf//" + id + "_2.pdf";
-                File tabPdf = ResourceUtil.getFile(pdfPath);
-                if (tabPdf.exists()) {
-                    tabPdf.delete();
-                }
-                FileUtils.mergePdfPublicMethods(pdfList, pdfPath);
-                BladeFile bladeFile = newIOSSClient.uploadFile(id + "2.pdf", pdfPath);
-
-                jdbcTemplate.execute("update u_trial_self_inspection_record set pdf_url = '" + bladeFile.getLink() + "' where id = " + id);
-
-                //获取试验记录id的试验项目名称,重新合并pdf集合(解决单表保存后上报找不到题名问题)
-                TrialSelfInspectionRecord obj = jdbcTemplate.query("select trial_project_name from u_trial_self_inspection_record where id = " + id, new BeanPropertyRowMapper<>(TrialSelfInspectionRecord.class)).stream().findAny().orElse(null);
-                List<InformationQuery> query2 = jdbcTemplate.query("select id from u_information_query where classify ='" + type + "' and wbs_id ='" + id + "' and contract_id ='" + contractId + "'", new BeanPropertyRowMapper<>(InformationQuery.class));
-                if (obj != null && query2.size() > 0) {
-                    jdbcTemplate.execute("update u_information_query set pdf_url ='" + bladeFile.getLink() + "', name ='" + obj.getTrialProjectName() + "'  where classify='" + type + "' and  wbs_id='" + id + "' and contract_id ='" + contractId + "'");
-                } else {
-                    if (obj != null) {
-                        informationQueryClient.saveData(id.toString(), projectId, contractId, type.toString(), bladeFile.getLink(), obj.getTrialProjectName());
+                String bussPDFTrial = excelTabService.getBussPDFTrial(Long.valueOf(tableInfo.getPkeyId()), contractId, id, 0, 0, dto);
+                if (StringUtils.isNotEmpty(bussPDFTrial)){
+                    //重新合并pdf
+                    List<TrialSelfDataRecord> query = jdbcTemplate.query("select pdf_url from u_trial_self_data_record where record_id = " + id, new BeanPropertyRowMapper<>(TrialSelfDataRecord.class));
+                    List<String> pdfList = query.stream().map(TrialSelfDataRecord::getPdfUrl).collect(Collectors.toList());
+                    String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+                    String pdfPath = file_path + "/pdf//" + id + "_2.pdf";
+                    File tabPdf = ResourceUtil.getFile(pdfPath);
+                    if (tabPdf.exists()) {
+                        tabPdf.delete();
+                    }
+                    FileUtils.mergePdfPublicMethods(pdfList, pdfPath);
+                    BladeFile bladeFile = newIOSSClient.uploadFile(id + "2.pdf", pdfPath);
+                    if (bladeFile != null) {
+                        //重新合并pdf集合(解决单表保存后上报找不到题名问题)
+                        List<InformationQuery> query2 = jdbcTemplate.query("select id from u_information_query where classify ='" + type + "' and wbs_id ='" + id + "' and contract_id ='" + contractId + "'", new BeanPropertyRowMapper<>(InformationQuery.class));
+                        if (query2.size() > 0) {
+                            jdbcTemplate.execute("update u_information_query set pdf_url ='" + bladeFile.getLink() + "', name ='" + (StringUtils.isNotEmpty(dto.getTrialProjectName()) ? dto.getTrialProjectName() : "") + "'  where classify='" + type + "' and  wbs_id='" + id + "' and contract_id ='" + contractId + "'");
+                        } else {
+                            informationQueryClient.saveData(id.toString(), projectId, contractId, type.toString(), bladeFile.getLink(), (StringUtils.isNotEmpty(dto.getTrialProjectName()) ? dto.getTrialProjectName() : ""));
+                        }
+                        pdfUrl = bladeFile.getLink();
                     }
                 }
             }
 
         } else if (isBatchSave == 1) {
-            /**
-             * ------多表PDF保存------
-             * tableType=表类型 1=记录表 2=报告单
-             * type=所属方 1=施工质检 2=监理抽检
-             * contractId=合同段id
-             * projectId=项目id
-             * id=记录id
-             * tabIds=表的pKeyIds
-             */
-            pdfUrl = excelTabService.getBussPDFSTrial(nodeId, tableType, String.valueOf(type), contractId, projectId, id, tabIds,dto);
-
+            //------多表PDF保存------
+            pdfUrl = excelTabService.getBussPDFSTrial(nodeId, tableType, String.valueOf(type), contractId, projectId, id, tabIds, dto);
         }
         return pdfUrl;
     }
@@ -126,7 +115,7 @@ public class ExcelTabClientImpl implements ExcelTabClient {
 
     @Override
     public String getBussPDFSTrial(String nodeId, String tableType, String classify, String contractId, String projectId, String id, String tabIds) throws Exception {
-        return excelTabService.getBussPDFSTrial(nodeId, tableType, classify, contractId, projectId, Long.parseLong(id), tabIds,null);
+        return excelTabService.getBussPDFSTrial(nodeId, tableType, classify, contractId, projectId, Long.parseLong(id), tabIds, null);
     }
 
 

+ 47 - 44
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -333,7 +333,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 StopWatch stopWatch = new StopWatch();
                 List<KeyMapper> keyMappers = this.formulaService.getKeyMapperList(tableInfoList.stream().map(TableInfo::getPkeyId).filter(Func::isNotEmpty).map(Long::parseLong).collect(Collectors.toList()), tableInfoList.get(0).getProjectId(), String.valueOf(nodeId),type);
                 if (Func.isNotEmpty(keyMappers)) {
-                    Map<String, Map<String, String>> coordinateMap = createCoordinateMap(keyMappers);
+                    Map<String, Map<String, String>> coordinateMap = createCoordinateMap(keyMappers,type);
                     stopWatch.start("公式处理");
                     List<Formula> formulas = this.formulaService.getFormulaList(keyMappers);
                     WbsTreeContract wtc = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, nodeId));
@@ -373,14 +373,19 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         return tableAll;
     }
 
-    private Map<String, Map<String, String>> createCoordinateMap(List<KeyMapper> keyMappers) {
-        Map<String, Map<String, String>> coordinateMap = new HashMap<>(keyMappers.size() * 2);
-        for (KeyMapper keyMapper : keyMappers) {
-            if (!coordinateMap.containsKey(keyMapper.getTableName())) {
-                WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
-                        .eq(WbsTreeContract::getPKeyId, keyMapper.getPkId()));
-                if(wbsTreeContract!=null&&Func.isNotBlank(wbsTreeContract.getHtmlUrl())) {
-                    coordinateMap.put(keyMapper.getTableName(), FormulaUtils.getElementCell(wbsTreeContract.getHtmlUrl()));
+    private Map<String, Map<String, String>> createCoordinateMap(List<KeyMapper> keyMappers,ExecuteType type) {
+        List<Long> pkeyIds = keyMappers.stream().map(KeyMapper::getPkId).distinct().collect(Collectors.toList());
+        Map<String, Map<String, String>> coordinateMap = new HashMap<>(pkeyIds.size() * 2);
+        if(pkeyIds.size()>0){
+            if(ExecuteType.TESTING.equals(type)){
+               List<WbsTreePrivate> list = wbsTreePrivateService.getBaseMapper().selectList(Wrappers.<WbsTreePrivate>query().lambda().in(WbsTreePrivate::getPKeyId,pkeyIds));
+               if(list.size()>0){
+                   list.forEach(e-> coordinateMap.computeIfAbsent(e.getInitTableName(), k -> FormulaUtils.getElementCell(e.getHtmlUrl())));
+               }
+            }else{
+                List<WbsTreeContract> list = wbsTreeContractService.getBaseMapper().selectList(Wrappers.<WbsTreeContract>query().lambda().in(WbsTreeContract::getPKeyId,pkeyIds));
+                if(list.size()>0){
+                    list.forEach(e-> coordinateMap.computeIfAbsent(e.getInitTableName(), k -> FormulaUtils.getElementCell(e.getHtmlUrl())));
                 }
             }
         }
@@ -959,29 +964,29 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         if(file1.exists()){
 
 
-        FileInputStream fileInputStream = new FileInputStream(file1);
-        String htmlString = IoUtil.readToString(fileInputStream);
-        Document doc = Jsoup.parse(htmlString);
-        Element table = doc.select("table").first();
-        Elements trs = table.select("tr");
-
-        for (int i = 0; i <= trs.size() - 1; i++) {
-            Element tr = trs.get(i);
-            Elements tds = tr.select("td");
-            for (int j = 0; j < tds.size(); j++) {
-                Element data = tds.get(j);
-                if (!data.children().isEmpty()) {
-                    String keyVal = i + "_" + j;
-                    String keyname = data.children().get(0).attr("keyname");
-                    if (StringUtils.isNotEmpty(keyname)) {
-                        String[] keys = keyname.split("__");
-                        String datakey = keys[0];
-                        dataMap.merge(datakey, keyVal, (v1, v2) -> v1 + ";" + v2);
+            FileInputStream fileInputStream = new FileInputStream(file1);
+            String htmlString = IoUtil.readToString(fileInputStream);
+            Document doc = Jsoup.parse(htmlString);
+            Element table = doc.select("table").first();
+            Elements trs = table.select("tr");
+
+            for (int i = 0; i <= trs.size() - 1; i++) {
+                Element tr = trs.get(i);
+                Elements tds = tr.select("td");
+                for (int j = 0; j < tds.size(); j++) {
+                    Element data = tds.get(j);
+                    if (!data.children().isEmpty()) {
+                        String keyVal = i + "_" + j;
+                        String keyname = data.children().get(0).attr("keyname");
+                        if (StringUtils.isNotEmpty(keyname)) {
+                            String[] keys = keyname.split("__");
+                            String datakey = keys[0];
+                            dataMap.merge(datakey, keyVal, (v1, v2) -> v1 + ";" + v2);
+                        }
                     }
                 }
             }
         }
-        }
         return dataMap;
     }
 
@@ -2036,7 +2041,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
             DataInfo.putAll(bussDataInfoTrial.stream().findAny().orElse(null));
         }
 
-        org.apache.poi.ss.usermodel.Workbook workbook = WorkbookFactory.create(CommonUtil.getOSSInputStream(excelTab.getFileUrl()));
+        org.apache.poi.ss.usermodel.Workbook workbook = WorkbookFactory.create(Objects.requireNonNull(CommonUtil.getOSSInputStream(excelTab.getFileUrl())));
         Sheet sheet = workbook.getSheetAt(0);
         sheet.setForceFormulaRecalculation(true);
         Header header = sheet.getHeader();
@@ -2386,7 +2391,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                     //没有excel表单的不生成pdf
                     if (StringUtils.isNotEmpty(record.getHtmlUrl())) {
                         //生成记录表pdf
-                        String bussPdfInfo = this.getBussPDFTrial(record.getPKeyId(), contractId, id, recordPageNumber++, recordPageNumberCount,null);
+                        String bussPdfInfo = this.getBussPDFTrial(record.getPKeyId(), contractId, id, recordPageNumber++, recordPageNumberCount, null);
                         if (StringUtils.isNotEmpty(bussPdfInfo)) {
                             dataPdfUrls.add(bussPdfInfo);
                         }
@@ -2402,21 +2407,19 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         }
         FileUtils.mergePdfPublicMethods(dataPdfUrls, listPdf);
         BladeFile bladeFile = this.newIOSSClient.uploadFile(nodeId + ".pdf", listPdf);
-
-        //获取试验记录id的试验项目名称
-        String trialProjectName = baseMapper.selectTrialRecordOne(id);
-
-        //修改合并后的pdf路径
-        String querySql = "select id from u_information_query where classify ='" + classify + "' and wbs_id ='" + id + "' and contract_id ='" + contractId + "'";
-        List<InformationQuery> query = jdbcTemplate.query(querySql, new BeanPropertyRowMapper<>(InformationQuery.class));
-        if (query.size() > 0) {
-            String updateSql = "update u_information_query set pdf_url ='" + bladeFile.getLink() + "', name ='" + (StringUtils.isNotEmpty(trialProjectName) ? trialProjectName : "") + "'  where classify='" + classify + "' and  wbs_id='" + id + "' and contract_id ='" + contractId + "'";
-            jdbcTemplate.execute(updateSql);
-        } else {
-            informationQueryClient.saveData(id.toString(), projectId, contractId, classify, bladeFile.getLink(), StringUtils.isNotEmpty(trialProjectName) ? trialProjectName : "");
+        if (bladeFile != null) {
+            //修改合并后的pdf路径
+            String querySql = "select id from u_information_query where classify ='" + classify + "' and wbs_id ='" + id + "' and contract_id ='" + contractId + "'";
+            List<InformationQuery> query = jdbcTemplate.query(querySql, new BeanPropertyRowMapper<>(InformationQuery.class));
+            if (query.size() > 0) {
+                String updateSql = "update u_information_query set pdf_url ='" + bladeFile.getLink() + "', name ='" + (StringUtils.isNotEmpty(dto.getTrialProjectName()) ? dto.getTrialProjectName() : "") + "'  where classify='" + classify + "' and  wbs_id='" + id + "' and contract_id ='" + contractId + "'";
+                jdbcTemplate.execute(updateSql);
+            } else {
+                informationQueryClient.saveData(id.toString(), projectId, contractId, classify, bladeFile.getLink(), StringUtils.isNotEmpty(dto.getTrialProjectName()) ? dto.getTrialProjectName() : "");
+            }
+            return bladeFile.getLink();
         }
-
-        return bladeFile.getLink();
+        return "";
     }
 
     /**

+ 67 - 49
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -1156,11 +1156,7 @@ public  List<ElementData> setScale(Integer scale,List<ElementData> data){
 
     private List<KeyMapper> listForContract(List<Long> ids,String projectId,String nodeId){
         String pkIds=ids.stream().map(String::valueOf).collect(Collectors.joining(","));
-        List<Map<String,Object>> listMap = this.jdbcTemplate.queryForList(" select a.init_table_name as tableName,a.p_key_id as pkId ,c.e_key as field,c.e_name as eName,c.id  as fieldId ,c.e_type eType , e_allow_deviation as eAllowDeviation  " +
-                "from m_wbs_tree_contract a " +
-                "inner join m_table_info b on a.init_table_name=b.tab_en_name " +
-                "INNER JOIN m_wbs_form_element c on b.id=c.f_id " +
-                "where a.p_key_id in("+pkIds+")  ORDER BY field(a.p_key_id,"+pkIds+")");
+        List<Map<String,Object>> listMap = listMap(ids,ExecuteType.INSPECTION);
         List<Long> nodeIds= this.jdbcTemplate.queryForList("select b.parent_id from m_wbs_tree_contract  a join m_wbs_tree_private b on a.is_type_private_pid=b.p_key_id where a.p_key_id in("+pkIds+")",Long.class);
         if(Func.isNotEmpty(listMap)){
             /*当前节点的某个元素存在多种作用域的公式,作用域范围越小优先级越高*/
@@ -1174,73 +1170,95 @@ public  List<ElementData> setScale(Integer scale,List<ElementData> data){
                     "from m_element_formula_mapping " +
                     "where element_id in(" + list.stream().map(KeyMapper::getFieldId).map(Func::toStr).collect(Collectors.joining(",")) + ") " +
                     "and is_deleted=0 " + " and ( scope<2 or (scope=2 and node_id in(" + nodeIdStr + ")) or (scope =10 and project_id = " + projectId + ") or (scope=20 and project_id =" + projectId + " and node_id in (" + nodeIdStr + ")))");
-            if(Func.isNotEmpty(efMap)){
-                Map<Long,List<Map<String,Object>>> efGroup= efMap.stream().collect(Collectors.groupingBy(e->Func.toLong(e.get("elementId"))));
-                list.forEach(e->{
-                    List<Map<String,Object>> tmp = efGroup.get(e.getFieldId());
-                    if(Func.isNotEmpty(tmp)){
-                        tmp.stream().max(Comparator.comparing(oo->Func.toInt(oo.get("scope")))).ifPresent(d->{
-                            e.setFormulaId(Func.toLong(d.get("formulaId")));
-                        });
-                    }
-                });
-            }
+            setFormula(list,efMap);
             /*节点参数公式*/
-            if(StringUtils.isNotEmpty(nodeId)){
-                /*存在工序节点id则检查节点参数*/
-                WbsTreeContract wtc = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId,nodeId));
-                if(wtc!=null){
-                    List<WbsParam> total = new ArrayList<>();
-                    WbsTreePrivate wtp = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId,wtc.getProjectId()).eq(WbsTreePrivate::getWbsId,wtc.getWbsId()).and(e->e.eq(WbsTreePrivate::getId,wtc.getId()).or().eq(WbsTreePrivate::getId,wtc.getOldId())));
-                    if(wtp!=null){
-                        List<WbsParam> wpsPrivate = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId,wtp.getPKeyId()));
-                        if(Func.isEmpty(wpsPrivate)){
-                            WbsTree wt = this.wbsTreeService.getOne(Wrappers.<WbsTree>lambdaQuery().and(e->e.eq(WbsTree::getId,wtc.getId()).or().eq(WbsTree::getId,wtc.getOldId())));
-                            if(wt!=null){
-                                List<WbsParam> wpsPublic = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId,wt.getId()));
-                                if(Func.isNotEmpty(wpsPublic)){
-                                    total.addAll(wpsPublic);
-                                }
+            setParamsFormula( nodeId,  list);
+            if(list.size()>0){
+                return list;
+            }
+        }
+        return Collections.emptyList();
+    }
+
+    private void setParamsFormula(String nodeId, List<KeyMapper> list){
+        if(StringUtils.isNotEmpty(nodeId)){
+            /*存在工序节点id则检查节点参数*/
+            WbsTreeContract wtc = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId,nodeId));
+            if(wtc!=null){
+                List<WbsParam> total = new ArrayList<>();
+                WbsTreePrivate wtp = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId,wtc.getProjectId()).eq(WbsTreePrivate::getWbsId,wtc.getWbsId()).and(e->e.eq(WbsTreePrivate::getId,wtc.getId()).or().eq(WbsTreePrivate::getId,wtc.getOldId())));
+                if(wtp!=null){
+                    List<WbsParam> wpsPrivate = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId,wtp.getPKeyId()));
+                    if(Func.isEmpty(wpsPrivate)){
+                        WbsTree wt = this.wbsTreeService.getOne(Wrappers.<WbsTree>lambdaQuery().and(e->e.eq(WbsTree::getId,wtc.getId()).or().eq(WbsTree::getId,wtc.getOldId())));
+                        if(wt!=null){
+                            List<WbsParam> wpsPublic = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId,wt.getId()));
+                            if(Func.isNotEmpty(wpsPublic)){
+                                total.addAll(wpsPublic);
                             }
-                        }else{
-                            total.addAll(wpsPrivate);
                         }
+                    }else{
+                        total.addAll(wpsPrivate);
                     }
-                    if(Func.isNotEmpty(total)){
-                        List<ElementFormulaMapping> mappingList =  this.elementFormulaMappingService.list(Wrappers.<ElementFormulaMapping>lambdaQuery().in(ElementFormulaMapping::getParamId,total.stream().map(WbsParam::getId).collect(Collectors.toList())));
-                        if(Func.isNotEmpty(mappingList)){
-                            list.forEach(e->{
-                                mappingList.stream().filter(m->StringUtils.isEquals(m.getElementId(),e.getFieldId())).findAny().ifPresent(d->{
-                                    e.setFormulaId(d.getFormulaId());
-                                });
+                }
+                if(Func.isNotEmpty(total)){
+                    List<ElementFormulaMapping> mappingList =  this.elementFormulaMappingService.list(Wrappers.<ElementFormulaMapping>lambdaQuery().in(ElementFormulaMapping::getParamId,total.stream().map(WbsParam::getId).collect(Collectors.toList())));
+                    if(Func.isNotEmpty(mappingList)){
+                        list.forEach(e->{
+                            mappingList.stream().filter(m->StringUtils.isEquals(m.getElementId(),e.getFieldId())).findAny().ifPresent(d->{
+                                e.setFormulaId(d.getFormulaId());
                             });
+                        });
 
-                        }
                     }
                 }
             }
+        }
+
+    }
+
+    private List<KeyMapper> listForPrivate(List<Long> ids,String projectId,String nodeId){
+        /**/
+        List<Map<String,Object>> listMap  = listMap(ids,ExecuteType.TESTING);
+        List<KeyMapper> list= listMap.stream().map(m->BeanUtil.toBean(m,KeyMapper.class)).collect(Collectors.toList());
+        if(Func.isNotEmpty(listMap)){
+            List<Map<String,Object>> efMap= this.jdbcTemplate.queryForList("select element_id elementId,formula_id formulaId,scope " +
+                    "from m_element_formula_mapping " +
+                    "where element_id in(" + list.stream().map(KeyMapper::getFieldId).distinct().map(Func::toStr).collect(Collectors.joining(",")) + ") " +
+                    "and is_deleted=0 " + " and ( scope<2 or (scope =10 and project_id = " + projectId + ") )");
+             setFormula(list,efMap);
             if(list.size()>0){
-                return list;
+                return  list;
             }
         }
         return Collections.emptyList();
     }
 
-    private List<KeyMapper> listForPrivate(List<Long> ids,String projectId,String nodeId){
-        /**/
+
+    private List<Map<String,Object>>   listMap(List<Long> ids,ExecuteType type){
         String pkIds=ids.stream().map(String::valueOf).collect(Collectors.joining(","));
-        List<Map<String,Object>> listMap = this.jdbcTemplate.queryForList(" select a.init_table_name as tableName,a.p_key_id as pkId ,c.e_key as field,c.e_name as eName,c.id  as fieldId ,c.e_type eType , e_allow_deviation as eAllowDeviation  " +
-                "from m_wbs_tree_private a " +
+        String tableName=ExecuteType.INSPECTION.equals(type)?"m_wbs_tree_contract":"m_wbs_tree_private";
+        return this.jdbcTemplate.queryForList(" select a.init_table_name as tableName,a.p_key_id as pkId ,c.e_key as field,c.e_name as eName,c.id  as fieldId ,c.e_type eType , e_allow_deviation as eAllowDeviation  " +
+                "from "+tableName+" a " +
                 "inner join m_table_info b on a.init_table_name=b.tab_en_name " +
                 "INNER JOIN m_wbs_form_element c on b.id=c.f_id " +
                 "where a.p_key_id in("+pkIds+")  ORDER BY field(a.p_key_id,"+pkIds+")");
-        if(Func.isNotEmpty(listMap)){
+    }
 
+    private void setFormula(List<KeyMapper> list,List<Map<String,Object>> efMap){
+        if(Func.isNotEmpty(efMap)){
+            Map<Long,List<Map<String,Object>>> efGroup= efMap.stream().collect(Collectors.groupingBy(e->Func.toLong(e.get("elementId"))));
+            list.forEach(e->{
+                List<Map<String,Object>> tmp = efGroup.get(e.getFieldId());
+                if(Func.isNotEmpty(tmp)){
+                    tmp.stream().max(Comparator.comparing(oo->Func.toInt(oo.get("scope")))).ifPresent(d->{
+                        e.setFormulaId(Func.toLong(d.get("formulaId")));
+                    });
+                }
+            });
         }
-        return Collections.emptyList();
     }
 
-
     @Override
     public List<Formula> getFormulaList(List<KeyMapper> keyMapperList) {
         if(Func.isNotEmpty(keyMapperList)){