瀏覽代碼

Merge remote-tracking branch 'origin/permission_20250617' into permission_20250617

huiqi 3 周之前
父節點
當前提交
b14dede171

+ 4 - 0
takai-admin/src/main/java/com/takai/web/controller/system/SysProjectController.java

@@ -5,6 +5,7 @@ import com.takai.common.core.controller.BaseController;
 import com.takai.common.core.domain.AjaxResult;
 import com.takai.common.core.page.TableDataInfo;
 import com.takai.common.enums.BusinessType;
+import com.takai.common.utils.StringUtils;
 import com.takai.common.utils.poi.ExcelUtil;
 import com.takai.system.domain.SysProject;
 import com.takai.system.service.ISysProjectService;
@@ -99,6 +100,9 @@ public class SysProjectController extends BaseController
     @GetMapping("/alllist")
     public AjaxResult alllist(SysProject sysProject)
     {
+        if(null == sysProject.getProjectId() && (null == sysProject.getProjectName() || StringUtils.isEmpty(sysProject.getProjectName()))){
+            return success(null);
+        }
         return success(sysProjectService.selectSysProjectList(sysProject));
     }
 }

+ 12 - 0
takai-admin/src/main/java/com/takai/web/controller/takaiai/TakaiAiController.java

@@ -852,6 +852,18 @@ public class TakaiAiController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 审核历史列表
+     * @param params
+     * @return
+     */
+    @PostMapping("/app/auditHistory/list")
+    public TableDataInfo documentAuditHistoryList(@RequestBody TakaiApplicationParams params) {
+        startPage();
+        List<TakaiApplication> list = takaiAisService.applicationHistoryListByApprover(params);
+        return getDataTable(list);
+    }
+
     /**
      * 开始审核
      * @return

+ 1 - 1
takai-ai/src/main/java/com/takai/ai/domain/entity/TakaiApplication.java

@@ -84,7 +84,7 @@ public class TakaiApplication extends BaseEntity
     private String addOrderBy;
 
     //项目级应用 返回['项目分类','项目id']
-    private List<String> appProId = new ArrayList<>();
+    private String appProId;
 
     private String visible;
 

+ 1 - 1
takai-ai/src/main/java/com/takai/ai/domain/entity/TakaiApplicationParams.java

@@ -49,7 +49,7 @@ public class TakaiApplicationParams {
 
     private String isDeepThink;
 
-    private String[] appProId;
+    private String appProId;
 
     private String visible;
 

+ 2 - 0
takai-ai/src/main/java/com/takai/ai/mapper/TakaiApplicationMapper.java

@@ -58,6 +58,8 @@ public interface TakaiApplicationMapper
 
     public List<TakaiApplication> selectAppListByApprover(TakaiApplication mData);
 
+    public List<TakaiApplication> selectAppListHistoryByApprover(TakaiApplication mData);
+
     List<TakaiApplicationResult> selectAppByUserId(String userId);
 
     public List<TakaiApplicationResult> selectApplicationListByProjectType(String appId);

+ 2 - 0
takai-ai/src/main/java/com/takai/ai/service/ITakaiAiService.java

@@ -110,6 +110,8 @@ public interface ITakaiAiService
 
     List<TakaiApplication> applicationListByApprover(TakaiApplicationParams documentParams);
 
+    List<TakaiApplication> applicationHistoryListByApprover(TakaiApplicationParams documentParams);
+
     public int startAudit(String appId, String userId);
 
     int updateAuditApplication(TakaiApplicationParams appParams, String appId);

+ 12 - 6
takai-ai/src/main/java/com/takai/ai/service/impl/TakaiAiServiceImpl.java

@@ -1086,7 +1086,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
             //关联项目
             if(params.getAppProId() != null){
                 SysProjectApp sysProjectApp = new SysProjectApp();
-                sysProjectApp.setProjectId(params.getAppProId()[1]);
+                sysProjectApp.setProjectId(params.getAppProId());
                 sysProjectApp.setAppId(info.getAppId());
                 sysProjectAppMapper.insertSysProjectApp(sysProjectApp);
             }
@@ -1096,7 +1096,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
                     || AppTypeEnum.PROJECT.getCode().equals(String.valueOf(params.getTypeId()))){ // 1 私有 0 公开
                 info.setStatus("3"); // 有直接创建权限无需审核
             }else{
-                info.setStatus("5"); // 未开始审核状态
+                info.setStatus("2"); // 未开始审核状态
                 info.setApprover(String.valueOf(vo.getApprover()));
                 info.setNodeOrder(String.valueOf(vo.getNodeOrder()));
             }
@@ -1172,7 +1172,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
                     sysProjectAppMapper.deleteSysProjectAppByAppId(appId);
                 }
                 sysProjectApp = new SysProjectApp();
-                sysProjectApp.setProjectId(params.getAppProId()[1]);
+                sysProjectApp.setProjectId(params.getAppProId());
                 sysProjectApp.setAppId(appId);
                 sysProjectAppMapper.insertSysProjectApp(sysProjectApp);
             }
@@ -1262,9 +1262,8 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
                 SysProjectApp sysProjectApp = sysProjectAppMapper.selectSysProjectAppByAppId(application.getAppId());
                 if (sysProjectApp != null) {
                     SysProject sysProject = sysProjectMapper.selectSysProjectByProjectId(sysProjectApp.getProjectId());
-                    takaiApplication.setAppProId(Arrays.asList(
-                            String.valueOf(sysProject.getSourceFrom()),
-                            String.valueOf(sysProject.getProjectId())));
+                    takaiApplication.setAppProId(
+                            String.valueOf(sysProject.getProjectId()));
                 }
             }
             List<String> idList = Arrays.stream(takaiApplication.getKnowledgeIds().split(",")) // 按「逗号+空格」拆分字符串为数组
@@ -1726,6 +1725,13 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
         return takaiApplicationMapper.selectAppListByApprover(vo);
     }
 
+    @Override
+    public List<TakaiApplication> applicationHistoryListByApprover(TakaiApplicationParams takaiApplicationParams) {
+        TakaiApplication vo = TakaiApplication.builder().approver(takaiApplicationParams.getApprover())
+                .build();
+        return takaiApplicationMapper.selectAppListHistoryByApprover(vo);
+    }
+
     @Override
     public int startAudit(String appId, String userId) {
         List<DocumentAuditConfig> list = documentAuditConfigMapper.selectDocumentAuditConfigListByBo(null);

+ 21 - 1
takai-ai/src/main/resources/mapper/takaiai/TakaiApplicationMapper.xml

@@ -437,7 +437,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		from bm_application bm
 		left join sys_user su on FIND_IN_SET(su.user_id,bm.approver) > 0
 		<where>
-			(bm.status = '4'  OR bm.status = '1' OR bm.status = '2')
+			(bm.status = '1' OR bm.status = '2')
 			<if test="appId != null and appId != ''">
 				AND bm.appId = #{appId}
 			</if>
@@ -450,6 +450,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		order by bm.create_time desc
 	</select>
 
+	<select id="selectAppListHistoryByApprover" parameterType="BmApplication" resultMap="BmApplicationListResult">
+		select bm.appId, bm.name, bm.description, bm.prompt, bm.type_id,
+		bm.status, bm.approver, dai.comment, dai.create_time, bm.is_deep_think, bm.visible ,GROUP_CONCAT(su.user_name ) as user_name
+		from bm_application bm
+		left join sys_user su on FIND_IN_SET(su.user_id,bm.approver) > 0
+		left join document_audit_info dai on bm.appId = dai.app_id
+		<where>
+			(bm.status = '4'  OR bm.status = '3' )
+			<if test="appId != null and appId != ''">
+				AND bm.appId = #{appId}
+			</if>
+			<if test="approver != null and approver != ''">
+				AND FIND_IN_SET(#{approver},bm.approver) > 0
+			</if>
+		</where>
+		group by bm.appId, bm.name, bm.description, bm.prompt, bm.type_id,
+		bm.status, bm.approver, dai.comment, dai.create_time, bm.is_deep_think, bm.visible
+		order by dai.create_time desc
+	</select>
+
 	<select id="selectAppByUserId"  resultMap="BmApplicationListResult">
 		SELECT DISTINCT
 			bm.appId,

+ 1 - 1
takai-system/src/main/java/com/takai/system/domain/SysProject.java

@@ -23,7 +23,7 @@ public class SysProject extends BaseEntity
     private static final long serialVersionUID = 1L;
 
     /** 主键 */
