d1bbcc9b1e13fd010194312456abc7288d84d261.svn-base 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. package cn.com.goldenwater.dcproj.service.impl.ducha;
  2. import cn.com.goldenwater.dcproj.dao.AttInspTypeDao;
  3. import cn.com.goldenwater.dcproj.dao.BisInspWorkInfoDao;
  4. import cn.com.goldenwater.dcproj.dao.GeneralInfoDao;
  5. import cn.com.goldenwater.dcproj.model.AttInspType;
  6. import cn.com.goldenwater.dcproj.model.BisInspWorkInfo;
  7. import cn.com.goldenwater.dcproj.model.GwComFile;
  8. import cn.com.goldenwater.dcproj.model.SttmEntm;
  9. import cn.com.goldenwater.dcproj.param.BisInspWorkInfoParam;
  10. import cn.com.goldenwater.dcproj.service.CountTaskService;
  11. import cn.com.goldenwater.dcproj.service.ErrorService;
  12. import cn.com.goldenwater.dcproj.service.GwComFileService;
  13. import cn.com.goldenwater.id.util.UuidUtil;
  14. import org.apache.commons.io.FileUtils;
  15. import org.apache.commons.lang3.StringUtils;
  16. import org.slf4j.Logger;
  17. import org.slf4j.LoggerFactory;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.beans.factory.annotation.Value;
  20. import org.springframework.stereotype.Service;
  21. import javax.servlet.http.HttpServletRequest;
  22. import java.io.File;
  23. import java.io.FileInputStream;
  24. import java.util.List;
  25. import java.util.concurrent.ExecutorService;
  26. import java.util.concurrent.Executors;
  27. @Service
  28. public class CountTaskServiceImpl implements CountTaskService {
  29. private Logger logger = LoggerFactory.getLogger(getClass());
  30. @Autowired
  31. private GeneralInfoDao generalInfoDao;
  32. @Autowired
  33. private BisInspWorkInfoDao inspWorkInfoDao;
  34. @Autowired
  35. private AttInspTypeDao attInspTypeDao;
  36. @Autowired
  37. private ErrorService errorService;
  38. @Value("${getFile.prefix}")
  39. public String prefix;
  40. @Value("${web.upload-path}")
  41. public String fileDir;
  42. @Autowired
  43. private GwComFileService gwComFileService;
  44. @Override
  45. public void countData(String ptype) {
  46. ExecutorService executorService = Executors.newCachedThreadPool();
  47. final List<AttInspType> inspTypeList=attInspTypeDao.findList(null);
  48. for (int i = 0; i < inspTypeList.size(); i++) {
  49. String code=inspTypeList.get(i).getCode();
  50. int iType=Integer.parseInt(code);
  51. Mythread thread=new Mythread(iType+"","");
  52. // 在未来某个时间执行给定的命令
  53. executorService.execute(thread);
  54. }
  55. executorService.shutdown();
  56. logger.info("end with count data");
  57. }
  58. @Override
  59. public void washWxPic(HttpServletRequest request) {
  60. List<GwComFile> gwComFiles =gwComFileService.findLongFileExt();
  61. if(gwComFiles==null ||gwComFiles.isEmpty()){
  62. logger.info("无图片需要处理");
  63. return ;
  64. }
  65. logger.info("处理图片数量:"+gwComFiles.size());
  66. for(GwComFile comFile:gwComFiles){
  67. String path=comFile.getFilePath().replace(prefix,"");
  68. String pathFile=fileDir+path;
  69. File oldFile=new File(pathFile);
  70. String target=comFile.getId()+"."+comFile.getFileExt();
  71. String savePath=pathFile.replace(target,"");
  72. logger.info("savePath-->"+savePath);
  73. try {
  74. FileInputStream inputStream=new FileInputStream(oldFile);
  75. comFile.setFilePath(comFile.getFilePath().replace(comFile.getFileExt(),"png"));
  76. comFile.setFileExt("png");
  77. File newFile=new File(savePath, comFile.getId() + ".png" );
  78. FileUtils.copyInputStreamToFile(inputStream, newFile);
  79. gwComFileService.update(comFile);
  80. inputStream.close();
  81. }catch (Exception e){
  82. errorService.addError(e,request);
  83. }
  84. }
  85. }
  86. //创建数据
  87. private void modeData(String ptype,String province){
  88. List<BisInspWorkInfo> workInfoList = generalInfoDao.getWorkInfoByPersId(ptype,province);
  89. if (workInfoList.size() > 0) {
  90. BisInspWorkInfoParam workInfoParam=new BisInspWorkInfoParam();
  91. BisInspWorkInfo oldBispWorkInfo=null;
  92. SttmEntm sttmEntm=null;
  93. for (BisInspWorkInfo workInfo : workInfoList) {
  94. if (workInfo.getLon() != null && workInfo.getLat() != null) {
  95. //获取督查该对象的开始时间和结束时间
  96. if(StringUtils.isBlank(workInfo.getPersId())){
  97. continue;
  98. }
  99. sttmEntm = generalInfoDao.getMaxSttmEntm(workInfo.getPersId(), workInfo.getLon(), workInfo.getLat());
  100. if (sttmEntm != null) {
  101. if(StringUtils.isNotBlank(sttmEntm.getEntm())&& StringUtils.isNotBlank(sttmEntm.getSttm())) {
  102. workInfo.setSttm(sttmEntm.getSttm());
  103. workInfo.setEntm(sttmEntm.getEntm());
  104. workInfo.setId(UuidUtil.uuid());
  105. workInfoParam.setPersId(workInfo.getPersId());
  106. workInfoParam.setObjId(workInfo.getObjId());
  107. oldBispWorkInfo = inspWorkInfoDao.getBy(workInfoParam);
  108. if (oldBispWorkInfo != null) {
  109. workInfo.setId(oldBispWorkInfo.getId());
  110. logger.info("更新操作--->" + workInfo.toString());
  111. inspWorkInfoDao.update(workInfo);
  112. } else {
  113. logger.info("添加操作---->" + workInfo.toString());
  114. inspWorkInfoDao.insert(workInfo);
  115. }
  116. }
  117. }
  118. }
  119. }
  120. }
  121. }
  122. class Mythread implements Runnable{
  123. private String ptype;
  124. private String province;
  125. public Mythread(String ptype,String province){
  126. this.ptype=ptype;
  127. this.province=province;
  128. }
  129. @Override
  130. public void run() {
  131. modeData(ptype,province);
  132. }
  133. }
  134. }