Jelajahi Sumber

资料未上报重刷

chenr 5 bulan lalu
induk
melakukan
6dbbed35da

+ 14 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/reSigningEVisaStatus.java

@@ -0,0 +1,14 @@
+package org.springblade.business.dto;
+
+import lombok.Data;
+
+/**
+ * 未上报重签
+ */
+@Data
+public class reSigningEVisaStatus {
+    private Long id;
+    private Long wbsId;
+    private Long projectId;
+    private Long contractId;
+}

+ 10 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -1975,6 +1975,16 @@ public class TaskController extends BladeController {
         return R.success("任务已经成功提交重签,请耐心等待!");
     }
 
+    /**
+     * 重刷未上报的数据
+     * @return
+     */
+    @PostMapping("/reSigningEVisaStatus0")
+    public R<Object>reSigningEVisaStatus0(@RequestBody List<reSigningEVisaStatus> dtos,HttpServletRequest request) throws Exception {
+        String header = request.getHeader("Blade-Auth");
+        return taskService.reSigningEVisaStatus0(dtos,header);
+    }
+
     @PostMapping("/reSigningEntrust")
     @ApiOperationSupport(order = 3)
     @ApiOperation(value = "委托单管理-一键重签", notes = "传入taskIds、下拉框的contractId、projectId")

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

@@ -18,11 +18,13 @@ package org.springblade.business.service;
 
 import org.springblade.business.dto.ReSigningEntrustDto;
 import org.springblade.business.dto.TrialResignDto;
+import org.springblade.business.dto.reSigningEVisaStatus;
 import org.springblade.business.entity.Task;
 import org.springblade.business.entity.TaskParallel;
 import org.springblade.business.vo.TaskApprovalVO;
 import org.springblade.business.vo.TaskVO;
 import org.springblade.core.mp.base.BaseService;
+import org.springblade.core.tool.api.R;
 import org.springframework.scheduling.annotation.Async;
 
 import javax.servlet.http.HttpServletRequest;
@@ -129,4 +131,6 @@ public interface ITaskService extends BaseService<Task> {
     void reSigningTrial(TrialResignDto dto, HttpServletRequest request);
 
     void reSigningEntrust(List<ReSigningEntrustDto> dtos, String header, HttpServletRequest request);
+
+    R reSigningEVisaStatus0(List<reSigningEVisaStatus> dtos, String header) throws Exception;
 }

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

@@ -15,6 +15,7 @@ import org.springblade.archive.feign.ArchiveAutoClient;
 import org.springblade.business.dto.ReSigningEntrustDto;
 import org.springblade.business.dto.TrialResignDto;
 import org.springblade.business.dto.TrialSelfInspectionRecordDTO;
+import org.springblade.business.dto.reSigningEVisaStatus;
 import org.springblade.business.entity.*;
 import org.springblade.business.mapper.TaskMapper;
 import org.springblade.business.mapper.TrialSelfInspectionRecordMapper;
@@ -1294,6 +1295,8 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         }
     }
 
