فهرست منبع

feat: 增加任务类型,外部接口

huangzqa 1 سال پیش
والد
کامیت
db0f0cfb04

+ 56 - 0
approve-api/src/main/java/com/dragonsoft/dcuc/approve/facade/api/IApiV1ApproveTaskClassFacade.java

@@ -0,0 +1,56 @@
+package com.dragonsoft.dcuc.approve.facade.api;
+
+import com.dragonsoft.dcuc.approve.model.resp.taskclass.ApiTaskClassRespVO;
+import com.dragonsoft.dcuc.approve.model.resp.taskclass.ApiTaskDetailRespVO;
+import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2023/7/11
+ */
+@Api(tags = "审批任务类型服务接口")
+@FeignClient(name = "approve")
+public interface IApiV1ApproveTaskClassFacade {
+
+    /**
+     * 获取任务类型列表
+     *
+     * @return 任务类型列表
+     */
+    @ApiOperation(value = "任务类型列表", notes = "任务类型列表")
+    @GetMapping("api/v1/task-classes")
+    ResponseDTO<List<ApiTaskClassRespVO>> taskClassList();
+
+    /**
+     * 根据任务代码获取任务详情
+     *
+     * @param taskCode 任务标识
+     * @return 任务详情
+     */
+    @ApiOperation(value = "根据任务代码获取任务详情", notes = "根据任务代码获取任务详情")
+    @GetMapping("api/v1/tasks/{taskCode}")
+    ResponseDTO<ApiTaskDetailRespVO> taskDetail(@PathVariable("taskCode") String taskCode);
+
+    /**
+     * 根据用户、应用代码获取对应的任务列表
+     *
+     * @param userToken 用户令牌
+     * @param appCode   应用代码
+     * @return 任务列表
+     */
+    @ApiOperation(value = "根据用户、应用代码获取对应的任务列表", notes = "根据用户、应用代码获取对应的任务列表")
+    @GetMapping("api/v1/user-tasks/{userToken}/apps/{appCode}")
+    ResponseDTO<List<ApiTaskDetailRespVO>> getUserAppTaskList(@PathVariable("userToken") String userToken,
+                                                             @PathVariable("appCode") String appCode);
+}

+ 50 - 0
approve-api/src/main/java/com/dragonsoft/dcuc/approve/model/resp/taskclass/ApiTaskClassRespVO.java

@@ -0,0 +1,50 @@
+package com.dragonsoft.dcuc.approve.model.resp.taskclass;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2023/7/11
+ */
+@Data
+@ApiModel(description = "任务类型列表")
+public class ApiTaskClassRespVO {
+
+    /**
+     * 任务类型代码
+     */
+    @ApiModelProperty(value = "任务类型代码")
+    private String taskClassCode;
+    /**
+     * 任务类型名称
+     */
+    @ApiModelProperty(value = "任务类型名称")
+    private String taskClassName;
+    /**
+     * 父任务类型ID
+     */
+    @ApiModelProperty(value = "父任务类型ID")
+    private String parentId;
+    /**
+     * 父任务类型代码
+     */
+    @ApiModelProperty(value = "父任务类型代码")
+    private String parentClassCode;
+    /**
+     * 父任务类型名称
+     */
+    @ApiModelProperty(value = "父任务类型名称")
+    private String parentClassName;
+
+    /**
+     * 来源应用代码
+     */
+    @ApiModelProperty(value = "来源应用代码")
+    private String sourceAppCode;
+}

+ 44 - 0
approve-api/src/main/java/com/dragonsoft/dcuc/approve/model/resp/taskclass/ApiTaskDetailRespVO.java

@@ -0,0 +1,44 @@
+package com.dragonsoft.dcuc.approve.model.resp.taskclass;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * <p>
+ * 任务详情
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2023/7/11
+ */
+@Data
+@ApiModel(description = "任务详情")
+public class ApiTaskDetailRespVO {
+
+    /**
+     * 任务代码
+     */
+    @ApiModelProperty(value = "任务代码")
+    private String taskCode;
+
+    /**
+     * 任务名称
+     */
+    @ApiModelProperty(value = "任务名称")
+    private String taskName;
+
+    /**
+     * 任务类型代码
+     */
+    @ApiModelProperty(value = "任务类型代码")
+    private String taskClassCode;
+
+    /**
+     * 任务类型名称
+     */
+    @ApiModelProperty(value = "任务类型名称")
+    private String taskClassName;
+
+
+}

+ 41 - 0
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/business/IApproveTaskBusiness.java

