|
@@ -28,166 +28,171 @@ import cn.com.qmth.dp.examcloud.oe.entity.question.Paper;
|
|
|
import cn.com.qmth.dp.examcloud.oe.entity.question.PaperDetail;
|
|
|
import cn.com.qmth.dp.examcloud.oe.excel.ExportUtils;
|
|
|
|
|
|
-/**大题下小题数量
|
|
|
+/**
|
|
|
+ * 大题下小题数量
|
|
|
+ *
|
|
|
* @author chenken
|
|
|
*
|
|
|
*/
|
|
|
@Service
|
|
|
public class ExportQuestionsCountService {
|
|
|
|
|
|
- @Autowired
|
|
|
- MongoTemplate mongoTemplate;
|
|
|
+ @Autowired
|
|
|
+ MongoTemplate mongoTemplate;
|
|
|
|
|
|
- public void start() {
|
|
|
- Date start=new Date();
|
|
|
- Query query = new Query();
|
|
|
- query.addCriteria(Criteria.where("orgId").is("22163").and("paperType").is("IMPORT"));
|
|
|
- List<Paper> ps = mongoTemplate.find(query, Paper.class, "paper");
|
|
|
- if (ps != null&&ps.size()>0) {
|
|
|
-// List<String> course= readCourseCode();
|
|
|
-// Map<String, String> courseMap = course.stream().collect(Collectors.toMap(a -> a, a -> a,(k1,k2)->k1));
|
|
|
- List<Paper> psRet=new ArrayList<>();
|
|
|
- for (Paper paper : ps) {
|
|
|
-// if(paper.getName().indexOf("(211)")!=-1) {
|
|
|
- psRet.add(paper);
|
|
|
-// }
|
|
|
- }
|
|
|
- if (psRet != null&&psRet.size()>0) {
|
|
|
- Map<String,RetDto> map=new HashMap<>();
|
|
|
- System.out.println("total:" + psRet.size());
|
|
|
- int index = 0;
|
|
|
- for (Paper paper : psRet) {
|
|
|
- index++;
|
|
|
- System.out.println("index:" + index);
|
|
|
- String cName=paper.getCourseName();
|
|
|
- String cCode=paper.getCourseNo();
|
|
|
- Query query2 = new Query();
|
|
|
-// query2.addCriteria(Criteria.where("paper.$id").is(paper.getId()));
|
|
|
- query2.addCriteria(Criteria.where("paper.$id").is(new ObjectId(paper.getId())));
|
|
|
- List<PaperDetail> ds = mongoTemplate.find(query2, PaperDetail.class, "paperDetail");
|
|
|
- if (ds != null&&ds.size()>0) {
|
|
|
- for (PaperDetail detail : ds) {
|
|
|
- String qName=detail.getName();
|
|
|
- Integer count=detail.getUnitCount();
|
|
|
- String key=cCode+"_"+qName;
|
|
|
- RetDto dto=map.get(key);
|
|
|
- if(dto==null) {
|
|
|
- dto=new RetDto(cName, cCode, qName,0);
|
|
|
- map.put(key, dto);
|
|
|
- }
|
|
|
- dto.setCount(dto.getCount()+count);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- List<RetDto> ret= new ArrayList<RetDto>();
|
|
|
- for(RetDto tem:map.values()) {
|
|
|
- ret.add(tem);
|
|
|
- }
|
|
|
- Collections.sort(ret, new Comparator<RetDto>() {
|
|
|
- @Override
|
|
|
- public int compare(RetDto o1, RetDto o2) {
|
|
|
- String c1 = o1.getCourseCode();
|
|
|
- String c2 = o2.getCourseCode();
|
|
|
- return c1.compareTo(c2);
|
|
|
- }
|
|
|
-
|
|
|
- });
|
|
|
- FileOutputStream fos=null;
|
|
|
- try {
|
|
|
- File file = new File("d:/ret.xlsx");
|
|
|
- if(file.exists()) {
|
|
|
- file.delete();
|
|
|
- }
|
|
|
- file.createNewFile();
|
|
|
- fos = new FileOutputStream(file);
|
|
|
- ExportUtils.makeExcel(RetDto.class, ret, fos);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- } finally {
|
|
|
- if(fos!=null) {
|
|
|
- try {
|
|
|
- fos.close();
|
|
|
- } catch (IOException e) {
|
|
|
- // TODO Auto-generated catch block
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }else {
|
|
|
- System.out.println("total:" + 0);
|
|
|
- }
|
|
|
- }else {
|
|
|
- System.out.println("total:" + 0);
|
|
|
- }
|
|
|
-
|
|
|
- Date end=new Date();
|
|
|
- System.out.println("*****************end:" +((end.getTime()-start.getTime())/(1000*60))+"分钟");
|
|
|
- }
|
|
|
-
|
|
|
-// private List<String> readCourseCode() {
|
|
|
-// List<String> list = new ArrayList<String>();
|
|
|
-// XSSFWorkbook wb = null;
|
|
|
-// try {
|
|
|
-// wb = new XSSFWorkbook("d:\\course.xlsx");
|
|
|
-// XSSFSheet sheet = wb.getSheetAt(0);
|
|
|
-// int rows = sheet.getLastRowNum();
|
|
|
-// for (int i = 1; i <= rows; i++) {
|
|
|
-// XSSFRow row = sheet.getRow(i);
|
|
|
-// list.add(row.getCell(0).getStringCellValue());
|
|
|
-// }
|
|
|
-// } catch (IOException e) {
|
|
|
-// e.printStackTrace();
|
|
|
-// } finally {
|
|
|
-// if (wb != null) {
|
|
|
-// try {
|
|
|
-// wb.close();
|
|
|
-// } catch (IOException e) {
|
|
|
-// // TODO Auto-generated catch block
|
|
|
-// e.printStackTrace();
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// return list;
|
|
|
-// }
|
|
|
+ public void start() {
|
|
|
+ Date start = new Date();
|
|
|
+ Query query = new Query();
|
|
|
+ query.addCriteria(Criteria.where("orgId").is("17351").and("paperType").is("IMPORT"));
|
|
|
+ List<Paper> ps = mongoTemplate.find(query, Paper.class, "paper");
|
|
|
+ if (ps != null && ps.size() > 0) {
|
|
|
+ // List<String> course= readCourseCode();
|
|
|
+ // Map<String, String> courseMap =
|
|
|
+ // course.stream().collect(Collectors.toMap(a -> a, a ->
|
|
|
+ // a,(k1,k2)->k1));
|
|
|
+ List<Paper> psRet = new ArrayList<>();
|
|
|
+ for (Paper paper : ps) {
|
|
|
+ // if(paper.getName().indexOf("(211)")!=-1) {
|
|
|
+ psRet.add(paper);
|
|
|
+ // }
|
|
|
+ }
|
|
|
+ if (psRet != null && psRet.size() > 0) {
|
|
|
+ Map<String, RetDto> map = new HashMap<>();
|
|
|
+ System.out.println("total:" + psRet.size());
|
|
|
+ int index = 0;
|
|
|
+ for (Paper paper : psRet) {
|
|
|
+ index++;
|
|
|
+ System.out.println("index:" + index);
|
|
|
+ String cName = paper.getCourseName();
|
|
|
+ String cCode = paper.getCourseNo();
|
|
|
+ Query query2 = new Query();
|
|
|
+ // query2.addCriteria(Criteria.where("paper.$id").is(paper.getId()));
|
|
|
+ query2.addCriteria(Criteria.where("paper.$id").is(new ObjectId(paper.getId())));
|
|
|
+ List<PaperDetail> ds = mongoTemplate.find(query2, PaperDetail.class, "paperDetail");
|
|
|
+ if (ds != null && ds.size() > 0) {
|
|
|
+ for (PaperDetail detail : ds) {
|
|
|
+ String qName = detail.getName();
|
|
|
+ Integer count = detail.getUnitCount();
|
|
|
+ String key = cCode + "_" + qName;
|
|
|
+ RetDto dto = map.get(key);
|
|
|
+ if (dto == null) {
|
|
|
+ dto = new RetDto(cName, cCode, qName, 0);
|
|
|
+ map.put(key, dto);
|
|
|
+ }
|
|
|
+ dto.setCount(dto.getCount() + count);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
-// public static void main(String[] args) {
|
|
|
-// List<RetDto> ret= new ArrayList<RetDto>();
|
|
|
-// ret.add(new RetDto("cName1", "cCode1", "qName1",21));
|
|
|
-// ret.add(new RetDto("cName2", "cCode2", "qName2",22));
|
|
|
-// ret.add(new RetDto("cName3", "cCode3", "qName3",23));
|
|
|
-// ret.add(new RetDto("cName4", "cCode4", "qName4",24));
|
|
|
-// ret.add(new RetDto("cName5", "cCode7", "qName5",25));
|
|
|
-// ret.add(new RetDto("cName1", "cCode1", "qName2",21));
|
|
|
-// Collections.sort(ret, new Comparator<RetDto>() {
|
|
|
-// @Override
|
|
|
-// public int compare(RetDto o1, RetDto o2) {
|
|
|
-// String c1 = o1.getCourseCode();
|
|
|
-// String c2 = o2.getCourseCode();
|
|
|
-// return c1.compareTo(c2);
|
|
|
-// }
|
|
|
-//
|
|
|
-// });
|
|
|
-// FileOutputStream fos=null;
|
|
|
-// try {
|
|
|
-// File file = new File("d:/ret.xlsx");
|
|
|
-// if(file.exists()) {
|
|
|
-// file.delete();
|
|
|
-// }
|
|
|
-// file.createNewFile();
|
|
|
-// fos = new FileOutputStream(file);
|
|
|
-// ExportUtils.makeExcel(RetDto.class, ret, fos);
|
|
|
-// } catch (Exception e) {
|
|
|
-// e.printStackTrace();
|
|
|
-// } finally {
|
|
|
-// if(fos!=null) {
|
|
|
-// try {
|
|
|
-// fos.close();
|
|
|
-// } catch (IOException e) {
|
|
|
-// // TODO Auto-generated catch block
|
|
|
-// e.printStackTrace();
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
+ List<RetDto> ret = new ArrayList<RetDto>();
|
|
|
+ for (RetDto tem : map.values()) {
|
|
|
+ ret.add(tem);
|
|
|
+ }
|
|
|
+ Collections.sort(ret, new Comparator<RetDto>() {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int compare(RetDto o1, RetDto o2) {
|
|
|
+ String c1 = o1.getCourseCode();
|
|
|
+ String c2 = o2.getCourseCode();
|
|
|
+ return c1.compareTo(c2);
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+ FileOutputStream fos = null;
|
|
|
+ try {
|
|
|
+ File file = new File("d:/ret.xlsx");
|
|
|
+ if (file.exists()) {
|
|
|
+ file.delete();
|
|
|
+ }
|
|
|
+ file.createNewFile();
|
|
|
+ fos = new FileOutputStream(file);
|
|
|
+ ExportUtils.makeExcel(RetDto.class, ret, fos);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ if (fos != null) {
|
|
|
+ try {
|
|
|
+ fos.close();
|
|
|
+ } catch (IOException e) {
|
|
|
+ // TODO Auto-generated catch block
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ System.out.println("total:" + 0);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ System.out.println("total:" + 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ Date end = new Date();
|
|
|
+ System.out.println("*****************end:" + ((end.getTime() - start.getTime()) / (1000 * 60)) + "分钟");
|
|
|
+ }
|
|
|
+
|
|
|
+ // private List<String> readCourseCode() {
|
|
|
+ // List<String> list = new ArrayList<String>();
|
|
|
+ // XSSFWorkbook wb = null;
|
|
|
+ // try {
|
|
|
+ // wb = new XSSFWorkbook("d:\\course.xlsx");
|
|
|
+ // XSSFSheet sheet = wb.getSheetAt(0);
|
|
|
+ // int rows = sheet.getLastRowNum();
|
|
|
+ // for (int i = 1; i <= rows; i++) {
|
|
|
+ // XSSFRow row = sheet.getRow(i);
|
|
|
+ // list.add(row.getCell(0).getStringCellValue());
|
|
|
+ // }
|
|
|
+ // } catch (IOException e) {
|
|
|
+ // e.printStackTrace();
|
|
|
+ // } finally {
|
|
|
+ // if (wb != null) {
|
|
|
+ // try {
|
|
|
+ // wb.close();
|
|
|
+ // } catch (IOException e) {
|
|
|
+ // // TODO Auto-generated catch block
|
|
|
+ // e.printStackTrace();
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // return list;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // public static void main(String[] args) {
|
|
|
+ // List<RetDto> ret= new ArrayList<RetDto>();
|
|
|
+ // ret.add(new RetDto("cName1", "cCode1", "qName1",21));
|
|
|
+ // ret.add(new RetDto("cName2", "cCode2", "qName2",22));
|
|
|
+ // ret.add(new RetDto("cName3", "cCode3", "qName3",23));
|
|
|
+ // ret.add(new RetDto("cName4", "cCode4", "qName4",24));
|
|
|
+ // ret.add(new RetDto("cName5", "cCode7", "qName5",25));
|
|
|
+ // ret.add(new RetDto("cName1", "cCode1", "qName2",21));
|
|
|
+ // Collections.sort(ret, new Comparator<RetDto>() {
|
|
|
+ // @Override
|
|
|
+ // public int compare(RetDto o1, RetDto o2) {
|
|
|
+ // String c1 = o1.getCourseCode();
|
|
|
+ // String c2 = o2.getCourseCode();
|
|
|
+ // return c1.compareTo(c2);
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // });
|
|
|
+ // FileOutputStream fos=null;
|
|
|
+ // try {
|
|
|
+ // File file = new File("d:/ret.xlsx");
|
|
|
+ // if(file.exists()) {
|
|
|
+ // file.delete();
|
|
|
+ // }
|
|
|
+ // file.createNewFile();
|
|
|
+ // fos = new FileOutputStream(file);
|
|
|
+ // ExportUtils.makeExcel(RetDto.class, ret, fos);
|
|
|
+ // } catch (Exception e) {
|
|
|
+ // e.printStackTrace();
|
|
|
+ // } finally {
|
|
|
+ // if(fos!=null) {
|
|
|
+ // try {
|
|
|
+ // fos.close();
|
|
|
+ // } catch (IOException e) {
|
|
|
+ // // TODO Auto-generated catch block
|
|
|
+ // e.printStackTrace();
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
}
|