-    private long projectId;
+    private Long projectId;
 
     /** 项目编号 */
     @Excel(name = "项目编号", needMerge = true,width = 20)

+ 3 - 0
takai-system/src/main/java/com/takai/system/mapper/SysProjectStaffMapper.java

@@ -1,6 +1,7 @@
 package com.takai.system.mapper;
 
 import com.takai.system.domain.SysProjectStaff;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -68,4 +69,6 @@ public interface SysProjectStaffMapper
      * @return 结果
      */
     public int deleteSysProjectStaffByIds(Long[] ids);
+
+    public int deleteSysProjectStaffByProjectPids(@Param("projectPids") List<String> ids);
 }

+ 17 - 0
takai-system/src/main/java/com/takai/system/mapper/SysUserMapper.java

@@ -3,6 +3,7 @@ package com.takai.system.mapper;
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
 import com.takai.common.core.domain.entity.SysUser;
+import org.apache.ibatis.annotations.Select;
 
 /**
  * 用户表 数据层
@@ -155,4 +156,20 @@ public interface SysUserMapper
      * @return 用户信息集合信息
      */
     public List<SysUser> selectKnowledgeVipList(String knowledgeId);
+
+    @Select("<script>" +
+            "select " +
+            " count(*)" +
+            " from bm_application " +
+            "  where create_by = #{userId} " +
+            "</script>")
+    public int countAppByUserId(@Param("userId") String userIds);
+
+    @Select("<script>" +
+            "select " +
+            " count(*)" +
+            " from bm_knowledge " +
+            "  where create_by = #{userId} " +
+            "</script>")
+    public int countKnowledgeByUserId(@Param("userId") String userIds);
 }

