package com.itstyle.quartz.service.impl; import com.itstyle.quartz.dynamicquery.DynamicQuery; import com.itstyle.quartz.entity.PageBean; import com.itstyle.quartz.entity.QuartzEntity; import com.itstyle.quartz.entity.Result; import com.itstyle.quartz.entity.SysConfigEntity; import com.itstyle.quartz.service.DistrbutionService; import org.quartz.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import java.util.List; /** * 异构系统分发实现类 */ @Service("distrbutionService") public class DistrbutionServiceImpl implements DistrbutionService { @Autowired private DynamicQuery dynamicQuery; /** * 获取异构系统分发列表 * @param sysConfig * @param pageNo * @param pageSize * @return * @throws SchedulerException */ @Override public Result list(SysConfigEntity sysConfig, Integer pageNo, Integer pageSize) throws SchedulerException { String countSql = "SELECT COUNT(*) FROM sys_config AS sys "; if(!StringUtils.isEmpty(sysConfig.getSysName())){ countSql+=" WHERE sys.SYS_NAME = "+sysConfig.getSysName(); } Long totalCount = dynamicQuery.nativeQueryCount(countSql); PageBean data = new PageBean<>(); if(totalCount>0){ StringBuffer nativeSql = new StringBuffer(); nativeSql.append("SELECT sys.ID as id,sys.SYSNAME as sysName,sys.ADDRESS as address,sys.DESCRIPTION as description,sys.association as association,sys.ISENABLE as isEnable,"); nativeSql.append("sys.CRONEXPRESSION as cronExpression "); nativeSql.append("FROM sys_config AS sys "); Object[] params = new Object[]{}; if(!StringUtils.isEmpty(sysConfig.getSysName())){ nativeSql.append(" AND sys.SYS_NAME = ?"); params = new Object[]{sysConfig.getSysName()}; } Pageable pageable = PageRequest.of(pageNo-1,pageSize); List list = dynamicQuery.nativeQueryPagingList(SysConfigEntity.class,pageable, nativeSql.toString(), params); data = new PageBean(list, totalCount); } return Result.ok(data); } /** * 新增异构系统分发配置 * @param sysConfig * @throws Exception */ @Override @Transactional public void save(SysConfigEntity sysConfig){ if(!StringUtils.isEmpty(sysConfig.getId())){ dynamicQuery.update(sysConfig); }else { String countSql = "SELECT COUNT(*) FROM sys_config AS sys "; Long totalCount = dynamicQuery.nativeQueryCount(countSql); sysConfig.setId(Integer.valueOf(Math.toIntExact(totalCount)) + 1); dynamicQuery.save(sysConfig); } } /** * 启用异构系统分发配置 * @param sysConfig */ @Override @Transactional public void enable(SysConfigEntity sysConfig) { sysConfig.setIsEnable("启用"); dynamicQuery.update(sysConfig); } /** * 废弃异构系统分发配置 * @param sysConfig */ @Override @Transactional public void remove(SysConfigEntity sysConfig) { sysConfig.setIsEnable("不启用"); dynamicQuery.update(sysConfig); } }