Przeglądaj źródła

Merge remote-tracking branch 'origin/master'

liuyc 2 lat temu
rodzic
commit
9c2c393d5a
18 zmienionych plików z 202 dodań i 72 usunięć
  1. 3 1
      blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/feign/NewFlowClient.java
  2. 16 0
      blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/vo/SendPageVO.java
  3. 5 4
      blade-ops/blade-flow/src/main/java/org/springblade/flow/business/feign/NewFlowClientImpl.java
  4. 16 0
      blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/OssEndpoint.java
  5. 2 0
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  6. 11 3
      blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java
  7. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml
  8. 5 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/ITaskService.java
  9. 62 25
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
  10. 9 2
      blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java
  11. 7 0
      blade-service/blade-manager/src/main/java/com/mixsmart/utils/FormulaUtils.java
  12. 16 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/AppVersionDetailController.java
  13. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IFormulaOptionService.java
  14. 9 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArTreeContractInitServiceImpl.java
  15. 2 5
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaOptionServiceImpl.java
  16. 8 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java
  17. 5 5
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/MixProportionInfoServiceImpl.java
  18. 24 24
      blade-service/blade-manager/src/main/java/org/springblade/manager/utils/FileUtils.java

+ 3 - 1
blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/feign/NewFlowClient.java

@@ -4,9 +4,11 @@ import org.springblade.core.launch.constant.AppConstant;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.flow.core.vo.FlowProcessVO;
+import org.springblade.flow.core.vo.SendPageVO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
@@ -30,7 +32,7 @@ public interface NewFlowClient {
      * 获取已发起
      */
     @PostMapping(SEND_LIST)
-    R<Object> selectSendPage(@RequestParam Integer current, @RequestParam Integer size, @RequestParam Integer ordType, @RequestParam String parallelProcessInstanceIds);
+    R<Object> selectSendPage(@RequestBody SendPageVO vo);
 
     /**
      * 获取待办

+ 16 - 0
blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/vo/SendPageVO.java

@@ -0,0 +1,16 @@
+package org.springblade.flow.core.vo;
+
+import lombok.Data;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/8/30 14:44
+ **/
+@Data
+public class SendPageVO {
+    private Integer current;
+    private Integer size;
+    private Integer ordType;
+    private String parallelProcessInstanceIds;
+}

+ 5 - 4
blade-ops/blade-flow/src/main/java/org/springblade/flow/business/feign/NewFlowClientImpl.java

@@ -15,6 +15,7 @@ import org.springblade.flow.business.service.FlowBusinessService;
 import org.springblade.flow.core.entity.BladeFlow;
 import org.springblade.flow.core.feign.NewFlowClient;
 import org.springblade.flow.core.vo.FlowProcessVO;
+import org.springblade.flow.core.vo.SendPageVO;
 import org.springblade.flow.engine.entity.FlowProcess;
 import org.springblade.flow.engine.service.FlowEngineService;
 import org.springframework.web.bind.annotation.RestController;
@@ -33,11 +34,11 @@ public class NewFlowClientImpl implements NewFlowClient {
     private final TaskService taskService;
 
     @Override
-    public R<Object> selectSendPage(Integer current, Integer size, Integer ordType, String parallelProcessInstanceIds) {
+    public R<Object> selectSendPage(SendPageVO vo) {
         Query query = new Query();
-        query.setCurrent(current);
-        query.setSize(size);
-        return R.data(this.flowBusinessService.selectSendPage(Condition.getPage(query), ordType, new BladeFlow(), parallelProcessInstanceIds));
+        query.setCurrent(vo.getCurrent());
+        query.setSize(vo.getSize());
+        return R.data(this.flowBusinessService.selectSendPage(Condition.getPage(query), vo.getOrdType(), new BladeFlow(), vo.getParallelProcessInstanceIds()));
     }
 
     @Override

+ 16 - 0
blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/OssEndpoint.java

@@ -175,6 +175,22 @@ public class OssEndpoint {
         return R.data(bladeFile.getLink());
     }
 
+    /**
+     * 上传文件,返回值包含文件大小
+     *
+     * @param file 文件
+     * @return ObjectStat
+     */
+    @SneakyThrows
+    @PostMapping("/put-file3")
+    public R<NewBladeFile> putFile3(@RequestParam MultipartFile file) {
+        BladeFile bladeFile = ossBuilder.template().putFile(file.getOriginalFilename(), file.getInputStream());
+        NewBladeFile newBladeFile = new NewBladeFile();
+        BeanUtils.copyProperties(bladeFile, newBladeFile);
+        newBladeFile.setFileSize(file.getSize() / 1024);
+        return R.data(newBladeFile);
+    }
+
     /**
      * 上传文件(兼容工程文件需求)
      */

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

@@ -1164,6 +1164,8 @@ public class InformationWriteQueryController extends BladeController {
                                     }
                                 }
                             }
+
+                            iTaskService.delArchiveFileBusinessData(query.getProjectId(),query.getWbsId());
                         }
 
                         //更新Redis缓存

