فهرست منبع

Merge remote-tracking branch 'origin/master'

liuyc 2 سال پیش
والد
کامیت
0723cb8dc9

+ 2 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/ArchivesAutoVO.java

@@ -178,5 +178,7 @@ public class ArchivesAutoVO extends ArchivesAuto {
 		private String dutyUser;
 
 		private  String archiveId;
+
+		private Long id;
 	}
 }

+ 2 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormData.java

@@ -3,6 +3,7 @@ package org.springblade.manager.dto;
 
 
 import lombok.Data;
+import org.apache.commons.lang.StringUtils;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringPool;
 import org.springblade.manager.entity.Formula;
@@ -151,7 +152,7 @@ public class FormData {
     }
    /**元素内容是否为空*/
     public Boolean empty(){
-      return  Func.isEmpty(this.values);
+      return  !(Func.isNotEmpty(this.values)&&this.values.stream().map(ElementData::getValue).anyMatch(Func::isNotEmpty));
     }
 
 

+ 3 - 3
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/RangeInfo.java

@@ -19,7 +19,7 @@ public class RangeInfo {
             required = true
     )
     private String design;
-    private List<Double> gDesign;
+    private List<String> gDesign;
     @ApiModelProperty(
             value = "频率",
             required = true
@@ -57,7 +57,7 @@ public class RangeInfo {
         this.design = design;
     }
 
-    public List<Double> getDesigns() {
+    public List<String> getDesigns() {
         return gDesign;
     }
 
@@ -72,7 +72,7 @@ public class RangeInfo {
 
     public void build(){
         if(Func.isNotBlank(this.design)){
-            this.gDesign= Arrays.stream(this.design.split("[^\\d.]+")).filter(BaseUtils::isNumber).map(Func::toDouble).collect(Collectors.toList());
+            this.gDesign= Arrays.stream(this.design.split("[^\\d.]+")).filter(BaseUtils::isNumber).collect(Collectors.toList());
         }
         if(Func.isNotBlank(this.size)){
             this.gSize= Arrays.stream(this.size.split("[^\\d.]+")).filter(BaseUtils::isNumber).map(Func::toInt).collect(Collectors.toList());

+ 3 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchiveAutoPdfService.java

@@ -22,4 +22,7 @@ public interface IArchiveAutoPdfService {
 
     //获取文件的pdf文件的url
     String getPdfFileUrl(ArchiveFile file);
+
+    //只刷新档号
+    boolean refreshFileNumber(ArchivesAuto archive,String fileNumber);
 }

+ 7 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveAutoPdfServiceImpl.java

@@ -707,7 +707,12 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
      * @param archive
      * @param fileNumber
      */
-    public void RefreshFileNumber(ArchivesAuto archive,String fileNumber) {
+    public boolean refreshFileNumber(ArchivesAuto archive,String fileNumber) {
+        //没变化则不用刷新
+        if (fileNumber.equals(archive.getFileNumber())) {
+            return false;
+        }
+
         Long projectId = archive.getProjectId();
         archive.setFileNumber(fileNumber);
 
@@ -718,6 +723,7 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
                 .orderByAsc(ArchiveFile::getSort));
 
         buildArchiveFrontPdfs(projectId,archive,archiveFiles);
+        return true;
     }
 
 }

+ 47 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -26,6 +26,7 @@ import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.archive.entity.ArchivesAuto;
 import org.springblade.archive.service.IArchiveAutoPdfService;
+import org.springblade.archive.utils.ArchiveTreeUtil;
 import org.springblade.archive.vo.ArchivesAutoVO;
 import org.springblade.archive.mapper.ArchivesAutoMapper;
 import org.springblade.archive.service.IArchivesAutoService;
@@ -35,6 +36,7 @@ import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.manager.entity.ArchiveTreeContract;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.ProjectInfo;
@@ -42,6 +44,7 @@ import org.springblade.manager.feign.ArchiveTreeContractClient;
 import org.springblade.manager.feign.ContractClient;
 import org.springblade.manager.feign.ProjectClient;
 import org.springblade.manager.feign.WbsInfoClient;
+import org.springblade.manager.vo.ArchiveTreeContractVO2;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.feign.IDictBizClient;
 import org.springframework.stereotype.Service;
@@ -329,6 +332,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		//archivesAuto.setIscheck(0);
 		archivesAuto.setIsAutoFile(0);//是否案卷收集上传的案卷
 		archivesAuto.setIsLock(0);//案卷锁定状态
+		archivesAuto.setIsDeleted(0);
 		baseMapper.insert(archivesAuto);
 		return archivesAuto;
 	}
@@ -769,11 +773,53 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	public List<ArchivesAuto> findArchivesAutosByIds(List<Long> ids) {
 		QueryWrapper<ArchivesAuto> queryWrapper = new QueryWrapper<>();
 		queryWrapper.in("node_id", ids)
-				.orderByDesc("tree_sort")
+				.eq("is_deleted",0)
+				.eq("is_archive",1)
+				.orderByAsc("tree_sort")
 				.orderByAsc("auto_file_sort");
 
 		return this.list(queryWrapper);
 	}
 
+	/**
+	 * 不重组的情况下刷新档号
+	 * @param archiveTreeContracts
+	 */
+	public void refreshFileNumberNoSlipt(List<ArchiveTreeContract> archiveTreeContracts) {
+
+		List<ArchiveTreeContractVO2> subTreeList = new ArrayList<>();
+		List<List<ArchiveTreeContract>>  subGroupedList = new ArrayList<>();
+		ArchiveTreeUtil.getGroupedList(archiveTreeContracts,subTreeList,subGroupedList);
+		Integer index = 1;
+
+		List<ArchivesAuto> changeList = new ArrayList<>();
+
+		//分组,分程 建设单位,各个合同段,电子单位等
+		for (List<ArchiveTreeContract> subList: subGroupedList) {
+			List<Long> ids = subList.stream()
+					.map(ArchiveTreeContract::getId)
+					.collect(Collectors.toList());
+
+			index =1;
+			List<ArchivesAuto> archivesAutos = findArchivesAutosByIds(ids);
+			if (archivesAutos == null || archivesAutos.size() == 0) {
+				return;
+			}
+			String fileNumberPrefix=subList.get(0).getFileNumberPrefix();
+			String archiveNameSuffix=subList.get(0).getArchiveNameSuffix();
+			if (StringUtils.isEmpty(archiveNameSuffix)) {
+				archiveNameSuffix = "";
+			}
+			for (ArchivesAuto archivesAuto: archivesAutos) {
+				String fileNumber = fileNumberPrefix + index + archiveNameSuffix;
+				if (archiveAutoPdfService.refreshFileNumber(archivesAuto,fileNumber)){
+					changeList.add(archivesAuto);
+				}
+				index++;
+			}
+		}
+		this.updateBatchById(changeList);
+	}
+
 
 }

+ 0 - 1
blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java

@@ -1272,7 +1272,6 @@ public class CustomFunction {
 						}
 					}
 					measureOut.addAll(_tmp);
-					measureOut.add("");
 				}
 			}
 		}

