| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- package com.qdport.service.impl;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.qdport.entity.PolicyFile;
- import com.qdport.entity.PolicyTodo;
- 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.PolicyFileService;
- import com.qdport.service.PolicyFlowNoService;
- import com.qdport.service.PolicyShareService;
- import com.qdport.enums.QDPortEnum;
- import com.qdport.util.StringUtil;
- import com.qdport.vo.PolicyFileVO;
- import com.qdport.workflow.process.model.WfProcess;
- import com.qdport.workflow.process.service.IWfProcessService;
- import com.qdport.entity.PolicyShare;
- import com.qdport.query.PolicyShareQuery;
- import com.qdport.vo.PolicyShareVO;
- import com.qdport.mapper.PolicyShareMapper;
- import com.qdport.wrapper.PolicyShareWrapper;
- import com.qdport.core.tool.utils.BeanUtil;
- import org.flowable.engine.HistoryService;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Service;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import org.springframework.transaction.annotation.Transactional;
- import javax.annotation.Resource;
- import java.util.Date;
- import java.util.List;
- import java.util.concurrent.ExecutionException;
- import java.util.concurrent.Future;
- import java.util.stream.Collectors;
- /**
- * 政策共享
- *
- * @author yuheng
- * @since 1.0.0 2024-09-30
- */
- @Service
- public class PolicyShareServiceImpl extends ServiceImpl<PolicyShareMapper, PolicyShare> implements PolicyShareService {
- @Resource
- private PolicyFlowNoService policyFlowNoService;
- @Resource
- private PolicyFileService policyFileService;
- @Resource
- private IWfProcessService processService;
- @Resource
- private PolicyTodoMapper policyTodoMapper;
- @Resource
- private TSysUserService sysUserService;
- @Value("${processDefKey.policyShare}")
- private String processDefKey;
- @Override
- public IPage<PolicyShareVO> page(PolicyShareQuery query) {
- IPage<PolicyShare> page = new Page<>(query.getPage(), query.getSize());
- page = baseMapper.selectPage(page, getWrapper(query));
- return PolicyShareWrapper.build().pageVO(page);
- }
- private QueryWrapper<PolicyShare> getWrapper(PolicyShareQuery query) {
- QueryWrapper<PolicyShare> wrapper = QueryWrapperBuilder.buildQueryWrapper(query, PolicyShare.class);
- wrapper.orderByDesc("CREATE_TIME");
- if(StringUtil.isNotEmpty(query.getCreateId())&& StringUtil.isNotEmpty(query.getUserDeptId())){
- wrapper.apply("(CREATE_ID = " + query.getCreateId() + " or DEPT_ID = " + query.getUserDeptId() + ")");
- }
- return wrapper;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void save(PolicyShareVO vo) {
- String flowNo = policyFlowNoService.getFlowNo(QDPortEnum.FLOWNO_TYPE_SHARE.getValue());
- vo.setCreateTime(new Date());
- vo.setUpdateTime(new Date());
- vo.setBusinessNo(flowNo);
- PolicyShare entity = BeanUtil.copy(vo, PolicyShare.class);
- baseMapper.insert(entity);
- vo.setId(entity.getId());
- QueryWrapper<PolicyFile> fileWrapper = new QueryWrapper<>();
- fileWrapper.eq("REF_ID", entity.getId());
- fileWrapper.eq("REF_TYPE", QDPortEnum.POLICY_FILE_REFTYPE_POLICY_SHARE.getValue());
- policyFileService.remove(fileWrapper);
- List<PolicyFileVO> fileList = vo.getFileList();
- for (PolicyFileVO model : fileList) {
- model.setCreateTime(new Date());
- model.setRefId(entity.getId());
- model.setRefType(QDPortEnum.POLICY_FILE_REFTYPE_POLICY_SHARE.getValue());
- policyFileService.save(model);
- }
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void update(PolicyShareVO vo) {
- vo.setUpdateTime(new Date());
- PolicyShare entity = BeanUtil.copy(vo, PolicyShare.class);
- updateById(entity);
- QueryWrapper<PolicyFile> fileWrapper = new QueryWrapper<>();
- fileWrapper.eq("REF_ID", entity.getId());
- fileWrapper.eq("REF_TYPE", QDPortEnum.POLICY_FILE_REFTYPE_POLICY_SHARE.getValue());
- policyFileService.remove(fileWrapper);
- List<PolicyFileVO> fileList = vo.getFileList();
- for (PolicyFileVO model : fileList) {
- model.setCreateTime(new Date());
- model.setRefId(entity.getId());
- model.setRefType(QDPortEnum.POLICY_FILE_REFTYPE_POLICY_SHARE.getValue());
- policyFileService.save(model);
- }
- }
- @Override
- public void updateById(PolicyShareVO vo) {
- vo.setUpdateTime(new Date());
- PolicyShare entity = BeanUtil.copy(vo, PolicyShare.class);
- updateById(entity);
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void delete(List<String> idList) {
- removeByIds(idList);
- QueryWrapper<PolicyFile> fileWrapper = new QueryWrapper<>();
- fileWrapper.in("REF_ID", idList);
- fileWrapper.eq("REF_TYPE", QDPortEnum.POLICY_FILE_REFTYPE_POLICY_SHARE.getValue());
- policyFileService.remove(fileWrapper);
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void saveApprove(PolicyShareVO 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_SHARE_STATUS_APPROVE.getValue());
- save(vo);
- } else {
- vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_APPROVE.getValue());
- update(vo);
- }
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void approve(PolicyShareVO vo) {
- PolicyShare share = baseMapper.selectById(vo.getId());
- vo.setProcessInstanceId(share.getProcessInstanceId());
- vo.setProcessTaskId(share.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);
- updateById(vo);
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void refuse(PolicyShareVO vo) {
- PolicyShare share = baseMapper.selectById(vo.getId());
- vo.setProcessDefinitionId(share.getProcessDefinitionId());
- vo.setProcessTaskId(share.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_SHARE_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_SHARE.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(PolicyShareVO vo) {
- PolicyShare share = baseMapper.selectById(vo.getId());
- vo.setProcessTaskId(share.getProcessTaskId());
- WfProcess process = new WfProcess();
- process.setTaskId(vo.getProcessTaskId());
- process.setWithdrawType("wf_withdraw_end");
- processService.terminateProcess(process);
- vo.setStatus(QDPortEnum.POLICY_SHARE_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_SHARE.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);
- }
- }
|