@@ -0,0 +1,41 @@
+package com.dragonsoft.dcuc.approve.business;
+
+import com.dragonsoft.dcuc.approve.model.resp.taskclass.ApiTaskClassRespVO;
+import com.dragonsoft.dcuc.approve.model.resp.taskclass.ApiTaskDetailRespVO;
+import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
+
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2023/7/11
+ */
+public interface IApproveTaskBusiness {
+    /**
+     * 获取任务类型列表
+     *
+     * @return 任务类型列表
+     */
+    ResponseDTO<List<ApiTaskClassRespVO>> taskClassList();
+
+    /**
+     * 根据任务代码获取任务详情
+     *
+     * @param taskCode 任务标识
+     * @return 任务详情
+     */
+    ResponseDTO<ApiTaskDetailRespVO> taskDetail(String taskCode);
+
+    /**
+     * 根据用户、应用代码获取对应的任务列表
+     *
+     * @param userToken 用户令牌
+     * @param appCode   应用代码
+     * @return 任务列表
+     */
+    ResponseDTO<List<ApiTaskDetailRespVO>> getUserAppTaskList(String userToken, String appCode);
+}

+ 117 - 0
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/business/impl/ApproveTaskBusinessImpl.java

@@ -0,0 +1,117 @@
+package com.dragonsoft.dcuc.approve.business.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.dragoninfo.dcuc.common.utils.DcucBeanUtil;
+import com.dragoninfo.dcuc.common.utils.ResponseUtil;
+import com.dragonsoft.dcuc.approve.business.IApproveTaskBusiness;
+import com.dragonsoft.dcuc.approve.business.IBimBusiness;
+import com.dragonsoft.dcuc.approve.model.ApproveRecordInfo;
+import com.dragonsoft.dcuc.approve.model.ApproveTaskClass;
+import com.dragonsoft.dcuc.approve.model.resp.bim.ZeroTrustUserTokenInfoRespVO;
+import com.dragonsoft.dcuc.approve.model.resp.taskclass.ApiTaskClassRespVO;
+import com.dragonsoft.dcuc.approve.model.resp.taskclass.ApiTaskDetailRespVO;
+import com.dragonsoft.dcuc.approve.service.IApproveRecordService;
+import com.dragonsoft.dcuc.approve.service.IApproveTaskClassService;
+import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2023/7/11
+ */
+@Slf4j
+@Component
+public class ApproveTaskBusinessImpl implements IApproveTaskBusiness {
+
+    private IApproveTaskClassService approveTaskClassService;
+
+    private IApproveRecordService approveRecordService;
+
+    private IBimBusiness bimBusiness;
+
+    @Autowired
+    public void setBimBusiness(IBimBusiness bimBusiness) {
+        this.bimBusiness = bimBusiness;
+    }
+
+    @Autowired
+    public void setApproveRecordService(IApproveRecordService approveRecordService) {
+        this.approveRecordService = approveRecordService;
+    }
+
+    @Autowired
+    public void setApproveTaskClassService(IApproveTaskClassService approveTaskClassService) {
+        this.approveTaskClassService = approveTaskClassService;
+    }
+
+    @Override
+    public ResponseDTO<List<ApiTaskClassRespVO>> taskClassList() {
+        List<ApproveTaskClass> approveTaskClasses = approveTaskClassService.fillAll();
+
+        List<ApiTaskClassRespVO> respVOList = DcucBeanUtil.createCopyToObjectList(approveTaskClasses, ApiTaskClassRespVO.class);
+
+        return ResponseUtil.newInstance(respVOList);
+    }
+
+    @Override
+    public ResponseDTO<ApiTaskDetailRespVO> taskDetail(String taskCode) {
+        ApproveRecordInfo approveRecordInfo = approveRecordService.selectByApproveNo(taskCode);
+        if (ObjectUtil.isNull(approveRecordInfo)) {
+            return ResponseUtil.dtoFail("当前任务标识不存在");
+        }
+        String processTitle = approveRecordInfo.getProcessTitle();
+        String approveTaskClassCode = approveRecordInfo.getApproveTaskClass();
+        ApproveTaskClass approveTaskClass = approveTaskClassService.detailByCode(approveTaskClassCode);
+        if (ObjectUtil.isNull(approveTaskClass)) {
+            log.error("无法查找到对应的任务类型:{}", approveTaskClassCode);
+            return ResponseUtil.dtoFail("无法查找到对应的任务类型");
+        }
+
+        String taskClassName = approveTaskClass.getTaskClassName();
+        ApiTaskDetailRespVO apiTaskDetailRespVO = new ApiTaskDetailRespVO();
+        apiTaskDetailRespVO.setTaskCode(taskCode);
+        apiTaskDetailRespVO.setTaskName(processTitle);
+        apiTaskDetailRespVO.setTaskClassCode(approveTaskClassCode);
+        apiTaskDetailRespVO.setTaskClassName(taskClassName);
+
+        return ResponseUtil.newInstance(apiTaskDetailRespVO);
+    }
+
+    @Override
+    public ResponseDTO<List<ApiTaskDetailRespVO>> getUserAppTaskList(String userToken, String appCode) {
+        ZeroTrustUserTokenInfoRespVO userTokenInfo = bimBusiness.getUserTokenInfo(userToken);
+        if (ObjectUtil.isNull(userTokenInfo)) {
+            return ResponseUtil.dtoFail("用户令牌失效");
+        }
+
+        String pid = userTokenInfo.getPid();
+        List<ApproveRecordInfo> recordInfoList = approveRecordService.getRecordByIdcardAppCode(pid, appCode);
+
+        List<ApiTaskDetailRespVO> respVOList = DcucBeanUtil.createCopyToObjectList(recordInfoList, ApiTaskDetailRespVO.class, ((sourceObject, targetObject) -> {
+            String approveNo = sourceObject.getApproveNo();
+            String processTitle = sourceObject.getProcessTitle();
+            String approveTaskClassCode = sourceObject.getApproveTaskClass();
+
+            String taskClassName = "";
+            ApproveTaskClass approveTaskClass = approveTaskClassService.detailByCode(approveTaskClassCode);
+            if (ObjectUtil.isNull(approveTaskClass)) {
+                taskClassName = approveTaskClass.getTaskClassName();
+            }
+            targetObject.setTaskCode(approveNo);
+            targetObject.setTaskName(processTitle);
+            targetObject.setTaskClassCode(approveTaskClassCode);
+            targetObject.setTaskClassName(taskClassName);
+            return targetObject;
+        }));
+
+        return ResponseUtil.newInstance(respVOList);
+    }
+}