+ 11 - 3
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -32,6 +32,7 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.flow.core.entity.BladeFlow;
 import org.springblade.flow.core.feign.NewFlowClient;
+import org.springblade.flow.core.vo.SendPageVO;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.feign.ContractClient;
 import org.springblade.resource.feign.CommonFileClient;
@@ -220,8 +221,12 @@ public class TaskController extends BladeController {
             //设置主表map,方便获取
             Map<String, Task> masterTaskMap = new HashMap<>();
             masterTaskList.forEach(task -> masterTaskMap.put(task.getProcessInstanceId(), task));
-
-            R<Object> rObject = this.newFlowClient.selectSendPage(queryVO.getCurrent(), queryVO.getSize(), queryVO.getOrdType() == null ? 1 : queryVO.getOrdType(), String.join(",", processInstanceIds));
+            SendPageVO pageVO = new SendPageVO();
+            pageVO.setCurrent(queryVO.getCurrent());
+            pageVO.setSize(queryVO.getSize());
+            pageVO.setOrdType(queryVO.getOrdType() == null ? 1 : queryVO.getOrdType());
+            pageVO.setParallelProcessInstanceIds(String.join(",", processInstanceIds));
+            R<Object> rObject = this.newFlowClient.selectSendPage(pageVO);
             if (rObject.isSuccess()) {
                 Query query = new Query();
                 query.setCurrent(queryVO.getCurrent());
@@ -404,6 +409,9 @@ public class TaskController extends BladeController {
         List<String> parallelProcessInstanceIds = new ArrayList<>();
         //统合查询方法
         this.integrationMethod(queryVO, masterTaskMap, parallelMap, parallelProcessInstanceIds, "2,3");
+        if (masterTaskMap.size() == 0 || parallelMap.size() == 0) {
+            return R.data(null);
+        }
 
         //获取已办(基于原生已办)
         R<Object> rObject = this.newFlowClient.selectDonePage(queryVO.getCurrent(), queryVO.getSize(), queryVO.getOrdType() == null ? 1 : queryVO.getOrdType(), String.join(",", parallelProcessInstanceIds));
@@ -449,7 +457,7 @@ public class TaskController extends BladeController {
         List<String> parallelProcessInstanceIds = new ArrayList<>();
         //统合查询方法
         this.integrationMethod(queryVO, masterTaskMap, parallelMap, parallelProcessInstanceIds, "1");
-        if (masterTaskMap.size() == 0) {
+        if (masterTaskMap.size() == 0 || parallelMap.size() == 0) {
             return R.data(null);
         }
         //获取待办(基于原生待办)

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml

@@ -899,7 +899,7 @@
         e_visa_pdf_size
         from u_information_query
         where is_deleted = 0
-          and contract_id = #{contractId} and is_deleted = 0;
+          and contract_id = #{contractId} and status = 2 and is_deleted = 0;
     </select>
 
     <select id="getTabussTimeInfo" resultMap="tabBusstimeInfoResultMap">

+ 5 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/ITaskService.java

@@ -83,4 +83,9 @@ public interface ITaskService extends BaseService<Task> {
     Map<String, String> queryContractAllBatch(String contract);
 
     void addOrUpdateArchiveFileBusinessData(Long nodeId, Long keyId, Long contractId, String newFileUrl);
+
+    /**
+     * 清除废除任务是的业务数据
+     */
+    void delArchiveFileBusinessData(Long projectId,Long wbsId);
 }

+ 62 - 25
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -1041,22 +1041,8 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                     .in(InformationQuery::getId, Arrays.asList(formDataId.split(","))));
         }
 
-        //TODO 测试完成后打开
-        InformationQuery query = this.informationQueryService.getById(formDataId);
-        if (query != null) {
-
-            ArchiveProjectConfig archiveProjectConfig = archiveAutoClient.getByProjectIdOrNew(query.getProjectId());
-
-            //测试阶段,必须打开项目配置才能同步wbs节点
-            if (archiveProjectConfig!= null && archiveProjectConfig.getFactorType().contains("6")) {
-                //todo 等测试OK再打开
-                try {
-                    archiveTreeContractClient.writeBusinessData(query.getWbsId(),query.getContractId(),formDataId);
-                } catch (Exception e) {
-                }
-            }
-        }
-
+        //关联原生电子文件到归档
+        handleArchiveFileBusinessData(formDataId,status);
     }
 
     /**
@@ -1070,6 +1056,37 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                 .set(ArchiveFile::getEVisaFile, newFileUrl);
         this.archiveFileService.update(wrapper.in(ArchiveFile::getId, Arrays.asList(formDataId.split(","))));
     }
+
+
+    /**
+     * 关联原生电子文件到归档
+     * @param formDataId
+     * @param status 任务状态
+     */
+    public void handleArchiveFileBusinessData(String formDataId, Integer status)
+    {
+        InformationQuery query = this.informationQueryService.getById(formDataId);
+        if (query != null) {
+            ArchiveProjectConfig archiveProjectConfig = archiveAutoClient.getByProjectIdOrNew(query.getProjectId());
+
+            //测试阶段,必须打开项目配置才能同步wbs节点
+            if (archiveProjectConfig != null && archiveProjectConfig.getFactorType().contains("6")) {
+                //废除
+                if (status == 0) {
+                    delArchiveFileBusinessData(query.getProjectId(), query.getWbsId());
+                } else //电签完成
+                {
+                    try {
+                        archiveTreeContractClient.writeBusinessData(query.getWbsId(), query.getContractId(), formDataId);
+                    } catch (Exception e) {
+                    }
+                }
+
+            }
+        }
+    }
+
+
     @Override
     public void addOrUpdateArchiveFileBusinessData(Long nodeId, Long keyId, Long contractId, String formDataId) {
 
@@ -1080,7 +1097,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
 
         ContractInfo contractIndfo = contractClient.getContractById(contractId);
 
-        ArchiveFile archiveFile = this.archiveFileService.getOne(Wrappers.<ArchiveFile>lambdaQuery()
+        List<ArchiveFile> archiveFiles = this.archiveFileService.list(Wrappers.<ArchiveFile>lambdaQuery()
                 .eq(ArchiveFile::getNodeId, nodeId.toString())
                 .eq(ArchiveFile::getNodeExtId, keyId)
                 .eq(ArchiveFile::getIsDeleted, 0));
@@ -1089,20 +1106,21 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         listFiles.add(query.getEVisaPdfUrl());
         //Long fileSize = FileUtils.getOssFileSizeCount(listFiles);
 
-        if (archiveFile != null) {
-            archiveFile.setEVisaFile(query.getEVisaPdfUrl());
-            archiveFile.setPdfFileUrl(query.getEVisaPdfUrl()); // 这里将pdfFileUrl也更新了,因为需求中没有限制只能更新eVisaFile属性
-            archiveFile.setFileSize(query.getEVisaPdfSize());
-            this.archiveFileService.updateById(archiveFile);
-
+        if (archiveFiles != null && archiveFiles.size() > 0) {
+            for (ArchiveFile archiveFile: archiveFiles) {
+                archiveFile.setEVisaFile(query.getEVisaPdfUrl());
+                archiveFile.setPdfFileUrl(query.getEVisaPdfUrl()); // 这里将pdfFileUrl也更新了,因为需求中没有限制只能更新eVisaFile属性
+                archiveFile.setFileSize(query.getEVisaPdfSize());
+                this.archiveFileService.updateById(archiveFile);
+            }
         } else {
             Date createTime = null;
             WbsTreeContract wbsTreeContract = wbsTreeContractClient.getContractNodeByPrimaryKeyId(keyId.toString());
             if (wbsTreeContract!= null ) {
                 createTime = wbsTreeContract.getCreateTime();
             }
-            archiveFile = getArchiveFile(query,nodeId,keyId,query.getEVisaPdfSize(),contractIndfo.archivesUnit(),createTime);
-            this.archiveFileService.save(archiveFile);
+            ArchiveFile newArchiveFile = getArchiveFile(query,nodeId,keyId,query.getEVisaPdfSize(),contractIndfo.archivesUnit(),createTime);
+            this.archiveFileService.save(newArchiveFile);
         }
     }
 
@@ -1144,4 +1162,23 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         //archiveFile.setFileTime(info.getCreateTime());
     }
 
+    /**
+     * 废除任务时删除原生电子文件数据
+     * @param projectId
+     * @param wbsId
+     */
+    public void delArchiveFileBusinessData(Long projectId,Long wbsId) {
+        List<ArchiveFile> archiveFiles = this.archiveFileService.list(Wrappers.<ArchiveFile>lambdaQuery()
+                .eq(ArchiveFile::getProjectId, projectId)
+                .eq(ArchiveFile::getNodeExtId, wbsId)
+                .eq(ArchiveFile::getIsDeleted, 0));
+
+        if (archiveFiles!= null && archiveFiles.size() > 0) {
+            List<Long> ids = archiveFiles.stream()
+                    .map(ArchiveFile::getId)
+                    .collect(Collectors.toList());
+            archiveFileService.deleteLogic(ids);
+        }
+    }
+
 }

+ 9 - 2
blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java

@@ -419,7 +419,12 @@ public class CustomFunction {
      **/
     public static Object dateAfter(Object date, Object n) {
         if (StringUtils.isNotEmpty(date) && StringUtils.isNotEmpty(n)) {
-            List<String> dateList = ((List<String>)date);
+            List<String> dateList =new ArrayList<>();
+            if (date instanceof List) {
+                 dateList = ((List<String>)date);
+            }else{
+                dateList.add(date.toString());
+            }
             LinkedList<Integer> offSet = new LinkedList<>();
             if (n instanceof List) {
                 offSet.addAll((List<Integer>)n);
@@ -452,12 +457,14 @@ public class CustomFunction {
     public static Object weather( Object dateObj,Map<String,Object> map){
            if(dateObj!=null&&map!=null){
                List<Object> date=obj2ListObj(dateObj);
-            return  date.stream().map(StringUtils::handleNull).filter(StringUtils::isNotEmpty).map(e->map.get(new DateTime(e).toString(DatePattern.NORM_DATE_PATTERN))).collect(Collectors.toList());
+            return  date.stream().map(StringUtils::handleNull).filter(StringUtils::isNotEmpty).map(e->map.get(new DateTime(FormulaUtils.range2end(e)).toString(DatePattern.NORM_DATE_PATTERN))).collect(Collectors.toList());
            }
            return "";
     }
 
 
+
+
     public static List<Object> obj2ListObj(Object input) {
         if (input == null) {
             return Collections.emptyList();

+ 7 - 0
blade-service/blade-manager/src/main/java/com/mixsmart/utils/FormulaUtils.java

@@ -615,6 +615,13 @@ public class FormulaUtils {
         }
         return list;
     }
+    /**从时间段中获取最后一个日期*/
+    public  static String range2end(String t){
+        if(t!=null&&Pattern.matches("^\\[(\\d{4}[年.\\-]\\d{2}[月.\\-]\\d{2}[日]?),\\s+(\\d{4}[年.\\-]\\d{2}[月.\\-]\\d{2}[日]?)]$",t)){
+            t=t.replaceAll("^\\[|]$","").split(",")[1].trim();
+        }
+        return t;
+    }
 
     public static FormData createFormDataFast(String name,String code,String values,String coords){
         if(StringUtils.isNotEmpty(code,name)){

+ 16 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/AppVersionDetailController.java

@@ -30,6 +30,22 @@ public class AppVersionDetailController extends BladeController {
     private final IAppVersionDetailService versionDetailService;
     private final IAppVersionService versionService;
 
+    /**
+     * 根据版本id和软件类型获取最新版本
+     */
+    @GetMapping("/getNewVersion")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "获取最新版本", notes = "传入版本id与软件类型1安卓2IOS")
+    public R<AppVersionDetail> getNewVersion(String platform,Integer softwareType){
+        AppVersion one = versionService.getOne(new LambdaQueryWrapper<AppVersion>().eq(AppVersion::getPlatform, platform));
+        return R.data(versionDetailService.getOne(new LambdaQueryWrapper<AppVersionDetail>()
+                            .eq(AppVersionDetail::getVersionId,one.getId())
+                            .eq(AppVersionDetail::getSoftwareType,softwareType)
+                            .orderByDesc(AppVersionDetail::getUpdateDate)
+                            .last("limit 1")));
+    }
+
+
     /**
      * 新增
      */

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IFormulaOptionService.java

@@ -12,6 +12,6 @@ public interface IFormulaOptionService extends IService<FormulaOption> {
     String queryOption(Long contractId, Long parentId, Long pkeyId, String key);
 
     Object saveOrUpdateOption(FormulaOptionVo fo);
-    Object saveOrUpdateOption(RangeInfo rg ,String[] dw,int start);
+    void saveOrUpdateOption(RangeInfo rg , String[] dw, int start);
 
 }

+ 9 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArTreeContractInitServiceImpl.java

@@ -396,9 +396,17 @@ public class ArTreeContractInitServiceImpl {
             }
         }
 
+        Long rootId = 0L;
         for (WbsTreeContractVO6 wbsTreeVO2 : wbsTreeContractVO6s) {
             //不要中间交工,质量评定和开工报告作为目录节点
             //wbsMap.put(wbsTreeVO2.getId(),wbsTreeVO2);
+
+            //修改配置
+            if (wbsTreeVO2.getParentId() == 0) {
+                rootId = wbsTreeVO2.getId();
+                continue;
+            }
+
             if(wbsTreeVO2.getNodeType() == null){
                 continue;
             }
@@ -432,7 +440,7 @@ public class ArTreeContractInitServiceImpl {
             archiveTree.setProjectId(projectId);
             archiveTree.setContractId(contractId);
             archiveTree.setId(oldNewMap.get(wbsTreeVO2.getId()));
-            if (wbsTreeVO2.getParentId() == 0) {
+            if (wbsTreeVO2.getParentId().equals(rootId)) {
                 archiveTree.setParentId(subTree.getId());
             } else {
                 archiveTree.setParentId(oldNewMap.get(wbsTreeVO2.getParentId()));

+ 2 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaOptionServiceImpl.java

@@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.mixsmart.utils.FormulaUtils;
 import com.mixsmart.utils.StringUtils;
 import lombok.RequiredArgsConstructor;
 import org.springblade.core.tool.api.R;
@@ -18,7 +17,6 @@ import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.mapper.FormulaOptionMapper;
 import org.springblade.manager.service.IFormulaOptionService;
 import org.springblade.manager.service.IWbsTreeContractService;
-import org.springframework.beans.BeanUtils;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
@@ -110,7 +108,7 @@ public class FormulaOptionServiceImpl extends ServiceImpl<FormulaOptionMapper, F
     }
 
     @Override
-    public Object saveOrUpdateOption(RangeInfo rg,String[] dw,int start ) {
+    public void saveOrUpdateOption(RangeInfo rg, String[] dw, int start ) {
         try {
 
             RangeJson rj = new RangeJson(rg);
@@ -151,10 +149,9 @@ public class FormulaOptionServiceImpl extends ServiceImpl<FormulaOptionMapper, F
             }
             formulaOption.setVal(root.toJSONString());
             this.saveOrUpdate(formulaOption);
-            return data;
         }catch (Exception e){
             e.printStackTrace();
-            return R.fail("保存失败");
+            R.fail("保存失败");
         }
     }
 

+ 8 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -693,6 +693,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
 
     /*天气信息获取*/
     private void weather(){
+        try {
           List<String> dateList=new ArrayList<>();
           tec.formDataList.forEach(e->{
                if(e.executable()&&e.getFormula().getFormula().contains(".weather(")){
@@ -702,6 +703,10 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                       if(formData!=null&&!formData.empty()){
                          Optional<String> op= formData.getValues().stream().map(ElementData::stringValue).filter(StringUtils::isNotEmpty).findFirst();
                          op.ifPresent(t->{
+                             /*[2023年08月14日,  2023年08月15日]时间段格式*/
+                             if(t instanceof String){
+                                 t=FormulaUtils.range2end(t);
+                             }
                              dateList.add(new DateTime(t).toString(DatePattern.NORM_DATE_PATTERN));
                          });
                       }
@@ -716,6 +721,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                });
                tec.constantMap.put("WEATHER",map);
            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
     }
 
     /**通用计算*/

+ 5 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/MixProportionInfoServiceImpl.java

@@ -64,7 +64,7 @@ public class MixProportionInfoServiceImpl extends BaseServiceImpl<MixProportionI
         if (list == null || list.size() <= 0){
             return null;
         }
-        Map<String,Map<String,String>> map = new HashMap<>();
+        Map<String,Map<String,String>> map = new LinkedHashMap<>();
         //包装返回值
         for (String l : list) {
             Map<String,String> m = new HashMap<>();
@@ -243,7 +243,7 @@ public class MixProportionInfoServiceImpl extends BaseServiceImpl<MixProportionI
         //施工配合比计算
         //水泥
         BigDecimal cement = info.getCement();
-        if (StringUtils.isNotBlank(key1)) {
+        if (StringUtils.isNotBlank(key1)  && cement != null) {
             map.put(key1, cement);
         }
 
@@ -256,17 +256,17 @@ public class MixProportionInfoServiceImpl extends BaseServiceImpl<MixProportionI
         }
         //掺加剂
         BigDecimal admixture = info.getAdmixture();
-        if (StringUtils.isNotBlank(key7)) {
+        if (StringUtils.isNotBlank(key7) && admixture != null) {
             map.put(key7, admixture);
         }
         //粉煤灰
         BigDecimal coalAsh = info.getCoalAsh();
-        if (StringUtils.isNotBlank(key8)) {
+        if (StringUtils.isNotBlank(key8) && coalAsh != null) {
             map.put(key8, coalAsh);
         }
         //矿渣粉
         BigDecimal slagPowder = info.getSlagPowder();
-        if (StringUtils.isNotBlank(key9)) {
+        if (StringUtils.isNotBlank(key9) && slagPowder != null) {
             map.put(key9, slagPowder);
         }
         inputStream.close();

+ 24 - 24
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/FileUtils.java

@@ -415,30 +415,30 @@ public class FileUtils {
     }
 
 
-    public static void main(String[] args) throws Exception {
-       String excelUrl = "/Users/hongchuangyanfa/Downloads/D10.1表-隧道总体质量检验单 (1).xlsx";
-        String old_html = "/Users/hongchuangyanfa/Desktop/pdf/old_html.html";
-        String old_xlsx = "/Users/hongchuangyanfa/Desktop/pdf/old_html.xlsx";
-
-   //     excelInfo2(excelUrl,old_xlsx,old_html);
-        com.spire.xls.Workbook wb = new com.spire.xls.Workbook();
-        wb.loadFromMHtml(old_xlsx);
-        Worksheet sheet = wb.getWorksheets().get(0);
-        CellRange[] cells = sheet.getCells();
-        for (int i = 0; i < cells.length; i++) {
-            CellRange oldcell = cells[i];
-            CellRange mergedCell = sheet.getCellRange(oldcell.getRow(), oldcell.getColumn());
-            String data = mergedCell.getDataValidation().getErrorMessage();
-            System.out.println(oldcell.getRow()+"--=--"+oldcell.getColumn()+"--=--"+data);
-        }
-
-/*        String new_html = "/Users/hongchuangyanfa/Desktop/pdf/new_html.html";
-        String new_xlsx = "/Users/hongchuangyanfa/Desktop/pdf/new_html.xlsx";
-
-        File data = new File(old_xlsx);
-        InputStream inputStream = new FileInputStream(data);
-        excelInfo(inputStream,new_xlsx,new_html,"2");*/
-    }
+//    public static void main(String[] args) throws Exception {
+//       String excelUrl = "/Users/hongchuangyanfa/Downloads/D10.1表-隧道总体质量检验单 (1).xlsx";
+//        String old_html = "/Users/hongchuangyanfa/Desktop/pdf/old_html.html";
+//        String old_xlsx = "/Users/hongchuangyanfa/Desktop/pdf/old_html.xlsx";
+//
+//   //     excelInfo2(excelUrl,old_xlsx,old_html);
+//        com.spire.xls.Workbook wb = new com.spire.xls.Workbook();
+//        wb.loadFromMHtml(old_xlsx);
+//        Worksheet sheet = wb.getWorksheets().get(0);
+//        CellRange[] cells = sheet.getCells();
+//        for (int i = 0; i < cells.length; i++) {
+//            CellRange oldcell = cells[i];
+//            CellRange mergedCell = sheet.getCellRange(oldcell.getRow(), oldcell.getColumn());
+//            String data = mergedCell.getDataValidation().getErrorMessage();
+//            System.out.println(oldcell.getRow()+"--=--"+oldcell.getColumn()+"--=--"+data);
+//        }
+//
+///*        String new_html = "/Users/hongchuangyanfa/Desktop/pdf/new_html.html";
+//        String new_xlsx = "/Users/hongchuangyanfa/Desktop/pdf/new_html.xlsx";
+//
+//        File data = new File(old_xlsx);
+//        InputStream inputStream = new FileInputStream(data);
+//        excelInfo(inputStream,new_xlsx,new_html,"2");*/
+//    }
 
 
     /**