| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- package com.qdport.service.impl;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.qdport.entity.PolicyStrive;
- import com.qdport.entity.PolicyTodo;
- import com.qdport.enums.QDPortEnum;
- import com.qdport.mapper.PolicyTodoMapper;
- import com.qdport.modules.system.entity.SysUser;
- import com.qdport.modules.system.service.TSysUserService;
- import com.qdport.query.QueryWrapperBuilder;
- import com.qdport.service.PolicyFlowNoService;
- import com.qdport.service.PolicyStriveService;
- import com.qdport.util.StringUtil;
- import com.qdport.vo.PolicyStriveVO;
- import com.qdport.workflow.process.model.WfProcess;
- import com.qdport.workflow.process.service.IWfProcessService;
- import lombok.AllArgsConstructor;
- import com.qdport.entity.PolicyCase;
- import com.qdport.query.PolicyCaseQuery;
- import com.qdport.vo.PolicyCaseVO;
- import com.qdport.mapper.PolicyCaseMapper;
- import com.qdport.service.PolicyCaseService;
- import com.qdport.wrapper.PolicyCaseWrapper;
- import com.qdport.core.tool.utils.BeanUtil;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import javax.annotation.Resource;
- import java.util.Date;
- import java.util.List;
- import java.util.stream.Collectors;
- /**
- * 案例分享
- *
- * @author yuheng
- * @since 1.0.0 2024-10-17
- */
- @Service
- public class PolicyCaseServiceImpl extends ServiceImpl<PolicyCaseMapper, PolicyCase> implements PolicyCaseService {
- @Resource
- private PolicyFlowNoService policyFlowNoService;
- @Resource
- private PolicyStriveService policyStriveService;
- @Resource
- private IWfProcessService processService;
- @Resource
- private PolicyTodoMapper policyTodoMapper;
- @Resource
- private TSysUserService sysUserService;
- @Value("${processDefKey.policyCase}")
- private String processDefKey;
- @Override
- public IPage<PolicyCaseVO> page(PolicyCaseQuery query) {
- IPage<PolicyCase> page = new Page<>(query.getPage(), query.getSize());
- page = baseMapper.selectPage(page, getWrapper(query));
- return PolicyCaseWrapper.build().pageVO(page);
- }
- private QueryWrapper<PolicyCase> getWrapper(PolicyCaseQuery query) {
- QueryWrapper<PolicyCase> wrapper = QueryWrapperBuilder.buildQueryWrapper(query, PolicyCase.class);
- wrapper.orderByDesc("CREATE_TIME");
- QueryWrapper<PolicyStrive> striveWrapper = new QueryWrapper<>();
- if (StringUtil.isNotEmpty(query.getZcName())) {
- striveWrapper.like("NAME", query.getZcName());
- }
- if (StringUtil.isNotEmpty(query.getZcLevel())) {
- striveWrapper.eq("ZC_LEVEL", query.getZcLevel());
- }
- if (StringUtil.isNotEmpty(query.getZcType())) {
- striveWrapper.eq("ZC_TYPE", query.getZcType());
- }
- if (StringUtil.isNotEmpty(query.getDocNo())) {
- striveWrapper.like("DOC_NO", query.getDocNo());
- }
- if (StringUtil.isNotEmpty(query.getBeginCreateTime())) {
- striveWrapper.gt("CREATE_TIME", query.getBeginCreateTime());
- }
- if (StringUtil.isNotEmpty(query.getEndCreateTime())) {
- striveWrapper.lt("CREATE_TIME", query.getEndCreateTime());
- }
- if (!striveWrapper.isEmptyOfEntity()) {
- List<PolicyStrive> striveList = policyStriveService.list(striveWrapper);
- if (!striveList.isEmpty()) {
- List<String> idList = striveList.stream().map(PolicyStrive::getId).collect(Collectors.toList());
- wrapper.in("STRIVE_ID", idList);
- }
- }
- if (StringUtil.isNotEmpty(query.getDeptId())) {
- QueryWrapper<SysUser> userWrapper = new QueryWrapper<>();
- userWrapper.eq("dept_id", query.getDeptId());
- List<SysUser> userList = sysUserService.list(userWrapper);
- List<String> userIdList = userList.stream().map(SysUser::getId).collect(Collectors.toList());
- wrapper.in("create_id", userIdList);
- }
- return wrapper;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void save(PolicyCaseVO vo) {
- String flowNo = policyFlowNoService.getFlowNo(QDPortEnum.FLOWNO_TYPE_CASE.getValue());
- vo.setCreateTime(new Date());
- vo.setUpdateTime(new Date());
- vo.setBusinessNo(flowNo);
- PolicyCase entity = BeanUtil.copy(vo, PolicyCase.class);
- baseMapper.insert(entity);
- PolicyStrive strive = new PolicyStrive();
- strive.setId(vo.getStriveId());
- strive.setIsCase(1);
- policyStriveService.updateById(strive);
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void update(PolicyCaseVO vo) {
- vo.setUpdateTime(new Date());
- PolicyCase entity = BeanUtil.copy(vo, PolicyCase.class);
- updateById(entity);
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void delete(List<String> idList) {
- removeByIds(idList);
- for (String id : idList) {
- PolicyStrive strive = new PolicyStrive();
- strive.setId(id);
- strive.setIsCase(0);
- policyStriveService.updateById(strive);
- }
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void saveApprove(PolicyCaseVO vo) {
- JSONObject body = new JSONObject();
- String processInstanceId = processService.startProcessInstanceByKey(processDefKey, vo.getId(), body);
- String processTaskId = processService.getTaskIdByProcessInstanceId(processInstanceId);
- vo.setProcessInstanceId(processInstanceId);
- vo.setProcessTaskId(processTaskId);
- if (StringUtil.isEmpty(vo.getId())) {
- vo.setStatus(QDPortEnum.POLICY_CASE_STATUS_APPROVE.getValue());
- save(vo);
- } else {
- vo.setStatus(QDPortEnum.POLICY_CASE_STATUS_APPROVE.getValue());
- update(vo);
- }
- PolicyStrive strive = policyStriveService.getById(vo.getStriveId());
- PolicyStriveVO striveVO = new PolicyStriveVO();
- BeanUtils.copyProperties(strive, striveVO);
- vo.setPolicyStrive(striveVO);
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void approve(PolicyCaseVO vo) {
- PolicyCase policyCase = baseMapper.selectById(vo.getId());
- vo.setProcessInstanceId(policyCase.getProcessInstanceId());
- vo.setProcessTaskId(policyCase.getProcessTaskId());
- WfProcess process = new WfProcess();
- process.setTaskId(vo.getProcessTaskId());
- process.setProcessDefinitionId(vo.getProcessDefinitionId());
- process.setProcessInstanceId(vo.getProcessInstanceId());
- process.setPass(true);
- process.setComment("同意");
- processService.completeTask(process);
- String processTaskId = processService.getTaskIdByProcessInstanceId(vo.getProcessInstanceId());
- vo.setProcessTaskId(processTaskId);
- vo.setStatus(QDPortEnum.POLICY_CASE_STATUS_DONE.getValue());
- vo.setUpdateTime(new Date());
- updateById(vo);
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void refuse(PolicyCaseVO vo) {
- PolicyCase policyCase = baseMapper.selectById(vo.getId());
- vo.setProcessDefinitionId(policyCase.getProcessDefinitionId());
- vo.setProcessTaskId(policyCase.getProcessTaskId());
- WfProcess process = new WfProcess();
- process.setTaskId(vo.getProcessTaskId());
- process.setProcessDefinitionId(vo.getProcessDefinitionId());
- process.setProcessInstanceId(vo.getProcessInstanceId());
- process.setPass(false);
- process.setComment(vo.getComment());
- processService.completeTask(process);
- String processTaskId = processService.getTaskIdByProcessInstanceId(vo.getProcessInstanceId());
- vo.setProcessTaskId(processTaskId);
- vo.setStatus(QDPortEnum.POLICY_CASE_STATUS_INACTIVE.getValue());
- vo.setUpdateTime(new Date());
- updateById(vo);
- QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
- todoQueryWrapper.eq("REF_ID", vo.getId());
- todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_CASE.getValue());
- todoQueryWrapper.eq("TODO_TYPE", QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
- todoQueryWrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
- PolicyTodo todo = new PolicyTodo();
- todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_DONE.getValue());
- policyTodoMapper.update(todo, todoQueryWrapper);
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void withdraw(PolicyCaseVO vo) {
- PolicyCase policyCase = baseMapper.selectById(vo.getId());
- vo.setProcessTaskId(policyCase.getProcessTaskId());
- WfProcess process = new WfProcess();
- process.setTaskId(vo.getProcessTaskId());
- process.setWithdrawType("wf_withdraw_end");
- processService.terminateProcess(process);
- vo.setStatus(QDPortEnum.POLICY_CASE_STATUS_ACTIVE.getValue());
- vo.setUpdateTime(new Date());
- updateById(vo);
- QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
- todoQueryWrapper.eq("REF_ID", vo.getId());
- todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_CASE.getValue());
- todoQueryWrapper.eq("TODO_TYPE", QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
- todoQueryWrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
- PolicyTodo todo = new PolicyTodo();
- todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_CANCEL.getValue());
- policyTodoMapper.update(todo, todoQueryWrapper);
- }
- }
|