+ 56 - 0
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/facade/api/ApiV1ApproveTaskClassFacade.java

@@ -0,0 +1,56 @@
+package com.dragonsoft.dcuc.approve.facade.api;
+
+import cn.hutool.core.util.StrUtil;
+import com.dragoninfo.dcuc.common.utils.ResponseUtil;
+import com.dragonsoft.dcuc.approve.business.IApproveTaskBusiness;
+import com.dragonsoft.dcuc.approve.model.resp.taskclass.ApiTaskClassRespVO;
+import com.dragonsoft.dcuc.approve.model.resp.taskclass.ApiTaskDetailRespVO;
+import com.dragonsoft.dcuc.approve.utils.LangUtil;
+import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2023/7/11
+ */
+@Slf4j
+@RestController
+public class ApiV1ApproveTaskClassFacade implements IApiV1ApproveTaskClassFacade {
+
+    private IApproveTaskBusiness approveTaskBusiness;
+
+    @Autowired
+    public void setApproveTaskBusiness(IApproveTaskBusiness approveTaskBusiness) {
+        this.approveTaskBusiness = approveTaskBusiness;
+    }
+
+    @Override
+    public ResponseDTO<List<ApiTaskClassRespVO>> taskClassList() {
+        return approveTaskBusiness.taskClassList();
+    }
+
+    @Override
+    public ResponseDTO<ApiTaskDetailRespVO> taskDetail(String taskCode) {
+        if (StrUtil.isNotBlank(taskCode)) {
+            return ResponseUtil.dtoFail("taskCode必填");
+        }
+
+        return approveTaskBusiness.taskDetail(taskCode);
+    }
+
+    @Override
+    public ResponseDTO<List<ApiTaskDetailRespVO>> getUserAppTaskList(String userToken, String appCode) {
+        if (LangUtil.isAnyBlank(userToken, appCode)) {
+            return ResponseUtil.dtoFail("参数需必填");
+        }
+        return approveTaskBusiness.getUserAppTaskList(userToken, appCode);
+    }
+}

+ 1 - 0
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/model/ApproveTaskClass.java

@@ -18,6 +18,7 @@ import java.util.Date;
  * @author huangzqa
  * @date 2023/6/9
  */
