package project.monitor.mining.job; import java.util.ArrayList; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.mysql.cj.util.StringUtils; import kernel.util.ThreadUtils; import project.Constants; import project.monitor.AutoMonitorWalletService; import project.monitor.model.AutoMonitorWallet; import project.party.PartyService; import project.party.model.Party; import project.syspara.SysparaService; /** * 任务定时器,每天启动4次 * */ public class MiningTaskJobHandle { private static Logger logger = LoggerFactory.getLogger(MiningTaskJobHandle.class); private PartyService partyService; private MiningServer miningServer; private AutoMonitorWalletService autoMonitorWalletService; private SysparaService sysparaService; public void taskJob() { String miner_profit_calculate_open = sysparaService.find("miner_profit_calculate_open").getValue(); if (StringUtils.isNullOrEmpty(miner_profit_calculate_open) || "false".equals(miner_profit_calculate_open)) { return; } boolean lock = false; while (true) { if (miningServer.isRunning() || miningServer.islock()) { // 任务启动中,等待完成 ThreadUtils.sleep(1000); continue; } // 拿到权限 break; } try { miningServer.lock(); lock = true; List list = partyService.getAll(); List items = new ArrayList(); List findAllBySucceeded = autoMonitorWalletService.findAllBySucceeded(1); List filter = new ArrayList(); for(AutoMonitorWallet monitorWallet:findAllBySucceeded) { filter.add(monitorWallet.getPartyId().toString()); } for (Party party : list) { if(!filter.contains(party.getId().toString())) { continue; } /* * 非代理 */ if (!Constants.SECURITY_ROLE_AGENT.equals(party.getRolename()) && !Constants.SECURITY_ROLE_AGENTLOW.equals(party.getRolename())) { items.add(party); } } /** * 开始任务处理 */ miningServer.start(items); } catch (Exception e) { logger.error("error:", e); } finally { if (lock) { miningServer.unlock(); } } } public void setPartyService(PartyService partyService) { this.partyService = partyService; } public void setMiningServer(MiningServer miningServer) { this.miningServer = miningServer; } public void setAutoMonitorWalletService(AutoMonitorWalletService autoMonitorWalletService) { this.autoMonitorWalletService = autoMonitorWalletService; } public void setSysparaService(SysparaService sysparaService) { this.sysparaService = sysparaService; } }