17 changed files with 325 additions and 20 deletions
@ -0,0 +1,6 @@ |
|||
package com.kms.yxgh.common.mapper.handler; |
|||
|
|||
import com.kms.yxgh.common.dto.DocDto; |
|||
|
|||
public class ListDocHandler extends ListHandler<DocDto> { |
|||
} |
@ -0,0 +1,49 @@ |
|||
package com.kms.yxgh.common.mapper.handler; |
|||
|
|||
import com.alibaba.fastjson.JSON; |
|||
import org.apache.ibatis.type.BaseTypeHandler; |
|||
import org.apache.ibatis.type.JdbcType; |
|||
|
|||
import java.lang.reflect.ParameterizedType; |
|||
import java.sql.CallableStatement; |
|||
import java.sql.PreparedStatement; |
|||
import java.sql.ResultSet; |
|||
import java.sql.SQLException; |
|||
import java.util.Collections; |
|||
import java.util.List; |
|||
|
|||
public class ListHandler<T> extends BaseTypeHandler<List<T>> { |
|||
|
|||
@Override |
|||
public void setNonNullParameter(PreparedStatement preparedStatement, int i, List<T> docDtos, JdbcType jdbcType) throws SQLException { |
|||
preparedStatement.setString(i, JSON.toJSONString(docDtos)); |
|||
} |
|||
|
|||
@Override |
|||
public List<T> getNullableResult(ResultSet resultSet, String s) throws SQLException { |
|||
if (resultSet.getString(s) != null) { |
|||
return JSON.parseArray(resultSet.getString(s), getTClass()); |
|||
} |
|||
return Collections.emptyList(); |
|||
} |
|||
|
|||
@Override |
|||
public List<T> getNullableResult(ResultSet resultSet, int i) throws SQLException { |
|||
if (resultSet.getString(i) != null) { |
|||
return JSON.parseArray(resultSet.getString(i), getTClass()); |
|||
} |
|||
return Collections.emptyList(); |
|||
} |
|||
|
|||
@Override |
|||
public List<T> getNullableResult(CallableStatement callableStatement, int i) throws SQLException { |
|||
if (callableStatement.getString(i) != null) { |
|||
return JSON.parseArray(callableStatement.getString(i), getTClass()); |
|||
} |
|||
return Collections.emptyList(); |
|||
} |
|||
|
|||
private Class<T> getTClass() { |
|||
return (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; |
|||
} |
|||
} |
@ -0,0 +1,6 @@ |
|||
package com.kms.yxgh.common.mapper.handler; |
|||
|
|||
import com.kms.yxgh.common.dto.OperatorDto; |
|||
|
|||
public class ListOperatorHandler extends ListHandler<OperatorDto> { |
|||
} |
@ -0,0 +1,6 @@ |
|||
package com.kms.yxgh.common.mapper.handler; |
|||
|
|||
import com.kms.yxgh.common.dto.SupplementDto; |
|||
|
|||
public class ListSupplementHandler extends ListHandler<SupplementDto> { |
|||
} |
@ -0,0 +1,41 @@ |
|||
package com.kms.yxgh.common.mapper.handler; |
|||
|
|||
import com.alibaba.fastjson.JSON; |
|||
import com.kms.yxgh.common.dto.OperatorDto; |
|||
import org.apache.ibatis.type.BaseTypeHandler; |
|||
import org.apache.ibatis.type.JdbcType; |
|||
|
|||
import java.sql.CallableStatement; |
|||
import java.sql.PreparedStatement; |
|||
import java.sql.ResultSet; |
|||
import java.sql.SQLException; |
|||
|
|||
public class OperatorHandler extends BaseTypeHandler<OperatorDto> { |
|||
public OperatorHandler() { |
|||
} |
|||
|
|||
public void setNonNullParameter(PreparedStatement ps, int i, OperatorDto parameter, JdbcType jdbcType) throws SQLException { |
|||
ps.setString(i, JSON.toJSONString(parameter)); |
|||
} |
|||
|
|||
public OperatorDto getNullableResult(ResultSet rs, String columnName) throws SQLException { |
|||
if (rs.getString(columnName) != null) { |
|||
return JSON.parseObject(rs.getString(columnName), OperatorDto.class); |
|||
} |
|||
return null; |
|||
} |
|||
|
|||
public OperatorDto getNullableResult(ResultSet rs, int columnIndex) throws SQLException { |
|||
if (rs.getString(columnIndex) != null) { |
|||
return JSON.parseObject(rs.getString(columnIndex), OperatorDto.class); |
|||
} |
|||
return null; |
|||
} |
|||
|
|||
public OperatorDto getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { |
|||
if (cs.getString(columnIndex) != null) { |
|||
return JSON.parseObject(cs.getString(columnIndex), OperatorDto.class); |
|||
} |
|||
return null; |
|||
} |
|||
} |
@ -0,0 +1,12 @@ |
|||
package com.kms.yxgh.common.service; |
|||
|
|||
import com.kms.yxgh.common.domain.ApprovalOperator; |
|||
import com.kms.yxgh.common.mapper.ApprovalOperatorMapper; |
|||
import com.shuili.common.core.service.BaseService; |
|||
import lombok.AllArgsConstructor; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
@Service |
|||
@AllArgsConstructor |
|||
public class ApprovalOperatorService extends BaseService<ApprovalOperatorMapper, ApprovalOperator> { |
|||
} |
@ -1,38 +1,102 @@ |
|||
package com.kms.yxgh.common.service; |
|||
|
|||
import cn.hutool.core.collection.CollectionUtil; |
|||
import com.alibaba.fastjson.JSON; |
|||
import com.kms.common.utils.UserUtils; |
|||
import com.kms.yxgh.common.ApprovalStatusEnum; |
|||
import com.kms.yxgh.common.ApprovalTypeEnum; |
|||
import com.kms.yxgh.common.domain.ApprovalOperator; |
|||
import com.kms.yxgh.common.domain.ApprovalTask; |
|||
import com.kms.yxgh.common.dto.ApprovalDetailDto; |
|||
import com.kms.yxgh.common.mapper.ApprovalOperatorMapper; |
|||
import com.kms.yxgh.common.mapper.ApprovalTaskMapper; |
|||
import com.kms.yxgh.common.dto.OperatorDto; |
|||
import com.shuili.common.core.domain.entity.SysUser; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
|
|||
import java.util.Date; |
|||
import java.util.List; |
|||
import java.util.stream.Collectors; |
|||
|
|||
@Service |
|||
@RequiredArgsConstructor |
|||
public class ApprovalService { |
|||
|
|||
private final ApprovalTaskMapper approvalTaskMapper; |
|||
private final ApprovalOperatorMapper approvalOperatorMapper; |
|||
private final ApprovalTaskService approvalTaskService; |
|||
private final ApprovalOperatorService approvalOperatorService; |
|||
|
|||
|
|||
@Transactional(rollbackFor = Exception.class) |
|||
public void submit(String formId, ApprovalTypeEnum approvalType) { |
|||
ApprovalBusinessService service = approvalType.getService(); |
|||
|
|||
if (service != null) { |
|||
ApprovalTask approvalTask = new ApprovalTask(); |
|||
approvalTask.setFormId(formId); |
|||
approvalTask.setBusinessType(approvalType.getValue()); |
|||
approvalTask.setStatus(ApprovalStatusEnum.WAITING.getValue()); |
|||
approvalTaskService.save(approvalTask); |
|||
String taskId = approvalTask.getId(); |
|||
List<OperatorDto> operatorDtoList = service.getOperatorList(formId); |
|||
if (CollectionUtil.isNotEmpty(operatorDtoList)) { |
|||
List<ApprovalOperator> approvalOperators = operatorDtoList.stream().map(operatorDto -> { |
|||
ApprovalOperator approvalOperator = new ApprovalOperator(); |
|||
approvalOperator.setUid(operatorDto.getUid()); |
|||
approvalOperator.setName(operatorDto.getName()); |
|||
approvalOperator.setTaskId(taskId); |
|||
return approvalOperator; |
|||
}).collect(Collectors.toList()); |
|||
if (CollectionUtil.isNotEmpty(approvalOperators)) { |
|||
approvalOperatorService.saveBatch(approvalOperators); |
|||
} |
|||
} |
|||
|
|||
service.updateApprovalStatus(formId, ApprovalStatusEnum.WAITING); |
|||
} |
|||
} |
|||
|
|||
@Transactional(rollbackFor = Exception.class) |
|||
public <T> void rejected(String id, ApprovalTypeEnum approvalType, ApprovalDetailDto<T> dto) { |
|||
ApprovalTask approvalTask = approvalTaskService.getById(id); |
|||
if (approvalTask != null) { |
|||
approvalTask.setStatus(ApprovalStatusEnum.REJECT.getValue()); |
|||
approvalTask.setComment(dto.getComment()); |
|||
approvalTask.setDoc(JSON.toJSONString(dto.getDoc())); |
|||
approvalTask.setOperator(getOperatorDto()); |
|||
approvalTask.setApprovalTime(new Date()); |
|||
approvalTaskService.updateById(approvalTask); |
|||
ApprovalBusinessService service = approvalType.getService(); |
|||
if (service != null) { |
|||
service.updateApprovalStatus(approvalTask.getFormId(), ApprovalStatusEnum.REJECT); |
|||
} |
|||
} |
|||
} |
|||
|
|||
@Transactional(rollbackFor = Exception.class) |
|||
public <T> void passed(String id, ApprovalTypeEnum approvalType, ApprovalDetailDto<T> dto) { |
|||
ApprovalTask approvalTask = approvalTaskService.getById(id); |
|||
if (approvalTask != null) { |
|||
approvalTask.setStatus(ApprovalStatusEnum.PASS.getValue()); |
|||
approvalTask.setComment(dto.getComment()); |
|||
approvalTask.setDoc(JSON.toJSONString(dto.getDoc())); |
|||
approvalTask.setOperator(getOperatorDto()); |
|||
approvalTask.setApprovalTime(new Date()); |
|||
approvalTaskService.updateById(approvalTask); |
|||
ApprovalBusinessService service = approvalType.getService(); |
|||
if (service != null) { |
|||
service.updateApprovalStatus(approvalTask.getFormId(), ApprovalStatusEnum.PASS); |
|||
} |
|||
} |
|||
} |
|||
|
|||
private String getOperatorDto() { |
|||
SysUser user = UserUtils.getUser(); |
|||
if (user == null) { |
|||
throw new RuntimeException("用户未登录"); |
|||
} |
|||
OperatorDto operatorDto = new OperatorDto(); |
|||
operatorDto.setUid(user.getId()); |
|||
operatorDto.setName(user.getUserName()); |
|||
return JSON.toJSONString(operatorDto); |
|||
} |
|||
|
|||
} |
|||
|
@ -0,0 +1,12 @@ |
|||
package com.kms.yxgh.common.service; |
|||
|
|||
import com.kms.yxgh.common.domain.ApprovalTask; |
|||
import com.kms.yxgh.common.mapper.ApprovalTaskMapper; |
|||
import com.shuili.common.core.service.BaseService; |
|||
import lombok.AllArgsConstructor; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
@Service |
|||
@AllArgsConstructor |
|||
public class ApprovalTaskService extends BaseService<ApprovalTaskMapper, ApprovalTask> { |
|||
} |
Loading…
Reference in new issue