欢迎使用堆栈溢出:)要通过Excel Import创建填充,您必须创建一个方法并调用这样的代码。您还需要一个空人口。
int n = excelFile.getLastRowNum(YOUR_SHEET_NAME);
for(int i = FIRST_ROW; i <= n; i++){
String name = excelFile.getCellStringValue(YOUR_SHEET_NAME,i,1);
double SEC_PARAMETER_TO_READ= excelFile.getCellNumericValue(YOUR_SHEET_NAME,2);
WP workplace = add_wps(name,SEC_PARAMETER_TO_READ);
}
现在,如果要按名称命名工作场所,则必须创建一种与尝试类似的方法。
功能体:
WP workplaceToFind = wps.findFirst(w -> w.name.equals(destinationName));
if(workplaceToFind != null){
//do what ever you want
}
,
是否可以使用Excel中的代理创建集合?
不直接使用集合的属性,并且您已经看到,您不能拥有代理类型的数据库(DB)列类型。 1
但是直接通过Java代码进行操作相对简单(您可以使用 Insert Database Query (插入数据库查询)向导为您构造框架代码)。
此后,我尝试使用与String相同的getDestination,因此通过findFirst查找与返回名称匹配的WP,并将其返回为WP
是的,这是一种方法。如果您的订单详细信息在Excel /数据库中,则可能是通过某些字符串ID(这是您从单独的Excel工作表/数据库表创建的工作场所代理的参数)来引用工作场所的。不过,您需要使用Java equals
方法来比较字符串,而不是==
(用于比较数字或两个对象是否是同一对象)来比较字符串。
我想要main中的moveTo块来查找代理商订单的下一个目的地
所以总体解决方案是
-
从数据库创建一组Workplace
个代理(在Main中称为workplaces
)代理,每个代理都具有String参数id
或从DB列映射的类似参数。
-
从数据库中创建一组Order
个代理(在Main中称为orders
),然后在启动时设置其工作场所ID的集合(类型ArrayList
,元素类String
;假设称为workplaceIDsList
)使用另一个数据库表中的数据。
-
Order
可能还需要一个工作变量,用于将列表中的下一个索引存储在该索引中(因此,假设int
变量nextWorkplaceIndex
从0开始)。
-
在Main中编写一个名为getWorkplaceByID
的函数,该函数具有单个String
参数id
并返回Workplace
。这是从与ID相匹配的人口那里获得的工作场所;与您类似的单行方法是findFirst(workplaces,w -> w.id.equals(id))
。
-
MoveTo块(我假设在Main中)需要将Order
移动到getWorkplaceByID(agent.workplaceIDsList.get(nextWorkplaceIndex++))
定义的代理上。 (++
位在计算表达式后的 之后增加索引,以便为下一个工作场所准备就绪。)
要填充集合,您将有两个表,如下所示(假设使用字符串作为工作场所和订单的ID):
在Order
的启动时操作中,通过 Insert Database Query 向导设置框架查询代码,如下所示(我们要在其中循环浏览该订单ID的所有行,然后执行某些操作---我们将更改框架代码以向集合中添加条目,而不是像框架代码那样通过traceln
打印内容。
然后,我们将骨架代码编辑为如下所示。 (请注意,我们在初始查询中添加了orderBy
子句,因此我们确保以升序编号的顺序获取行。)
List<Tuple> rows = selectFrom(order_workplaces)
.where(order_workplaces.order_id.eq(id))
.orderBy(order_workplaces.sequence_num.asc())
.list();
for (Tuple row : rows) {
workplaceIDsList.add(row.get(order_workplaces.workplace_id));
}
1 AnyLogic数据库是一个普通的关系数据库-实际上是HSQLDB ---并且数据库仅通过AnyLogic理解自己特定的数据类型,例如VARCHAR
以及它使用的库将它们转换为Java类型,例如String
。在用户界面中,AnyLogic使看起来像,您将列类型设置为int
,String
等,但这实际上是列内容将使用的Java类型。最终被翻译成。
AnyLogic 做支持具有选项列表类型的列(对于包含可执行Java代码的列,还有特殊的Code
类型列),但是使用这些是特殊情况幕后的特殊逻辑将列数据(最终仍是一个字符串)转换为适当的选项列表实例,或(对于Code
列)转换为即时编译然后执行Java)。
本文链接:https://www.f2er.com/2796372.html