Browse Source

Merge branch 'dev' of http://219.151.181.73:3000/zhuwei/bladex into lihb

LHB 3 months ago
parent
commit
10ec97f4e5

+ 39 - 16
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -611,16 +611,18 @@ public class InformationWriteQueryController extends BladeController {
 //    @PushMessage(clientId = ClientIdConstant.BUSINESS_CLIENT_ID)
     public R<Object> abolishOne(@RequestParam String primaryKeyId, @RequestParam String classify, @RequestParam String projectId, @RequestParam String contractId) {
         //查询填报状态
-        InformationQuery businessData = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, primaryKeyId).eq(InformationQuery::getContractId, contractId)
-                .eq(InformationQuery::getClassify, classify).eq(InformationQuery::getType, 1).ne(InformationQuery::getStatus, 3));
+        InformationQuery businessData = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, primaryKeyId)
+//                .eq(InformationQuery::getContractId, contractId)
+                .eq(InformationQuery::getClassify, classify).eq(InformationQuery::getType, 1).in(InformationQuery::getStatus, 1,2));
         primaryKeyId = primaryKeyId + "*";
         if (businessData != null) {
             //使用批量废除接口
             return this.batchAbolish(businessData.getId().toString(), primaryKeyId, projectId, contractId, "撤回成功");
         } else {
             //试验
-            InformationQuery businessDataTrial = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, primaryKeyId).eq(InformationQuery::getClassify, classify).eq(InformationQuery::getContractId, contractId)
-                    .eq(InformationQuery::getType, 2).ne(InformationQuery::getStatus, 3));
+            InformationQuery businessDataTrial = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, primaryKeyId).eq(InformationQuery::getClassify, classify)
+//                    .eq(InformationQuery::getContractId, contractId)
+                    .eq(InformationQuery::getType, 2).in(InformationQuery::getStatus, 1,2));
             if (businessDataTrial != null) {
                 //使用批量废除接口
                 return this.batchAbolish(businessDataTrial.getId().toString(), primaryKeyId, projectId, contractId, "撤回成功");
@@ -719,7 +721,8 @@ public class InformationWriteQueryController extends BladeController {
         //记录状态
         String status = "1";
         //查询填报状态,type=1资料填报
-        InformationQuery businessData = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, primaryKeyId).eq(InformationQuery::getClassify, classify).eq(InformationQuery::getType, 1).last("order by id desc limit 1"));
+        WbsTreeContract obj = this.wbsTreeContractClient.getContractNodeByPrimaryKeyId(primaryKeyId);
+        InformationQuery businessData = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, primaryKeyId).eq(InformationQuery::getClassify, classify).eq(InformationQuery::getContractId, obj.getContractId()).eq(InformationQuery::getType, 1).last("order by id desc limit 1"));
         if (businessData != null) {
             switch (businessData.getStatus()) {
                 case 0:
@@ -736,7 +739,7 @@ public class InformationWriteQueryController extends BladeController {
                     //如果不匹配,默认为未填报
                     status = "1";
                     //查询表格
-                    WbsTreeContract obj = this.wbsTreeContractClient.getContractNodeByPrimaryKeyId(primaryKeyId);
+//                    WbsTreeContract obj = this.wbsTreeContractClient.getContractNodeByPrimaryKeyId(primaryKeyId);
                     if (ObjectUtils.isNotEmpty(obj)) {
                         List<WbsTreeContract> tableList = this.wbsTreeContractClient.queryChildByParentId(obj, "queryTable", classify);
                         if (tableList != null && tableList.size() > 0) {
@@ -753,7 +756,7 @@ public class InformationWriteQueryController extends BladeController {
             }
         } else {
             //查询表格
-            WbsTreeContract obj = this.wbsTreeContractClient.getContractNodeByPrimaryKeyId(primaryKeyId);
+//            WbsTreeContract obj = this.wbsTreeContractClient.getContractNodeByPrimaryKeyId(primaryKeyId);
             if (ObjectUtils.isNotEmpty(obj)) {
                 List<WbsTreeContract> tableList = this.wbsTreeContractClient.queryChildByParentId(obj, "queryTable", classify);
                 if (tableList != null && tableList.size() > 0) {
@@ -1384,23 +1387,40 @@ public R<Object> batchTask(@RequestBody StartTaskVO startTaskVO) {
                     trialIds = startTaskVO.getIds();
                 }
                 //试验记录 和 委托单 ids重新赋值映射为数据源ids
-                ids = queryList.stream().map(InformationQuery::getId).map(String::valueOf).toArray(String[]::new);
+//                ids = queryList.stream().map(InformationQuery::getId).map(String::valueOf).toArray(String[]::new);
             }
 
             Map<String, InformationQuery> queryMap = new HashMap<>();
             List<InformationQuery> saveQueryList = new ArrayList<>();
+            List<InformationQuery> queryTempList = new ArrayList<>();
+            Map<String, InformationQuery> queryTempMap = new HashMap<>();
             queryList.forEach(query -> {
-                if (query.getStatus() != null && query.getStatus() == 3) {
-                    query.setId(SnowFlakeUtil.getId());
-                    query.setStatus(0);
-                    saveQueryList.add(query);
+                InformationQuery temp = queryTempMap.get(query.getWbsId() + "," + query.getContractId() + "," + query.getClassify());
+                if (temp != null) {
+                    return;
+                }
+                queryTempMap.put(query.getWbsId() + "," + query.getContractId() + "," + query.getClassify(), query);
+                // todo 待优化
+                long count = this.informationQueryService.count(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, query.getWbsId()).eq(InformationQuery::getClassify, query.getClassify())
+                        .eq(InformationQuery::getContractId, query.getContractId()).in(InformationQuery::getStatus, 1, 2));
+                if (count == 0) {
+                    queryTempList.add(query);
+                    if (query.getStatus() != null && query.getStatus() == 3) {
+                        query.setId(SnowFlakeUtil.getId());
+                        query.setStatus(0);
+                        saveQueryList.add(query);
+                    }
+                    queryMap.put(query.getId().toString(), query);
                 }
-                queryMap.put(query.getId().toString(), query);
             });
+            queryList = queryTempList;
+            if (queryList.isEmpty()) {
+                return R.fail( "已上报,无需重复上报");
+            }
             if (!saveQueryList.isEmpty()) {
                 this.informationQueryService.saveBatch(saveQueryList);
-                ids = queryList.stream().map(InformationQuery::getId).map(String::valueOf).toArray(String[]::new);
             }
+            ids = queryList.stream().map(InformationQuery::getId).map(String::valueOf).toArray(String[]::new);
             boolean var = false;
 
             try {
@@ -1424,7 +1444,7 @@ public R<Object> batchTask(@RequestBody StartTaskVO startTaskVO) {
                         taskVO.setFixedFlowId(startTaskVO.getFixedFlowId());
                     }
                     //设置任务名称
-                    if (StringUtils.isNotEmpty(queryMap.get(id).toString())) {
+                    if (queryMap.get(id) != null && StringUtils.isNotEmpty(queryMap.get(id).getName())) {
                         taskVO.setTaskName(queryMap.get(id).getName());
                     }
                     //设置数据源指向
@@ -1477,7 +1497,7 @@ public R<Object> batchTask(@RequestBody StartTaskVO startTaskVO) {
                             jdbcTemplate.execute(sql);
                         }
                         var = true;
-//                        getPdfs(queryMap.get(id));
+                        getPdfs(queryMap.get(id));
                     } else {
                         return R.fail("创建主流程失败");
                     }
@@ -4626,6 +4646,9 @@ public R<Object> customAddContractNode(@RequestBody CustomAddContractNodeDTO dto
 
     @Async
     public R getPdfs(InformationQuery query){
+        if (query == null) {
+            return null;
+        }
         try {
             return excelTabClient.getPdfS(query.getWbsId() + "", query.getClassify() + "", query.getContractId() + "");
         } catch (IOException e) {

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

@@ -681,7 +681,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                     }else if (taskApp.getApprovalType()==8) {
                         this.jdbcTemplate.execute("update u_entrust_info set status=1 where id=(SELECT wbs_id from u_information_query where id='"+taskApp.getFormDataId()+"')");
                     }else {
-                        jdbcTemplate.execute("update u_information_query set e_visa_pdf_url='',status=0 where id='"+taskApp.getFormDataId()+"'");
+                        jdbcTemplate.execute("update u_information_query set e_visa_pdf_url='',status=3 where id='"+taskApp.getFormDataId()+"'");
                     }
                 }
             }

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -4261,6 +4261,7 @@ public class ExcelTabController extends BladeController {
                         iq.setUpdateTime(new Date());
                         iq.setUpdateUser(b.getUserId());
                         informationQueryClient.update(iq);
+                        getPdfS(iq.getWbsId() + "", iq.getClassify() + "", iq.getContractId() + "");
                     }
                 }
             }

+ 5 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeContractController.java

@@ -293,8 +293,11 @@ public class WbsTreeContractController extends BladeController {
     @GetMapping("/syncContractTabSort")
     @ApiOperationSupport(order = 10)
     @ApiOperation(value = "同步项目到合同段所有表单排序", notes = "传入projectId")
-    public R<Object> syncContractTabSort(@RequestParam String projectId) {
-        return R.status(iWbsTreeContractService.syncContractTabSort(projectId));
+    public R<Object> syncContractTabSort(@RequestParam String projectId,@RequestParam Long pKeyId) {
+        if(pKeyId == null){
+            return R.fail("未指定节点");
+        }
+        return R.status(iWbsTreeContractService.syncContractTabSort(projectId,pKeyId));
     }
 
 

+ 12 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java

@@ -134,4 +134,16 @@ public interface WbsTreeContractMapper extends EasyBaseMapper<WbsTreeContract> {
     List<WbsTreeContract> getNodeTyp6(@Param("pKeyId") Long pkeyId);
 
     EKeyDto getEKey(@Param("contractId") String contractId, @Param("pKeyId") Long pKeyId, @Param("wbsId") String wbsId);
+
+    /**
+     * 拉去模板的表单顺序到项目和合同 合同如果进行了人工排序则不允许修改排序
+     * @param type 项目的模板引用的类型
+     *             0:公有
+     *             1:私有
+     * @param projectId 项目id
+     * @param pKeyId
+     */
+    void updateSortNotIsUseSort(@Param("type") int type,
+                                @Param("projectId") Long projectId,
+                                @Param("pKeyId") Long pKeyId);
 }

+ 26 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -790,6 +790,32 @@
             where p_key_id = #{item.pKeyId}
         </foreach>
     </update>
+    <update id="updateSortNotIsUseSort">
+        update
+            m_wbs_tree_contract a
+            INNER JOIN m_wbs_tree_private b ON a.is_type_private_pid = b.p_key_id and b.p_id = #{pKeyId} and b.is_deleted = 0
+            <choose>
+                <when test="type == 0">
+                    INNER JOIN m_wbs_tree d ON d.id = b.tree_p_id
+                </when>
+                <otherwise>
+                    INNER JOIN m_wbs_tree_private c ON c.p_key_id = b.wbs_id  and c.wbs_type = b.wbs_type
+                    INNER JOIN m_wbs_tree_private d ON c.wbs_id = d.wbs_id and c.project_id = d.project_id and b.tree_p_id = d.tree_p_id
+                </otherwise>
+            </choose>
+            SET
+                b.sort = d.sort,
+                a.sort = (
+                    CASE
+                    WHEN a.is_use_sort IS NULL OR a.is_use_sort != 1 THEN d.sort
+                    ELSE a.sort
+                    END
+                )
+
+        WHERE
+            a.project_id = #{projectId}
+          AND a.is_deleted = 0
+    </update>
 
     <select id="selectQueryValueLikeNodeName" resultMap="ResultMap">
         select *

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

@@ -65,7 +65,7 @@ public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
 
     List<WbsTreeContractLazyVO> imageLazyQueryContractWbsTree(String parentId, String contractId, String contractIdRelation, String classId);
 
-    boolean syncContractTabSort(String projectId);
+    boolean syncContractTabSort(String projectId,Long pKeyId);
 
     List<AppWbsTreeContractVO> searchNodeAllTableAndFile(String primaryKeyId, String type, String contractId, String projectId,Integer classify);
 

+ 34 - 19
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -1,6 +1,7 @@
 package org.springblade.manager.service.impl;
 
 import cn.hutool.core.date.DateTime;
+import cn.hutool.core.lang.func.LambdaUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -52,9 +53,7 @@ import org.springblade.manager.entity.*;
 import org.springblade.manager.excel.WbsExcelBatchUtil;
 import org.springblade.manager.excel.WbsExcelUtil;
 import org.springblade.manager.feign.ContractClient;
-import org.springblade.manager.mapper.ContractInfoMapper;
-import org.springblade.manager.mapper.WbsTreeContractMapper;
-import org.springblade.manager.mapper.WbsTreePrivateMapper;
+import org.springblade.manager.mapper.*;
 import org.springblade.manager.service.ITableFileService;
 import org.springblade.manager.service.IWbsParamService;
 import org.springblade.manager.service.IWbsTreeContractService;
@@ -105,6 +104,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
     private final BladeRedis bladeRedis;
     private final ConstructionLedgerFeignClient constructionLedgerFeign;
     private final WbsTreePrivateMapper wbsTreePrivateMapper;
+    private final ProjectInfoMapper projectInfoMapper;
     private final ContractInfoMapper contractInfoMapper;
     private final JdbcTemplate jdbcTemplate;
     private final InformationQueryClient informationQueryClient;
@@ -124,6 +124,8 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
     private final Map<String, List<WbsTreeContractLazyQueryInfoVO>> localCacheQueryInfos = new ConcurrentHashMap<>();
     //存储当前合同段contractId_tableOwner对应的节点数量统计缓存信息
     private final Map<String, List<WbsTreeContractLazyVO>> localCacheParentCountNodes = new ConcurrentHashMap<>();
+    @Autowired
+    private WbsTreeMapper wbsTreeMapper;
 
     @Override
     public List<WbsTreeContract> selectQueryCurrentNodeByAncestors(List<String> ids, String contractId) {
@@ -1104,23 +1106,36 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
     }
 
     @Override
-    public boolean syncContractTabSort(String projectId) {
-        if (ObjectUtil.isNotEmpty(projectId)) {
-            List<WbsTreePrivate> tabs = jdbcTemplate.query("select id,p_key_id,sort from m_wbs_tree_private where is_deleted = 0 and sort is not null and wbs_type = 1 and project_id = " + projectId, new BeanPropertyRowMapper<>(WbsTreePrivate.class));
-            List<ContractInfo> contractInfos = jdbcTemplate.query("select id from m_contract_info where is_deleted = 0 and contract_type = 1 and p_id = " + projectId, new BeanPropertyRowMapper<>(ContractInfo.class));
-            for (ContractInfo contractInfo : contractInfos) {
-                for (List<WbsTreePrivate> wbsTreePrivates : Lists.partition(tabs, 1000)) {
-                    try {
-                        this.batchUpdateData(wbsTreePrivates, contractInfo.getId());
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        throw new ServiceException("保存数据异常,请联系管理员");
-                    }
-                }
-            }
-            return true;
+    public boolean syncContractTabSort(String projectId,Long primaryKeyId) {
+
+        //获取当前节点对应节点信息
+        WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, primaryKeyId));
+        //获取项目信息
+        ProjectInfo projectInfo = projectInfoMapper.selectOne(Wrappers.<ProjectInfo>lambdaQuery().eq(ProjectInfo::getId, wbsTreePrivate.getProjectId()));
+        Integer type = 0;
+        if (
+                ("1".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateType()))   ||
+                ("2".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeTrial()))   ||
+                ("3".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeMeter()))   ||
+                ("5".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeLar()))
+        ) {
+            type = 0;
+
+        }else{
+            type = 1;
         }
-        return false;
+
+
+
+
+        //1、获取指定项目指定节点下的表单信息
+        Long count = wbsTreePrivateMapper.selectCount(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPId, primaryKeyId).eq(WbsTreePrivate::getType, 1));
+        if(count > 0){
+            throw new RuntimeException("请选择底层节点");
+        }
+
+        baseMapper.updateSortNotIsUseSort(type,Long.valueOf(projectId),primaryKeyId);
+        return true;
     }
 
     @Override

+ 7 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -1831,7 +1831,12 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
             List<WbsTreeContract> insertDataContractList = new ArrayList<>();
 
 //            if (("1").equals(wbsTreePrivate.getWbsType())) {
-            if (("public").equals(projectInfo.getReferenceWbsTemplateType())) {
+            if (
+                    ("1".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateType()))   ||
+                            ("2".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeTrial()))   ||
+                            ("3".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeMeter()))   ||
+                            ("5".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeLar()))
+            ) {
                 /*-------------------------------------质检公有引用同步--------------------------------------------*/
                 //获取当前节点对应的公有引用树下的元素表
                 List<WbsTree> wbsTrees = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery()
@@ -1915,7 +1920,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                     }
                 }
 
