|
@@ -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;
|
|
|
+ }
|
|
|
}
|