+
+
     private R saveTrialSelfNodePdf(TrialResignDto dto,String trialId) {
         //试验记录id
         String trialIds = dto.getTrialIds();
@@ -1832,9 +1835,28 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
 //        }
 //        throw new ServiceException("未获取到任务信息,操作失败!");
 //    }
-
-    @Override
-    public void reSigningEVisa(String classify, String taskIds, String contractId, String projectId, Integer type, String header , HttpServletRequest request) {
+        @Override
+        public R reSigningEVisaStatus0(List<reSigningEVisaStatus> dtos, String header) throws Exception {
+         R result= new R();
+         if(dtos.size()>0){
+            for (reSigningEVisaStatus dto : dtos) {
+                InformationQuery iq = informationQueryService.getById(dto.getId());
+                if(iq!=null){
+                    informationQueryService.update(new LambdaUpdateWrapper<InformationQuery>()
+                        .eq(InformationQuery::getId, dto.getId())
+                        .set(InformationQuery::getEVisaPdfUrl, null)
+                        .set(InformationQuery::getPdfUrl, null));
+                    result = this.saveNodePdf(iq.getClassify()+"", iq.getWbsId()+"", dto.getContractId()+"", dto.getProjectId()+"", header);
+                    if(result==null||(result!=null&&result.getCode()!=200)){
+                        return R.fail(iq.getName()+"重新保存PDF信息失败");
+                    }
+                }
+            }
+        }
+         return R.success("操作成功");
+        }
+        @Override
+        public void reSigningEVisa(String classify, String taskIds, String contractId, String projectId, Integer type, String header , HttpServletRequest request) {
         //查询任务信息
         List<Task> taskList = jdbcTemplate.query("select * from u_task where id in(" + taskIds + ")", new BeanPropertyRowMapper<>(Task.class));
         if (taskList.size() > 0) {

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

@@ -1091,7 +1091,7 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
             //------初始编号信息------
             this.initBuildNumber(dto);
         }
-        this.saveOrUpdate(dto);
+        //this.saveOrUpdate(dto);
         if (ObjectUtil.isNotEmpty(dto.getId())) {
             //------获取最新试验记录------
             TrialSelfInspectionRecord obj = baseMapper.selectById(dto.getId());

+ 11 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/NodeBaseInfoController.java

@@ -36,6 +36,7 @@ import org.springblade.manager.service.INodeBaseInfoService;
 import org.springblade.core.boot.ctrl.BladeController;
 
 import java.math.BigDecimal;
+import java.util.HashMap;
 
 /**
  *  控制器
@@ -141,9 +142,16 @@ public class NodeBaseInfoController extends BladeController {
 
 	@GetMapping("/getAllNodeBaseInfoByPkeyId")
 	@ApiOperationSupport(order = 9)
-	@ApiOperation(value = "自动获取表单所有的参数库数据", notes = "pkeyId表单Id")
-	public R getAllNodeBaseInfoByPkeyId(@RequestParam Long pkeyId){
-		return R.data(nodeBaseInfoService.getAllNodeBaseInfoByPkeyId(pkeyId));
+	@ApiOperation(value = "自动获取表单所有的参数库数据", notes = "pkeyId表单Id,nodeId节点Id")
+	public R getAllNodeBaseInfoByPkeyId(@RequestParam Long pkeyId,@RequestParam Long nodeId) throws Exception {
+		//nodeBaseInfoService.getAllNodeBaseInfoByPkeyId(pkeyId,nodeId)
+		HashMap map=new HashMap<>();
+		map.put("key_22__3_1",123);
+		map.put("key_37__3_3",123);
+		map.put("key_12__7_1",123);
+		map.put("key_6__11_1",123);
+		map.put("key_20__13_1",123);
+		return R.data(map);
 	}
 
 

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

@@ -45,5 +45,5 @@ public interface INodeBaseInfoService extends BaseService<NodeBaseInfo> {
 
     Object getNodeBaseInfoByPkeyId(Long pkeyId, Long nodeId, Integer autoType, BigDecimal min,BigDecimal max);
 
-	Map<String,Object> getAllNodeBaseInfoByPkeyId(Long pkeyId);
+	Map<String,Object> getAllNodeBaseInfoByPkeyId(Long pkeyId,Long nodeId) throws Exception;
 }

+ 129 - 6
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/NodeBaseInfoServiceImpl.java

@@ -17,25 +17,35 @@
 package org.springblade.manager.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
 import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.core.tool.utils.IoUtil;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.manager.entity.NodeBaseInfo;
+import org.springblade.manager.entity.Parameter;
+import org.springblade.manager.entity.ParameterElement;
 import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.service.IWbsTreeContractService;
+import org.springblade.manager.utils.FileUtils;
 import org.springblade.manager.vo.NodeBaseInfoVO;
 import org.springblade.manager.mapper.NodeBaseInfoMapper;
 import org.springblade.manager.service.INodeBaseInfoService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.io.InputStream;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  *  服务实现类
@@ -48,6 +58,8 @@ public class NodeBaseInfoServiceImpl extends BaseServiceImpl<NodeBaseInfoMapper,
 
     @Autowired
     private  IWbsTreeContractService iWbsTreeContractService;
+    @Autowired
+    private  JdbcTemplate jdbcTemplate;
 	@Override
 	public IPage<NodeBaseInfoVO> selectNodeBaseInfoPage(IPage<NodeBaseInfoVO> page, NodeBaseInfoVO nodeBaseInfo) {
 		return page.setRecords(baseMapper.selectNodeBaseInfoPage(page, nodeBaseInfo));
@@ -157,8 +169,119 @@ public class NodeBaseInfoServiceImpl extends BaseServiceImpl<NodeBaseInfoMapper,
     }
 
     @Override
-    public Map<String, Object> getAllNodeBaseInfoByPkeyId(Long pkeyId) {
-        return Collections.emptyMap();
+    public Map<String, Object> getAllNodeBaseInfoByPkeyId(Long pkeyId,Long nodeId) throws Exception {
+        HashMap<String, Object> map = new HashMap<>();
+        //查出表单
+        WbsTreeContract wbsTreeContract = iWbsTreeContractService.getBaseMapper().selectOne(new QueryWrapper<WbsTreeContract>().eq("p_key_id", pkeyId));
+        WbsTreeContract wbsTreeContractNode = iWbsTreeContractService.getBaseMapper().selectOne(new QueryWrapper<WbsTreeContract>().eq("p_key_id", nodeId));
+        //解析html表单
+        String htmlUrl = wbsTreeContract.getHtmlUrl();
+        //拿到所有的元素
+        if(htmlUrl!=null){
+            InputStream inputStreamByUrl = FileUtils.getInputStreamByUrl(htmlUrl);
+            String htmlString = IoUtil.readToString(inputStreamByUrl);
+            htmlString = htmlString.replaceAll("placeholder", "placeholderxx");
+            Document doc = Jsoup.parse(htmlString);
+            //拿到参数库所有元素与参数库的元素比较
+            String sql="select * from m_parameter_element where is_deleted !=0";
+            List<ParameterElement> ParameterElementList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ParameterElement.class));
+            List<WbsTreeContract> ancestorsNodes = iWbsTreeContractService.getBaseMapper().selectList(new QueryWrapper<WbsTreeContract>().in("id", Arrays.stream(wbsTreeContractNode.getAncestors().split(",")).toArray()).eq("contract_id", wbsTreeContractNode.getContractId()));
+            for (ParameterElement parameterElement : ParameterElementList) {
+                Elements select = doc.select("[placeholderxx='" + parameterElement.getElementName() + "']");
+                //元素库里存在表单的元素
+                if(select.size()>0){
+                    //用元素查出参数库
+                    String sql1="Select * from m_parameter where id="+parameterElement.getParameterId();
+                    Parameter parameter = jdbcTemplate.queryForObject(sql1, new BeanPropertyRowMapper<>(Parameter.class));
+                    //不需要获取的情况
+                    //如果参数要区分项目
+                    if(parameter.getType()==1){
+                        //并且元素不是全局参数
+                        if(parameterElement.getType()!=1){
+                            //并且元素对应的项目ID不等于表单的项目ID
+                            if(parameterElement.getProjectId()!=null&&!wbsTreeContract.getProjectId().equals(parameterElement.getProjectId().toString())){
+                                System.out.println(parameter.getParamName()+" 参数库的"+parameterElement.getElementName()+"元素不是全局参数,并且项目Id对应不上");
+                                continue;
+                            }else {
+                                if(parameterElement.getContractId()!=null&&!wbsTreeContract.getContractId().equals(parameterElement.getContractId())){
+                                    System.out.println(parameter.getParamName()+" 参数库的"+parameterElement.getElementName()+"元素不是全局参数,项目ID能对应上但是合同段Id对应不上");
+                                    continue;
+                                }
+                            }
+                        }
+                    }
+                    //需要获取的情况
+                    //拿到参数库的类型
+                    String paramType = parameter.getParamType();
+                    String[] paramTypes = paramType.split(",");
+                    StringBuilder result=new StringBuilder();
+                    //根据参数的类型值,来获取不同的值 1-7是获取单位工程名称这些 8是获取划分编号 9是获取范围随机数
+                    for (String type : paramTypes) {
+                        if(type.equals("1")){
+                            String s=ancestorsNodes.stream()
+                                    .filter(m -> m.getNodeType() == 1)
+                                    .map(WbsTreeContract::getNodeName)
+                                    .findFirst()
+                                    .orElse("");
+                            result.append(s);
+                        } else if (type.equals("2")) {
+                            String s=ancestorsNodes.stream()
+                                    .filter(m -> m.getNodeType() == 18)
+                                    .map(WbsTreeContract::getNodeName)
+                                    .findFirst()
+                                    .orElse("");
+                            result.append(s);
+                        } else if (type.equals("3")) {
+                            String s=ancestorsNodes.stream()
+                                    .filter(m -> m.getNodeType() == 2)
+                                    .map(WbsTreeContract::getNodeName)
+                                    .findFirst()
+                                    .orElse("");
+                            result.append(s);
+                        }else if (type.equals("4")) {
+                            String s=ancestorsNodes.stream()
+                                    .filter(m -> m.getNodeType() == 3)
+                                    .map(WbsTreeContract::getNodeName)
+                                    .findFirst()
+                                    .orElse("");
+                            result.append(s);
+                        }else if (type.equals("5")) {
+                            String s=ancestorsNodes.stream()
+                                    .filter(m -> m.getNodeType() == 4)
+                                    .map(WbsTreeContract::getNodeName)
+                                    .findFirst()
+                                    .orElse("");
+                            result.append(s);
+                        }else if (type.equals("6")) {
+                            String s=ancestorsNodes.stream()
+                                    .filter(m -> m.getNodeType() == 5)
+                                    .map(WbsTreeContract::getNodeName)
+                                    .findFirst()
+                                    .orElse("");
+                            result.append(s);
+                        }else if (type.equals("7")) {
+                            String s=ancestorsNodes.stream()
+                                    .filter(m -> m.getNodeType() == 6)
+                                    .map(WbsTreeContract::getNodeName)
+                                    .findFirst()
+                                    .orElse("");
+                            result.append(s);
+                        }else if (type.equals("8")) {
+                            String  s= ancestorsNodes.stream()
+                                    .map(WbsTreeContract::getPartitionCode) // 获取 partitionCode
+                                    .filter(partitionCode -> partitionCode != null && !partitionCode.isEmpty()) // 过滤掉空值
+                                    .collect(Collectors.joining());
+                            if(wbsTreeContract.getPartitionCode()!=null){
+                                s=s+wbsTreeContract.getPartitionCode();
+                            }
+                            result.append(s);
+                        }
+                    }
+                    map.put(select.attr("keyname"),result.toString());
+                }
+            }
+        }
+        return map;
     }
 
 }