-            } else if (("private").equals(projectInfo.getReferenceWbsTemplateType())) {
+            } else {
                 /*-------------------------------------质检私有引用同步--------------------------------------------*/
                 //根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
                 WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery()

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

@@ -186,6 +186,7 @@ public class FileUtils {
                 try {
                     //获取OSS文件输入流
                     reader = new PdfReader(Objects.requireNonNull(CommonUtil.getOSSInputStream(urlStr)));
+                    PdfReader.unethicalreading = true;
                     pageCount = reader.getNumberOfPages();
 
                     for (int i = 0; i < pageCount; ++i) {

+ 14 - 1
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -1641,7 +1641,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
                 if (ObjectUtil.isNotEmpty(vor.getCreateTime())) {
                     vor.setStartTime(DateUtil.format(vor.getCreateTime(), "yyyy-MM-dd"));
                 }
-                vor.setTaskStatusStr(new Integer("0").equals(vor.getStatus()) ? "未上报" : new Integer("1").equals(vor.getStatus()) ? "待审批" : new Integer("2").equals(vor.getStatus()) ? "已审批" : "未上报");
+                vor.setTaskStatusStr(new Integer("0").equals(vor.getStatus()) ? "未上报" : new Integer("1").equals(vor.getStatus()) ? "待审批" : new Integer("2").equals(vor.getStatus()) ? "已审批" : "已废除");
                 try {
                     String fileUserIdAndName = vor.getFileUserIdAndName();
                     String[] fileUserIdAndNames = fileUserIdAndName.split(",");
@@ -1773,6 +1773,19 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
                         } else {
                             return page.setRecords(null);
                         }
+                    } else {
+                        long current = (page.getCurrent() - 1) * page.getSize();
+                        if (current < 0) {
+                            throw new IllegalArgumentException("当前页码不能小于0");
+                        }
+                        int currentNow = (int) (current / page.getSize() + 1);
+                        int pageSize = (int) page.getSize();
+                        int fromIndex = (currentNow - 1) * pageSize;
+                        int toIndex = Math.min(currentNow * pageSize, voResult.size());
+                        List<InformationQueryVO> subList = voResult.subList(fromIndex, toIndex);
+                        page.setRecords(subList);
+                        page.setTotal(voResult.size());
+                        return page;
                     }
                 }
             }