Explorar el Código

计量后管相关

liuyc hace 1 año
padre
commit
d1dde5782e

+ 16 - 4
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ProjectInfo.java

@@ -156,15 +156,15 @@ public class ProjectInfo extends BaseEntity {
     private Integer isArchivesAuto;
 
     /**
-     * wbs私有树引用wbs模板类型--征拆
+     * wbs私有树引用wbs模板id--征拆
      */
-    @ApiModelProperty(value = "wbs私有树引用wbs模板类型--征拆")
+    @ApiModelProperty(value = "wbs私有树引用wbs模板id--征拆")
     private Long referenceWbsTemplateIdLar;
 
     /**
-     * wbs私有树引用wbs模板id--征拆
+     * wbs私有树引用wbs模板类型--征拆
      */
-    @ApiModelProperty(value = "wbs私有树引用wbs模板id--征拆")
+    @ApiModelProperty(value = "wbs私有树引用wbs模板类型")
     private String referenceWbsTemplateTypeLar;
 
     /**
@@ -179,4 +179,16 @@ public class ProjectInfo extends BaseEntity {
     @ApiModelProperty(value = "系统计量单元模板id")
     private Long meterTemplateId;
 
+    /**
+     * wbs私有树引用wbs模板id-计量
+     */
+    @ApiModelProperty(value = "wbs私有树引用wbs模板id-计量")
+    private Long referenceWbsTemplateIdMeter;
+
+    /**
+     * wbs私有树引用wbs模板类型-征拆
+     */
+    @ApiModelProperty(value = "wbs私有树引用wbs模板类型-征拆")
+    private String referenceWbsTemplateTypeMeter;
+
 }

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

