package jnpf.flowable.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import jnpf.base.Pagination; import jnpf.base.UserInfo; import jnpf.base.service.SuperServiceImpl; import jnpf.flowable.entity.TemplateEntity; import jnpf.flowable.entity.TemplateUseNumEntity; import jnpf.flowable.mapper.TemplateUseNumMapper; import jnpf.flowable.model.template.TemplateUseNumVo; import jnpf.flowable.model.util.FlowNature; import jnpf.flowable.service.TemplateUseNumService; import jnpf.flowable.util.ServiceUtil; import jnpf.util.StringUtil; import jnpf.util.UserProvider; import jnpf.util.context.RequestContext; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; @Service public class TemplateUseNumServiceImpl extends SuperServiceImpl implements TemplateUseNumService { @Autowired private ServiceUtil serviceUtil; @Override public Boolean insertOrUpdateUseNum(String templateId) { UserInfo user = UserProvider.getUser(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(TemplateUseNumEntity::getTemplateId, templateId); queryWrapper.eq(TemplateUseNumEntity::getUserId, user.getUserId()); TemplateUseNumEntity userNumEntity = this.getOne(queryWrapper); if (userNumEntity == null) { userNumEntity = new TemplateUseNumEntity(); userNumEntity.setUserId(user.getUserId()); userNumEntity.setTemplateId(templateId); userNumEntity.setUseNum(1); userNumEntity.setLastModifyTime(new Date()); return this.save(userNumEntity); } userNumEntity.setUseNum(userNumEntity.getUseNum() + 1); userNumEntity.setLastModifyTime(null); return this.updateById(userNumEntity); } @Override public void deleteUseNum(String templateId, String userId) { if (StringUtil.isNotEmpty(templateId)) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(TemplateUseNumEntity::getTemplateId, templateId); if (StringUtil.isNotEmpty(userId)) { queryWrapper.eq(TemplateUseNumEntity::getUserId, userId); } this.remove(queryWrapper); } } @Override public List getMenuUseNum(int i, List authFlowList) { Pagination pagination = new Pagination(); pagination.setPageSize(12); UserInfo user = UserProvider.getUser(); String systemId = serviceUtil.getSystemCodeById(RequestContext.getAppCode()); MPJLambdaWrapper wrapper = JoinWrappers.lambda(TemplateUseNumEntity.class) .select(TemplateEntity::getId, TemplateEntity::getFullName, TemplateEntity::getEnCode, TemplateEntity::getType, TemplateEntity::getIcon, TemplateEntity::getIconBackground ) .leftJoin(TemplateEntity.class, TemplateEntity::getId, TemplateUseNumEntity::getTemplateId) .eq(TemplateUseNumEntity::getUserId, user.getUserId()) .eq(TemplateEntity::getEnabledMark, 1); if (i == 0) { wrapper.orderByDesc(TemplateUseNumEntity::getUseNum); } else if (i == 1) { wrapper.orderByDesc(TemplateUseNumEntity::getLastModifyTime); } if (StringUtil.isNotEmpty(systemId)) { wrapper.eq(TemplateEntity::getSystemId, systemId); } //流程有权限(包含通用) wrapper.and(t -> t.eq(TemplateEntity::getVisibleType, FlowNature.All) .or().in(!authFlowList.isEmpty(), TemplateEntity::getId, authFlowList) ); Page page = new Page<>(pagination.getCurrentPage(), pagination.getPageSize()); Page iPage = this.selectJoinListPage(page, TemplateUseNumVo.class, wrapper); return pagination.setData(iPage.getRecords(), page.getTotal()); } }