VWED_server/docs/sc/库位相关.md

483 lines
12 KiB
Markdown
Raw Normal View History

2025-09-25 10:52:52 +08:00
```markdown
2025-09-29 09:35:08 +08:00
## 库位相关
2025-09-25 10:52:52 +08:00
2025-09-29 09:35:08 +08:00
#### 检查站点是否存在
2025-09-25 10:52:52 +08:00
* 方法说明
2025-09-29 09:35:08 +08:00
检查站点是否存在。
2025-09-25 10:52:52 +08:00
```python
2025-09-29 09:35:08 +08:00
async def is_point_exist(point_name: str) -> bool
2025-09-25 10:52:52 +08:00
```
* 输入参数
2025-09-29 09:35:08 +08:00
point_name站点名。
2025-09-25 10:52:52 +08:00
* 输出参数
2025-09-29 09:35:08 +08:00
* True该站点存在。
* False该站点不存在。
2025-09-25 10:52:52 +08:00
* 异常
2025-09-29 09:35:08 +08:00
本方法抛出异常。
2025-09-25 10:52:52 +08:00
2025-09-29 09:35:08 +08:00
#### 检查库位是否存在
2025-09-25 10:52:52 +08:00
* 方法说明
2025-09-29 09:35:08 +08:00
检查库位名是否存在
2025-09-25 10:52:52 +08:00
```python
2025-09-29 09:35:08 +08:00
async def check_site_existed_by_site_id(site_id: str) -> bool
2025-09-25 10:52:52 +08:00
```
* 输入参数
2025-09-29 09:35:08 +08:00
* site_id库位名称。
2025-09-25 10:52:52 +08:00
* 输出参数
2025-09-29 09:35:08 +08:00
* True该库位存在。
* False该库位不存在。
2025-09-25 10:52:52 +08:00
* 异常
2025-09-29 09:35:08 +08:00
本方法抛出异常。
2025-09-25 10:52:52 +08:00
2025-09-29 09:35:08 +08:00
#### 检查库区是否存在
2025-09-25 10:52:52 +08:00
* 方法说明
2025-09-29 09:35:08 +08:00
检查库区名是否存在
2025-09-25 10:52:52 +08:00
```python
2025-09-29 09:35:08 +08:00
async def check_site_group_existed_by_group_name(group_name: str) -> bool
2025-09-25 10:52:52 +08:00
```
* 输入参数
2025-09-29 09:35:08 +08:00
* group_name库区名称。
2025-09-25 10:52:52 +08:00
* 输出参数
2025-09-29 09:35:08 +08:00
* True该库区存在。
* False该库区不存在。
2025-09-25 10:52:52 +08:00
* 异常
2025-09-29 09:35:08 +08:00
本方法抛出异常。
2025-09-25 10:52:52 +08:00
2025-09-29 09:35:08 +08:00
#### 根据条件获取库位
2025-09-25 10:52:52 +08:00
* 方法说明
2025-09-29 09:35:08 +08:00
根据条件获取库位
2025-09-25 10:52:52 +08:00
```python
2025-09-29 09:35:08 +08:00
async def find_sites_by_condition(conditions: str, sort: str) -> str
2025-09-25 10:52:52 +08:00
```
* 输入参数
2025-09-29 09:35:08 +08:00
* conditions查询条件模糊查询用'%'标记
```python
{
"area": "area01", # 区域名
"content": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 货物
"depth": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 深
"filled": True, # 是否有货
"group_names": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 库区名
"level": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 货架层数
"locked": True, # 是否已锁定
"locked_by": "12345", # 锁定的任务实例id
"no": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 库位编号
"row_num": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 货架行
"site_ids": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 库位id
"tags": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 库位标签
"type": 1 # 库位类别1物理库位0逻辑库位
}
```
* sort根据site_id排序"ASC"顺序排序,"DESC"倒序排序
2025-09-25 10:52:52 +08:00
* 输出参数
2025-09-29 09:35:08 +08:00
库位列表json
2025-09-25 10:52:52 +08:00
2025-09-29 09:35:08 +08:00
```python
[{
"area": "area01", # 区域
"content": "abc-1", # 货物
"depth": "abc-1", # 深
"disabled": True, # 禁用
"filled": 1, # 占用
"group_names": "abc", # 库区名
"level": "abc-1", # 层
"locked": 1, # 锁定
"locked_by": "123456", # 锁定的任务id
"no": "abc-1", # 编号
"preparing": True, # 准备中
"row_num": "abc-1", # 列
"site_id": "abc-1", # 库位id
"tags": "abc-1", # 标签
"type": 1, # 库位类型
"working": True # 工作中
},
{
"area": "area01",
"content": "abc-2",
"depth": "abc-2",
"disabled": True,
"filled": 1,
"group_names": "abc",
"level": "abc-2",
"locked": 1,
"locked_by": "123456",
"no": "abc-2",
"preparing": True,
"row_num": "abc-2",
"site_id": "abc-2",
"tags": "abc-2",
"type": 1,
"working": True
}]
```
2025-09-25 10:52:52 +08:00
2025-09-29 09:35:08 +08:00
如果输出值没有满足条件的库位,方法将返回字符串"null"。
2025-09-25 10:52:52 +08:00
2025-09-29 09:35:08 +08:00
* 异常
本方法抛出异常。
* 例子
1.根据库位id查询库位是否有货
2025-09-25 10:52:52 +08:00
```python
2025-09-29 09:35:08 +08:00
def test():
condition = {
"site_ids": ["E1-1"],
"filled": True
}
site = jj.find_sites_by_condition(json.dumps(condition), "ASC")
2025-09-25 10:52:52 +08:00
```
2025-09-29 09:35:08 +08:00
2.查询某一库区内的所有库位
2025-09-25 10:52:52 +08:00
2025-09-29 09:35:08 +08:00
```python
def test():
condition = {
"group_names": ["E1"]
}
site = jj.find_sites_by_condition(json.dumps(condition), "ASC")
```
2025-09-25 10:52:52 +08:00
2025-09-29 09:35:08 +08:00
#### 根据条件获取有效库位
2025-09-25 10:52:52 +08:00
* 方法说明
2025-09-29 09:35:08 +08:00
根据条件获取有效库位即未禁用disabled=0并且同步成功sync_failed=0的库位。
2025-09-25 10:52:52 +08:00
```python
2025-09-29 09:35:08 +08:00
async def find_available_sites_by_condition(conditions: str, sort: str) -> str
2025-09-25 10:52:52 +08:00
```
* 输入参数
2025-09-29 09:35:08 +08:00
* conditions查询条件模糊查询用'%'标记
```python
{
"area": "area01", # 区域名
"content": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 货物
"depth": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 深
"filled": True, # 是否有货
"group_names": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 库区名
"level": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 货架层数
"locked": True, # 是否已锁定
"locked_by": "12345", # 锁定的任务实例id
"no": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 库位编号
"row_num": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 货架行
"site_ids": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 库位id
"tags": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 库位标签
"type": 1 # 库位类别1物理库位0逻辑库位
}
```
* sort根据site_id排序"ASC"顺序排序,"DESC"倒序排序
2025-09-25 10:52:52 +08:00
* 输出参数
2025-09-29 09:35:08 +08:00
* 包含库位列表的 JSON 字符串,转换成 JSON 对象之后的示例数据如下所示:
```python
[{
"area": "area01", # 区域
"content": "abc-1", # 货物
"depth": "abc-1", # 深
"disabled": True, # 禁用
"filled": 1, # 占用
"group_names": "abc", # 库区名
"level": "abc-1", # 层
"locked": 1, # 锁定
"locked_by": "123456", # 锁定的任务id
"no": "abc-1", # 编号
"preparing": True, # 准备中
"row_num": "abc-1", # 列
"site_id": "abc-1", # 库位id
"tags": "abc-1", # 标签
"type": 1, # 是否物理库位
"working": True # 工作中
},
{
"area": "area01",
"content": "abc-2",
"depth": "abc-2",
"disabled": True,
"filled": 1,
"group_names": "abc",
"level": "abc-2",
"locked": 1,
"locked_by": "123456",
"no": "abc-2",
"preparing": True,
"row_num": "abc-2",
"site_id": "abc-2",
"tags": "abc-2",
"type": 1,
"working": True
}]
```
* 如果没有符合条件的库位,则返回值为 `"null"` ,而不是 `[]`
2025-09-25 10:52:52 +08:00
* 异常
2025-09-29 09:35:08 +08:00
本方法抛出异常。
2025-09-25 10:52:52 +08:00
2025-09-29 09:35:08 +08:00
#### 根据扩展字段获取有效库位
2025-09-25 10:52:52 +08:00
* 方法说明
2025-09-29 09:35:08 +08:00
根据扩展字段获取有效库位即未禁用disabled=0并且同步成功sync_failed=0的库位。
2025-09-25 10:52:52 +08:00
```python
2025-09-29 09:35:08 +08:00
async def find_available_sites_by_ext_fields(conditions: str) -> str
2025-09-25 10:52:52 +08:00
```
* 输入参数
2025-09-29 09:35:08 +08:00
* conditions查询条件模糊查询用'%'标记
```python
[
{
"attribute_name": "ext5",
"attribute_value": "ex%"
},
{
"attribute_name": "ext10",
"attribute_value": "%ex"
},
{
"attribute_name": "ex100",
"attribute_value": "ex3"
},
{
"attribute_name": "ex101",
"attribute_value": "%ex"
},
{
"attribute_name": "filled", # 是否占用
"attribute_value": "0"
},
{
"attribute_name": "locked", # 是否锁定
"attribute_value": "0"
},
{
"attribute_name": "area", # 区域
"attribute_value": "new"
},
{
"attribute_name": "group_name", # 库区名
"attribute_value": "CYJ-IN-UP"
},
{
"attribute_name": "site_id", # 库位id
"attribute_value": "CYJ-IN-01"
}
]
```
2025-09-25 10:52:52 +08:00
* 请求示例
```python
2025-09-29 09:35:08 +08:00
conditions = [{"attribute_name": "ext5", "attribute_value": "ex%"}, {"attribute_name": "ext10", "attribute_value": "%ex"}, {"attribute_name": "ex100", "attribute_value": "ex3"}, {"attribute_name": "ex101", "attribute_value": "%ex"}, {"attribute_name": "filled", "attribute_value": "0"}, {"attribute_name": "locked", "attribute_value": "0"}, {"attribute_name": "area", "attribute_value": "new"}, {"attribute_name": "group_name", "attribute_value": "CYJ-IN-UP"}, {"attribute_name": "site_id", "attribute_value": "CYJ-IN-01"}]
data = jj.find_available_sites_by_ext_fields(json.dumps(conditions))
2025-09-25 10:52:52 +08:00
```
2025-09-29 09:35:08 +08:00
* 库位列表json
* 包含库位列表的 JSON 字符串,转换成 JSON 对象之后的示例数据如下所示:
```python
[
{
"area": "new",
"content": None,
"filled": 1,
"group_name": None,
"locked": 0,
"locked_by": None,
"site_id": "CYJ-IN-01",
"site_name": None,
"tags": "CYJ-IN-UP",
"type": None
}
]
```
* 如果没有符合条件的库位,则返回值为 `"null"` ,而不是 `[]`
* 异常
本方法抛出异常。
#### 根据条件更新库位
2025-09-25 10:52:52 +08:00
* 方法说明
2025-09-29 09:35:08 +08:00
根据条件更新库位
2025-09-25 10:52:52 +08:00
```python
2025-09-29 09:35:08 +08:00
async def update_sites_by_condition(conditions: str, values: str) -> int
2025-09-25 10:52:52 +08:00
```
* 输入参数
2025-09-29 09:35:08 +08:00
* conditions更新条件模糊查询用'%'标记
2025-09-25 10:52:52 +08:00
2025-09-29 09:35:08 +08:00
```python
{
"area": "area01", # 区域名
"content": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 货物
"depth": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 深
"filled": True, # 是否有货
"group_names": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 库区名
"level": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 货架层数
"locked": True, # 是否已锁定
"locked_by": "12345", # 锁定的任务实例id
"no": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 库位编号
"row_num": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 货架行
"site_ids": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 库位id
"tags": ["abc", "'%bc'", "'%b%'", "'ab%'"], # 库位标签
"type": 1 # 库位类别1物理库位0逻辑库位
}
```
* values修改的字段
2025-09-25 10:52:52 +08:00
2025-09-29 09:35:08 +08:00
```python
{
"area": "abc", # 区域
"content": "abc", # 货物
"depth": "2", # 深
"disabled": True, # 禁用
"filled": True, # 有货
"group_name": "abc", # 库区名
"level": "3", # 层
"locked": True, # 锁定
"locked_by": "12345", # 锁定的任务id
"no": "10", # 编号
"preparing": True, # 准备中
"row_num": "5", # 行
"site_id": "site_01", # 库位名
"tags": "abc", # 标签
"type": 1, # 是否物理库位
"working": True # 工作中
}
```
* 输出参数
* 更新成功的数据库记录行数
* 异常
2025-09-25 10:52:52 +08:00
2025-09-29 09:35:08 +08:00
本方法抛出异常。
* 例子
2025-09-25 10:52:52 +08:00
2025-09-29 09:35:08 +08:00
1.根据库位id查询有货未加锁的库位并进行加锁
2025-09-25 10:52:52 +08:00
```python
2025-09-29 09:35:08 +08:00
def test():
task_id = jj.current_time_millis()
condition = {
"site_ids": ["E1-1"],
"filled": True,
"disabled": False,
"locked": False
}
value = {
"locked": True,
"locked_by": str(task_id)
}
site = jj.update_sites_by_condition(json.dumps(condition), json.dumps(value))
2025-09-25 10:52:52 +08:00
```
2025-09-29 09:35:08 +08:00
2.更新库区内的有货未加锁的所有库位并进行加锁
2025-09-25 10:52:52 +08:00
```python
2025-09-29 09:35:08 +08:00
def test():
task_id = jj.current_time_millis()
condition = {
"group_names": ["E1"],
"filled": True,
"disabled": False,
"locked": False
}
value = {
"locked": True,
"locked_by": str(task_id)
}
site = jj.update_sites_by_condition(json.dumps(condition), json.dumps(value))
2025-09-25 10:52:52 +08:00
```
2025-09-29 09:35:08 +08:00
#### 根据条件更新库位扩展字段值
2025-09-25 10:52:52 +08:00
* 方法说明
2025-09-29 09:35:08 +08:00
根据库位id和扩展字段名更新扩展字段的值
2025-09-25 10:52:52 +08:00
```python
2025-09-29 09:35:08 +08:00
async def update_site_ext_field_by_id_and_ext_field_name(conditions: str) -> None
2025-09-25 10:52:52 +08:00
```
* 输入参数
2025-09-29 09:35:08 +08:00
* conditions库位id、扩展字段名和更新值
```python
[
{
"site_id": "Loc-01",
"ext_field_name": "test",
"update_value": "111"
},
{
"site_id": "Loc-02",
"ext_field_name": "test",
"update_value": "222"
},
{
"site_id": "Loc-03",
"ext_field_name": "test",
"update_value": "333"
}
]
```
2025-09-25 10:52:52 +08:00
* 输出参数
2025-09-29 09:35:08 +08:00
无。
2025-09-25 10:52:52 +08:00
* 异常
2025-09-29 09:35:08 +08:00
本方法抛出异常
* 例子
* 更新Loc-01、Loc-02、Loc-03的扩展字段test的值分别为111、222、333
2025-09-25 10:52:52 +08:00
2025-09-29 09:35:08 +08:00
```python
def test():
conditions = [
{
"site_id": "Loc-01",
"ext_field_name": "test",
"update_value": "111"
},
{
"site_id": "Loc-02",
"ext_field_name": "test",
"update_value": "222"
},
{
"site_id": "Loc-03",
"ext_field_name": "test",
"update_value": "333"
}
]
jj.update_site_ext_field_by_id_and_ext_field_name(json.dumps(conditions))
2025-09-25 10:52:52 +08:00
```