package cn.com.goldenwater.dcproj.service.impl; import cn.com.goldenwater.dcproj.dao.IndexTotalSyDao; import cn.com.goldenwater.dcproj.dto.DcIndexTotalSyDto; import cn.com.goldenwater.dcproj.dto.FileDto; import cn.com.goldenwater.dcproj.dto.ObjDto; import cn.com.goldenwater.dcproj.service.IndexTotalSyService; import cn.com.goldenwater.dcproj.service.OlBisInspOrgService; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @Service public class IndexTotalSyServiceImpl implements IndexTotalSyService { @Autowired private OlBisInspOrgService olBisInspOrgService; @Autowired private IndexTotalSyDao indexTotalSyDao; @Override public List> totalByType(DcIndexTotalSyDto dcIndexTotalSyDto) { getAdCode(dcIndexTotalSyDto); List> objPblmDate = indexTotalSyDao.getObjPblmData(dcIndexTotalSyDto); List> persDate = indexTotalSyDao.getPersData(dcIndexTotalSyDto); List> zgData = indexTotalSyDao.getZgData(dcIndexTotalSyDto); List objTypeList = objPblmDate.stream() .map(o -> MapUtils.getString(o, "CODE")) .filter(StringUtils::isNotBlank) .distinct() .collect(Collectors.toList()); List> ret = new ArrayList<>(); Map all = new HashMap<>(8); all.put("inspName","全部"); all.put("PERSIZE",persDate.stream() .map(o ->MapUtils.getString(o,"PERSID")) .filter(StringUtils::isNotBlank) .distinct() .count() ); all.put("GROUPSIZE", objPblmDate.stream() .map(o ->MapUtils.getString(o,"ID")) .filter(StringUtils::isNotBlank) .distinct() .count() ); all.put("OBJSIZE",objPblmDate.stream() .map(o->MapUtils.getString(o,"OBJ_ID")) .filter(StringUtils::isNotBlank) .distinct() .count() ); all.put("PBLMSIZE",objPblmDate.stream() .map(o->MapUtils.getString(o,"PBLM_ID")) .filter(StringUtils::isNotBlank) .distinct() .count() ); all.put("MENDSIZE",zgData.stream() .map(o->MapUtils.getString(o,"ID")) .filter(StringUtils::isNotBlank) .distinct() .count() ); all.put("PDSIZE",zgData.stream() .filter(o -> "1".equals(MapUtils.getString(o,"PBLM_OUT"))) .map(o -> MapUtils.getString(o,"ID")) .filter(StringUtils::isNotBlank) .distinct() .count() ); all.put("ONLINESIZE","15"); SimpleDateFormat fmt=new SimpleDateFormat("yyyy-MM-dd"); all.put("TODAYPBLM",objPblmDate.stream() .filter(o ->(MapUtils.getString(o,"TIME")).startsWith(fmt.format(new Date()).toString())) .map(o->MapUtils.getString(o,"PBLM_ID")) .filter(StringUtils::isNotBlank) .distinct() .count() ); ret.add(all); for (String objType : objTypeList) { Map map = new HashMap<>(8); map.put("CODE", objType); map.put("inspName", objPblmDate.stream() .filter(o -> objType.equals(MapUtils.getString(o, "CODE"))) .map(o -> MapUtils.getString(o, "INSP_NAME")) .filter(StringUtils::isNotBlank) .distinct() .findFirst()); map.put("PERSIZE", persDate.stream() .filter(o -> objType.equals(MapUtils.getString(o, "CODE"))) .map(o -> MapUtils.getString(o, "PERSID")) .filter(StringUtils::isNotBlank) .distinct() .count() ); map.put("GROUPSIZE", objPblmDate.stream() .filter(o -> objType.equals(MapUtils.getString(o, "CODE"))) .map(o -> MapUtils.getString(o, "ID")) .filter(StringUtils::isNotBlank) .distinct() .count() ); map.put("OBJSIZE", objPblmDate.stream() .filter(o -> objType.equals(MapUtils.getString(o, "CODE"))) .map(o -> MapUtils.getString(o, "OBJ_ID")) .filter(StringUtils::isNotBlank) .distinct() .count() ); map.put("PBLMSIZE", objPblmDate.stream() .filter(o -> objType.equals(MapUtils.getString(o, "CODE"))) .map(o -> MapUtils.getString(o, "PBLM_ID")) .filter(StringUtils::isNotBlank) .distinct() .count() ); map.put("MENDSIZE", zgData.stream() .filter(o -> objType.equals(MapUtils.getString(o, "CODE"))) .map(o -> MapUtils.getString(o, "ID")) .filter(StringUtils::isNotBlank) .distinct() .count() ); map.put("PDSIZE", zgData.stream() .filter(o -> objType.equals(MapUtils.getString(o, "CODE"))) .filter(o -> "1".equals(MapUtils.getString(o, "PBLM_OUT"))) .map(o -> MapUtils.getString(o, "ID")) .filter(StringUtils::isNotBlank) .distinct() .count() ); map.put("ONLINESIZE","15"); map.put("TODAYPBLM", objPblmDate.stream() .filter(o -> objType.equals(MapUtils.getString(o, "CODE"))) .filter(o ->(MapUtils.getString(o,"TIME")).startsWith(fmt.format(new Date()).toString())) .map(o -> MapUtils.getString(o, "PBLM_ID")) .filter(StringUtils::isNotBlank) .distinct() .count() ); ret.add(map); } return ret; } private void getAdCode(DcIndexTotalSyDto dcIndexTotalSyDto) { if(StringUtils.isBlank(dcIndexTotalSyDto.getAdCode())){ dcIndexTotalSyDto.setAdCode(AdLevelUtil.getAddvcd(olBisInspOrgService.getProvince(dcIndexTotalSyDto.getOrgId()))); } else { dcIndexTotalSyDto.setAdCode(AdLevelUtil.getAddvcd(dcIndexTotalSyDto.getAdCode())); } } public static boolean isToday(Date date){ SimpleDateFormat fmt=new SimpleDateFormat("yyyy-MM-dd"); if(fmt.format(date).toString().equals(fmt.format(new Date()).toString())){//格式化为相同格式 return true; }else { return false; } } @Override public List getTopPblm(String adCode,String pType, String currentAdCode) { return indexTotalSyDao.getTopPblm(adCode, pType, currentAdCode); } @Override public List> totalPblmByPtype(DcIndexTotalSyDto dcIndexTotalSyDto) { getAdCode(dcIndexTotalSyDto); List> objPblmData = indexTotalSyDao.getObjPblmData(dcIndexTotalSyDto); List objTypeList = objPblmData.stream() .map(o -> MapUtils.getString(o, "CODE")) .filter(StringUtils::isNotBlank) .distinct() .collect(Collectors.toList()); List> ret = new ArrayList<>(); for (String objType : objTypeList) { Map map = new HashMap<>(3); map.put("CODE", objType); map.put("inspName", objPblmData.stream() .filter(o -> objType.equals(MapUtils.getString(o, "CODE"))) .map(o -> MapUtils.getString(o, "INSP_NAME")) .filter(StringUtils::isNotBlank) .distinct() .findFirst()); map.put("PBLMSIZE", objPblmData.stream() .filter(o -> objType.equals(MapUtils.getString(o, "CODE"))) .map(o -> MapUtils.getString(o, "PBLM_ID")) .filter(StringUtils::isNotBlank) .distinct() .count() ); ret.add(map); } ret = ret.stream() .sorted(Comparator.comparingInt(o -> MapUtils.getIntValue((Map) o, "PBLMSIZE")).reversed()) .limit(10) .collect(Collectors.toList()); return ret; } @Override public ObjDto getObj(String objId) { String ptype = indexTotalSyDao.getObjPtype(objId); int choice = Integer.parseInt(ptype); String tableName = indexTotalSyDao.getTableName(objId); String idName = "ID"; switch (choice){ case 1 : idName = "RGSTR_ID"; break; case 3 : idName = "TRACK_ID"; break; } switch (choice) { case 22: case 34: case 26: case 96: case 1: case 24: case 84: case 106: case 21: case 80: return indexTotalSyDao.getSkObj(objId,idName,tableName); case 7: return indexTotalSyDao.getEmpwtrunObj(objId); default: return indexTotalSyDao.getObj(objId,idName,tableName); } } }