|
@@ -12,20 +12,24 @@ import com.qmth.distributed.print.business.bean.params.customFlowParam;
|
|
|
import com.qmth.distributed.print.business.bean.result.FlowTaskApprovePeopleAllResult;
|
|
|
import com.qmth.distributed.print.business.bean.result.FlowTaskResult;
|
|
|
import com.qmth.distributed.print.business.entity.TFCustomFlow;
|
|
|
+import com.qmth.distributed.print.business.entity.TFCustomFlowEntity;
|
|
|
import com.qmth.distributed.print.business.entity.TFFlowApprove;
|
|
|
import com.qmth.distributed.print.business.service.ActivitiService;
|
|
|
+import com.qmth.distributed.print.business.service.TFCustomFlowEntityService;
|
|
|
import com.qmth.distributed.print.business.service.TFCustomFlowService;
|
|
|
import com.qmth.distributed.print.business.service.TFFlowApproveService;
|
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
|
import com.qmth.teachcloud.common.entity.BasicSchool;
|
|
|
import com.qmth.teachcloud.common.entity.SysUser;
|
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
+import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
|
|
|
import com.qmth.teachcloud.common.enums.FlowStatusEnum;
|
|
|
import com.qmth.teachcloud.common.service.CommonCacheService;
|
|
|
import com.qmth.teachcloud.common.util.*;
|
|
|
import io.swagger.annotations.*;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.dao.DuplicateKeyException;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.validation.BindingResult;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
@@ -36,10 +40,7 @@ import javax.validation.Valid;
|
|
|
import javax.validation.constraints.Max;
|
|
|
import javax.validation.constraints.Min;
|
|
|
import java.security.NoSuchAlgorithmException;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
-import java.util.Optional;
|
|
|
+import java.util.*;
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
|
|
/**
|
|
@@ -73,6 +74,9 @@ public class TFCustomFlowController {
|
|
|
@Resource
|
|
|
TFFlowApproveService tfFlowApproveService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ TFCustomFlowEntityService tfCustomFlowEntityService;
|
|
|
+
|
|
|
@ApiOperation(value = "保存和发布流程")
|
|
|
@ApiResponses({@ApiResponse(code = 200, message = "常规信息", response = ResultUtil.class)})
|
|
|
@RequestMapping(value = "/save", method = RequestMethod.POST)
|
|
@@ -97,7 +101,12 @@ public class TFCustomFlowController {
|
|
|
tfCustomFlow = new TFCustomFlow(customFlowSaveDto.getSchoolId(), customFlowSaveDto.getOrgId(), customFlowSaveDto.getName(), customFlowSaveDto.getType(), customFlowSaveDto.getPublish(), JacksonUtil.parseJson(customFlowSaveDto.getCustomFlowLists()), sysUser.getId(), flowBpmnId);
|
|
|
} else {
|
|
|
tfCustomFlow = tfCustomFlowService.getById(customFlowSaveDto.getCustomFlowId());
|
|
|
+ Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("自定义流程数据为空"));
|
|
|
+ if (!tfCustomFlow.getEnable()) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("自定义流程数据已删除");
|
|
|
+ }
|
|
|
tfCustomFlow.updateInfo(sysUser.getId());
|
|
|
+ tfCustomFlow.setActFlowId(null);
|
|
|
}
|
|
|
AtomicInteger atomicInteger = null;
|
|
|
if (Objects.isNull(dbTfCustomFlow)) {//新增
|
|
@@ -113,7 +122,11 @@ public class TFCustomFlowController {
|
|
|
tfCustomFlowService.saveOrUpdate(tfCustomFlow);
|
|
|
} catch (Exception e) {
|
|
|
log.error(SystemConstant.LOG_ERROR, e);
|
|
|
- if (e instanceof ApiException) {
|
|
|
+ if (e instanceof DuplicateKeyException) {
|
|
|
+ String errorColumn = e.getCause().toString();
|
|
|
+ String columnStr = errorColumn.substring(errorColumn.lastIndexOf("key") + 3, errorColumn.length()).replaceAll("'", "");
|
|
|
+ throw ExceptionResultEnum.SQL_ERROR.exception("[" + FieldUniqueEnum.convertToTitle(columnStr) + "]数据不允许重复插入");
|
|
|
+ } else if (e instanceof ApiException) {
|
|
|
ResultUtil.error((ApiException) e, e.getMessage());
|
|
|
} else {
|
|
|
ResultUtil.error(e.getMessage());
|
|
@@ -227,6 +240,12 @@ public class TFCustomFlowController {
|
|
|
}
|
|
|
TFCustomFlow tfCustomFlow = tfCustomFlowService.getById(customFlowParam.getId());
|
|
|
Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("自定义流程数据为空"));
|
|
|
+ if (!customFlowParam.getEnable()) {
|
|
|
+ List<TFCustomFlowEntity> tfCustomFlowEntityList = tfCustomFlowEntityService.findListByCustomFlowId(customFlowParam.getId());
|
|
|
+ if (Objects.nonNull(tfCustomFlowEntityList) && tfCustomFlowEntityList.size() > 0) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("已存在流程数据,不能删除");
|
|
|
+ }
|
|
|
+ }
|
|
|
tfCustomFlow.setEnable(customFlowParam.getEnable());
|
|
|
return ResultUtil.ok(tfCustomFlowService.updateById(tfCustomFlow));
|
|
|
}
|