@@ -24,6 +24,8 @@ public interface ProjectInfoMapper extends BaseMapper<ProjectInfo> {
 
     void updateTemplateInfoTrial(String projectId, String referencePrivateWbsProjectId, String type);
 
+    void updateTemplateInfoMeter(String projectId, String referencePrivateWbsProjectId, String type);
+
     void updateTemplateInfoLar(String projectId, String referencePrivateWbsProjectId, String type);
 
     ProjectInfo selectOneAndWbsTypeById(Long id);

+ 27 - 49
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectInfoMapper.xml

@@ -56,55 +56,24 @@
     </resultMap>
 
     <select id="queryProjectUserAmount" resultMap="projectUserAmount">
-        /*select mpi.project_alias,
-               (select COUNT(DISTINCT user_id) end
-        from m_project_assignment_user
-        where is_deleted = 0
-          and project_id = mpi.id
-          and role_id in
-            (select id from blade_role where is_deleted = 0
-          and (id = '1537247986361782274'
-           or parent_id =
-            '1537247986361782274' ))) as contractor
-            , (
-        select COUNT (DISTINCT user_id) end
-        from m_project_assignment_user
-        where is_deleted = 0
-          and project_id = mpi.id
-          and role_id in
-            (select id from blade_role where is_deleted = 0
-          and (id = '1537246384519335938'
-           or parent_id =
-            '1537246384519335938'))) as supervision
-            , (
-        select COUNT (DISTINCT user_id) end
-        from m_project_assignment_user
-        where is_deleted = 0
-          and project_id = mpi.id
-          and role_id in
-            (select id from blade_role where is_deleted = 0
-          and (id = '1537246243393589249'
-           or parent_id =
-            '1537246243393589249'))) as owner
-        from
-            m_project_info as mpi*/
-
-        SELECT
-            mpi.project_alias,
-            mpi.create_time,
-            COUNT(DISTINCT CASE WHEN m.role_id = '1537247986361782274' OR r1.parent_id = '1537247986361782274' THEN m.user_id END) AS contractor,
-            COUNT(DISTINCT CASE WHEN m.role_id = '1537246384519335938' OR r2.parent_id = '1537246384519335938' THEN m.user_id END) AS supervision,
-            COUNT(DISTINCT CASE WHEN m.role_id = '1537246243393589249' OR r3.parent_id = '1537246243393589249' THEN m.user_id END) AS owner
-        FROM
-            m_project_info AS mpi
-                LEFT JOIN m_project_assignment_user AS m ON mpi.id = m.project_id AND m.is_deleted = 0
-                LEFT JOIN blade_role AS r1 ON m.role_id = r1.id AND r1.is_deleted = 0
-                LEFT JOIN blade_role AS r2 ON m.role_id = r2.id AND r2.is_deleted = 0
-                LEFT JOIN blade_role AS r3 ON m.role_id = r3.id AND r3.is_deleted = 0
-        GROUP BY
-            mpi.project_alias
-        ORDER BY
-            mpi.create_time;
+        SELECT mpi.project_alias,
+               mpi.create_time,
+               COUNT(DISTINCT CASE
+                                  WHEN m.role_id = '1537247986361782274' OR r1.parent_id = '1537247986361782274'
+                                      THEN m.user_id END) AS contractor,
+               COUNT(DISTINCT CASE
+                                  WHEN m.role_id = '1537246384519335938' OR r2.parent_id = '1537246384519335938'
+                                      THEN m.user_id END) AS supervision,
+               COUNT(DISTINCT CASE
+                                  WHEN m.role_id = '1537246243393589249' OR r3.parent_id = '1537246243393589249'
+                                      THEN m.user_id END) AS owner
+        FROM m_project_info AS mpi
+                 LEFT JOIN m_project_assignment_user AS m ON mpi.id = m.project_id AND m.is_deleted = 0
+                 LEFT JOIN blade_role AS r1 ON m.role_id = r1.id AND r1.is_deleted = 0
+                 LEFT JOIN blade_role AS r2 ON m.role_id = r2.id AND r2.is_deleted = 0
+                 LEFT JOIN blade_role AS r3 ON m.role_id = r3.id AND r3.is_deleted = 0
+        GROUP BY mpi.project_alias
+        ORDER BY mpi.create_time;
 
     </select>
 
@@ -153,6 +122,15 @@
           AND status = 1
     </update>
 
+    <update id="updateTemplateInfoMeter">
+        UPDATE m_project_info
+        SET reference_wbs_template_id_meter   = #{referencePrivateWbsProjectId},
+            reference_wbs_template_type_meter = #{type}
+        WHERE id = #{projectId}
+          AND is_deleted = 0
+          AND status = 1
+    </update>
+
     <update id="updateTemplateInfoLar">
         UPDATE m_project_info
         SET reference_wbs_template_id_lar   = #{referencePrivateWbsProjectId},

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

@@ -89,7 +89,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
             //公有引用
             return ForestNodeMerger.merge(baseMapper.tree(wbsId, projectId, wbsInfo.getWbsType()));
         } else {
-            //私有引用
+            //私有引用`
             WbsTreePrivate nodeRoot = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getWbsId, wbsId).eq(WbsTreePrivate::getProjectId, projectId).eq(WbsTreePrivate::getParentId, 0L));
             if (nodeRoot != null) {
                 return ForestNodeMerger.merge(baseMapper.tree(wbsId, projectId, Integer.valueOf(nodeRoot.getWbsType())));

+ 54 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -323,7 +323,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         ProjectInfo projectInfo = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ProjectInfo.class)).stream().findAny().orElse(null);
         if (projectInfo != null) {
             if (("1").equals(wbsTreePrivate.getWbsType())) {
-                //TODO =====质检公有=====
+                /*=====质检公有=====*/
                 if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateId()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateType()) && ("public").equals(projectInfo.getReferenceWbsTemplateType()))) {
                     //获取引用的公有树节点信息,没有元素表
                     WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getId, wbsTreePrivate.getId()).eq(WbsTree::getStatus, 1));
