Просмотр исходного кода

feat: 新增任务类型维护

huangzqa 1 год назад
Родитель
Сommit
b3f8317d0b

+ 78 - 0
approve-api/src/main/java/com/dragonsoft/dcuc/approve/facade/IApproveTaskClassFacade.java

@@ -0,0 +1,78 @@
+package com.dragonsoft.dcuc.approve.facade;
+
+import com.dragonsoft.dcuc.approve.model.req.ApproveTaskClassAddReqVO;
+import com.dragonsoft.dcuc.approve.model.req.ApproveTaskClassUpdateReqVO;
+import com.dragonsoft.dcuc.approve.model.resp.ApproveTaskClassDetailRespVO;
+import com.dragonsoft.duceap.base.annotations.parameter.QueryObject;
+import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
+import com.dragonsoft.duceap.core.search.Searchable;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.data.domain.Page;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+/**
+ * @author huangzqa
+ * @date 2023/06/09
+ */
+@Api(tags = "任务类型")
+@FeignClient(name = "approve")
+public interface IApproveTaskClassFacade {
+
+    /**
+     * 任务类型列表
+     *
+     * @param searchable 查询条件
+     * @return 分页
+     */
+    @ApiOperation(value = "任务类型列表", notes = "任务类型列表")
+    @RequestMapping(value = "v1/task-class/search", method = RequestMethod.POST)
+    Page<ApproveTaskClassDetailRespVO> page(@QueryObject Searchable searchable);
+
+    /**
+     * 删除任务类型
+     *
+     * @param id id
+     * @return 状态
+     */
+    @ApiOperation(value = "删除任务类型", notes = "删除任务类型")
+    @RequestMapping(value = "v1/task-class/{id}", method = RequestMethod.DELETE)
+    ResponseStatus delete(@PathVariable(value = "id") String id);
+
+    /**
+     * 任务类型
+     *
+     * @param approveTaskClassAddReqVO 任务类型
+     * @return 状态
+     */
+    @ApiOperation(value = "任务类型", notes = "任务类型")
+    @RequestMapping(value = "v1/task-class", method = RequestMethod.POST)
+    ResponseDTO<String> save(@Validated @RequestBody ApproveTaskClassAddReqVO approveTaskClassAddReqVO);
+
+    /**
+     * 修改任务类型
+     *
+     * @param approveTaskClassUpdateReqVO 修改任务类型
+     * @return 状态
+     */
+    @ApiOperation(value = "修改任务类型", notes = "修改任务类型")
+    @RequestMapping(value = "v1/task-class", method = RequestMethod.PUT)
+    ResponseDTO<String> update(@Validated @RequestBody ApproveTaskClassUpdateReqVO approveTaskClassUpdateReqVO);
+
+    /**
+     * 获取任务类型详情
+     *
+     * @param id 任务类型ID
+     * @return 状态
+     */
+    @ApiOperation(value = "任务类型详情", notes = "任务类型详情")
+    @RequestMapping(value = "v1/task-class/{id}", method = RequestMethod.GET)
+    ResponseDTO<ApproveTaskClassDetailRespVO> detail(@PathVariable("id") String id);
+
+}

+ 42 - 0
approve-api/src/main/java/com/dragonsoft/dcuc/approve/model/req/ApproveTaskClassAddReqVO.java

@@ -0,0 +1,42 @@
+package com.dragonsoft.dcuc.approve.model.req;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2023/6/9
+ */
+@Data
+public class ApproveTaskClassAddReqVO {
+
+    /**
+     * 任务类型代码
+     */
+    @NotBlank
+    @ApiModelProperty(value = "任务类型代码")
+    private String taskClassCode;
+    /**
+     * 任务类型名称
+     */
+    @NotBlank
+    @ApiModelProperty(value = "任务类型名称")
+    private String taskClassName;
+    /**
+     * 父任务类型ID
+     */
+    @ApiModelProperty(value = "父任务类型ID")
+    private String parentId;
+
+    /**
+     * 来源应用代码
+     */
+    @ApiModelProperty(value = "来源应用代码")
+    private String sourceAppCode;
+}

