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; |
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.ApprovalStatusEnum; |
||||
import com.kms.yxgh.common.ApprovalTypeEnum; |
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.dto.ApprovalDetailDto; |
||||
import com.kms.yxgh.common.mapper.ApprovalOperatorMapper; |
import com.kms.yxgh.common.dto.OperatorDto; |
||||
import com.kms.yxgh.common.mapper.ApprovalTaskMapper; |
import com.shuili.common.core.domain.entity.SysUser; |
||||
import lombok.RequiredArgsConstructor; |
import lombok.RequiredArgsConstructor; |
||||
import org.springframework.stereotype.Service; |
import org.springframework.stereotype.Service; |
||||
import org.springframework.transaction.annotation.Transactional; |
import org.springframework.transaction.annotation.Transactional; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
import java.util.List; |
||||
|
import java.util.stream.Collectors; |
||||
|
|
||||
@Service |
@Service |
||||
@RequiredArgsConstructor |
@RequiredArgsConstructor |
||||
public class ApprovalService { |
public class ApprovalService { |
||||
|
|
||||
private final ApprovalTaskMapper approvalTaskMapper; |
private final ApprovalTaskService approvalTaskService; |
||||
private final ApprovalOperatorMapper approvalOperatorMapper; |
private final ApprovalOperatorService approvalOperatorService; |
||||
|
|
||||
|
|
||||
@Transactional(rollbackFor = Exception.class) |
@Transactional(rollbackFor = Exception.class) |
||||
public void submit(String formId, ApprovalTypeEnum approvalType) { |
public void submit(String formId, ApprovalTypeEnum approvalType) { |
||||
ApprovalBusinessService service = approvalType.getService(); |
ApprovalBusinessService service = approvalType.getService(); |
||||
|
|
||||
if (service != null) { |
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); |
service.updateApprovalStatus(formId, ApprovalStatusEnum.WAITING); |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
@Transactional(rollbackFor = Exception.class) |
@Transactional(rollbackFor = Exception.class) |
||||
public <T> void rejected(String id, ApprovalTypeEnum approvalType, ApprovalDetailDto<T> dto) { |
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) |
@Transactional(rollbackFor = Exception.class) |
||||
public <T> void passed(String id, ApprovalTypeEnum approvalType, ApprovalDetailDto<T> dto) { |
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