我正在开发一个应用程序,它使用一些我必须使用日期类型的服务。WebService 有这个方法:
public TRespuestaPedidosClientes consultarPedidosClientes(int id_cuenta_padre, int nivel_cuenta_padre, int id_cuenta, Date f_inicio, Date f_fin, int estado_pedido, String n_pedido)
{
// devuelve los pedidos asociados de una cuenta o de todas las cuentas hijas
// en un rango de fechas y con estado determinado
//
// id_cuenta == 0 -> buscar las cuentas hijas asociadas a la cuenta padre
// los pedidos los realizán las cuentas de nivel >= 3
// cuenta padre es de nivel 1 -> los pedidos son de sus cuentas hijas de nivel 2
// cuenta padre es de nivel 2 -> los pedidos son de sus cuentas hijas de nivel 3 y de las hijas de éstas
// id_cuenta != 0 -> solo los pedidos de ésta cuenta:
// - nivel_cuenta_padre = 1 => id_cuenta debe ser de nivel 2
// - nivel_cuenta_padre = 2 => id_cuenta debe ser de nivel 3
// - nivel_cuenta_padre = 3 => id_cuenta puede ser igual que id_cuenta_padre (ella misma) o puede ser de nivel 4 o 5
TRespuestaPedidosClientes resultado = new TRespuestaPedidosClientes();
try
{
System.out.println("F_inicio es:"+f_inicio.getTime());
System.out.println("Tengo la cuenta padre:"+id_cuenta_padre);
System.out.println("El nivel del padre es"+nivel_cuenta_padre);
// A-> nivel cuenta padre = 1
// - buscar cuentas hijas -> nivel 2
// - por cada cuenta hija de nivel 2: A y C
// B-> nivel cuenta padre = 2
// - buscar cuentas hijas -> nivel 3
// - buscar pedidos
// C-> nivel cuenta padre >= 3
// - buscar cuentas hijas -> nivel 4
// - pedidos de la cuenta actual y de sus hijas
TRespuestaCuentas result1 = new TRespuestaCuentas();
switch (nivel_cuenta_padre)
{
case 0:
{
result1 = buscar_Cuentas_Hijas(id_cuenta_padre);
if (result1.getError() == -1)
throw new Exception("Error al buscar las cuentas hija");
for (int i = 0; i < result1.getDatosCuentas().length; i++)
{
if ((id_cuenta == 0) || (id_cuenta != 0 && id_cuenta == result1.getDatosCuentas()[i].getId_cuenta()))
{
TRespuestaPedidosClientes resultP = buscar_Pedidos_Cuenta(id_cuenta_padre, result1.getDatosCuentas()[i], 0, estado_pedido, f_inicio, f_fin, n_pedido);
if (resultP.getError() == -1)
throw new Exception(resultP.getDescripcion_error());
if (resultP.getDatosPedidosClientes() != null)
{
for (int k = 0; k < resultP.getDatosPedidosClientes().length; k++)
{
resultP.getDatosPedidosClientes()[k].setCuenta(result1.getDatosCuentas()[i].getNombre());
}
// añadir pedidos a resultado
resultP.setDatosPedidosClientes(cargar_Datos_PedidosClientes_Array(resultP.getDatosPedidosClientes(), resultado.getDatosPedidosClientes()));
}
}
}
break;
}
case 1:
{
result1 = buscar_Cuentas_Hijas(id_cuenta_padre);
if (result1.error == -1)
throw new Exception("Error al buscar las cuentas hijas");
for (int i = 0; i < result1.getDatosCuentas().length; i++)
{
if ((id_cuenta == 0) || (id_cuenta != 0 && id_cuenta == result1.getDatosCuentas()[i].getId_cuenta()))
{
TRespuestaPedidosClientes resultP = buscar_Pedidos_Cuenta(id_cuenta_padre, result1.getDatosCuentas()[i], 0, estado_pedido, f_inicio, f_fin, n_pedido);
if (resultP.error == -1)
throw new Exception(resultP.getDescripcion_error());
if (resultP.getDatosPedidosClientes() != null)
{
for (int k = 0; k < resultP.getDatosPedidosClientes().length; k++)
{
resultP.getDatosPedidosClientes()[k].setCuenta(result1.getDatosCuentas()[i].getNombre());
}
// añadir pedidos a resultado
resultP.setDatosPedidosClientes(cargar_Datos_PedidosClientes_Array(resultP.getDatosPedidosClientes(), resultado.getDatosPedidosClientes()));
}
}
}
break;
}
case 2:
{
result1 = buscar_Cuentas_Hijas(id_cuenta_padre);
if (result1.error == -1)
throw new Exception("Error al buscar cuentas hijas");
System.out.println("Datos cuentas es:"+result1.getDatosCuentas().length);
for (int i = 0; i < result1.getDatosCuentas().length; i++)
{
if ((id_cuenta == 0) || (id_cuenta != 0 && id_cuenta == result1.getDatosCuentas()[i].getId_cuenta()))
{
TRespuestaPedidosClientes resultP = buscar_Pedidos_Cuenta(id_cuenta_padre, result1.getDatosCuentas()[i], 0, estado_pedido, f_inicio, f_fin, n_pedido);
System.out.println("ResultP"+resultP.getError());
if (resultP.getError() == -1)
throw new Exception(resultP.getDescripcion_error());
if (resultP.getError() != 4)
{
// añadir pedidos a resultado
resultP.setDatosPedidosClientes(cargar_Datos_PedidosClientes_Array(resultP.getDatosPedidosClientes(), resultado.getDatosPedidosClientes()));
}
}
}
break;
}
default:
{
result1 = buscar_Datos_Cuenta(id_cuenta_padre);
if (result1.getError() == -1)
throw new Exception("Error al buscar los datos de las cuentas");
TRespuestaPedidosClientes resultP = buscar_Pedidos_Cuenta(id_cuenta_padre, result1.getDatosCuentas()[0], id_cuenta, estado_pedido, f_inicio, f_fin, n_pedido);
if (resultP.getError() == -1)
throw new Exception(resultP.getDescripcion_error());
if (resultP.getDatosPedidosClientes() != null)
{
// añadir pedidos a resultado
resultP.setDatosPedidosClientes(cargar_Datos_PedidosClientes_Array(resultP.getDatosPedidosClientes(), resultado.getDatosPedidosClientes()));
}
break;
}
}
resultado.setError(0);
resultado.setDescripcion_error("");
return resultado;
}
catch (Exception ex)
{
resultado.setError(-1);
resultado.setDescripcion_error(ex.getMessage());
resultado.setDatosPedidosClientes(null);
return resultado;
}
}
当我从客户端调用此服务时,我会这样做:
TRespuestaPedidosClientes pedidosClientes=bsStubcloud.consultarPedidosClientes(params[0].getId_cuenta_padre(), nivel, cuenta, cal, calF, 0, servletRequest.getParameter("edt_pedido").toString());
其中 cal 和 calF 被转换为 Calendar 类型,我不知道为什么。我使用 Axis,可以通过任何方式保留这些日期类型,并且当我传递这些参数时,它们会得到今天的日期,而不是我发送的日期。我能做些什么?。
非常感谢