@@ -342,7 +342,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     this.asyncUpdateWbsPublic(childNodesAllPublic, childNodesAllNowProjectNodes, wbsTreePrivate.getProjectId(), Integer.parseInt(wbsTreePrivate.getWbsType()));
 
                 } else if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateId()) && ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateType()) && ("private").equals(projectInfo.getReferenceWbsTemplateType())) {
-                    //TODO =====质检私有=====
+                    /*=====质检私有=====*/
                     //获取私有引用根节点
                     WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().select(WbsTreePrivate::getProjectId, WbsTreePrivate::getWbsId).eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateId()));
 
@@ -363,7 +363,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 }
 
             } else if (("2").equals(wbsTreePrivate.getWbsType())) {
-                //TODO =====试验公有=====
+                /*=====试验公有=====*/
                 if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateIdTrial()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateTypeTrial()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeTrial()))) {
                     //获取引用的公有树节点信息,没有元素表
                     WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getId, wbsTreePrivate.getId()).eq(WbsTree::getWbsId, projectInfo.getReferenceWbsTemplateIdTrial()).eq(WbsTree::getStatus, 1));
@@ -381,7 +381,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     this.asyncUpdateWbsPublic(childNodesAllPublic, childNodesAllNowProjectNodes, wbsTreePrivate.getProjectId(), Integer.parseInt(wbsTreePrivate.getWbsType()));
 
                 } else if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateIdTrial()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateTypeTrial()) && ("private").equals(projectInfo.getReferenceWbsTemplateTypeTrial()))) {
-                    //TODO =====试验私有=====
+                    /*=====试验私有=====*/
                     //私有引用试验根节点
                     WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().select(WbsTreePrivate::getProjectId, WbsTreePrivate::getWbsId).eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateIdTrial()).eq(WbsTreePrivate::getStatus, 1));
                     //引用模板的对应节点
@@ -398,6 +398,42 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
                     this.asyncUpdateWbsPrivate(childNodesAllRecordProject, childNodesAllNowProject, wbsTreePrivate.getProjectId(), projectInfo.getReferenceWbsTemplateIdTrial().toString(), Integer.parseInt(wbsTreePrivate.getWbsType()));
                 }
+            } else if (("3").equals(wbsTreePrivate.getWbsType())) {
+                /*=====计量公有=====*/
+                if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateIdMeter()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateTypeMeter()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeMeter()))) {
+                    //获取引用的公有树节点信息,没有元素表
+                    WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getId, wbsTreePrivate.getId()).eq(WbsTree::getWbsId, projectInfo.getReferenceWbsTemplateIdMeter()).eq(WbsTree::getStatus, 1));
+                    List<WbsTree> childNodesAllPublic = this.getChildNodes(wbsTree);
+                    if (childNodesAllPublic == null) {
+                        childNodesAllPublic = new ArrayList<>();
+                    }
+                    childNodesAllPublic.add(wbsTree);
+
+                    //获取当前项目私节点、元素表
+                    List<WbsTreePrivate> childNodesAllNowProject = this.getChildNodesAllNowProject(wbsTreePrivate);
+                    //公有引用,由于没有关联清表,html_url不存在,所以不同步表的html_url信息
+                    List<WbsTreePrivate> childNodesAllNowProjectNodes = childNodesAllNowProject.stream().filter(f -> new Integer(1).equals(f.getType())).collect(Collectors.toList());
+
+                    this.asyncUpdateWbsPublic(childNodesAllPublic, childNodesAllNowProjectNodes, wbsTreePrivate.getProjectId(), Integer.parseInt(wbsTreePrivate.getWbsType()));
+
+                } else if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateIdMeter()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateTypeMeter()) && ("private").equals(projectInfo.getReferenceWbsTemplateTypeMeter()))) {
+                    /*=====试验私有=====*/
+                    //私有引用试验根节点
+                    WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().select(WbsTreePrivate::getProjectId, WbsTreePrivate::getWbsId).eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateIdMeter()).eq(WbsTreePrivate::getStatus, 1));
+                    //引用模板的对应节点
+                    WbsTreePrivate recordSelectNode = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getId, wbsTreePrivate.getId()).eq(WbsTreePrivate::getProjectId, wbsTreePrivateRecord.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivateRecord.getWbsId()));
+                    //关联项目的对应节点的所有子级
+                    List<WbsTreePrivate> childNodesAllRecordProject = this.getChildNodes(recordSelectNode);
+                    if (childNodesAllRecordProject == null) {
+                        childNodesAllRecordProject = new ArrayList<>();
+                    }
+                    childNodesAllRecordProject.add(recordSelectNode);
+
+                    //获取当前项目私节点、元素表
+                    List<WbsTreePrivate> childNodesAllNowProject = this.getChildNodesAllNowProject(wbsTreePrivate);
+
+                    this.asyncUpdateWbsPrivate(childNodesAllRecordProject, childNodesAllNowProject, wbsTreePrivate.getProjectId(), projectInfo.getReferenceWbsTemplateIdMeter().toString(), Integer.parseInt(wbsTreePrivate.getWbsType()));
+                }
             }
         }
         return true;