+ 14 - 12
takai-system/src/main/java/com/takai/system/service/impl/JkApiServiceImpl.java

@@ -265,16 +265,17 @@ public class JkApiServiceImpl implements IJkApiService {
                 for (Member member : project.getMemberList()) {
                     SysProjectStaff sysProjectStaff = new SysProjectStaff();
                     SysUser sysUser = sysUserService.selectUserByUserName(member.getAccountNo());
-                    sysProjectStaff.setProjectPid(project.getProCode());
-                    sysProjectStaff.setProjectName(project.getProName());
-                    sysProjectStaff.setUserId(null != sysUser ? sysUser.getUserId() : null);
-                    sysProjectStaff.setRoleId(null != sysUser ? sysUser.getRoleId() : null);
-                    SysProjectStaff dbStaff = projectStaffService.selectSysProjectStaff(sysProjectStaff);
-                    if(null == dbStaff) {
-                        projectStaffService.insertSysProjectStaff(sysProjectStaff);
-                        projectStaffNum++;
+                    if(sysUser != null) {
+                        sysProjectStaff.setProjectPid(project.getProCode());
+                        sysProjectStaff.setProjectName(project.getProName());
+                        sysProjectStaff.setUserId(null != sysUser ? sysUser.getUserId() : null);
+                        sysProjectStaff.setRoleId(null != sysUser ? sysUser.getRoleId() : null);
+                        SysProjectStaff dbStaff = projectStaffService.selectSysProjectStaff(sysProjectStaff);
+                        if(null == dbStaff) {
+                            projectStaffService.insertSysProjectStaff(sysProjectStaff);
+                            projectStaffNum++;
+                        }
                     }
-
                 }
             }
             if(sourceFrom.equals(HJL)){
@@ -337,7 +338,8 @@ public class JkApiServiceImpl implements IJkApiService {
         logger.info("获取建科"+objectName+"请求url:" + url);
         Request request = buildPostRequest(url);
         try {
-            Response response = client.newCall(request).execute();
+            OkHttpClient okHttpClient = buildOkHttpClient();
+            Response response = okHttpClient.newCall(request).execute();
             String responseBody = response.body().string();
             logger.info("获取建科项目"+objectName+"返回:" + responseBody);
 
@@ -557,9 +559,9 @@ public class JkApiServiceImpl implements IJkApiService {
 
     private OkHttpClient buildOkHttpClient() {
         return new OkHttpClient.Builder()
-                .connectTimeout(10, TimeUnit.SECONDS)
+                .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(50, TimeUnit.SECONDS)
-                .readTimeout(10, TimeUnit.MINUTES)
+                .readTimeout(60, TimeUnit.MINUTES)
                 .build();
     }
 

+ 17 - 4
takai-system/src/main/java/com/takai/system/service/impl/SysProjectServiceImpl.java

@@ -10,17 +10,17 @@ import com.takai.common.utils.StringUtils;
 import com.takai.system.domain.ProjectApplication;
 import com.takai.system.domain.SysProject;
 import com.takai.system.domain.SysProjectApp;
+import com.takai.system.domain.SysProjectStaff;
 import com.takai.system.mapper.SysProjectAppMapper;
 import com.takai.system.mapper.SysProjectMapper;
+import com.takai.system.mapper.SysProjectStaffMapper;
 import com.takai.system.service.ISysProjectService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 【请填写功能名称】Service业务层处理
@@ -38,6 +38,9 @@ public class SysProjectServiceImpl implements ISysProjectService
     @Autowired
     private SysProjectAppMapper  sysProjectAppMapper;
 
+    @Autowired
+    private SysProjectStaffMapper sysProjectStaffMapper;
+
     /**
      * 查询【请填写功能名称】
      *
@@ -188,9 +191,19 @@ public class SysProjectServiceImpl implements ISysProjectService
     @Override
     public int deleteSysProjectByProjectIds(String[] projectIds)
     {
+        List<SysProject> projects = new ArrayList<>();
+        for(String projectId:projectIds) {
+            SysProject sysProject = sysProjectMapper.selectSysProjectByProjectId(projectId);
+            projects.add(sysProject);
+        }
+        List<String> projectPids = projects.stream()
+                .filter(Objects::nonNull)
+                .map(SysProject::getProjectPid)
+                .collect(Collectors.toList());
         int i = sysProjectMapper.deleteSysProjectByProjectIds(projectIds);
         if(i > 0){
             sysProjectAppMapper.deleteSysProjectAppByProjectIds(projectIds);
+            sysProjectStaffMapper.deleteSysProjectStaffByProjectPids(projectPids);
         }
         return i;
     }

+ 14 - 0
takai-system/src/main/java/com/takai/system/service/impl/SysUserServiceImpl.java

@@ -507,6 +507,7 @@ public class SysUserServiceImpl implements ISysUserService
         {
             checkUserAllowed(new SysUser(userId));
             checkUserDataScope(userId);
+            checkUserAppKnowledgeScope(userId);
         }
         // 删除用户与角色关联
         userRoleMapper.deleteUserRole(userIds);
@@ -611,4 +612,17 @@ public class SysUserServiceImpl implements ISysUserService
     public List<SysUser> selectKnowledgeVipList(String knowledgeId) {
         return userMapper.selectKnowledgeVipList(knowledgeId);
     }
+
+    private void checkUserAppKnowledgeScope(String userId)
+    {
+        int appCount = userMapper.countAppByUserId(userId);
+        if(appCount != 0) {
+            throw new RuntimeException("用户已创建应用 请联系管理员进行删除");
+        }
+
+        int knowledgeCount = userMapper.countKnowledgeByUserId(userId);
+        if(knowledgeCount != 0) {
+            throw new RuntimeException("用户已创建知识库 请联系管理员进行删除");
+        }
+    }
 }

+ 18 - 17
takai-system/src/main/resources/mapper/system/SysProjectMapper.xml

@@ -44,6 +44,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="sourceFrom != null and sourceFrom != '' ">
                 and sp.source_from = #{sourceFrom}
             </if>
+            <if test="projectId != null  and projectId != ''"> and sp.project_id = #{projectId}</if>
         </where>
     </select>
 
@@ -78,26 +79,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where sp.project_pid = #{projectPId}
     </select>
 
-    <insert id="insertSysProject" parameterType="SysProject" useGeneratedKeys="true" keyProperty="projectId">
+    <insert id="insertSysProject" parameterType="SysProject"  keyProperty="projectId">
         insert into sys_project(
-            <if test="projectPid != null">project_pid,</if>
-            <if test="projectName != null">project_name,</if>
-            <if test="createBy != null">create_by,</if>
-            <if test="updateBy != null">update_by,</if>
-            <if test="updateTime != null">update_time,</if>
-            <if test="projectType != null">project_type,</if>
-            <if test="createTime != null">create_time,</if>
-            <if test="sourceFrom != null">source_from</if>
+            <if test="projectPid != null">project_pid</if>
+            <if test="projectName != null">,project_name</if>
+            <if test="createBy != null">,create_by</if>
+            <if test="updateBy != null">,update_by</if>
+            <if test="updateTime != null">,update_time</if>
+            <if test="projectType != null">,project_type</if>
+            <if test="createTime != null">,create_time</if>
+            <if test="sourceFrom != null">,source_from</if>
 
         )values(
-            <if test="projectPid != null">#{projectPid},</if>
-            <if test="projectName != null">#{projectName},</if>
-            <if test="createBy != null">#{createBy},</if>
-            <if test="updateBy != null">#{updateBy},</if>
-            <if test="updateTime != null">#{updateTime},</if>
-            <if test="projectType != null">#{projectType},</if>
-            <if test="createTime != null">#{createTime},</if>
-            <if test="sourceFrom != null">#{sourceFrom}</if>
+            <if test="projectPid != null">#{projectPid}</if>
+            <if test="projectName != null">,#{projectName}</if>
+            <if test="createBy != null">,#{createBy}</if>
+            <if test="updateBy != null">,#{updateBy}</if>
+            <if test="updateTime != null">,#{updateTime}</if>
+            <if test="projectType != null">,#{projectType}</if>
+            <if test="createTime != null">,#{createTime}</if>
+            <if test="sourceFrom != null">,#{sourceFrom}</if>
         )
     </insert>
 

+ 7 - 0
takai-system/src/main/resources/mapper/system/SysProjectStaffMapper.xml

@@ -166,4 +166,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
+
+    <delete id="deleteSysProjectStaffByProjectPids">
+        delete from sys_project_staff where project_pid in
+        <foreach item="id" collection="projectPids" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
 </mapper>