package com.se.nsl.service; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.se.nsl.config.PropertiesConfig; import com.se.nsl.domain.po.DataPo; import com.se.nsl.domain.po.Simu; import com.se.nsl.domain.po.SimuData; import com.se.nsl.helper.StringHelper; import com.se.nsl.helper.WebHelper; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.sql.Timestamp; import java.util.Date; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @Slf4j @Service @SuppressWarnings("ALL") public class ResolveService { @Resource SimuService simuService; @Resource PropertiesConfig config; public int start(Simu simu) { Date now = new Date(); String date = StringHelper.YMDHMS2_FORMAT.format(now); SimuData data = JSON.parseObject(simu.getData(), SimuData.class); data.setInPath(date); data.setOutPath(date); data.setEpsg(4548); simu.setServiceName(date); simu.setStatus(1); // 0-创建仿真,1-预处理,2-分析中,10-完成,20-出错 simu.setUpdateTime(new Timestamp(now.getTime())); int rows = simuService.updateById(simu); if (rows > 0) { asyncCall(simu); } return rows; } private void asyncCall(Simu simu) { ExecutorService executor = Executors.newSingleThreadExecutor(); executor.execute(new Runnable() { @Override @SneakyThrows public void run() { cope(simu); } }); executor.shutdown(); } private void cope(Simu simu) { try { DataPo data = JSONUtil.toBean(simu.getData(), DataPo.class); //update(simu, 2, null); //gedbService.copeVectors(token, data, db); //update(simu, 3, null); //gedbService.copeDem(token, data); //update(simu, 4, null); //uwService.createRainFile(data); update(simu, 10, "完成"); } catch (Exception ex) { log.error(ex.getMessage(), ex); update(simu, 20, ex.getMessage()); } } private void update(Simu simu, int status, String rs) { simu.setStatus(status); if (null != rs) simu.setResult(rs); simu.setUpdateTime(WebHelper.getCurrentTimestamp()); simuService.updateById(simu); } }