@@ -946,7 +982,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     //映射新老pKeyId,用于保存表单配置
                     Map<Long, Long> map = new HashMap<>();
                     //是否存在独立库表,true为不存在,不存在才同步
-                    Boolean isExist = true;
+                    boolean isExist = true;
 
                     if (pawDTO.getReferenceType().equals("public")) {
                         //获取当前树下所有节点、表信息
@@ -998,7 +1034,10 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
                             if (isType10WithParentIdMinus10) {
                                 //判断是否存在独立表单,不存在则添加
-                                boolean existsInWbsTreePrivatesTableDL = wbsTreePrivatesTableDL.stream().anyMatch(t -> t.getId().equals(wbsTreePrivate.getId()));
+                                boolean existsInWbsTreePrivatesTableDL = false;
+                                if (wbsTreePrivatesTableDL != null) {
+                                    existsInWbsTreePrivatesTableDL = wbsTreePrivatesTableDL.stream().anyMatch(t -> t.getId().equals(wbsTreePrivate.getId()));
+                                }
                                 if (!existsInWbsTreePrivatesTableDL) {
                                     addListData.add(wbsTreePrivate);
                                 }
@@ -1034,13 +1073,16 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         for (List<WbsTreePrivate> addList : partition1) {
                             wbsTreePrivateService.insertBatch(addList, 1000);
                         }
-                        if (pawDTO.getWbsType() == 1) {
+                        if (pawDTO.getWbsType() == 1) { //质检
                             projectInfoMapper.updateTemplateInfoQuality(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
                         }
-                        if (pawDTO.getWbsType() == 2) {
+                        if (pawDTO.getWbsType() == 2) { //试验
                             projectInfoMapper.updateTemplateInfoTrial(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
                         }
-                        if (pawDTO.getWbsType() == 5) {
+                        if (pawDTO.getWbsType() == 3) { //计量
+                            projectInfoMapper.updateTemplateInfoMeter(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
+                        }
+                        if (pawDTO.getWbsType() == 5) { //征拆
                             projectInfoMapper.updateTemplateInfoLar(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
                         }
                     } else if (pawDTO.getReferenceType().equals("private")) {
@@ -1062,6 +1104,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         if (pawDTO.getWbsType() == 2) {
                             projectInfoMapper.updateTemplateInfoTrial(pawDTO.getProjectId(), pawDTO.getPrimaryKeyId(), "private");
                         }
+                        if (pawDTO.getWbsType() == 3) { //计量
+                            projectInfoMapper.updateTemplateInfoMeter(pawDTO.getProjectId(), pawDTO.getPrimaryKeyId(), "private");
+                        }
                         if (pawDTO.getWbsType() == 5) {
                             projectInfoMapper.updateTemplateInfoLar(pawDTO.getProjectId(), pawDTO.getWbsId(), "private");
                         }