+ 4 - 0
blade-service/blade-manager/src/main/java/com/mixsmart/utils/StringUtils.java

@@ -1140,6 +1140,10 @@ public class StringUtils {
 		return "";
 	}
 
+	public static void main(String[] args) {
+		System.out.println(StringUtils.number2String("-2400.0000000000055",1));
+	}
+
 	/**
 	 * @Description byte数组转Md5字符串
 	 * @Param [bytes]

+ 14 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -1682,18 +1682,23 @@ public class ExcelTabController extends BladeController {
         if (!info.isSuccess()) {
             return info;
         }
-        System.out.println("3=" + DateUtil.formatDateTime(DateUtil.now()));
-        //单个 pdf加载
-        for (TableInfo tableInfo : tableInfoList) {
-            //if(!tableInfo.isToBeUpdated()){
+        try {
+            System.out.println("3=" + DateUtil.formatDateTime(DateUtil.now()));
+            //单个 pdf加载
+            for (TableInfo tableInfo : tableInfoList) {
+                //if(!tableInfo.isToBeUpdated()){
                 excelTabService.getBussPdfInfo(Long.parseLong(tableInfo.getPkeyId()));
-          //  }
+                //  }
 
+            }
+            System.out.println("4=" + DateUtil.formatDateTime(DateUtil.now()));
+            // 合并pdf加载
+            excelTabService.getBussPdfs(nodeid, classify, contractId, projectId);
+            System.out.println("5=" + DateUtil.formatDateTime(DateUtil.now()));
+        }catch (Exception e){
+            e.printStackTrace();
         }
-        System.out.println("4=" + DateUtil.formatDateTime(DateUtil.now()));
-        // 合并pdf加载
-        excelTabService.getBussPdfs(nodeid, classify, contractId, projectId);
-        System.out.println("5=" + DateUtil.formatDateTime(DateUtil.now()));
+
         return R.data("操作成功");
     }
 

+ 2 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FormulaController.java

@@ -270,7 +270,7 @@ public class FormulaController {
             }
             List<Object> data =new ArrayList<>();
             info.build();
-            if(info.getDesigns().size()>0){
+            if(info.getDesigns().size()>1){
                 AtomicInteger i= new AtomicInteger();
                 List<Object> tmpList = info.getDesigns().stream()
                         .map(e-> CustomFunction.listTrim(CustomFunction.b445random(info.getSizeAt(i.get()),e,info.getDevAt(i.get()),info.getFailAt(i.getAndIncrement()),1)))
@@ -299,6 +299,7 @@ public class FormulaController {
                     }
                 }
                 if((data.size()+start)>dw.length){
+
                    // String moreData = data.stream().skip(dw.length).map(StringUtils::handleNull).collect(Collectors.joining(StringPool.SEMICOLON));
                     List<Object> moreData = data.stream().skip(result.size()).map(StringUtils::handleNull).collect(Collectors.toList());
                     // 频率添加表单

+ 70 - 21
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -155,7 +155,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         List<AppWbsTreeContractVO> tableList =wbsTreeContractService.searchNodeAllTable(primaryKeyId.toString(), "1", contractId.toString(),info.getPId());
         this.constantMap.put(TABLE_LIST,tableList);
         /*通过判断元素名称来确定,加入汇总公式延后执行*/
