/** Business logic to execute. */
  public final Response executeCommand(
      Object inputPar,
      UserSessionParameters userSessionPars,
      HttpServletRequest request,
      HttpServletResponse response,
      HttpSession userSession,
      ServletContext context) {
    Connection conn = null;
    PreparedStatement pstmt = null;
    try {
      conn = ConnectionManager.getConnection(context);

      // fires the GenericEvent.CONNECTION_CREATED event...
      EventsManager.getInstance()
          .processEvent(
              new GenericEvent(
                  this,
                  getRequestName(),
                  GenericEvent.CONNECTION_CREATED,
                  (JAIOUserSessionParameters) userSessionPars,
                  request,
                  response,
                  userSession,
                  context,
                  conn,
                  inputPar,
                  null));

      Response responseVO =
          bean.insertItem(
              conn,
              (JournalHeaderVO) inputPar,
              userSessionPars,
              request,
              response,
              userSession,
              context);
      if (responseVO.isError()) {
        conn.rollback();
        return responseVO;
      }

      if (inputPar instanceof JournalHeaderWithVatVO) {
        JournalHeaderWithVatVO vo = (JournalHeaderWithVatVO) inputPar;

        // insert vat rows in the specified vat register...
        Response regRes =
            vatRegisterAction.insertVatRows(
                conn, vo.getVats(), userSessionPars, request, response, userSession, context);
        if (regRes.isError()) {
          conn.rollback();
          return regRes;
        }

        // retrieve payment instalments...
        Response payRes =
            payAction.executeCommand(
                new LookupValidationParams(vo.getPaymentCodeREG10(), new HashMap()),
                userSessionPars,
                request,
                response,
                userSession,
                context);
        if (payRes.isError()) {
          conn.rollback();
          return payRes;
        }
        PaymentVO payVO = (PaymentVO) ((VOListResponse) payRes).getRows().get(0);
        GridParams gridParams = new GridParams();
        gridParams
            .getOtherGridParams()
            .put(ApplicationConsts.PAYMENT_CODE_REG10, vo.getPaymentCodeREG10());
        payRes =
            paysAction.executeCommand(
                gridParams, userSessionPars, request, response, userSession, context);
        if (payRes.isError()) {
          conn.rollback();
          return payRes;
        }
        java.util.List rows = ((VOListResponse) payRes).getRows();

        // create expirations in DOC19 ONLY if:
        // - there are more than one instalment OR
        // - there is only one instalment and this instalment has more than 0 instalment days
        if (rows.size() > 1
            || (rows.size() == 1
                && ((PaymentInstalmentVO) rows.get(0)).getInstalmentDaysREG17().intValue() > 0)) {

          // retrieve internationalization settings (Resources object)...
          ServerResourcesFactory factory =
              (ServerResourcesFactory) context.getAttribute(Controller.RESOURCES_FACTORY);
          Resources resources = factory.getResources(userSessionPars.getLanguageId());

          PaymentInstalmentVO inVO = null;
          pstmt =
              conn.prepareStatement(
                  "insert into DOC19_EXPIRATIONS(COMPANY_CODE_SYS01,DOC_TYPE,DOC_YEAR,DOC_NUMBER,DOC_SEQUENCE,PROGRESSIVE,DOC_DATE,EXPIRATION_DATE,NAME_1,NAME_2,VALUE,PAYED,DESCRIPTION,CUSTOMER_SUPPLIER_CODE,PROGRESSIVE_REG04,CURRENCY_CODE_REG03) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
          long startTime = vo.getItemDateACC05().getTime(); // item date...
          if (payVO.getStartDayREG10().equals(ApplicationConsts.START_DAY_END_MONTH)) {
            Calendar cal = Calendar.getInstance();
            if (cal.get(cal.MONTH) == 10
                || cal.get(cal.MONTH) == 3
                || cal.get(cal.MONTH) == 5
                || cal.get(cal.MONTH) == 8) cal.set(cal.DAY_OF_MONTH, 30);
            else if (cal.get(cal.MONTH) == 1) {
              if (cal.get(cal.YEAR) % 4 == 0) cal.set(cal.DAY_OF_MONTH, 29);
              else cal.set(cal.DAY_OF_MONTH, 28);
            } else cal.set(cal.DAY_OF_MONTH, 31);
            startTime = cal.getTime().getTime();
          }
          BigDecimal amount = null;

          for (int i = 0; i < rows.size(); i++) {
            inVO = (PaymentInstalmentVO) rows.get(i);
            pstmt.setString(1, vo.getCompanyCodeSys01ACC05());
            pstmt.setString(2, vo.getDocTypeDOC19());
            pstmt.setBigDecimal(3, vo.getItemYearACC05());
            pstmt.setBigDecimal(4, null);
            pstmt.setBigDecimal(5, vo.getDocSequenceDOC19());
            pstmt.setBigDecimal(
                6,
                ProgressiveUtils.getConsecutiveProgressive(
                    "DOC19_EXPIRATIONS", "PROGRESSIVE", conn));
            pstmt.setDate(7, vo.getItemDateACC05());
            pstmt.setDate(
                8,
                new java.sql.Date(
                    startTime
                        + inVO.getInstalmentDaysREG17().longValue()
                            * 86400
                            * 1000)); // expiration date
            pstmt.setString(9, vo.getName_1REG04());
            pstmt.setString(10, vo.getName_2REG04());
            amount =
                vo.getTotalValue()
                    .multiply(inVO.getPercentageREG17())
                    .divide(new BigDecimal(100), BigDecimal.ROUND_HALF_UP)
                    .setScale(vo.getTotalValue().scale(), BigDecimal.ROUND_HALF_UP); // value

            pstmt.setBigDecimal(11, amount);
            pstmt.setString(12, "N");

            if (vo.getDocTypeDOC19().equals(ApplicationConsts.SALE_GENERIC_INVOICE))
              pstmt.setString(
                  13,
                  resources.getResource("sale generic document")
                      + " "
                      + vo.getDocSequenceDOC19()
                      + "/"
                      + vo.getItemYearACC05()
                      + " - "
                      + resources.getResource("valueREG01")
                      + " "
                      + resources.getResource("rateNumberREG17")
                      + " "
                      + (i + 1)
                      + " - "
                      + inVO.getPaymentTypeDescriptionSYS10()); // description
            else
              pstmt.setString(
                  13,
                  resources.getResource("purchase generic document")
                      + " "
                      + vo.getDocSequenceDOC19()
                      + "/"
                      + vo.getItemYearACC05()
                      + " - "
                      + resources.getResource("valueREG01")
                      + " "
                      + resources.getResource("rateNumberREG17")
                      + " "
                      + (i + 1)
                      + " - "
                      + inVO.getPaymentTypeDescriptionSYS10()); // description
            pstmt.setString(14, vo.getCustomerCodeSAL07());
            pstmt.setBigDecimal(15, vo.getProgressiveREG04());
            pstmt.setString(16, vo.getCurrencyCodeREG01());
            pstmt.execute();
          }
          pstmt.close();
        }

        // create an item registration for proceeds, according to expiration settings (e.g. retail
        // selling):
        // there must be only one instalment and this instalment has 0 instalment days
        if (rows.size() == 1
            && ((PaymentInstalmentVO) rows.get(0)).getInstalmentDaysREG17().intValue() == 0) {

          // retrieve internationalization settings (Resources object)...
          ServerResourcesFactory factory =
              (ServerResourcesFactory) context.getAttribute(Controller.RESOURCES_FACTORY);
          Resources resources = factory.getResources(userSessionPars.getLanguageId());

          HashMap map = new HashMap();
          map.put(ApplicationConsts.COMPANY_CODE_SYS01, vo.getCompanyCodeSys01ACC05());
          map.put(ApplicationConsts.PARAM_CODE, ApplicationConsts.CASE_ACCOUNT);
          Response res =
              userParamAction.executeCommand(
                  map, userSessionPars, request, response, userSession, context);
          if (res.isError()) {
            conn.rollback();
            return res;
          }
          String caseAccountCode = ((VOResponse) res).getVo().toString();

          JournalHeaderVO jhVO = new JournalHeaderVO();
          jhVO.setCompanyCodeSys01ACC05(vo.getCompanyCodeSys01ACC05());
          if (vo.getDocTypeDOC19().equals(ApplicationConsts.SALE_GENERIC_INVOICE)) {
            jhVO.setDescriptionACC05(
                resources.getResource("sale generic document")
                    + " "
                    + vo.getDocSequenceDOC19()
                    + "/"
                    + vo.getItemYearACC05()
                    + " - "
                    + resources.getResource("customer")
                    + " "
                    + vo.getName_1REG04()
                    + " "
                    + (vo.getName_2REG04() == null ? "" : vo.getName_2REG04()));
            jhVO.setAccountingMotiveCodeAcc03ACC05(ApplicationConsts.MOTIVE_INVOICE_PROCEEDS);
          } else {
            jhVO.setDescriptionACC05(
                resources.getResource("purchase generic document")
                    + " "
                    + vo.getDocSequenceDOC19()
                    + "/"
                    + vo.getItemYearACC05()
                    + " - "
                    + resources.getResource("supplier")
                    + " "
                    + vo.getName_1REG04()
                    + " "
                    + (vo.getName_2REG04() == null ? "" : vo.getName_2REG04()));
            jhVO.setAccountingMotiveCodeAcc03ACC05(ApplicationConsts.MOTIVE_PURCHASE_INVOICE_PAYED);
          }

          jhVO.setItemDateACC05(new java.sql.Date(System.currentTimeMillis()));
          jhVO.setItemYearACC05(new BigDecimal(Calendar.getInstance().get(Calendar.YEAR)));

          JournalRowVO jrVO = new JournalRowVO();
          jrVO.setCompanyCodeSys01ACC06(jhVO.getCompanyCodeSys01ACC05());
          if (vo.getDocTypeDOC19().equals(ApplicationConsts.SALE_GENERIC_INVOICE)) {
            jrVO.setAccountCodeAcc02ACC06(vo.getCreditAccountCodeAcc02SAL07());
            jrVO.setAccountCodeACC06(vo.getCustomerCodeSAL07());
            jrVO.setAccountCodeTypeACC06(ApplicationConsts.ACCOUNT_TYPE_CUSTOMER);
            jrVO.setCreditAmountACC06(vo.getTotalValue());
          } else {
            jrVO.setAccountCodeAcc02ACC06(vo.getDebitAccountCodeAcc02PUR01());
            jrVO.setAccountCodeACC06(vo.getSupplierCodePUR01());
            jrVO.setAccountCodeTypeACC06(ApplicationConsts.ACCOUNT_TYPE_SUPPLIER);
            jrVO.setDebitAmountACC06(vo.getTotalValue());
          }
          jrVO.setDescriptionACC06("");
          jrVO.setItemYearAcc05ACC06(jhVO.getItemYearACC05());
          jrVO.setProgressiveAcc05ACC06(jhVO.getProgressiveACC05());
          jhVO.addJournalRow(jrVO);

          jrVO = new JournalRowVO();
          jrVO.setCompanyCodeSys01ACC06(jhVO.getCompanyCodeSys01ACC05());
          jrVO.setAccountCodeAcc02ACC06(caseAccountCode);
          jrVO.setAccountCodeACC06(caseAccountCode);
          jrVO.setAccountCodeTypeACC06(ApplicationConsts.ACCOUNT_TYPE_ACCOUNT);
          if (vo.getDocTypeDOC19().equals(ApplicationConsts.SALE_GENERIC_INVOICE)) {
            jrVO.setDebitAmountACC06(vo.getTotalValue());
          } else {
            jrVO.setCreditAmountACC06(vo.getTotalValue());
          }
          jrVO.setDescriptionACC06("");
          jrVO.setItemYearAcc05ACC06(jhVO.getItemYearACC05());
          jrVO.setProgressiveAcc05ACC06(jhVO.getProgressiveACC05());
          jhVO.addJournalRow(jrVO);
          Response proceedsRes =
              bean.insertItem(conn, jhVO, userSessionPars, request, response, userSession, context);
          if (proceedsRes.isError()) {
            conn.rollback();
            return proceedsRes;
          }
        }
      }

      Response answer = responseVO;

      // fires the GenericEvent.BEFORE_COMMIT event...
      EventsManager.getInstance()
          .processEvent(
              new GenericEvent(
                  this,
                  getRequestName(),
                  GenericEvent.BEFORE_COMMIT,
                  (JAIOUserSessionParameters) userSessionPars,
                  request,
                  response,
                  userSession,
                  context,
                  conn,
                  inputPar,
                  answer));

      conn.commit();

      // fires the GenericEvent.AFTER_COMMIT event...
      EventsManager.getInstance()
          .processEvent(
              new GenericEvent(
                  this,
                  getRequestName(),
                  GenericEvent.AFTER_COMMIT,
                  (JAIOUserSessionParameters) userSessionPars,
                  request,
                  response,
                  userSession,
                  context,
                  conn,
                  inputPar,
                  answer));

      return answer;
    } catch (Throwable ex) {
      Logger.error(
          userSessionPars.getUsername(),
          this.getClass().getName(),
          "executeCommand",
          "Error while inserting a new item in the journal",
          ex);
      try {
        conn.rollback();
      } catch (Exception ex3) {
      }
      return new ErrorResponse(ex.getMessage());
    } finally {
      try {
        pstmt.close();
      } catch (Exception ex2) {
      }
      try {
        ConnectionManager.releaseConnection(conn, context);
      } catch (Exception ex1) {
      }
    }
  }
예제 #2
0
  // 一周内的污染源在线脱机联机报表
  public static void run7(HttpServletRequest req) throws Exception {

    String gas_station_type = "2";
    String water_station_type = "1";
    String so2_col = "val01";
    String cod_col = "val02";

    Connection cn = null;
    String sql = null;
    List list = new ArrayList(); // 存储这周内的数据
    List list2 = new ArrayList(); // 存储今天的数据
    List list3 = new ArrayList(); // 存储脱机的数据
    List l_temp = null;
    List td_temp = null; // 存储今天的数据
    String kv = null;
    String kv_2 = null;
    Map tmp = null;
    Map tmp_2 = null;

    Map tmp2 = new HashMap();
    Map tmp3 = new HashMap();
    Map data = null; // 存这周内有数据的站位
    Map data2 = null; // 存储今天的数据
    Map data3 = null; // 存储这周脱机的站位
    List waterStationList = null;
    List gasStationList = null;
    // String date = req.getParameter("date");
    String now = StringUtil.getNowDate() + "";
    // String now = req.getParameter("date")+"";//黄宝修改
    String date1, date2 = null;
    // 从现在开始,退后7天。
    Calendar cal = Calendar.getInstance();
    Calendar cal2 = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    cal.setTime(cal.getTime());

    cal.add(Calendar.DAY_OF_MONTH, -7); // 退后7天

    String now_7 = sdf.format(cal.getTime());

    cal2.setTime(cal2.getTime());

    cal2.add(Calendar.DAY_OF_MONTH, -1); // 退后1天

    String now_1 = sdf.format(cal2.getTime()) + " 23:59:59";
    ;
    date1 = sdf.format(cal2.getTime()) + " 23:59:59";
    date2 = now_7 + "";

    Map areaMap = null;
    Map bean = new HashMap();

    int i, num = 0;
    Map m = null;
    String area_id = null;
    try {

      area_id = req.getParameter("area_id");
      if (area_id == null) {
        area_id = "";
      }

      // date1 = req.getParameter("date1");
      // date1 = req.getParameter("date1");

      sql =
          "select station_id,m_time,"
              + so2_col
              + ","
              + cod_col
              + " from "
              + req.getParameter("tableName");
      sql = sql + " where m_time>='" + date2 + "' and m_time<='" + date1 + "'";
      sql = sql + " and station_id in (";
      sql =
          sql
              + "select station_id from t_cfg_station_info where station_type in ('1','2') and area_id like '"
              + area_id
              + "%') order by m_time desc";

      // System.out.println(sql);

      cn = f.getConn();

      // System.out.println(sql);

      l_temp = f.query(cn, sql, null); // 最近一周的数据
      num = l_temp.size();
      for (i = 0; i < num; i++) {
        tmp = (Map) l_temp.get(i);
        kv = (String) tmp.get("station_id");

        String station_id_t = (String) tmp2.get(kv);
        if ("".equals(station_id_t) || station_id_t == null) {
          list.add(tmp); // 最近一周都有的数据
          tmp2.put(kv, kv);
        }
      }

      // data = f.getListMap(list,"station_id");//最近一周都有的数据

      // 查询今天有数据的站位
      String now_time = StringUtil.getNowDate() + "";
      date1 = now_time + "";
      date2 = now_time + " 23:59:59";

      sql =
          "select station_id,m_time,"
              + so2_col
              + ","
              + cod_col
              + " from "
              + req.getParameter("tableName");
      sql = sql + " where m_time>='" + date1 + "' and m_time<='" + date2 + "'";
      sql = sql + " and station_id in (";
      sql =
          sql
              + "select station_id from t_cfg_station_info where station_type in ('1','2') and area_id like '"
              + area_id
              + "%') order by m_time desc";

      td_temp = f.query(cn, sql, null); // 今天的数据
      tmp2 = null;

      num = td_temp.size();
      for (i = 0; i < num; i++) {
        tmp = (Map) td_temp.get(i);
        kv = (String) tmp.get("station_id");

        String station_id_t = (String) tmp3.get(kv);
        if ("".equals(station_id_t) || station_id_t == null) {
          list2.add(tmp); // 今天有数据的站位。
          tmp3.put(kv, kv);
        }
      }

      // 循环这一周内有数据的站位列表list,如果list中的站位不能在今天的站位信息列表中list2中找到的话,则表明是脱机
      num = list.size();
      int j = 0;
      int num2 = list2.size();
      String station_id_1 = "";
      String station_id_2 = "";
      int l = 0;
      for (i = 0; i < num; i++) {
        tmp = (Map) list.get(i);
        station_id_1 = (String) tmp.get("station_id");
        l = 0;
        for (j = 0; j < num2; j++) {
          tmp_2 = (Map) list2.get(j);
          station_id_2 = (String) tmp_2.get("station_id");
          if (station_id_1.equals(station_id_2)) {
            l++;
          }
        }
        if (l == 0) {
          list3.add(tmp);
        }
      }

      data = f.getListMap(list3, "station_id"); // 这周脱机的站位信息列表

      l_temp = null;
      tmp = null;
      list2 = null;
      list3 = null;
      tmp_2 = null;
      tmp3 = null;

      sql =
          "select station_id,station_desc,ep_type,area_id,station_bz from t_cfg_station_info where station_type='1' and area_id like '"
              + area_id
              + "%' order by area_id,station_desc";
      waterStationList = f.query(cn, sql, null);

      // System.out.println(sql);

      sql =
          "select station_id,station_desc,ep_type,area_id from t_cfg_station_info where station_type='2' and area_id like '"
              + area_id
              + "%' order by area_id,station_desc";
      gasStationList = f.query(cn, sql, null);

      // System.out.println(sql);

      sql = "select area_id,area_name from t_cfg_area";
      areaMap = f.getMap(cn, sql);

      // System.out.println(sql);
      num = waterStationList.size();
      for (i = 0; i < num; i++) {
        m = (Map) waterStationList.get(i);
        area_id = (String) m.get("area_id");
        m.put("area_name", areaMap.get(area_id));
      }

      num = gasStationList.size();
      for (i = 0; i < num; i++) {
        m = (Map) gasStationList.get(i);
        area_id = (String) m.get("area_id");
        m.put("area_name", areaMap.get(area_id));
      }

      // System.out.println("before close,cn="+cn);
      f.close(cn);
      // System.out.println("after close,cn="+cn);

      int waterOnlineNum, gasOnlineNum, onlineNum = 0;
      int waterOfflineNum, gasOfflineNum, offlineNum = 0;
      int waterOfflineNumNation, gasOfflineNumNation, offlineNumNation = 0;
      int waterZeroNum, gasZeroNum, zeroNum = 0;
      int waterZeroNumNation, gasZeroNumNation, zeroNumNation = 0;

      waterOnlineNum = OnlineReport.getOnlineNum(waterStationList, data);
      gasOnlineNum = OnlineReport.getOnlineNum(gasStationList, data);
      onlineNum = waterOnlineNum + gasOnlineNum;

      // System.out.println(onlineNum);

      waterOfflineNum = OnlineReport.getOfflineNum(waterStationList, data);
      gasOfflineNum = OnlineReport.getOfflineNum(gasStationList, data);
      offlineNum = waterOfflineNum + gasOfflineNum;

      // System.out.println("zeroNumNation "+zeroNumNation);

      waterOfflineNumNation = OnlineReport.getOfflineNumNation(waterStationList, data);
      gasOfflineNumNation = OnlineReport.getOfflineNumNation(gasStationList, data);
      offlineNumNation = waterOfflineNumNation + gasOfflineNumNation;

      // System.out.println("offlineNumNation "+offlineNumNation);

      waterZeroNum = OnlineReport.getZeroNum(waterStationList, data, cod_col);
      gasZeroNum = OnlineReport.getZeroNum(gasStationList, data, so2_col);
      zeroNum = waterZeroNum + gasZeroNum;

      // System.out.println(zeroNum);

      waterZeroNumNation = OnlineReport.getZeroNumNation(waterStationList, data, cod_col);
      gasZeroNumNation = OnlineReport.getZeroNumNation(gasStationList, data, so2_col);
      zeroNumNation = waterZeroNumNation + gasZeroNumNation;

      // System.out.println(zeroNumNation);

      bean.put("waterOnlineNum", waterOnlineNum + "");
      bean.put("gasOnlineNum", gasOnlineNum + "");
      bean.put("onlineNum", onlineNum + "");

      bean.put("waterOfflineNum", waterOfflineNum + "");
      bean.put("gasOfflineNum", gasOfflineNum + "");
      bean.put("offlineNum", offlineNum + "");

      bean.put("waterOfflineNumNation", waterOfflineNumNation + "");
      bean.put("gasOfflineNumNation", gasOfflineNumNation + "");
      bean.put("offlineNumNation", offlineNumNation + "");

      bean.put("waterZeroNum", waterZeroNum + "");
      bean.put("gasZeroNum", gasZeroNum + "");
      bean.put("zeroNum", zeroNum + "");

      bean.put("waterZeroNumNation", waterZeroNumNation + "");
      bean.put("gasZeroNumNation", gasZeroNumNation + "");
      bean.put("zeroNumNation", zeroNumNation + "");

      date1 = now_7;
      date2 = StringUtil.getNowDate() + "";

      bean.put("date1", date2);
      bean.put("date2", date1);

      req.setAttribute("bean", bean);

      list = getOfflineList2(waterStationList, data);
      req.setAttribute("waterOfflineList", list);

      list = getOfflineList2(gasStationList, data);
      req.setAttribute("gasOfflineList", list);

      list = getOfflineListNation(waterStationList, data);
      req.setAttribute("waterOfflineListNation", list);

      list = getOfflineListNation(gasStationList, data);
      req.setAttribute("gasOfflineListNation", list);

      list = getZeroListNation(waterStationList, data, cod_col);
      req.setAttribute("waterZeroListNation", list);

      list = getZeroListNation(gasStationList, data, so2_col);
      req.setAttribute("gasZeroListNation", list);

    } catch (Exception e) {
      throw e;
    } finally {
      f.close(cn);
    }
  }
예제 #3
0
 protected String createDateHeader(int expires) {
   final Calendar utc = GregorianCalendar.getInstance(TimeZone.getTimeZone("UTC"));
   utc.add(Calendar.SECOND, expires);
   return toHttpDate(utc.getTime());
 }