+ 28 - 0
approve-api/src/main/java/com/dragonsoft/dcuc/approve/model/req/ApproveTaskClassUpdateReqVO.java

@@ -0,0 +1,28 @@
+package com.dragonsoft.dcuc.approve.model.req;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2023/6/9
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ApproveTaskClassUpdateReqVO extends ApproveTaskClassAddReqVO {
+
+    /**
+     * 主键
+     */
+    @NotBlank
+    @ApiModelProperty(value = "主键")
+    private String id;
+
+}

+ 71 - 0
approve-api/src/main/java/com/dragonsoft/dcuc/approve/model/resp/ApproveTaskClassDetailRespVO.java

@@ -0,0 +1,71 @@
+package com.dragonsoft.dcuc.approve.model.resp;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2023/6/9
+ */
+@Data
+public class ApproveTaskClassDetailRespVO {
+
+    /**
+     * 主键
+     */
+    @NotBlank
+    @ApiModelProperty(value = "主键")
+    private String id;
+
+    /**
+     * 任务类型代码
+     */
+    @NotBlank
+    @ApiModelProperty(value = "任务类型代码")
+    private String taskClassCode;
+    /**
+     * 任务类型名称
+     */
+    @NotBlank
+    @ApiModelProperty(value = "任务类型名称")
+    private String taskClassName;
+    /**
+     * 父任务类型ID
+     */
+    @ApiModelProperty(value = "父任务类型ID")
+    private String parentId;
+
+    /**
+     * 来源应用代码
+     */
+    @ApiModelProperty(value = "来源应用代码")
+    private String sourceAppCode;
+
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createUser;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改人
+     */
+    @ApiModelProperty(value = "修改人")
+    private String updateUser;
+    /**
+     * 修改时间
+     */
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

+ 68 - 0
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/facade/ApproveTaskClassFacade.java

@@ -0,0 +1,68 @@
+package com.dragonsoft.dcuc.approve.facade;
+
+import com.dragoninfo.dcuc.common.utils.ResponseUtil;
+import com.dragonsoft.dcuc.approve.model.ApproveTaskClass;
+import com.dragonsoft.dcuc.approve.model.req.ApproveTaskClassAddReqVO;
+import com.dragonsoft.dcuc.approve.model.req.ApproveTaskClassUpdateReqVO;
+import com.dragonsoft.dcuc.approve.model.resp.ApproveTaskClassDetailRespVO;
+import com.dragonsoft.dcuc.approve.service.IApproveTaskClassService;
+import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
+import com.dragonsoft.duceap.core.search.Searchable;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2023/6/9
+ */
+@RestController
+public class ApproveTaskClassFacade implements IApproveTaskClassFacade {
+
+    private IApproveTaskClassService approveTaskClassService;
+
+    @Autowired
+    public void setApproveTaskClassService(IApproveTaskClassService approveTaskClassService) {
+        this.approveTaskClassService = approveTaskClassService;
+    }
+
+    @Override
+    public Page<ApproveTaskClassDetailRespVO> page(Searchable searchable) {
+        return approveTaskClassService.page(searchable);
+    }
+
+    @Override
+    public ResponseStatus delete(String id) {
+        return approveTaskClassService.delete(id);
+    }
+
+    @Override
+    public ResponseDTO<String> save(ApproveTaskClassAddReqVO approveTaskClassAddReqVO) {
+        ResponseDTO<ApproveTaskClass> saveResp = approveTaskClassService.save(approveTaskClassAddReqVO);
+        if (ResponseUtil.isFail(saveResp)) {
+            return ResponseUtil.dtoFail(saveResp.getMessage());
+        }
+        ApproveTaskClass approveTaskClass = ResponseUtil.getResult(saveResp);
+        return ResponseUtil.newInstance(approveTaskClass.getId());
+    }
+
+    @Override
+    public ResponseDTO<String> update(ApproveTaskClassUpdateReqVO approveTaskClassUpdateReqVO) {
+        ResponseDTO<ApproveTaskClass> updateResp = approveTaskClassService.update(approveTaskClassUpdateReqVO);
+        if (ResponseUtil.isFail(updateResp)) {
+            return ResponseUtil.dtoFail(updateResp.getMessage());
+        }
+        ApproveTaskClass approveTaskClass = ResponseUtil.getResult(updateResp);
+        return ResponseUtil.newInstance(approveTaskClass.getId());
+    }
+
+    @Override
+    public ResponseDTO<ApproveTaskClassDetailRespVO> detail(String id) {
+        return approveTaskClassService.detail(id);
+    }
+}

+ 15 - 0
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/mapper/ApproveTaskClassMapper.java

@@ -0,0 +1,15 @@
+package com.dragonsoft.dcuc.approve.mapper;
+
+import com.dragonsoft.dcuc.approve.model.ApproveTaskClass;
+import com.dragonsoft.duceap.mybaitsplus.core.BaseMybatisMapper;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2023/6/9
+ */
+public interface ApproveTaskClassMapper extends BaseMybatisMapper<ApproveTaskClass> {
+}

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

@@ -0,0 +1,83 @@
+package com.dragonsoft.dcuc.approve.model;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import org.apache.ibatis.type.JdbcType;
+import org.springframework.data.annotation.CreatedBy;
+import org.springframework.data.annotation.CreatedDate;
+import org.springframework.data.annotation.LastModifiedBy;
+import org.springframework.data.annotation.LastModifiedDate;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 任务类型
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2023/6/9
+ */
+@Data
+public class ApproveTaskClass {
+    /**
+     * ID
+     */
+    @TableId(type = IdType.UUID)
+    private String id;
+    /**
+     * 任务类型代码
+     */
+    private String taskClassCode;
+    /**
+     * 任务类型名称
+     */
+    private String taskClassName;
+    /**
+     * 父任务类型ID
+     */
+    private String parentId;
+    /**
+     * 父任务类型代码
+     */
+    private String parentClassCode;
+    /**
+     * 父任务类型名称
+     */
+    private String parentClassName;
+
+    /**
+     * 来源应用代码
+     */
+    private String sourceAppCode;
+
+    /**
+     * 是否删除
+     */
+    @TableLogic
+    private String deleted;
+    /**
+     * 创建人
+     */
+    @CreatedBy
+    private String createUser;
+    /**
+     * 创建时间
+     */
+    @CreatedDate
+    @TableField(jdbcType = JdbcType.VARCHAR, fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /**
+     * 修改人
+     */
+    @LastModifiedBy
+    private String updateUser;
+    /**
+     * 修改时间
+     */
+    @LastModifiedDate
+    @TableField(jdbcType = JdbcType.TIMESTAMP)
+    private Date updateTime;
+
+}

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

@@ -0,0 +1,61 @@
+package com.dragonsoft.dcuc.approve.service;
+
+import com.dragonsoft.dcuc.approve.model.ApproveTaskClass;
+import com.dragonsoft.dcuc.approve.model.req.ApproveTaskClassAddReqVO;
+import com.dragonsoft.dcuc.approve.model.req.ApproveTaskClassUpdateReqVO;
+import com.dragonsoft.dcuc.approve.model.resp.ApproveTaskClassDetailRespVO;
+import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
+import com.dragonsoft.duceap.core.search.Searchable;
+import org.springframework.data.domain.Page;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2023/6/9
+ */
+public interface IApproveTaskClassService {
+
+    /**
+     * 保存任务类型
+     *
+     * @param approveTaskClassAddReqVO 任务类型
+     * @return 任务类型
+     */
+    ResponseDTO<ApproveTaskClass> save(ApproveTaskClassAddReqVO approveTaskClassAddReqVO);
+
+    /**
+     * 更新任务类型
+     *
+     * @param approveTaskClassUpdateReqVO 任务类型
+     * @return 任务类型
+     */
+    ResponseDTO<ApproveTaskClass> update(ApproveTaskClassUpdateReqVO approveTaskClassUpdateReqVO);
+
+    /**
+     * 任务类型详情
+     *
+     * @param id 任务类型ID
+     * @return 任务类型详情
+     */
+    ResponseDTO<ApproveTaskClassDetailRespVO> detail(String id);
+
+    /**
+     * 任务类型列表
+     *
+     * @param searchable 搜索条件
+     * @return 任务类型列表
+     */
+    Page<ApproveTaskClassDetailRespVO> page(Searchable searchable);
+
+    /**
+     * 删除任务类型
+     *
+     * @param id id
+     * @return 状态
+     */
+    ResponseStatus delete(String id);
+}

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

@@ -0,0 +1,126 @@
+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.dragoninfo.dcuc.common.utils.ResponseUtil;
+import com.dragonsoft.dcuc.approve.mapper.ApproveTaskClassMapper;
+import com.dragonsoft.dcuc.approve.model.ApproveTaskClass;
+import com.dragonsoft.dcuc.approve.model.req.ApproveTaskClassAddReqVO;
+import com.dragonsoft.dcuc.approve.model.req.ApproveTaskClassUpdateReqVO;
+import com.dragonsoft.dcuc.approve.model.resp.ApproveTaskClassDetailRespVO;
+import com.dragonsoft.dcuc.approve.service.IApproveTaskClassService;
+import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
+import com.dragonsoft.duceap.base.enums.BooleanEnum;
+import com.dragonsoft.duceap.core.entity.page.PageImpl;
+import com.dragonsoft.duceap.core.search.Searchable;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2023/6/9
+ */
+@Service
+public class ApproveTaskClassServiceImpl implements IApproveTaskClassService {
+
+    private ApproveTaskClassMapper approveTaskClassMapper;
+
+    @Autowired
+    public void setApproveTaskClassMapper(ApproveTaskClassMapper approveTaskClassMapper) {
+        this.approveTaskClassMapper = approveTaskClassMapper;
+    }
+
+    @Override
+    public ResponseDTO<ApproveTaskClass> save(ApproveTaskClassAddReqVO approveTaskClassAddReqVO) {
+        String parentId = approveTaskClassAddReqVO.getParentId();
+        if (StrUtil.isNotBlank(parentId)) {
+            ApproveTaskClass parentApproveTaskClass = approveTaskClassMapper.selectById(parentId);
+            if (ObjectUtil.isNull(parentApproveTaskClass)) {
+                return ResponseUtil.dtoFail("父任务类型不存在");
+            }
+            approveTaskClassAddReqVO.setTaskClassCode(parentApproveTaskClass.getTaskClassCode());
+            approveTaskClassAddReqVO.setTaskClassName(parentApproveTaskClass.getTaskClassName());
+        }
+
+        ApproveTaskClass approveTaskClass = new ApproveTaskClass();
+        BeanUtil.copyProperties(approveTaskClassAddReqVO, approveTaskClass);
+
+        approveTaskClass.setDeleted(BooleanEnum.FALSE.value);
+        approveTaskClassMapper.insert(approveTaskClass);
+        return ResponseUtil.newInstance(approveTaskClass);
+    }
+
+
+    @Override
+    public ResponseDTO<ApproveTaskClass> update(ApproveTaskClassUpdateReqVO approveTaskClassUpdateReqVO) {
+        String id = approveTaskClassUpdateReqVO.getId();
+        ApproveTaskClass approveTaskClass = approveTaskClassMapper.selectById(id);
+        if (ObjectUtil.isNull(approveTaskClass)) {
+            return ResponseUtil.dtoFail("任务类型不存在");
+        }
+        String dbParentId = approveTaskClass.getParentId();
+        String parentId = approveTaskClassUpdateReqVO.getParentId();
+        BeanUtil.copyProperties(approveTaskClassUpdateReqVO, approveTaskClass);
+
+        if (!dbParentId.equalsIgnoreCase(parentId)) {
+            ApproveTaskClass parentApproveTaskClass = approveTaskClassMapper.selectById(parentId);
+            if (ObjectUtil.isNull(parentApproveTaskClass)) {
+                return ResponseUtil.dtoFail("父任务类型不存在");
+            }
+            approveTaskClass.setTaskClassCode(parentApproveTaskClass.getTaskClassCode());
+            approveTaskClass.setTaskClassName(parentApproveTaskClass.getTaskClassName());
+        }
+
+        approveTaskClassMapper.updateById(approveTaskClass);
+        return ResponseUtil.newInstance(approveTaskClass);
+    }
+
+    @Override
+    public ResponseDTO<ApproveTaskClassDetailRespVO> detail(String id) {
+        ApproveTaskClass approveTaskClass = approveTaskClassMapper.selectById(id);
+        if (ObjectUtil.isNull(approveTaskClass)) {
+            return ResponseUtil.dtoFail("任务类型不存在");
+        }
+
+        ApproveTaskClassDetailRespVO approveTaskClassDetailRespVO = new ApproveTaskClassDetailRespVO();
+        BeanUtil.copyProperties(approveTaskClass, approveTaskClassDetailRespVO);
+        return ResponseUtil.newInstance(approveTaskClassDetailRespVO);
+    }
+
+    @Override
+    public Page<ApproveTaskClassDetailRespVO> page(Searchable searchable) {
+        Page<ApproveTaskClass> page = approveTaskClassMapper.pagingBySearchable(searchable);
+        List<ApproveTaskClass> content = page.getContent();
+
+        List<ApproveTaskClassDetailRespVO> voList = new ArrayList<>(content.size());
+        for (ApproveTaskClass approveTaskClass : content) {
+            ApproveTaskClassDetailRespVO approveTaskClassDetailRespVO = new ApproveTaskClassDetailRespVO();
+            BeanUtil.copyProperties(approveTaskClass, approveTaskClassDetailRespVO);
+            voList.add(approveTaskClassDetailRespVO);
+        }
+
+        return new PageImpl<>(voList, page.getPageable(), page.getTotalElements());
+    }
+
+    @Override
+    public ResponseStatus delete(String id) {
+        ApproveTaskClass approveTaskClass = approveTaskClassMapper.selectById(id);
+        if (ObjectUtil.isNull(approveTaskClass)) {
+            return ResponseStatus.fail("任务类型不存在");
+        }
+        approveTaskClass.setDeleted(BooleanEnum.TRUE.value);
+        approveTaskClassMapper.updateById(approveTaskClass);
+        approveTaskClassMapper.deleteById(id);
+        return ResponseStatus.success();
+    }
+}

+ 21 - 0
approve-core-service/src/main/resources/config/mysql/V1_1_0015__add_TaskClass_ClallBackUrl_.sql

@@ -3,3 +3,24 @@ ALTER TABLE t_approve_record_info
 
 ALTER TABLE t_approve_record_info
     ADD approve_task_class varchar(32) NULL COMMENT '审批单任务类型' AFTER `callback_url`;;
+
+DROP TABLE IF EXISTS t_approve_task_class;
+DROP TABLE IF EXISTS t_approve_task_class;
+CREATE TABLE t_approve_task_class
+(
+    ID                VARCHAR(32) NOT NULL COMMENT 'ID',
+    task_class_code   VARCHAR(90) NOT NULL COMMENT '任务类型代码',
+    task_class_name   VARCHAR(90) NOT NULL COMMENT '任务类型名称',
+    parent_id         VARCHAR(32) COMMENT '父任务类型ID',
+    parent_class_code VARCHAR(90) COMMENT '父任务类型代码',
+    parent_class_name VARCHAR(90) COMMENT '父任务类型名称',
+    source_app_code   VARCHAR(90) COMMENT '来源应用代码',
+    deleted           VARCHAR(1)  NOT NULL COMMENT '是否删除',
+    create_user       VARCHAR(32) COMMENT '创建人',
+    create_time       DATETIME COMMENT '创建时间',
+    update_user       VARCHAR(32) COMMENT '修改人',
+    update_time       DATETIME COMMENT '修改时间',
+    PRIMARY KEY (ID)
+) COMMENT = '审批任务类型';
+
+