-        this.constantMap.put("tableNames",tableList.stream().filter(e->StringUtils.isEquals(e.getIsBussShow(),1)).map(WbsTreeContract::getNodeName).collect(Collectors.toList()));
+      //  this.constantMap.put("tableNames",tableList.stream().filter(e->StringUtils.isEquals(e.getIsBussShow(),1)).map(WbsTreeContract::getNodeName).collect(Collectors.toList()));
+        this.constantMap.put("tableNames",tableList.stream().map(WbsTreeContract::getNodeName).collect(Collectors.toList()));
 
         List<String> missingList = new ArrayList<>();
         this.formDataList.forEach(fd->{
@@ -222,6 +223,18 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                     }
                 });
                 if(itemsMap.size()>0){
+                    itemsMap.values().forEach(i->{
+                        FormData vf=i.getValue();
+                        if(vf!=null){
+                            if(i.getPass()==null){
+                               i.setPass(tec.getFormDataMap().values().stream().filter(v->v.getTableName().equals(vf.getTableName())&&!v.getCode().equals(vf.getCode())).filter(v->v.getEName().contains(i.getPoint())&&v.getEName().contains("率")).findAny().orElse(null));
+                            }
+                            if(i.getJudge()==null){
+                                i.setJudge(tec.getFormDataMap().values().stream().filter(v->v.getTableName().equals(vf.getTableName())&&!v.getCode().equals(vf.getCode())).filter(v->v.getEName().contains(i.getPoint())&&v.getEName().contains("判")).findAny().orElse(null));
+                            }
+                        }
+
+                    });
                     AtomicBoolean update= new AtomicBoolean(false);
                     itemsMap.values().stream().filter(Measurement::isMatching).forEach(t->{
                         ElementBlock g=null;
@@ -253,7 +266,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                     FormulaUtils.write(t.getJudge(),"合格",null);
                                 }
                                 itemBlockList.sort(Comparator.comparingInt(a->ids.indexOf(a.getPkeyId())));
-                                FormulaUtils.write(t.getValue(),itemBlockList.stream().map(ItemBlock::getData).flatMap(v->v.stream().flatMap(Collection::stream)).collect(Collectors.toList()),true);
+                                List<String> values=itemBlockList.stream().map(ItemBlock::getData).flatMap(v->v.stream().flatMap(Collection::stream)).map(Object::toString).collect(Collectors.toList());
+                                int scale = StringUtils.getScale(values);
+                                FormulaUtils.write(t.getValue(),values.stream().map(u->StringUtils.number2String(u,scale)).collect(Collectors.toList()), true);
 
 //                                   if(t.getValue().getEName().contains("±")){
 //                                       /*存在偏差范围则获取的是偏差值:实测-设计*/
@@ -862,6 +877,21 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                     /*把附表数据刷入对应的附表元素对象*/
                     sta.flush();
                 }
+                String mainTableName = this.tec.getTableAll().stream().filter(e -> e.getNodeName().contains("检验单") || e.getNodeName().contains("评定表")).map(AppWbsTreeContractVO::getInitTableName).findFirst().orElse("");
+                if(Func.isNotBlank(mainTableName)){
+                    List<FormData> sourceFds=tec.getFormDataMap().values().stream().filter(s->!s.empty()).filter(s->StringUtils.isEquals(s.getTableName(),mainTableName)).collect(Collectors.toList());
+                    Map<String,Object> copyMap= new HashMap<>();
+                    if(sourceFds.size()>0){
+                        sourceFds.forEach(d->{
+                            copyMap.put(d.getEName().trim(),d.getValues().stream().map(ElementData::getValue).filter(StringUtils::isNotEmpty).findAny().orElse(""));
+                        });
+                    }
+                    subTableFds.stream().filter(s-> !SubTable.KEYS.contains(s.getEName().trim())).filter(s->copyMap.containsKey(s.getEName().trim())).forEach(t->{
+                         Object val = copyMap.get(t.getEName().trim());
+                         t.getValues().forEach(e->e.setValue(val));
+                         t.setUpdate(1);
+                    });
+                }
             }
 
         } catch (Exception e) {
@@ -874,28 +904,46 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
 
     /**汇总处理*/
     public void summaryCalc(){
-        if(this.summary.size()>0){
-            /**/
-            this.constantMap.put(CHECK_ITEMS,this.checkItems.stream().filter(fdTmp->fdTmp.getValues().stream().map(ElementData::getValue).anyMatch(e->StringUtils.isNotEmpty(e)&&StringUtils.isNotEquals("/",e))).map(FormData::getEName).map(FormulaUtils::parseItemName).distinct().collect(Collectors.joining(",")));
-            this.constantMap.put("CKD",this.checkDate.stream().flatMap(k->k.getValues().stream()).map(ElementData::stringValue).filter(StringUtils::isNotEmpty).reduce((a, b) -> Comparator.<DateTime>reverseOrder().compare(new DateTime(a), new DateTime(b)) <= 0 ? a : b).orElse(null));
-            this.summary.forEach(e->{
-                /*处理脚本*/
-                e.getFormula().setFormula(e.getFormula().getNumber());
-            });
-            this.summary.forEach(e->{
-                /*执行公式*/
-                Object data = Expression.parse(e.getFormula().getFormula()).calculate(this.constantMap);
-                if(data!=null){
-                    FormulaUtils.write(e,data,false);
-                   e.setUpdate(1);
+        try{
+            if(this.summary.size()>0){
+                /**/
+                List<String> result=this.checkItems.stream().filter(fdTmp->fdTmp.getValues().stream().map(ElementData::getValue).anyMatch(e->StringUtils.isNotEmpty(e)&&StringUtils.isNotEquals("/",e))).map(FormData::getEName).map(FormulaUtils::parseItemName).distinct().collect(Collectors.toList());
+                Optional<FormData> opk= this.summary.stream().filter(FormData::executable).filter(f->StringUtils.isEquals(f.getFormula().getNumber(),CHECK_ITEMS)).findAny();
+                List<String> history=null;
+                if(opk.isPresent()&&!opk.get().empty()){
+                    /*假如已经存在内容,则需要筛选出手填部分*/
+                    history=  Arrays.asList(opk.get().getValues().get(0).stringValue().replaceAll("[\\s\\n]+","").split("[,、,]"));
                 }
-            });
-            /*分项汇总*/
-            doForDataBlock();
+                if(history!=null&&history.size()>0){
+                    List<String> itemAll=this.checkItems.stream().map(FormData::getEName).map(FormulaUtils::parseItemName).distinct().collect(Collectors.toList());
+                    List<String> customize=history.stream().filter(s->!itemAll.contains(s)).collect(Collectors.toList());
+                    result.addAll(customize);
+                }
+                this.constantMap.put(CHECK_ITEMS,result);
+                this.constantMap.put("CKD",this.checkDate.stream().flatMap(k->k.getValues().stream()).map(ElementData::stringValue).filter(StringUtils::isNotEmpty).reduce((a, b) -> Comparator.<DateTime>reverseOrder().compare(new DateTime(a), new DateTime(b)) <= 0 ? a : b).orElse(null));
+                this.summary.forEach(e->{
+                    /*处理脚本*/
+                    e.getFormula().setFormula(e.getFormula().getNumber());
+                });
+                this.summary.forEach(e->{
+                    /*执行公式*/
+                    Object data = Expression.parse(e.getFormula().getFormula()).calculate(this.constantMap);
+                    if(data!=null){
+                        FormulaUtils.write(e,data,false);
+                        e.setUpdate(1);
+                    }
+                });
+                /*分项汇总*/
+                doForDataBlock();
+            }
+        }catch (Exception e){
+            e.printStackTrace();
         }
     }
 
 
+
+
     /**分项汇总数据*/
     public void   doForDataBlock(){
         try {
@@ -933,8 +981,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                      List<Object> list = c.getValues().stream().map(ElementData::getValue).filter(StringUtils::isNotEmpty).collect(Collectors.toList());
                      /*1.无任何记录,当前页无数据,则不需要处理 2.存在记录当前无数据,则要消除 3.没有记录当前有数据,则需要增加 4.有记录有当前记录,则需更新*/
                      if(Func.isNotEmpty(list)||targetItem!=null){
-                         FormData designList=tec.getFormDataMap().values().stream().filter(t->StringUtils.isEquals(FormulaUtils.parseItemName(t.getEName()),FormulaUtils.parseItemName(c.getEName()))&&t.getEName().contains("设计")&&StringUtils.isEquals(t.getTableName(),c.getTableName())).collect(Collectors.toList()).get(0);
-                         FormData pass=tec.getFormDataMap().values().stream().filter(t->StringUtils.isEquals(FormulaUtils.parseItemName(t.getEName()),FormulaUtils.parseItemName(c.getEName()))&&t.getEName().contains("合格")&&StringUtils.isEquals(t.getTableName(),c.getTableName())).collect(Collectors.toList()).get(0);
+                         FormData designList=tec.getFormDataMap().values().stream().filter(t->t.getEName().contains(FormulaUtils.parseItemName(c.getEName()))&&t.getEName().contains("设计")&&StringUtils.isEquals(t.getTableName(),c.getTableName())).collect(Collectors.toList()).get(0);
+                         FormData pass=tec.getFormDataMap().values().stream().filter(t->t.getEName().contains(FormulaUtils.parseItemName(c.getEName()))&&t.getEName().contains("合格")&&StringUtils.isEquals(t.getTableName(),c.getTableName())).collect(Collectors.toList()).get(0);
                          if(targetItem==null){
                              if(eb==null){
                                  eb=new ElementBlock();
@@ -990,6 +1038,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
 
     public  void write(FormData fd,Object data){
         /*如果需要向额外元素或对象输出数据,在此处修改*/
+               fd.setUpdate(1);
                FormulaUtils.write(fd,data,false);
     }