+@TableName("t_approve_task_class")
 @Data
 public class ApproveTaskClass {
     /**

+ 10 - 0
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/service/IApproveRecordService.java

@@ -7,6 +7,7 @@ import com.dragonsoft.duceap.core.search.Searchable;
 import org.springframework.data.domain.Page;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * <p>
@@ -111,4 +112,13 @@ public interface IApproveRecordService {
      * @return 审批信息
      */
     ApproveRecordInfo getOneByTaskId(String taskId);
+
+    /**
+     * 根据身份证号应用代码获取对应审批单信息
+     *
+     * @param idcard  身份证号
+     * @param appCode 应用代码
+     * @return 审批单信息
+     */
+    List<ApproveRecordInfo> getRecordByIdcardAppCode(String idcard, String appCode);
 }

+ 18 - 0
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/service/IApproveTaskClassService.java

@@ -9,6 +9,8 @@ import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.core.search.Searchable;
 import org.springframework.data.domain.Page;
 
+import java.util.List;
+
 /**
  * <p>
  *
@@ -58,4 +60,20 @@ public interface IApproveTaskClassService {
      * @return 状态
      */
     ResponseStatus delete(String id);
+
+    /**
+     * 查询所有任务类型
+     *
+     * @return 任务类型
+     */
+    List<ApproveTaskClass> fillAll();
+
+    /**
+     * 根据任务类型代码查询任务类型信息
+     *
+     * @param taskClassCode 任务类型代码
+     * @return 任务类型信息
+     */
+    ApproveTaskClass detailByCode(String taskClassCode);
+
 }

+ 9 - 0
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/service/impl/ApproveRecordServiceImpl.java

@@ -247,5 +247,14 @@ public class ApproveRecordServiceImpl implements IApproveRecordService {
         return approveRecordMapper.selectOne(where);
     }
 
+    @Override
+    public List<ApproveRecordInfo> getRecordByIdcardAppCode(String idcard, String appCode) {
+        LambdaQueryWrapper<ApproveRecordInfo> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        lambdaQueryWrapper.eq(ApproveRecordInfo::getAppCode,appCode);
+        lambdaQueryWrapper.eq(ApproveRecordInfo::getApplicantIdcard,idcard);
+
+        return approveRecordMapper.selectList(lambdaQueryWrapper);
+    }
+
 
 }

+ 15 - 0
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/service/impl/ApproveTaskClassServiceImpl.java

@@ -3,6 +3,8 @@ package com.dragonsoft.dcuc.approve.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.dragoninfo.dcuc.common.utils.ResponseUtil;
 import com.dragonsoft.dcuc.approve.mapper.ApproveTaskClassMapper;
 import com.dragonsoft.dcuc.approve.model.ApproveTaskClass;
@@ -123,4 +125,17 @@ public class ApproveTaskClassServiceImpl implements IApproveTaskClassService {
         approveTaskClassMapper.deleteById(id);
         return ResponseStatus.success();
     }
+
+    @Override
+    public List<ApproveTaskClass> fillAll() {
+        LambdaQueryWrapper<ApproveTaskClass> queryWrapper = Wrappers.lambdaQuery();
+        return approveTaskClassMapper.selectList(queryWrapper);
+    }
+
+    @Override
+    public ApproveTaskClass detailByCode(String taskClassCode) {
+        LambdaQueryWrapper<ApproveTaskClass> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(ApproveTaskClass::getTaskClassCode, taskClassCode);
+        return approveTaskClassMapper.selectOne(queryWrapper);
+    }
 }

+ 2 - 0
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/utils/LangUtil.java

@@ -35,4 +35,6 @@ public final class LangUtil {
         }
         return false;
     }
+
+
 }

+ 7 - 1
pom.xml

@@ -22,6 +22,7 @@
         <moco.version>0.12.0</moco.version>
         <embedded.redis.version>0.7.3</embedded.redis.version>
         <sm.tools.version>1.2.1-SNAPSHOT</sm.tools.version>
+        <dcuc.common.version>2.1.0-tjdsj-SNAPSHOT</dcuc.common.version>
     </properties>
     <artifactId>approve-core</artifactId>
     <packaging>pom</packaging>
@@ -32,6 +33,12 @@
 
     <dependencyManagement>
         <dependencies>
+
+            <dependency>
+                <groupId>com.dragoninfo</groupId>
+                <artifactId>dcuc-common</artifactId>
+                <version>${dcuc.common.version}</version>
+            </dependency>
             <dependency>
                 <groupId>com.github.rholder</groupId>
                 <artifactId>guava-retrying</artifactId>
@@ -95,7 +102,6 @@
         <dependency>
             <groupId>com.dragoninfo</groupId>
             <artifactId>dcuc-common</artifactId>
-            <version>2.0.1-SNAPSHOT</version>
             <exclusions>
                 <exclusion>
                     <artifactId>hibernate-core</artifactId>