Ejemplo n.º 1
0
  /** 查询项目信息 */
  public void synProjectInfo(Connection conn, SfUserDTO user) {
    int totalCount = 0;
    int errorCount = 0;
    long resumeTime = 0;
    SynLogDTO logDTO = null;
    SynLogUtil logUtil = new SynLogUtil();
    long start = System.currentTimeMillis();
    try {
      logDTO = new SynLogDTO();
      logDTO.setSynType(SrvType.SRV_PA_PROJECT);
      logDTO.setCreatedBy(user.getUserId());
      logDTO.setSynMsg("同步MIS项目信息开始");
      logUtil.synLog(logDTO, conn);

      InquiryProjectInfoSrv projectInfoSrv = new InquiryProjectInfoSrv();
      projectInfoSrv.execute();
      SrvReturnMessage srvMessage = projectInfoSrv.getReturnMessage();
      if (srvMessage.getErrorFlag().equalsIgnoreCase("Y")) {
        DTOSet ds = projectInfoSrv.getDs();
        SrvProjectInfoDAO srvProjectInfoDAO = new SrvProjectInfoDAO(user, null, conn);
        for (int i = 0; i < ds.getSize(); i++) {
          SrvProjectInfoDTO dto = (SrvProjectInfoDTO) ds.getDTO(i);
          srvProjectInfoDAO.setDTOParameter(dto);
          try {
            if (SynUpdateDateUtils.getBetweenDays(
                    SynUpdateDateUtils.getLastUpdateDate(SrvType.SRV_PA_PROJECT, conn),
                    (dto.getLastUpdateDate().toString()))
                > 0) {
              if (srvProjectInfoDAO.isProjecdtExists(dto.getSegment1())) {
                srvProjectInfoDAO.updateData();
              } else {
                srvProjectInfoDAO.createData();
              }
              totalCount++;
            }
          } catch (Throwable e) {
            Logger.logError(e);
            logDTO = new SynLogDTO();
            logDTO.setSynType(SrvType.SRV_PA_PROJECT);
            logDTO.setCreatedBy(user.getUserId());
            logDTO.setSynMsg(e.toString());
            logUtil.synLog(logDTO, conn);
            errorCount++;
          }
        }
        if (errorCount == 0) { // 错误数为0时才能更新同步类型日志记录,否则可能造成数据遗漏
          SynUpdateDateUtils.createLastUpdateDate(SrvType.SRV_PA_PROJECT, conn);
          SynUpdateDateUtils.updateLastUpdateDate(SrvType.SRV_PA_PROJECT, conn);
        }
      }
      resumeTime = System.currentTimeMillis() - start;
      logDTO = new SynLogDTO();
      logDTO.setSynType(SrvType.SRV_PA_PROJECT);
      logDTO.setCreatedBy(user.getUserId());
      logDTO.setSynMsg(
          "同步MIS项目信息结束!成功" + totalCount + ",失败" + errorCount + ",耗时" + resumeTime + "毫秒");
      logUtil.synLog(logDTO, conn);
    } catch (Throwable e) {
      Logger.logError(e);
    }
  }