Pārlūkot izejas kodu

feat: 增加传入开始、结束时间

huangzqa 1 gadu atpakaļ
vecāks
revīzija
3bc7022f9e

+ 2 - 2
approve-api/src/main/java/com/dragonsoft/dcuc/approve/enumresources/PermissionValidTypeEnum.java

@@ -23,9 +23,9 @@ public enum PermissionValidTypeEnum implements ICodeEnum {
      */
     LONG("02", "长期");
 
-    private String value;
+    private final String value;
 
-    private String label;
+    private final String label;
 
     PermissionValidTypeEnum(String value, String label) {
         this.value = value;

+ 2 - 2
approve-api/src/main/java/com/dragonsoft/dcuc/approve/enumresources/QmApproveTypeEnum.java

@@ -24,9 +24,9 @@ public enum QmApproveTypeEnum implements ICodeEnum {
      */
     OPERATE("03", "审批操作处理");
 
-    private String value;
+    private final String value;
 
-    private String label;
+    private final String label;
 
     QmApproveTypeEnum(String value, String label) {
         this.value = value;

+ 50 - 0
approve-api/src/main/java/com/dragonsoft/dcuc/approve/enumresources/ReqBizDataEnum.java

@@ -0,0 +1,50 @@
+package com.dragonsoft.dcuc.approve.enumresources;
+
+import com.dragonsoft.duceap.base.enums.ICodeEnum;
+
+/**
+ * <p>
+ * 请求的时间枚举
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2023/11/13
+ */
+public enum ReqBizDataEnum implements ICodeEnum {
+
+    /**
+     * 任务有效时间开始
+     */
+    BIZ_TERM_START("bizTermStart", "任务有效时间开始", true),
+
+    /**
+     * 任务有效时间结束
+     */
+    BIZ_TERM_END("bizTermEnd", "任务有效时间结束", true);
+
+    private final String value;
+
+    private final String label;
+
+    private final boolean need;
+
+    ReqBizDataEnum(String value, String label, boolean need) {
+        this.value = value;
+        this.label = label;
+        this.need = need;
+    }
+
+    @Override
+    public String getValue() {
+        return this.value;
+    }
+
+    @Override
+    public String getLabel() {
+        return this.label;
+    }
+
+    public boolean isNeed() {
+        return need;
+    }
+}

+ 13 - 5
approve-api/src/main/java/com/dragonsoft/dcuc/approve/model/req/v3/ZeroTrustApproveCreateReqV3VO.java

@@ -1,9 +1,14 @@
 package com.dragonsoft.dcuc.approve.model.req.v3;
 
+import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
 
 import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -15,8 +20,11 @@ import java.util.Map;
  * @author huangzqa
  * @date 2023/5/22
  */
-@Data
-public class ZeroTrustApproveCreateReqV3VO {
+@ApiModel("创建审批请求")
+@Setter
+@Getter
+@ToString
+public class ZeroTrustApproveCreateReqV3VO implements Serializable {
 
     /**
      * 应用令牌
@@ -62,7 +70,7 @@ public class ZeroTrustApproveCreateReqV3VO {
      * “表名”:[{"字段 1":"值","字段 2":"值"},{"字段 1":"值","字段2":"值"}]}
      */
     @ApiModelProperty("表单")
-    private Map<String, List<Map<String, String>>> bo;
+    private Map<String, List<Map<String, Object>>> bo;
 
     /**
      * 应用接收审批结果地址(应用开发的接收审批结果变动的地址)
@@ -76,7 +84,7 @@ public class ZeroTrustApproveCreateReqV3VO {
      * 扩展字段
      */
     @ApiModelProperty("业务数据")
-    private Map<String, String> bizData;
+    private Map<String, Object> bizData;
 
     /**
      * 签名

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

@@ -87,6 +87,7 @@ public class BuSyncBusinessImpl implements IBuSyncBusiness {
         this.restTemplate = restTemplate;
     }
 
+    @Override
     @CacheLock
     public ResponseStatus syncTuBu() {
         List<ApproveRecordInfo> unSyncList = approveRecordService.getUnSyncList();
@@ -133,6 +134,7 @@ public class BuSyncBusinessImpl implements IBuSyncBusiness {
      * @param approveRecordInfo 请求同步请求
      * @return 状态
      */
+    @Override
     public ResponseStatus syncToBu(ApproveRecordInfo approveRecordInfo) {
         Assert.notNull(approveRecordInfo);
 

+ 84 - 2
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/facade/api/v3/ApiV3ApproveFacade.java

@@ -1,8 +1,12 @@
 package com.dragonsoft.dcuc.approve.facade.api.v3;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.lang.Assert;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.dragoninfo.dcuc.common.Constants;
 import com.dragoninfo.dcuc.common.entity.Proofs;
 import com.dragoninfo.dcuc.common.utils.LangUtil;
 import com.dragoninfo.dcuc.common.utils.ResponseUtil;
@@ -34,6 +38,9 @@ import com.dragonsoft.dcuc.approve.service.IApproveService;
 import com.dragonsoft.dcuc.approve.service.IApproveTaskClassService;
 import com.dragonsoft.dcuc.approve.threadlocal.ThreadLocalProofsHolder;
 import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
+import com.dragonsoft.duceap.commons.util.date.DateConst;
+import com.dragonsoft.duceap.commons.util.date.DateUtils;
 import com.dragonsoft.duceap.commons.util.enums.EnumUtils;
 import com.dragonsoft.duceap.commons.util.json.JsonUtils;
 import com.dragonsoft.duceap.duwf.api.model.TaskRequest;
@@ -42,6 +49,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.text.ParseException;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
@@ -132,8 +140,12 @@ public class ApiV3ApproveFacade implements IApiV3ApproveFacade {
             return ZeroTrustResultDataVO.operateFailMessage("taskId格式出错");
         }
 
-        Map<String, List<Map<String, String>>> bo = zeroTrustApproveCreateReqV3VO.getBo();
-        Map<String, String> bizData = zeroTrustApproveCreateReqV3VO.getBizData();
+        Map<String, List<Map<String, Object>>> bo = zeroTrustApproveCreateReqV3VO.getBo();
+        Map<String, Object> bizData = zeroTrustApproveCreateReqV3VO.getBizData();
+        ResponseStatus checkBizDataStatus = checkBizData(bizData);
+        if (ResponseUtil.isFail(checkBizDataStatus)) {
+            return ZeroTrustResultDataVO.operateFailMessage("bizData中key值:" + checkBizDataStatus.getMessage());
+        }
 
         //  查询应用令牌信息,获取人员信息
         ZeroTrustAppTokenInfoRespVO appTokenInfo = bimBusiness.getAppTokenInfo(appTokenId);
@@ -192,6 +204,9 @@ public class ApiV3ApproveFacade implements IApiV3ApproveFacade {
             BeanUtil.copyProperties(bizData, resourceInfoReqVO);
         }
 
+        Date startTime = getBizData(bizData, ReqBizDataEnum.BIZ_TERM_START);
+        Date startEnd = getBizData(bizData, ReqBizDataEnum.BIZ_TERM_END);
+
         ApprovalInfoReqVO approvalInfoReqVO = new ApprovalInfoReqVO();
         approvalInfoReqVO.setProcessTitle(title);
         approvalInfoReqVO.setProcessType(processType);
@@ -213,6 +228,8 @@ public class ApiV3ApproveFacade implements IApiV3ApproveFacade {
         approvalInfoReqVO.setFlowType(FlowTypeEnum.OTHER.getValue());
         approvalInfoReqVO.setApplicantIp(applicantIp);
         approvalInfoReqVO.setApplicantAppToken(appTokenId);
+        approvalInfoReqVO.setStartTime(startTime);
+        approvalInfoReqVO.setEndTime(startEnd);
 
         ApproveRecordInfo approveRecordInfo = approveService.saveBase(approvalInfoReqVO, ManageDisposeTypeEnum.INSERT, new Date());
         String processInstanceId = approveRecordInfo.getProcessInstanceId();
@@ -285,4 +302,69 @@ public class ApiV3ApproveFacade implements IApiV3ApproveFacade {
 
         return ZeroTrustMessageRespVO.messageEnumMessage(ZeroTrustBusinessRespEnum.SUCCESS);
     }
+
+    /**
+     * 检查业务数据
+     *
+     * @param bizDataMap 业务数据
+     * @return 状态
+     */
+    public ResponseStatus checkBizData(Map<String, Object> bizDataMap) {
+        if (CollUtil.isEmpty(bizDataMap)) {
+            return ResponseStatus.fail("业务数据不可为空");
+        }
+
+        StringBuilder errorMessageBuilder = new StringBuilder();
+        for (ReqBizDataEnum reqBizDataEnum : ReqBizDataEnum.values()) {
+            String value = reqBizDataEnum.getValue();
+            boolean containsKey = bizDataMap.containsKey(value);
+            if (!containsKey) {
+                if (reqBizDataEnum.isNeed()) {
+                    String errorMessage = String.format("字段:%s 必填 ", value);
+                    errorMessageBuilder.append(errorMessage).append(Constants.CHINESE_COMMA);
+                }
+            }
+        }
+        String errorMessage = errorMessageBuilder.toString();
+        if (StrUtil.isNotBlank(errorMessage)) {
+            return ResponseStatus.fail(LangUtil.subLastSymbol(errorMessage, Constants.CHINESE_COMMA));
+        }
+
+        return ResponseStatus.success();
+    }
+
+    /**
+     * 获取业务数据
+     *
+     * @param bizDataMap     业务数据
+     * @param reqBizDataEnum 业务数据枚举
+     * @param <T>            泛型
+     * @return 值
+     */
+    @SuppressWarnings("unchecked")
+    protected <T> T getBizData(Map<String, Object> bizDataMap, ReqBizDataEnum reqBizDataEnum) {
+        Assert.notEmpty(bizDataMap);
+        Assert.notNull(reqBizDataEnum);
+        Object object = bizDataMap.get(reqBizDataEnum.getValue());
+        switch (reqBizDataEnum) {
+            case BIZ_TERM_START:
+            case BIZ_TERM_END:
+                String temString = object.toString();
+                try {
+                    object = DateUtils.getDate(temString, DateConst.HYPHEN_DISPLAY_TIME);
+                } catch (ParseException e) {
+                    log.error("parse to date error :{}", temString, e);
+                    return null;
+                }
+                break;
+            default:
+                break;
+        }
+
+        if (ObjectUtil.isNull(object)) {
+            return null;
+        }
+
+        return (T) object;
+    }
 }