update
This commit is contained in:
parent
9870436b8b
commit
4c6abb0bd2
|
@ -27,9 +27,9 @@ public class Generator {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
//表名
|
//表名
|
||||||
String tableName = "t_integrated_notice_user";
|
String tableName = "t_work_flow_file_number";
|
||||||
//表前缀
|
//表前缀
|
||||||
String tablePrefix = "t_integrated_";
|
String tablePrefix = "t_";
|
||||||
//作者—
|
//作者—
|
||||||
String author = "zhouyuan";
|
String author = "zhouyuan";
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ public class Generator {
|
||||||
|
|
||||||
//包配置
|
//包配置
|
||||||
PackageConfig pc = new PackageConfig();
|
PackageConfig pc = new PackageConfig();
|
||||||
pc.setParent("com.ydool.integrated");
|
pc.setParent("com.ydool.oa.workFlow");
|
||||||
pc.setEntity("entity");
|
pc.setEntity("entity");
|
||||||
pc.setServiceImpl("service");
|
pc.setServiceImpl("service");
|
||||||
pc.setMapper("mapper");
|
pc.setMapper("mapper");
|
||||||
|
|
|
@ -14,6 +14,7 @@ import com.ydool.oa.workFlow.data.entity.WorkFlowNotice;
|
||||||
import com.ydool.oa.workFlow.data.vo.WorkFlowNoticeVo;
|
import com.ydool.oa.workFlow.data.vo.WorkFlowNoticeVo;
|
||||||
import com.ydool.oa.workFlow.data.vo.WorkFlowStepVo;
|
import com.ydool.oa.workFlow.data.vo.WorkFlowStepVo;
|
||||||
import com.ydool.oa.workFlow.data.vo.WorkFlowVo;
|
import com.ydool.oa.workFlow.data.vo.WorkFlowVo;
|
||||||
|
import com.ydool.oa.workFlow.service.WorkFlowFileNumberService;
|
||||||
import com.ydool.oa.workFlow.service.WorkFlowNoticeService;
|
import com.ydool.oa.workFlow.service.WorkFlowNoticeService;
|
||||||
import com.ydool.oa.workFlow.service.WorkFlowService;
|
import com.ydool.oa.workFlow.service.WorkFlowService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
|
@ -39,6 +40,9 @@ public class WorkFlowController extends BaseController {
|
||||||
@Autowired
|
@Autowired
|
||||||
private WorkFlowNoticeService workFlowNoticeService;
|
private WorkFlowNoticeService workFlowNoticeService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private WorkFlowFileNumberService workFlowFileNumberService;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发起流程
|
* 发起流程
|
||||||
|
@ -53,6 +57,17 @@ public class WorkFlowController extends BaseController {
|
||||||
return workFlowService.start(vo);
|
return workFlowService.start(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取文件编号
|
||||||
|
*/
|
||||||
|
@GetMapping(value = "getFileNumberByType")
|
||||||
|
@ApiOperation(value = "获取文件编号")
|
||||||
|
@ApiImplicitParam(name = "type", value = "流程类型")
|
||||||
|
@ApiOperationSupport(order = 10)
|
||||||
|
public AjaxResult getFileNumberByType(String type) {
|
||||||
|
return AjaxResult.ok().data(workFlowFileNumberService.getMaxNumber(type));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 撤销流程
|
* 撤销流程
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
package com.ydool.oa.workFlow.data.entity;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.ydool.common.base.BaseEntity;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 工作流程文件编号
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author zhouyuan
|
||||||
|
* @since 2024-05-30
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("t_work_flow_file_number")
|
||||||
|
@ApiModel(value="WorkFlowFileNumber对象", description="工作流程文件编号")
|
||||||
|
public class WorkFlowFileNumber extends BaseEntity{
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "关联流程id")
|
||||||
|
private String workFlowId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "流程类型")
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "文件编号年份")
|
||||||
|
private Integer year;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "文件编号")
|
||||||
|
private Integer number;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
package com.ydool.oa.workFlow.mapper;
|
||||||
|
|
||||||
|
import com.ydool.oa.workFlow.data.entity.WorkFlowFileNumber;
|
||||||
|
import com.github.yulichang.base.MPJBaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 工作流程文件编号 Mapper 接口
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author zhouyuan
|
||||||
|
* @since 2024-05-30
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface WorkFlowFileNumberMapper extends MPJBaseMapper<WorkFlowFileNumber> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取最大编号
|
||||||
|
* @param type
|
||||||
|
* @param year
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Select("select COALESCE(max(number), 0) + 1\n" +
|
||||||
|
"from t_work_flow_file_number\n" +
|
||||||
|
"where type = #{type}\n" +
|
||||||
|
"and year = #{year}")
|
||||||
|
Integer getMaxNumber(@Param("type")String type, @Param("year") Integer year);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,54 @@
|
||||||
|
package com.ydool.oa.workFlow.service;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.ydool.common.base.BaseService;
|
||||||
|
import com.ydool.common.exception.AjaxResultException;
|
||||||
|
import com.ydool.oa.workFlow.data.entity.WorkFlowFileNumber;
|
||||||
|
import com.ydool.oa.workFlow.mapper.WorkFlowFileNumberMapper;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 工作流程文件编号 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author zhouyuan
|
||||||
|
* @since 2024-05-30
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class WorkFlowFileNumberService extends BaseService<WorkFlowFileNumberMapper, WorkFlowFileNumber> {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private WorkFlowFileNumberMapper workFlowFileNumberMapper;
|
||||||
|
|
||||||
|
public synchronized String getMaxNumber(String type) {
|
||||||
|
if (StrUtil.isBlank(type)) {
|
||||||
|
throw new AjaxResultException("type不能为空");
|
||||||
|
}
|
||||||
|
int year = LocalDateTimeUtil.now().getYear();
|
||||||
|
Integer maxNumber = workFlowFileNumberMapper.getMaxNumber(type, year);
|
||||||
|
//maxNumber变成3位数的字符串,少的位数补零
|
||||||
|
return year + String.format("%03d", maxNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public synchronized void setMaxNumber(WorkFlowFileNumber workFlowFileNumber) {
|
||||||
|
try {
|
||||||
|
synchronized (this) {
|
||||||
|
Integer maxNumber = workFlowFileNumberMapper.getMaxNumber(workFlowFileNumber.getType(), workFlowFileNumber.getYear());
|
||||||
|
workFlowFileNumber.setNumber(maxNumber);
|
||||||
|
workFlowFileNumberMapper.insert(workFlowFileNumber);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
//等待1s后重新
|
||||||
|
Thread.sleep(1000);
|
||||||
|
setMaxNumber(workFlowFileNumber);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -5,16 +5,14 @@ import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.util.ObjUtil;
|
import cn.hutool.core.util.ObjUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.ydool.common.base.BaseService;
|
import com.ydool.common.base.BaseService;
|
||||||
import com.ydool.common.data.dto.AjaxResult;
|
import com.ydool.common.data.dto.AjaxResult;
|
||||||
import com.ydool.common.exception.ResultException;
|
import com.ydool.common.exception.ResultException;
|
||||||
import com.ydool.oa.workFlow.data.dto.WorkFlowCountDto;
|
import com.ydool.oa.workFlow.data.dto.WorkFlowCountDto;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlow;
|
import com.ydool.oa.workFlow.data.entity.*;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlowNotice;
|
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlowStep;
|
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlowStepLog;
|
|
||||||
import com.ydool.oa.workFlow.data.vo.WorkFlowStepVo;
|
import com.ydool.oa.workFlow.data.vo.WorkFlowStepVo;
|
||||||
import com.ydool.oa.workFlow.data.vo.WorkFlowVo;
|
import com.ydool.oa.workFlow.data.vo.WorkFlowVo;
|
||||||
import com.ydool.oa.workFlow.data.wrapper.WorkFlowWrapper;
|
import com.ydool.oa.workFlow.data.wrapper.WorkFlowWrapper;
|
||||||
|
@ -28,6 +26,7 @@ import com.ydool.staff.service.IAuditService;
|
||||||
import com.ydool.system.entity.User;
|
import com.ydool.system.entity.User;
|
||||||
import com.ydool.system.service.impl.UserServiceImpl;
|
import com.ydool.system.service.impl.UserServiceImpl;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
@ -63,6 +62,10 @@ public class WorkFlowService extends BaseService<WorkFlowMapper, WorkFlow> {
|
||||||
@Autowired
|
@Autowired
|
||||||
private IAuditService auditService;
|
private IAuditService auditService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
@Lazy
|
||||||
|
private WorkFlowFileNumberService workFlowFileNumberService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发起流程
|
* 发起流程
|
||||||
*
|
*
|
||||||
|
@ -104,6 +107,22 @@ public class WorkFlowService extends BaseService<WorkFlowMapper, WorkFlow> {
|
||||||
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
||||||
boolean flag = save(workFlow);
|
boolean flag = save(workFlow);
|
||||||
|
|
||||||
|
if (!flag) return AjaxResult.fail("发起失败");
|
||||||
|
// 判断是否为轮换或药剂
|
||||||
|
if (vo.getType().equals(WorkFlowTypeEnum.ROTATION.getType()) || vo.getType().equals(WorkFlowTypeEnum.DRUG.getType())) {
|
||||||
|
// 重新计算文件编号
|
||||||
|
WorkFlowFileNumber workFlowFileNumber = new WorkFlowFileNumber();
|
||||||
|
workFlowFileNumber.setWorkFlowId(workFlow.getId());
|
||||||
|
workFlowFileNumber.setType(vo.getType());
|
||||||
|
workFlowFileNumber.setYear(LocalDateTime.now().getYear());
|
||||||
|
workFlowFileNumberService.setMaxNumber(workFlowFileNumber);
|
||||||
|
String data = workFlow.getData();
|
||||||
|
data = JSONUtil.toJsonStr(JSONUtil.parseObj(data).set("number", workFlowFileNumber.getYear() + String.format("%03d", workFlowFileNumber.getNumber())));
|
||||||
|
workFlow.setData(data);
|
||||||
|
flag = updateById(workFlow);
|
||||||
|
if (!flag) return AjaxResult.fail("发起失败,请重新发起");
|
||||||
|
}
|
||||||
|
|
||||||
// 2.保存流程步骤
|
// 2.保存流程步骤
|
||||||
WorkFlowStep workFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.START.getType(),
|
WorkFlowStep workFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.START.getType(),
|
||||||
StpUtil.getLoginIdAsString(), WorkFlowStepStatusEnum.SUBMIT.getStatus(), "");
|
StpUtil.getLoginIdAsString(), WorkFlowStepStatusEnum.SUBMIT.getStatus(), "");
|
||||||
|
@ -332,7 +351,6 @@ public class WorkFlowService extends BaseService<WorkFlowMapper, WorkFlow> {
|
||||||
WorkFlowStepLog workFlowStepLog = new WorkFlowStepLog(workFlow);
|
WorkFlowStepLog workFlowStepLog = new WorkFlowStepLog(workFlow);
|
||||||
flag = workFlowStepLogService.save(workFlowStepLog);
|
flag = workFlowStepLogService.save(workFlowStepLog);
|
||||||
|
|
||||||
|
|
||||||
return flag ? AjaxResult.ok().msg("撤回成功") : AjaxResult.fail("撤回失败");
|
return flag ? AjaxResult.ok().msg("撤回成功") : AjaxResult.fail("撤回失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue