package cn.com.goldenwater.dcproj.service.impl.ducha; import cn.com.goldenwater.dcproj.dao.AttInspTypeDao; import cn.com.goldenwater.dcproj.dao.BisInspWorkInfoDao; import cn.com.goldenwater.dcproj.dao.GeneralInfoDao; import cn.com.goldenwater.dcproj.model.AttInspType; import cn.com.goldenwater.dcproj.model.BisInspWorkInfo; import cn.com.goldenwater.dcproj.model.GwComFile; import cn.com.goldenwater.dcproj.model.SttmEntm; import cn.com.goldenwater.dcproj.param.BisInspWorkInfoParam; import cn.com.goldenwater.dcproj.service.CountTaskService; import cn.com.goldenwater.dcproj.service.ErrorService; import cn.com.goldenwater.dcproj.service.GwComFileService; import cn.com.goldenwater.id.util.UuidUtil; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.FileInputStream; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @Service public class CountTaskServiceImpl implements CountTaskService { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private GeneralInfoDao generalInfoDao; @Autowired private BisInspWorkInfoDao inspWorkInfoDao; @Autowired private AttInspTypeDao attInspTypeDao; @Autowired private ErrorService errorService; @Value("${getFile.prefix}") public String prefix; @Value("${web.upload-path}") public String fileDir; @Autowired private GwComFileService gwComFileService; @Override public void countData(String ptype) { ExecutorService executorService = Executors.newCachedThreadPool(); final List inspTypeList=attInspTypeDao.findList(null); for (int i = 0; i < inspTypeList.size(); i++) { String code=inspTypeList.get(i).getCode(); int iType=Integer.parseInt(code); Mythread thread=new Mythread(iType+"",""); // 在未来某个时间执行给定的命令 executorService.execute(thread); } executorService.shutdown(); logger.info("end with count data"); } @Override public void washWxPic(HttpServletRequest request) { List gwComFiles =gwComFileService.findLongFileExt(); if(gwComFiles==null ||gwComFiles.isEmpty()){ logger.info("无图片需要处理"); return ; } logger.info("处理图片数量:"+gwComFiles.size()); for(GwComFile comFile:gwComFiles){ String path=comFile.getFilePath().replace(prefix,""); String pathFile=fileDir+path; File oldFile=new File(pathFile); String target=comFile.getId()+"."+comFile.getFileExt(); String savePath=pathFile.replace(target,""); logger.info("savePath-->"+savePath); try { FileInputStream inputStream=new FileInputStream(oldFile); comFile.setFilePath(comFile.getFilePath().replace(comFile.getFileExt(),"png")); comFile.setFileExt("png"); File newFile=new File(savePath, comFile.getId() + ".png" ); FileUtils.copyInputStreamToFile(inputStream, newFile); gwComFileService.update(comFile); inputStream.close(); }catch (Exception e){ errorService.addError(e,request); } } } //创建数据 private void modeData(String ptype,String province){ List workInfoList = generalInfoDao.getWorkInfoByPersId(ptype,province); if (workInfoList.size() > 0) { BisInspWorkInfoParam workInfoParam=new BisInspWorkInfoParam(); BisInspWorkInfo oldBispWorkInfo=null; SttmEntm sttmEntm=null; for (BisInspWorkInfo workInfo : workInfoList) { if (workInfo.getLon() != null && workInfo.getLat() != null) { //获取督查该对象的开始时间和结束时间 if(StringUtils.isBlank(workInfo.getPersId())){ continue; } sttmEntm = generalInfoDao.getMaxSttmEntm(workInfo.getPersId(), workInfo.getLon(), workInfo.getLat()); if (sttmEntm != null) { if(StringUtils.isNotBlank(sttmEntm.getEntm())&& StringUtils.isNotBlank(sttmEntm.getSttm())) { workInfo.setSttm(sttmEntm.getSttm()); workInfo.setEntm(sttmEntm.getEntm()); workInfo.setId(UuidUtil.uuid()); workInfoParam.setPersId(workInfo.getPersId()); workInfoParam.setObjId(workInfo.getObjId()); oldBispWorkInfo = inspWorkInfoDao.getBy(workInfoParam); if (oldBispWorkInfo != null) { workInfo.setId(oldBispWorkInfo.getId()); logger.info("更新操作--->" + workInfo.toString()); inspWorkInfoDao.update(workInfo); } else { logger.info("添加操作---->" + workInfo.toString()); inspWorkInfoDao.insert(workInfo); } } } } } } } class Mythread implements Runnable{ private String ptype; private String province; public Mythread(String ptype,String province){ this.ptype=ptype; this.province=province; } @Override public void run() { modeData(ptype,province); } } }