|
@@ -0,0 +1,100 @@
|
|
|
+package com.fjhx.service.process.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fjhx.constants.StatusConstant;
|
|
|
+import com.fjhx.entity.process.ProcessInfo;
|
|
|
+import com.fjhx.mapper.process.ProcessInfoMapper;
|
|
|
+import com.fjhx.params.process.ProcessInfoVo;
|
|
|
+import com.fjhx.service.process.ProcessInfoService;
|
|
|
+import com.fjhx.utils.Assert;
|
|
|
+import com.fjhx.utils.WrapperUtil;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author ${author}
|
|
|
+ * @since 2022-08-12
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class ProcessInfoServiceImpl extends ServiceImpl<ProcessInfoMapper, ProcessInfo> implements ProcessInfoService {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<ProcessInfo> getPage(Map<String, String> condition) {
|
|
|
+
|
|
|
+ QueryWrapper<ProcessInfo> wrapper = Wrappers.query();
|
|
|
+
|
|
|
+ WrapperUtil.init(condition, wrapper)
|
|
|
+ .createTimeDesc();
|
|
|
+
|
|
|
+ Page<ProcessInfo> page = page(condition, wrapper);
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void add(ProcessInfoVo processInfoVo) {
|
|
|
+ // 编码
|
|
|
+ String code = processInfoVo.getCode();
|
|
|
+ Assert.notEmpty(code, "流程编码不能为空");
|
|
|
+
|
|
|
+ // 绑定租户id
|
|
|
+ String bindingTenantId = processInfoVo.getBindingTenantId();
|
|
|
+
|
|
|
+ // 最新版本号
|
|
|
+ Integer newestVersion = getNewestVersion(code, bindingTenantId);
|
|
|
+
|
|
|
+ // 如果最新版本号为1,赋值为当前版本
|
|
|
+ if (newestVersion == 1) {
|
|
|
+ processInfoVo.setCurrentVersion(StatusConstant.YES);
|
|
|
+ }
|
|
|
+
|
|
|
+ save(processInfoVo);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void edit(ProcessInfoVo processInfoVo) {
|
|
|
+ updateById(processInfoVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void delete(ProcessInfoVo processInfoVo) {
|
|
|
+ removeById(processInfoVo.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取最新版本号
|
|
|
+ *
|
|
|
+ * @param code 流程编码
|
|
|
+ * @param bindingTenantId 租户id
|
|
|
+ * @return 最新版本号
|
|
|
+ */
|
|
|
+ private Integer getNewestVersion(String code, String bindingTenantId) {
|
|
|
+ // 判断流程是否已存在
|
|
|
+ ProcessInfo processInfo = getOne(Wrappers.<ProcessInfo>lambdaQuery()
|
|
|
+ .eq(ProcessInfo::getCode, code)
|
|
|
+ .eq(ObjectUtil.isNotEmpty(bindingTenantId), ProcessInfo::getBindingTenantId, bindingTenantId)
|
|
|
+ .orderByDesc(ProcessInfo::getParallelVersion)
|
|
|
+ .last("limit 1")
|
|
|
+ );
|
|
|
+
|
|
|
+ if (processInfo == null) {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ return processInfo.getParallelVersion() + 1;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|