Ver Fonte

含水率

qianxb há 2 anos atrás
pai
commit
cf0905310a

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

@@ -16,6 +16,9 @@ public class MoistureContentDTO {
     @ApiModelProperty(value = "当前位置")
     private String key ;
 
+    @ApiModelProperty(value = "表单pKeyId")
+    private Long keyId ;
+
     @ApiModelProperty(value = "合同段id")
     private String contractId ;
 

+ 4 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/MixProportionInfoController.java

@@ -17,6 +17,7 @@ import org.springblade.manager.service.IMixProportionInfoService;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import javax.validation.Valid;
+import java.io.FileNotFoundException;
 import java.util.List;
 import java.util.Map;
 
@@ -36,7 +37,8 @@ public class MixProportionInfoController extends BladeController {
     @ApiOperationSupport(order = 5)
     @ApiOperation(value = "计算含水率", notes = "计算含水率")
     @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "key", value = "当前输入框位置", required = true),
+            @ApiImplicitParam(name = "key", value = "当前输入框位置", required = false),
+            @ApiImplicitParam(name = "pKeyId", value = "表单pKeyId", required = true),
             @ApiImplicitParam(name = "contractId", value = "合同段id", required = true),
             @ApiImplicitParam(name = "designStrength", value = "设计强度", required = true),
             @ApiImplicitParam(name = "sand", value = "黄砂含水率", required = false),
@@ -44,7 +46,7 @@ public class MixProportionInfoController extends BladeController {
             @ApiImplicitParam(name = "macadamTwo", value = "碎石2含水率", required = false),
             @ApiImplicitParam(name = "macadamThree", value = "碎石3含水率", required = false),
     })
-    public R calculateWater(@Valid @RequestBody MoistureContentDTO dto) {
+    public R calculateWater(@Valid @RequestBody MoistureContentDTO dto) throws FileNotFoundException {
         return mixProportionInfoService.calculateWater(dto);
     }
 

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/MixProportionInfoMapper.java

@@ -41,4 +41,6 @@ public interface MixProportionInfoMapper extends BaseMapper<MixProportionInfo> {
     List<String> designStrengthList(@Param("contractId") Long contractId);
 
     Integer compareInfo(@Param("number") Set<String> number,@Param("strength") Set<String> strength,@Param("contractId") Long contractId);
+
+    String getExcelUrlByPKeyId(@Param("pKeyId") Long pKeyId);
 }

+ 4 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/MixProportionInfoMapper.xml

@@ -21,4 +21,8 @@
         from m_mix_proportion_info
         WHERE is_deleted = 0 and contract_id = #{contractId}
     </select>
+    <select id="getExcelUrlByPKeyId" resultType="java.lang.String">
+        select html_url from m_wbs_tree_contract
+        WHERE p_key_id = #{pKeyId}
+    </select>
 </mapper>

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

@@ -7,6 +7,7 @@ import org.springblade.manager.entity.MixProportionInfo;
 import org.springblade.manager.entity.RawMaterialsInfo;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.FileNotFoundException;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -19,5 +20,5 @@ public interface IMixProportionInfoService extends BaseService<MixProportionInfo
 
     R importMixProportionInfo(MultipartFile file, Long projectId, Long contractId);
 
-    R calculateWater(MoistureContentDTO dto);
+    R calculateWater(MoistureContentDTO dto) throws FileNotFoundException;
 }

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

@@ -7,6 +7,10 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import javassist.runtime.DotClass;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
 import org.springblade.common.utils.ForestNodeMergerEx;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.excel.util.ExcelUtil;
@@ -17,6 +21,8 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.IoUtil;
+import org.springblade.core.tool.utils.ResourceUtil;
 import org.springblade.manager.dto.ArchiveTreeContractAutoRuleMapDTO;
 import org.springblade.manager.dto.ArchiveTreeDTO;
 import org.springblade.manager.dto.ArchiveTreeSortDTO;
@@ -38,6 +44,9 @@ import org.springblade.manager.vo.WbsTreeVO2;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -121,13 +130,37 @@ public class MixProportionInfoServiceImpl extends BaseServiceImpl<MixProportionI
      * @return
      */
     @Override
-    public R calculateWater(MoistureContentDTO dto) {
+    public R calculateWater(MoistureContentDTO dto) throws FileNotFoundException {
         if (StringUtils.isBlank(dto.getDesignStrength())){
             throw new ServiceException("请先选择设计强度");
         }
+        //获取表单,获取配合比位置
+        String url = baseMapper.getExcelUrlByPKeyId(dto.getKeyId());
+        // 读取html页面信息
+        File file1 = ResourceUtil.getFile(url);
+//        File file1 = ResourceUtil.getFile("C:\\Users\\泓创研发01\\Desktop\\privateUrl\\1694957051815395328.html");
+        FileInputStream inputStream = new FileInputStream(file1);
+        String htmlString = IoUtil.readToString(inputStream);
+        Document doc = Jsoup.parse(htmlString);
+        Element table = doc.select("table").first();
+        Elements td = table.select("td");
+        Boolean isFiled = false;
+        String key = "";
+        for (Element element : td) {
+            if (isFiled){
+                key = element.childNodes().get(1).attr("keyname");
+                break;
+            }
+            if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(element.text()) && element.text().equals("施工配合比")){
+                isFiled = true;
+            }
+        }
+        if (!isFiled){
+            return R.data(null);
+        }
         //获取位置前缀后缀
-        String prefix= dto.getKey().replaceAll("__[\\d_]+", "");
-        String suffix = dto.getKey().replaceAll("key_\\d+__", "");
+        String prefix= key.replaceAll("__[\\d_]+", "");
+        String suffix = key.replaceAll("key_\\d+__", "");
         String[] split = suffix.split("_");
         String s1 = split[0];
         Integer s2 = Integer.parseInt(split[1]);