package com.se.simu.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.se.simu.domain.po.DataPo; import com.se.simu.domain.po.SimuPo; import com.se.simu.domain.vo.CreateSimuVo; import com.se.simu.domain.vo.SimuVo; import com.se.simu.helper.StringHelper; import com.se.simu.mapper.SimuMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.io.File; import java.util.List; /** * 仿真服务类 * * @author WWW * @date 2024-09-18 */ @Slf4j @Service @SuppressWarnings("ALL") public class SimuService { @Value("${sys.path.in}") String inPath; @Value("${sys.path.out}") String outPath; @Resource SimuMapper simuMapper; public Integer getMaxId() { return simuMapper.selectMaxId(); } public boolean create(CreateSimuVo vo) { return true; } public int del(List ids) { List list = simuMapper.selectBatchIds(ids); if (null != list && list.size() > 0) { for (SimuPo po : list) { try { if (StringHelper.isEmpty(po.getData())) continue; DataPo dp = JSONUtil.toBean(po.getData(), DataPo.class); if (null == dp) continue; delDir(inPath + File.separator + dp.getInPath()); delDir(outPath + File.separator + dp.getOutPath()); } catch (Exception ex) { log.error(ex.getMessage(), ex); } } } return simuMapper.deleteBatchIds(ids); } private boolean delDir(String dir) { File file = new File(dir); if (!file.exists() || !file.isDirectory()) { return false; } return FileUtil.del(dir); } public IPage get(SimuVo vo) { QueryWrapper wrapper = getPageWrapper(vo); Page page = new Page<>(vo.getPageIndex(), vo.getPageSize()); page.addOrder(OrderItem.desc("id")); IPage paged = simuMapper.selectPage(page, wrapper); return paged; } private QueryWrapper getPageWrapper(SimuVo vo) { QueryWrapper wrapper = new QueryWrapper<>(); if (null != vo.getId()) { wrapper.eq("id", vo.getId()); } if (null != vo.getPid()) { wrapper.eq("pid", vo.getPid()); } if (null != vo.getNum()) { wrapper.eq("num", vo.getNum()); } if (!StringUtils.isEmpty(vo.getName())) { wrapper.like("lower(name)", vo.getName().trim().toLowerCase()); } if (!CollUtil.isEmpty(vo.getStatus())) { wrapper.in("status", vo.getStatus()); } return wrapper; } }