Compare commits
	
		
			2 Commits
		
	
	
		
			632bd20e7d
			...
			5e84b473f6
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 5e84b473f6 | |||
| e142405bb3 | 
							
								
								
									
										784
									
								
								docs/docs.go
									
									
									
									
									
								
							
							
						
						
									
										784
									
								
								docs/docs.go
									
									
									
									
									
								
							@@ -867,7 +867,7 @@ const docTemplate = `{
 | 
				
			|||||||
                    "application/json"
 | 
					                    "application/json"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "tags": [
 | 
					                "tags": [
 | 
				
			||||||
                    "猪批次管理"
 | 
					                    "猪群管理"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "summary": "获取猪批次列表",
 | 
					                "summary": "获取猪批次列表",
 | 
				
			||||||
                "parameters": [
 | 
					                "parameters": [
 | 
				
			||||||
@@ -911,7 +911,7 @@ const docTemplate = `{
 | 
				
			|||||||
                    "application/json"
 | 
					                    "application/json"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "tags": [
 | 
					                "tags": [
 | 
				
			||||||
                    "猪批次管理"
 | 
					                    "猪群管理"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "summary": "创建猪批次",
 | 
					                "summary": "创建猪批次",
 | 
				
			||||||
                "parameters": [
 | 
					                "parameters": [
 | 
				
			||||||
@@ -954,7 +954,7 @@ const docTemplate = `{
 | 
				
			|||||||
                    "application/json"
 | 
					                    "application/json"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "tags": [
 | 
					                "tags": [
 | 
				
			||||||
                    "猪批次管理"
 | 
					                    "猪群管理"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "summary": "从猪批次移除空栏",
 | 
					                "summary": "从猪批次移除空栏",
 | 
				
			||||||
                "parameters": [
 | 
					                "parameters": [
 | 
				
			||||||
@@ -993,7 +993,7 @@ const docTemplate = `{
 | 
				
			|||||||
                    "application/json"
 | 
					                    "application/json"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "tags": [
 | 
					                "tags": [
 | 
				
			||||||
                    "猪批次管理"
 | 
					                    "猪群管理"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "summary": "将猪栏划拨到新批次",
 | 
					                "summary": "将猪栏划拨到新批次",
 | 
				
			||||||
                "parameters": [
 | 
					                "parameters": [
 | 
				
			||||||
@@ -1031,7 +1031,7 @@ const docTemplate = `{
 | 
				
			|||||||
                    "application/json"
 | 
					                    "application/json"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "tags": [
 | 
					                "tags": [
 | 
				
			||||||
                    "猪批次管理"
 | 
					                    "猪群管理"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "summary": "获取单个猪批次",
 | 
					                "summary": "获取单个猪批次",
 | 
				
			||||||
                "parameters": [
 | 
					                "parameters": [
 | 
				
			||||||
@@ -1073,7 +1073,7 @@ const docTemplate = `{
 | 
				
			|||||||
                    "application/json"
 | 
					                    "application/json"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "tags": [
 | 
					                "tags": [
 | 
				
			||||||
                    "猪批次管理"
 | 
					                    "猪群管理"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "summary": "更新猪批次",
 | 
					                "summary": "更新猪批次",
 | 
				
			||||||
                "parameters": [
 | 
					                "parameters": [
 | 
				
			||||||
@@ -1121,7 +1121,7 @@ const docTemplate = `{
 | 
				
			|||||||
                    "application/json"
 | 
					                    "application/json"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "tags": [
 | 
					                "tags": [
 | 
				
			||||||
                    "猪批次管理"
 | 
					                    "猪群管理"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "summary": "删除猪批次",
 | 
					                "summary": "删除猪批次",
 | 
				
			||||||
                "parameters": [
 | 
					                "parameters": [
 | 
				
			||||||
@@ -1153,7 +1153,7 @@ const docTemplate = `{
 | 
				
			|||||||
                    "application/json"
 | 
					                    "application/json"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "tags": [
 | 
					                "tags": [
 | 
				
			||||||
                    "猪批次管理"
 | 
					                    "猪群管理"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "summary": "为猪批次分配空栏",
 | 
					                "summary": "为猪批次分配空栏",
 | 
				
			||||||
                "parameters": [
 | 
					                "parameters": [
 | 
				
			||||||
@@ -1184,6 +1184,47 @@ const docTemplate = `{
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{id}/buy-pigs": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "记录猪批次中的猪只购买事件",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "处理买猪的业务逻辑",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "买猪请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.BuyPigsRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "买猪成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "/api/v1/pig-batches/{id}/move-pigs-into-pen": {
 | 
					        "/api/v1/pig-batches/{id}/move-pigs-into-pen": {
 | 
				
			||||||
            "post": {
 | 
					            "post": {
 | 
				
			||||||
                "description": "将指定数量的猪只从批次的“虚拟库存”移入一个已分配的猪栏",
 | 
					                "description": "将指定数量的猪只从批次的“虚拟库存”移入一个已分配的猪栏",
 | 
				
			||||||
@@ -1194,7 +1235,7 @@ const docTemplate = `{
 | 
				
			|||||||
                    "application/json"
 | 
					                    "application/json"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "tags": [
 | 
					                "tags": [
 | 
				
			||||||
                    "猪批次管理"
 | 
					                    "猪群管理"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "summary": "将猪只从“虚拟库存”移入指定猪栏",
 | 
					                "summary": "将猪只从“虚拟库存”移入指定猪栏",
 | 
				
			||||||
                "parameters": [
 | 
					                "parameters": [
 | 
				
			||||||
@@ -1225,6 +1266,375 @@ const docTemplate = `{
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{id}/record-cull": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "记录猪批次中正常猪只淘汰的数量和发生时间",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "记录正常猪只淘汰事件",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "记录正常猪只淘汰请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.RecordCullRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "记录成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{id}/record-death": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "记录猪批次中正常猪只死亡的数量和发生时间",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "记录正常猪只死亡事件",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "记录正常猪只死亡请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.RecordDeathRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "记录成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{id}/record-sick-pig-cull": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "记录猪批次中病猪淘汰的数量、治疗地点和发生时间",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "记录病猪淘汰事件",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "记录病猪淘汰请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.RecordSickPigCullRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "记录成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{id}/record-sick-pig-death": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "记录猪批次中病猪死亡的数量、治疗地点和发生时间",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "记录病猪死亡事件",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "记录病猪死亡请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.RecordSickPigDeathRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "记录成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{id}/record-sick-pig-recovery": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "记录猪批次中病猪康复的数量、治疗地点和发生时间",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "记录病猪康复事件",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "记录病猪康复请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.RecordSickPigRecoveryRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "记录成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{id}/record-sick-pigs": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "记录猪批次中新增病猪的数量、治疗地点和发生时间",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "记录新增病猪事件",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "记录病猪请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.RecordSickPigsRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "记录成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{id}/sell-pigs": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "记录猪批次中的猪只出售事件",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "处理卖猪的业务逻辑",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "卖猪请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.SellPigsRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "卖猪成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{id}/transfer-within-batch": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "将指定数量的猪只在同一个猪群的不同猪栏间调动",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "群内调栏",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "群内调栏请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.TransferPigsWithinBatchRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "调栏成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{sourceBatchID}/transfer-across-batches": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "将指定数量的猪只从一个猪群的猪栏调动到另一个猪群的猪栏",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "跨猪群调栏",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "源猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "sourceBatchID",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "跨群调栏请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.TransferPigsAcrossBatchesRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "调栏成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "/api/v1/pig-houses": {
 | 
					        "/api/v1/pig-houses": {
 | 
				
			||||||
            "get": {
 | 
					            "get": {
 | 
				
			||||||
                "description": "获取所有猪舍的列表",
 | 
					                "description": "获取所有猪舍的列表",
 | 
				
			||||||
@@ -1930,6 +2340,50 @@ const docTemplate = `{
 | 
				
			|||||||
        "dto.AssignEmptyPensToBatchRequest": {
 | 
					        "dto.AssignEmptyPensToBatchRequest": {
 | 
				
			||||||
            "type": "object"
 | 
					            "type": "object"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.BuyPigsRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "penID",
 | 
				
			||||||
 | 
					                "quantity",
 | 
				
			||||||
 | 
					                "totalPrice",
 | 
				
			||||||
 | 
					                "tradeDate",
 | 
				
			||||||
 | 
					                "traderName",
 | 
				
			||||||
 | 
					                "unitPrice"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "penID": {
 | 
				
			||||||
 | 
					                    "description": "猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "买入猪只数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "totalPrice": {
 | 
				
			||||||
 | 
					                    "description": "总价",
 | 
				
			||||||
 | 
					                    "type": "number",
 | 
				
			||||||
 | 
					                    "minimum": 0
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "tradeDate": {
 | 
				
			||||||
 | 
					                    "description": "交易日期",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "traderName": {
 | 
				
			||||||
 | 
					                    "description": "交易方名称",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "unitPrice": {
 | 
				
			||||||
 | 
					                    "description": "单价",
 | 
				
			||||||
 | 
					                    "type": "number",
 | 
				
			||||||
 | 
					                    "minimum": 0
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "dto.CreateAreaControllerRequest": {
 | 
					        "dto.CreateAreaControllerRequest": {
 | 
				
			||||||
            "type": "object",
 | 
					            "type": "object",
 | 
				
			||||||
            "required": [
 | 
					            "required": [
 | 
				
			||||||
@@ -2541,6 +2995,248 @@ const docTemplate = `{
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.RecordCullRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "happenedAt",
 | 
				
			||||||
 | 
					                "penID",
 | 
				
			||||||
 | 
					                "quantity"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "happenedAt": {
 | 
				
			||||||
 | 
					                    "description": "发生时间",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "penID": {
 | 
				
			||||||
 | 
					                    "description": "猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "淘汰猪数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.RecordDeathRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "happenedAt",
 | 
				
			||||||
 | 
					                "penID",
 | 
				
			||||||
 | 
					                "quantity"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "happenedAt": {
 | 
				
			||||||
 | 
					                    "description": "发生时间",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "penID": {
 | 
				
			||||||
 | 
					                    "description": "猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "死亡猪数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.RecordSickPigCullRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "happenedAt",
 | 
				
			||||||
 | 
					                "penID",
 | 
				
			||||||
 | 
					                "quantity",
 | 
				
			||||||
 | 
					                "treatmentLocation"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "happenedAt": {
 | 
				
			||||||
 | 
					                    "description": "发生时间",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "penID": {
 | 
				
			||||||
 | 
					                    "description": "猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "淘汰猪数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "treatmentLocation": {
 | 
				
			||||||
 | 
					                    "description": "治疗地点",
 | 
				
			||||||
 | 
					                    "allOf": [
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/models.PigBatchSickPigTreatmentLocation"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    ]
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.RecordSickPigDeathRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "happenedAt",
 | 
				
			||||||
 | 
					                "penID",
 | 
				
			||||||
 | 
					                "quantity",
 | 
				
			||||||
 | 
					                "treatmentLocation"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "happenedAt": {
 | 
				
			||||||
 | 
					                    "description": "发生时间",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "penID": {
 | 
				
			||||||
 | 
					                    "description": "猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "死亡猪数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "treatmentLocation": {
 | 
				
			||||||
 | 
					                    "description": "治疗地点",
 | 
				
			||||||
 | 
					                    "allOf": [
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/models.PigBatchSickPigTreatmentLocation"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    ]
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.RecordSickPigRecoveryRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "happenedAt",
 | 
				
			||||||
 | 
					                "penID",
 | 
				
			||||||
 | 
					                "quantity",
 | 
				
			||||||
 | 
					                "treatmentLocation"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "happenedAt": {
 | 
				
			||||||
 | 
					                    "description": "发生时间",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "penID": {
 | 
				
			||||||
 | 
					                    "description": "猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "康复猪数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "treatmentLocation": {
 | 
				
			||||||
 | 
					                    "description": "治疗地点",
 | 
				
			||||||
 | 
					                    "allOf": [
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/models.PigBatchSickPigTreatmentLocation"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    ]
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.RecordSickPigsRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "happenedAt",
 | 
				
			||||||
 | 
					                "penID",
 | 
				
			||||||
 | 
					                "quantity",
 | 
				
			||||||
 | 
					                "treatmentLocation"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "happenedAt": {
 | 
				
			||||||
 | 
					                    "description": "发生时间",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "penID": {
 | 
				
			||||||
 | 
					                    "description": "猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "病猪数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "treatmentLocation": {
 | 
				
			||||||
 | 
					                    "description": "治疗地点",
 | 
				
			||||||
 | 
					                    "allOf": [
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/models.PigBatchSickPigTreatmentLocation"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    ]
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.SellPigsRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "penID",
 | 
				
			||||||
 | 
					                "quantity",
 | 
				
			||||||
 | 
					                "totalPrice",
 | 
				
			||||||
 | 
					                "tradeDate",
 | 
				
			||||||
 | 
					                "traderName",
 | 
				
			||||||
 | 
					                "unitPrice"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "penID": {
 | 
				
			||||||
 | 
					                    "description": "猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "卖出猪只数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "totalPrice": {
 | 
				
			||||||
 | 
					                    "description": "总价",
 | 
				
			||||||
 | 
					                    "type": "number",
 | 
				
			||||||
 | 
					                    "minimum": 0
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "tradeDate": {
 | 
				
			||||||
 | 
					                    "description": "交易日期",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "traderName": {
 | 
				
			||||||
 | 
					                    "description": "交易方名称",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "unitPrice": {
 | 
				
			||||||
 | 
					                    "description": "单价",
 | 
				
			||||||
 | 
					                    "type": "number",
 | 
				
			||||||
 | 
					                    "minimum": 0
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "dto.SubPlanResponse": {
 | 
					        "dto.SubPlanResponse": {
 | 
				
			||||||
            "type": "object",
 | 
					            "type": "object",
 | 
				
			||||||
            "properties": {
 | 
					            "properties": {
 | 
				
			||||||
@@ -2631,6 +3327,65 @@ const docTemplate = `{
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.TransferPigsAcrossBatchesRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "destBatchID",
 | 
				
			||||||
 | 
					                "fromPenID",
 | 
				
			||||||
 | 
					                "quantity",
 | 
				
			||||||
 | 
					                "toPenID"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "destBatchID": {
 | 
				
			||||||
 | 
					                    "description": "目标猪批次ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "fromPenID": {
 | 
				
			||||||
 | 
					                    "description": "源猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "调栏猪只数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "toPenID": {
 | 
				
			||||||
 | 
					                    "description": "目标猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.TransferPigsWithinBatchRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "fromPenID",
 | 
				
			||||||
 | 
					                "quantity",
 | 
				
			||||||
 | 
					                "toPenID"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "fromPenID": {
 | 
				
			||||||
 | 
					                    "description": "源猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "调栏猪只数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "toPenID": {
 | 
				
			||||||
 | 
					                    "description": "目标猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "dto.UpdateAreaControllerRequest": {
 | 
					        "dto.UpdateAreaControllerRequest": {
 | 
				
			||||||
            "type": "object",
 | 
					            "type": "object",
 | 
				
			||||||
            "required": [
 | 
					            "required": [
 | 
				
			||||||
@@ -2870,6 +3625,17 @@ const docTemplate = `{
 | 
				
			|||||||
                "OriginTypePurchased"
 | 
					                "OriginTypePurchased"
 | 
				
			||||||
            ]
 | 
					            ]
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "models.PigBatchSickPigTreatmentLocation": {
 | 
				
			||||||
 | 
					            "type": "string",
 | 
				
			||||||
 | 
					            "enum": [
 | 
				
			||||||
 | 
					                "原地治疗",
 | 
				
			||||||
 | 
					                "病猪栏治疗"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "x-enum-varnames": [
 | 
				
			||||||
 | 
					                "TreatmentLocationOnSite",
 | 
				
			||||||
 | 
					                "TreatmentLocationSickBay"
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "models.PigBatchStatus": {
 | 
					        "models.PigBatchStatus": {
 | 
				
			||||||
            "type": "string",
 | 
					            "type": "string",
 | 
				
			||||||
            "enum": [
 | 
					            "enum": [
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -856,7 +856,7 @@
 | 
				
			|||||||
                    "application/json"
 | 
					                    "application/json"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "tags": [
 | 
					                "tags": [
 | 
				
			||||||
                    "猪批次管理"
 | 
					                    "猪群管理"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "summary": "获取猪批次列表",
 | 
					                "summary": "获取猪批次列表",
 | 
				
			||||||
                "parameters": [
 | 
					                "parameters": [
 | 
				
			||||||
@@ -900,7 +900,7 @@
 | 
				
			|||||||
                    "application/json"
 | 
					                    "application/json"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "tags": [
 | 
					                "tags": [
 | 
				
			||||||
                    "猪批次管理"
 | 
					                    "猪群管理"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "summary": "创建猪批次",
 | 
					                "summary": "创建猪批次",
 | 
				
			||||||
                "parameters": [
 | 
					                "parameters": [
 | 
				
			||||||
@@ -943,7 +943,7 @@
 | 
				
			|||||||
                    "application/json"
 | 
					                    "application/json"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "tags": [
 | 
					                "tags": [
 | 
				
			||||||
                    "猪批次管理"
 | 
					                    "猪群管理"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "summary": "从猪批次移除空栏",
 | 
					                "summary": "从猪批次移除空栏",
 | 
				
			||||||
                "parameters": [
 | 
					                "parameters": [
 | 
				
			||||||
@@ -982,7 +982,7 @@
 | 
				
			|||||||
                    "application/json"
 | 
					                    "application/json"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "tags": [
 | 
					                "tags": [
 | 
				
			||||||
                    "猪批次管理"
 | 
					                    "猪群管理"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "summary": "将猪栏划拨到新批次",
 | 
					                "summary": "将猪栏划拨到新批次",
 | 
				
			||||||
                "parameters": [
 | 
					                "parameters": [
 | 
				
			||||||
@@ -1020,7 +1020,7 @@
 | 
				
			|||||||
                    "application/json"
 | 
					                    "application/json"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "tags": [
 | 
					                "tags": [
 | 
				
			||||||
                    "猪批次管理"
 | 
					                    "猪群管理"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "summary": "获取单个猪批次",
 | 
					                "summary": "获取单个猪批次",
 | 
				
			||||||
                "parameters": [
 | 
					                "parameters": [
 | 
				
			||||||
@@ -1062,7 +1062,7 @@
 | 
				
			|||||||
                    "application/json"
 | 
					                    "application/json"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "tags": [
 | 
					                "tags": [
 | 
				
			||||||
                    "猪批次管理"
 | 
					                    "猪群管理"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "summary": "更新猪批次",
 | 
					                "summary": "更新猪批次",
 | 
				
			||||||
                "parameters": [
 | 
					                "parameters": [
 | 
				
			||||||
@@ -1110,7 +1110,7 @@
 | 
				
			|||||||
                    "application/json"
 | 
					                    "application/json"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "tags": [
 | 
					                "tags": [
 | 
				
			||||||
                    "猪批次管理"
 | 
					                    "猪群管理"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "summary": "删除猪批次",
 | 
					                "summary": "删除猪批次",
 | 
				
			||||||
                "parameters": [
 | 
					                "parameters": [
 | 
				
			||||||
@@ -1142,7 +1142,7 @@
 | 
				
			|||||||
                    "application/json"
 | 
					                    "application/json"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "tags": [
 | 
					                "tags": [
 | 
				
			||||||
                    "猪批次管理"
 | 
					                    "猪群管理"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "summary": "为猪批次分配空栏",
 | 
					                "summary": "为猪批次分配空栏",
 | 
				
			||||||
                "parameters": [
 | 
					                "parameters": [
 | 
				
			||||||
@@ -1173,6 +1173,47 @@
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{id}/buy-pigs": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "记录猪批次中的猪只购买事件",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "处理买猪的业务逻辑",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "买猪请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.BuyPigsRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "买猪成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "/api/v1/pig-batches/{id}/move-pigs-into-pen": {
 | 
					        "/api/v1/pig-batches/{id}/move-pigs-into-pen": {
 | 
				
			||||||
            "post": {
 | 
					            "post": {
 | 
				
			||||||
                "description": "将指定数量的猪只从批次的“虚拟库存”移入一个已分配的猪栏",
 | 
					                "description": "将指定数量的猪只从批次的“虚拟库存”移入一个已分配的猪栏",
 | 
				
			||||||
@@ -1183,7 +1224,7 @@
 | 
				
			|||||||
                    "application/json"
 | 
					                    "application/json"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "tags": [
 | 
					                "tags": [
 | 
				
			||||||
                    "猪批次管理"
 | 
					                    "猪群管理"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "summary": "将猪只从“虚拟库存”移入指定猪栏",
 | 
					                "summary": "将猪只从“虚拟库存”移入指定猪栏",
 | 
				
			||||||
                "parameters": [
 | 
					                "parameters": [
 | 
				
			||||||
@@ -1214,6 +1255,375 @@
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{id}/record-cull": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "记录猪批次中正常猪只淘汰的数量和发生时间",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "记录正常猪只淘汰事件",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "记录正常猪只淘汰请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.RecordCullRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "记录成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{id}/record-death": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "记录猪批次中正常猪只死亡的数量和发生时间",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "记录正常猪只死亡事件",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "记录正常猪只死亡请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.RecordDeathRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "记录成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{id}/record-sick-pig-cull": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "记录猪批次中病猪淘汰的数量、治疗地点和发生时间",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "记录病猪淘汰事件",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "记录病猪淘汰请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.RecordSickPigCullRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "记录成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{id}/record-sick-pig-death": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "记录猪批次中病猪死亡的数量、治疗地点和发生时间",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "记录病猪死亡事件",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "记录病猪死亡请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.RecordSickPigDeathRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "记录成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{id}/record-sick-pig-recovery": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "记录猪批次中病猪康复的数量、治疗地点和发生时间",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "记录病猪康复事件",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "记录病猪康复请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.RecordSickPigRecoveryRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "记录成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{id}/record-sick-pigs": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "记录猪批次中新增病猪的数量、治疗地点和发生时间",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "记录新增病猪事件",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "记录病猪请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.RecordSickPigsRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "记录成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{id}/sell-pigs": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "记录猪批次中的猪只出售事件",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "处理卖猪的业务逻辑",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "卖猪请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.SellPigsRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "卖猪成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{id}/transfer-within-batch": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "将指定数量的猪只在同一个猪群的不同猪栏间调动",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "群内调栏",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "群内调栏请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.TransferPigsWithinBatchRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "调栏成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "/api/v1/pig-batches/{sourceBatchID}/transfer-across-batches": {
 | 
				
			||||||
 | 
					            "post": {
 | 
				
			||||||
 | 
					                "description": "将指定数量的猪只从一个猪群的猪栏调动到另一个猪群的猪栏",
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "猪批次管理"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "跨猪群调栏",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "源猪批次ID",
 | 
				
			||||||
 | 
					                        "name": "sourceBatchID",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "description": "跨群调栏请求信息",
 | 
				
			||||||
 | 
					                        "name": "body",
 | 
				
			||||||
 | 
					                        "in": "body",
 | 
				
			||||||
 | 
					                        "required": true,
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/dto.TransferPigsAcrossBatchesRequest"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "调栏成功",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/controller.Response"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "/api/v1/pig-houses": {
 | 
					        "/api/v1/pig-houses": {
 | 
				
			||||||
            "get": {
 | 
					            "get": {
 | 
				
			||||||
                "description": "获取所有猪舍的列表",
 | 
					                "description": "获取所有猪舍的列表",
 | 
				
			||||||
@@ -1919,6 +2329,50 @@
 | 
				
			|||||||
        "dto.AssignEmptyPensToBatchRequest": {
 | 
					        "dto.AssignEmptyPensToBatchRequest": {
 | 
				
			||||||
            "type": "object"
 | 
					            "type": "object"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.BuyPigsRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "penID",
 | 
				
			||||||
 | 
					                "quantity",
 | 
				
			||||||
 | 
					                "totalPrice",
 | 
				
			||||||
 | 
					                "tradeDate",
 | 
				
			||||||
 | 
					                "traderName",
 | 
				
			||||||
 | 
					                "unitPrice"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "penID": {
 | 
				
			||||||
 | 
					                    "description": "猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "买入猪只数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "totalPrice": {
 | 
				
			||||||
 | 
					                    "description": "总价",
 | 
				
			||||||
 | 
					                    "type": "number",
 | 
				
			||||||
 | 
					                    "minimum": 0
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "tradeDate": {
 | 
				
			||||||
 | 
					                    "description": "交易日期",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "traderName": {
 | 
				
			||||||
 | 
					                    "description": "交易方名称",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "unitPrice": {
 | 
				
			||||||
 | 
					                    "description": "单价",
 | 
				
			||||||
 | 
					                    "type": "number",
 | 
				
			||||||
 | 
					                    "minimum": 0
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "dto.CreateAreaControllerRequest": {
 | 
					        "dto.CreateAreaControllerRequest": {
 | 
				
			||||||
            "type": "object",
 | 
					            "type": "object",
 | 
				
			||||||
            "required": [
 | 
					            "required": [
 | 
				
			||||||
@@ -2530,6 +2984,248 @@
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.RecordCullRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "happenedAt",
 | 
				
			||||||
 | 
					                "penID",
 | 
				
			||||||
 | 
					                "quantity"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "happenedAt": {
 | 
				
			||||||
 | 
					                    "description": "发生时间",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "penID": {
 | 
				
			||||||
 | 
					                    "description": "猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "淘汰猪数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.RecordDeathRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "happenedAt",
 | 
				
			||||||
 | 
					                "penID",
 | 
				
			||||||
 | 
					                "quantity"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "happenedAt": {
 | 
				
			||||||
 | 
					                    "description": "发生时间",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "penID": {
 | 
				
			||||||
 | 
					                    "description": "猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "死亡猪数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.RecordSickPigCullRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "happenedAt",
 | 
				
			||||||
 | 
					                "penID",
 | 
				
			||||||
 | 
					                "quantity",
 | 
				
			||||||
 | 
					                "treatmentLocation"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "happenedAt": {
 | 
				
			||||||
 | 
					                    "description": "发生时间",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "penID": {
 | 
				
			||||||
 | 
					                    "description": "猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "淘汰猪数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "treatmentLocation": {
 | 
				
			||||||
 | 
					                    "description": "治疗地点",
 | 
				
			||||||
 | 
					                    "allOf": [
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/models.PigBatchSickPigTreatmentLocation"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    ]
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.RecordSickPigDeathRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "happenedAt",
 | 
				
			||||||
 | 
					                "penID",
 | 
				
			||||||
 | 
					                "quantity",
 | 
				
			||||||
 | 
					                "treatmentLocation"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "happenedAt": {
 | 
				
			||||||
 | 
					                    "description": "发生时间",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "penID": {
 | 
				
			||||||
 | 
					                    "description": "猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "死亡猪数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "treatmentLocation": {
 | 
				
			||||||
 | 
					                    "description": "治疗地点",
 | 
				
			||||||
 | 
					                    "allOf": [
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/models.PigBatchSickPigTreatmentLocation"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    ]
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.RecordSickPigRecoveryRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "happenedAt",
 | 
				
			||||||
 | 
					                "penID",
 | 
				
			||||||
 | 
					                "quantity",
 | 
				
			||||||
 | 
					                "treatmentLocation"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "happenedAt": {
 | 
				
			||||||
 | 
					                    "description": "发生时间",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "penID": {
 | 
				
			||||||
 | 
					                    "description": "猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "康复猪数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "treatmentLocation": {
 | 
				
			||||||
 | 
					                    "description": "治疗地点",
 | 
				
			||||||
 | 
					                    "allOf": [
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/models.PigBatchSickPigTreatmentLocation"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    ]
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.RecordSickPigsRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "happenedAt",
 | 
				
			||||||
 | 
					                "penID",
 | 
				
			||||||
 | 
					                "quantity",
 | 
				
			||||||
 | 
					                "treatmentLocation"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "happenedAt": {
 | 
				
			||||||
 | 
					                    "description": "发生时间",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "penID": {
 | 
				
			||||||
 | 
					                    "description": "猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "病猪数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "treatmentLocation": {
 | 
				
			||||||
 | 
					                    "description": "治疗地点",
 | 
				
			||||||
 | 
					                    "allOf": [
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/models.PigBatchSickPigTreatmentLocation"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    ]
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.SellPigsRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "penID",
 | 
				
			||||||
 | 
					                "quantity",
 | 
				
			||||||
 | 
					                "totalPrice",
 | 
				
			||||||
 | 
					                "tradeDate",
 | 
				
			||||||
 | 
					                "traderName",
 | 
				
			||||||
 | 
					                "unitPrice"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "penID": {
 | 
				
			||||||
 | 
					                    "description": "猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "卖出猪只数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "totalPrice": {
 | 
				
			||||||
 | 
					                    "description": "总价",
 | 
				
			||||||
 | 
					                    "type": "number",
 | 
				
			||||||
 | 
					                    "minimum": 0
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "tradeDate": {
 | 
				
			||||||
 | 
					                    "description": "交易日期",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "traderName": {
 | 
				
			||||||
 | 
					                    "description": "交易方名称",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "unitPrice": {
 | 
				
			||||||
 | 
					                    "description": "单价",
 | 
				
			||||||
 | 
					                    "type": "number",
 | 
				
			||||||
 | 
					                    "minimum": 0
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "dto.SubPlanResponse": {
 | 
					        "dto.SubPlanResponse": {
 | 
				
			||||||
            "type": "object",
 | 
					            "type": "object",
 | 
				
			||||||
            "properties": {
 | 
					            "properties": {
 | 
				
			||||||
@@ -2620,6 +3316,65 @@
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.TransferPigsAcrossBatchesRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "destBatchID",
 | 
				
			||||||
 | 
					                "fromPenID",
 | 
				
			||||||
 | 
					                "quantity",
 | 
				
			||||||
 | 
					                "toPenID"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "destBatchID": {
 | 
				
			||||||
 | 
					                    "description": "目标猪批次ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "fromPenID": {
 | 
				
			||||||
 | 
					                    "description": "源猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "调栏猪只数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "toPenID": {
 | 
				
			||||||
 | 
					                    "description": "目标猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "dto.TransferPigsWithinBatchRequest": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "required": [
 | 
				
			||||||
 | 
					                "fromPenID",
 | 
				
			||||||
 | 
					                "quantity",
 | 
				
			||||||
 | 
					                "toPenID"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "fromPenID": {
 | 
				
			||||||
 | 
					                    "description": "源猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "quantity": {
 | 
				
			||||||
 | 
					                    "description": "调栏猪只数量",
 | 
				
			||||||
 | 
					                    "type": "integer",
 | 
				
			||||||
 | 
					                    "minimum": 1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "remarks": {
 | 
				
			||||||
 | 
					                    "description": "备注",
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "toPenID": {
 | 
				
			||||||
 | 
					                    "description": "目标猪栏ID",
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "dto.UpdateAreaControllerRequest": {
 | 
					        "dto.UpdateAreaControllerRequest": {
 | 
				
			||||||
            "type": "object",
 | 
					            "type": "object",
 | 
				
			||||||
            "required": [
 | 
					            "required": [
 | 
				
			||||||
@@ -2859,6 +3614,17 @@
 | 
				
			|||||||
                "OriginTypePurchased"
 | 
					                "OriginTypePurchased"
 | 
				
			||||||
            ]
 | 
					            ]
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "models.PigBatchSickPigTreatmentLocation": {
 | 
				
			||||||
 | 
					            "type": "string",
 | 
				
			||||||
 | 
					            "enum": [
 | 
				
			||||||
 | 
					                "原地治疗",
 | 
				
			||||||
 | 
					                "病猪栏治疗"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "x-enum-varnames": [
 | 
				
			||||||
 | 
					                "TreatmentLocationOnSite",
 | 
				
			||||||
 | 
					                "TreatmentLocationSickBay"
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "models.PigBatchStatus": {
 | 
					        "models.PigBatchStatus": {
 | 
				
			||||||
            "type": "string",
 | 
					            "type": "string",
 | 
				
			||||||
            "enum": [
 | 
					            "enum": [
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -71,6 +71,40 @@ definitions:
 | 
				
			|||||||
    type: object
 | 
					    type: object
 | 
				
			||||||
  dto.AssignEmptyPensToBatchRequest:
 | 
					  dto.AssignEmptyPensToBatchRequest:
 | 
				
			||||||
    type: object
 | 
					    type: object
 | 
				
			||||||
 | 
					  dto.BuyPigsRequest:
 | 
				
			||||||
 | 
					    properties:
 | 
				
			||||||
 | 
					      penID:
 | 
				
			||||||
 | 
					        description: 猪栏ID
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      quantity:
 | 
				
			||||||
 | 
					        description: 买入猪只数量
 | 
				
			||||||
 | 
					        minimum: 1
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      remarks:
 | 
				
			||||||
 | 
					        description: 备注
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      totalPrice:
 | 
				
			||||||
 | 
					        description: 总价
 | 
				
			||||||
 | 
					        minimum: 0
 | 
				
			||||||
 | 
					        type: number
 | 
				
			||||||
 | 
					      tradeDate:
 | 
				
			||||||
 | 
					        description: 交易日期
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      traderName:
 | 
				
			||||||
 | 
					        description: 交易方名称
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      unitPrice:
 | 
				
			||||||
 | 
					        description: 单价
 | 
				
			||||||
 | 
					        minimum: 0
 | 
				
			||||||
 | 
					        type: number
 | 
				
			||||||
 | 
					    required:
 | 
				
			||||||
 | 
					    - penID
 | 
				
			||||||
 | 
					    - quantity
 | 
				
			||||||
 | 
					    - totalPrice
 | 
				
			||||||
 | 
					    - tradeDate
 | 
				
			||||||
 | 
					    - traderName
 | 
				
			||||||
 | 
					    - unitPrice
 | 
				
			||||||
 | 
					    type: object
 | 
				
			||||||
  dto.CreateAreaControllerRequest:
 | 
					  dto.CreateAreaControllerRequest:
 | 
				
			||||||
    properties:
 | 
					    properties:
 | 
				
			||||||
      location:
 | 
					      location:
 | 
				
			||||||
@@ -481,6 +515,180 @@ definitions:
 | 
				
			|||||||
    - penID
 | 
					    - penID
 | 
				
			||||||
    - toBatchID
 | 
					    - toBatchID
 | 
				
			||||||
    type: object
 | 
					    type: object
 | 
				
			||||||
 | 
					  dto.RecordCullRequest:
 | 
				
			||||||
 | 
					    properties:
 | 
				
			||||||
 | 
					      happenedAt:
 | 
				
			||||||
 | 
					        description: 发生时间
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      penID:
 | 
				
			||||||
 | 
					        description: 猪栏ID
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      quantity:
 | 
				
			||||||
 | 
					        description: 淘汰猪数量
 | 
				
			||||||
 | 
					        minimum: 1
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      remarks:
 | 
				
			||||||
 | 
					        description: 备注
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					    required:
 | 
				
			||||||
 | 
					    - happenedAt
 | 
				
			||||||
 | 
					    - penID
 | 
				
			||||||
 | 
					    - quantity
 | 
				
			||||||
 | 
					    type: object
 | 
				
			||||||
 | 
					  dto.RecordDeathRequest:
 | 
				
			||||||
 | 
					    properties:
 | 
				
			||||||
 | 
					      happenedAt:
 | 
				
			||||||
 | 
					        description: 发生时间
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      penID:
 | 
				
			||||||
 | 
					        description: 猪栏ID
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      quantity:
 | 
				
			||||||
 | 
					        description: 死亡猪数量
 | 
				
			||||||
 | 
					        minimum: 1
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      remarks:
 | 
				
			||||||
 | 
					        description: 备注
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					    required:
 | 
				
			||||||
 | 
					    - happenedAt
 | 
				
			||||||
 | 
					    - penID
 | 
				
			||||||
 | 
					    - quantity
 | 
				
			||||||
 | 
					    type: object
 | 
				
			||||||
 | 
					  dto.RecordSickPigCullRequest:
 | 
				
			||||||
 | 
					    properties:
 | 
				
			||||||
 | 
					      happenedAt:
 | 
				
			||||||
 | 
					        description: 发生时间
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      penID:
 | 
				
			||||||
 | 
					        description: 猪栏ID
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      quantity:
 | 
				
			||||||
 | 
					        description: 淘汰猪数量
 | 
				
			||||||
 | 
					        minimum: 1
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      remarks:
 | 
				
			||||||
 | 
					        description: 备注
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      treatmentLocation:
 | 
				
			||||||
 | 
					        allOf:
 | 
				
			||||||
 | 
					        - $ref: '#/definitions/models.PigBatchSickPigTreatmentLocation'
 | 
				
			||||||
 | 
					        description: 治疗地点
 | 
				
			||||||
 | 
					    required:
 | 
				
			||||||
 | 
					    - happenedAt
 | 
				
			||||||
 | 
					    - penID
 | 
				
			||||||
 | 
					    - quantity
 | 
				
			||||||
 | 
					    - treatmentLocation
 | 
				
			||||||
 | 
					    type: object
 | 
				
			||||||
 | 
					  dto.RecordSickPigDeathRequest:
 | 
				
			||||||
 | 
					    properties:
 | 
				
			||||||
 | 
					      happenedAt:
 | 
				
			||||||
 | 
					        description: 发生时间
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      penID:
 | 
				
			||||||
 | 
					        description: 猪栏ID
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      quantity:
 | 
				
			||||||
 | 
					        description: 死亡猪数量
 | 
				
			||||||
 | 
					        minimum: 1
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      remarks:
 | 
				
			||||||
 | 
					        description: 备注
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      treatmentLocation:
 | 
				
			||||||
 | 
					        allOf:
 | 
				
			||||||
 | 
					        - $ref: '#/definitions/models.PigBatchSickPigTreatmentLocation'
 | 
				
			||||||
 | 
					        description: 治疗地点
 | 
				
			||||||
 | 
					    required:
 | 
				
			||||||
 | 
					    - happenedAt
 | 
				
			||||||
 | 
					    - penID
 | 
				
			||||||
 | 
					    - quantity
 | 
				
			||||||
 | 
					    - treatmentLocation
 | 
				
			||||||
 | 
					    type: object
 | 
				
			||||||
 | 
					  dto.RecordSickPigRecoveryRequest:
 | 
				
			||||||
 | 
					    properties:
 | 
				
			||||||
 | 
					      happenedAt:
 | 
				
			||||||
 | 
					        description: 发生时间
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      penID:
 | 
				
			||||||
 | 
					        description: 猪栏ID
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      quantity:
 | 
				
			||||||
 | 
					        description: 康复猪数量
 | 
				
			||||||
 | 
					        minimum: 1
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      remarks:
 | 
				
			||||||
 | 
					        description: 备注
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      treatmentLocation:
 | 
				
			||||||
 | 
					        allOf:
 | 
				
			||||||
 | 
					        - $ref: '#/definitions/models.PigBatchSickPigTreatmentLocation'
 | 
				
			||||||
 | 
					        description: 治疗地点
 | 
				
			||||||
 | 
					    required:
 | 
				
			||||||
 | 
					    - happenedAt
 | 
				
			||||||
 | 
					    - penID
 | 
				
			||||||
 | 
					    - quantity
 | 
				
			||||||
 | 
					    - treatmentLocation
 | 
				
			||||||
 | 
					    type: object
 | 
				
			||||||
 | 
					  dto.RecordSickPigsRequest:
 | 
				
			||||||
 | 
					    properties:
 | 
				
			||||||
 | 
					      happenedAt:
 | 
				
			||||||
 | 
					        description: 发生时间
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      penID:
 | 
				
			||||||
 | 
					        description: 猪栏ID
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      quantity:
 | 
				
			||||||
 | 
					        description: 病猪数量
 | 
				
			||||||
 | 
					        minimum: 1
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      remarks:
 | 
				
			||||||
 | 
					        description: 备注
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      treatmentLocation:
 | 
				
			||||||
 | 
					        allOf:
 | 
				
			||||||
 | 
					        - $ref: '#/definitions/models.PigBatchSickPigTreatmentLocation'
 | 
				
			||||||
 | 
					        description: 治疗地点
 | 
				
			||||||
 | 
					    required:
 | 
				
			||||||
 | 
					    - happenedAt
 | 
				
			||||||
 | 
					    - penID
 | 
				
			||||||
 | 
					    - quantity
 | 
				
			||||||
 | 
					    - treatmentLocation
 | 
				
			||||||
 | 
					    type: object
 | 
				
			||||||
 | 
					  dto.SellPigsRequest:
 | 
				
			||||||
 | 
					    properties:
 | 
				
			||||||
 | 
					      penID:
 | 
				
			||||||
 | 
					        description: 猪栏ID
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      quantity:
 | 
				
			||||||
 | 
					        description: 卖出猪只数量
 | 
				
			||||||
 | 
					        minimum: 1
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      remarks:
 | 
				
			||||||
 | 
					        description: 备注
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      totalPrice:
 | 
				
			||||||
 | 
					        description: 总价
 | 
				
			||||||
 | 
					        minimum: 0
 | 
				
			||||||
 | 
					        type: number
 | 
				
			||||||
 | 
					      tradeDate:
 | 
				
			||||||
 | 
					        description: 交易日期
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      traderName:
 | 
				
			||||||
 | 
					        description: 交易方名称
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      unitPrice:
 | 
				
			||||||
 | 
					        description: 单价
 | 
				
			||||||
 | 
					        minimum: 0
 | 
				
			||||||
 | 
					        type: number
 | 
				
			||||||
 | 
					    required:
 | 
				
			||||||
 | 
					    - penID
 | 
				
			||||||
 | 
					    - quantity
 | 
				
			||||||
 | 
					    - totalPrice
 | 
				
			||||||
 | 
					    - tradeDate
 | 
				
			||||||
 | 
					    - traderName
 | 
				
			||||||
 | 
					    - unitPrice
 | 
				
			||||||
 | 
					    type: object
 | 
				
			||||||
  dto.SubPlanResponse:
 | 
					  dto.SubPlanResponse:
 | 
				
			||||||
    properties:
 | 
					    properties:
 | 
				
			||||||
      child_plan:
 | 
					      child_plan:
 | 
				
			||||||
@@ -542,6 +750,50 @@ definitions:
 | 
				
			|||||||
        - $ref: '#/definitions/models.TaskType'
 | 
					        - $ref: '#/definitions/models.TaskType'
 | 
				
			||||||
        example: 等待
 | 
					        example: 等待
 | 
				
			||||||
    type: object
 | 
					    type: object
 | 
				
			||||||
 | 
					  dto.TransferPigsAcrossBatchesRequest:
 | 
				
			||||||
 | 
					    properties:
 | 
				
			||||||
 | 
					      destBatchID:
 | 
				
			||||||
 | 
					        description: 目标猪批次ID
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      fromPenID:
 | 
				
			||||||
 | 
					        description: 源猪栏ID
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      quantity:
 | 
				
			||||||
 | 
					        description: 调栏猪只数量
 | 
				
			||||||
 | 
					        minimum: 1
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      remarks:
 | 
				
			||||||
 | 
					        description: 备注
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      toPenID:
 | 
				
			||||||
 | 
					        description: 目标猪栏ID
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					    required:
 | 
				
			||||||
 | 
					    - destBatchID
 | 
				
			||||||
 | 
					    - fromPenID
 | 
				
			||||||
 | 
					    - quantity
 | 
				
			||||||
 | 
					    - toPenID
 | 
				
			||||||
 | 
					    type: object
 | 
				
			||||||
 | 
					  dto.TransferPigsWithinBatchRequest:
 | 
				
			||||||
 | 
					    properties:
 | 
				
			||||||
 | 
					      fromPenID:
 | 
				
			||||||
 | 
					        description: 源猪栏ID
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      quantity:
 | 
				
			||||||
 | 
					        description: 调栏猪只数量
 | 
				
			||||||
 | 
					        minimum: 1
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      remarks:
 | 
				
			||||||
 | 
					        description: 备注
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      toPenID:
 | 
				
			||||||
 | 
					        description: 目标猪栏ID
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					    required:
 | 
				
			||||||
 | 
					    - fromPenID
 | 
				
			||||||
 | 
					    - quantity
 | 
				
			||||||
 | 
					    - toPenID
 | 
				
			||||||
 | 
					    type: object
 | 
				
			||||||
  dto.UpdateAreaControllerRequest:
 | 
					  dto.UpdateAreaControllerRequest:
 | 
				
			||||||
    properties:
 | 
					    properties:
 | 
				
			||||||
      location:
 | 
					      location:
 | 
				
			||||||
@@ -708,6 +960,14 @@ definitions:
 | 
				
			|||||||
    x-enum-varnames:
 | 
					    x-enum-varnames:
 | 
				
			||||||
    - OriginTypeSelfFarrowed
 | 
					    - OriginTypeSelfFarrowed
 | 
				
			||||||
    - OriginTypePurchased
 | 
					    - OriginTypePurchased
 | 
				
			||||||
 | 
					  models.PigBatchSickPigTreatmentLocation:
 | 
				
			||||||
 | 
					    enum:
 | 
				
			||||||
 | 
					    - 原地治疗
 | 
				
			||||||
 | 
					    - 病猪栏治疗
 | 
				
			||||||
 | 
					    type: string
 | 
				
			||||||
 | 
					    x-enum-varnames:
 | 
				
			||||||
 | 
					    - TreatmentLocationOnSite
 | 
				
			||||||
 | 
					    - TreatmentLocationSickBay
 | 
				
			||||||
  models.PigBatchStatus:
 | 
					  models.PigBatchStatus:
 | 
				
			||||||
    enum:
 | 
					    enum:
 | 
				
			||||||
    - 保育
 | 
					    - 保育
 | 
				
			||||||
@@ -1377,7 +1637,7 @@ paths:
 | 
				
			|||||||
              type: object
 | 
					              type: object
 | 
				
			||||||
      summary: 获取猪批次列表
 | 
					      summary: 获取猪批次列表
 | 
				
			||||||
      tags:
 | 
					      tags:
 | 
				
			||||||
      - 猪批次管理
 | 
					      - 猪群管理
 | 
				
			||||||
    post:
 | 
					    post:
 | 
				
			||||||
      consumes:
 | 
					      consumes:
 | 
				
			||||||
      - application/json
 | 
					      - application/json
 | 
				
			||||||
@@ -1403,7 +1663,7 @@ paths:
 | 
				
			|||||||
              type: object
 | 
					              type: object
 | 
				
			||||||
      summary: 创建猪批次
 | 
					      summary: 创建猪批次
 | 
				
			||||||
      tags:
 | 
					      tags:
 | 
				
			||||||
      - 猪批次管理
 | 
					      - 猪群管理
 | 
				
			||||||
  /api/v1/pig-batches/{batchID}/remove-pen/{penID}:
 | 
					  /api/v1/pig-batches/{batchID}/remove-pen/{penID}:
 | 
				
			||||||
    delete:
 | 
					    delete:
 | 
				
			||||||
      description: 将一个空闲猪栏从指定的猪批次中移除
 | 
					      description: 将一个空闲猪栏从指定的猪批次中移除
 | 
				
			||||||
@@ -1427,7 +1687,7 @@ paths:
 | 
				
			|||||||
            $ref: '#/definitions/controller.Response'
 | 
					            $ref: '#/definitions/controller.Response'
 | 
				
			||||||
      summary: 从猪批次移除空栏
 | 
					      summary: 从猪批次移除空栏
 | 
				
			||||||
      tags:
 | 
					      tags:
 | 
				
			||||||
      - 猪批次管理
 | 
					      - 猪群管理
 | 
				
			||||||
  /api/v1/pig-batches/{fromBatchID}/reclassify-pen:
 | 
					  /api/v1/pig-batches/{fromBatchID}/reclassify-pen:
 | 
				
			||||||
    post:
 | 
					    post:
 | 
				
			||||||
      consumes:
 | 
					      consumes:
 | 
				
			||||||
@@ -1454,7 +1714,7 @@ paths:
 | 
				
			|||||||
            $ref: '#/definitions/controller.Response'
 | 
					            $ref: '#/definitions/controller.Response'
 | 
				
			||||||
      summary: 将猪栏划拨到新批次
 | 
					      summary: 将猪栏划拨到新批次
 | 
				
			||||||
      tags:
 | 
					      tags:
 | 
				
			||||||
      - 猪批次管理
 | 
					      - 猪群管理
 | 
				
			||||||
  /api/v1/pig-batches/{id}:
 | 
					  /api/v1/pig-batches/{id}:
 | 
				
			||||||
    delete:
 | 
					    delete:
 | 
				
			||||||
      description: 根据ID删除一个猪批次
 | 
					      description: 根据ID删除一个猪批次
 | 
				
			||||||
@@ -1473,7 +1733,7 @@ paths:
 | 
				
			|||||||
            $ref: '#/definitions/controller.Response'
 | 
					            $ref: '#/definitions/controller.Response'
 | 
				
			||||||
      summary: 删除猪批次
 | 
					      summary: 删除猪批次
 | 
				
			||||||
      tags:
 | 
					      tags:
 | 
				
			||||||
      - 猪批次管理
 | 
					      - 猪群管理
 | 
				
			||||||
    get:
 | 
					    get:
 | 
				
			||||||
      description: 根据ID获取单个猪批次信息
 | 
					      description: 根据ID获取单个猪批次信息
 | 
				
			||||||
      parameters:
 | 
					      parameters:
 | 
				
			||||||
@@ -1496,7 +1756,7 @@ paths:
 | 
				
			|||||||
              type: object
 | 
					              type: object
 | 
				
			||||||
      summary: 获取单个猪批次
 | 
					      summary: 获取单个猪批次
 | 
				
			||||||
      tags:
 | 
					      tags:
 | 
				
			||||||
      - 猪批次管理
 | 
					      - 猪群管理
 | 
				
			||||||
    put:
 | 
					    put:
 | 
				
			||||||
      consumes:
 | 
					      consumes:
 | 
				
			||||||
      - application/json
 | 
					      - application/json
 | 
				
			||||||
@@ -1527,7 +1787,7 @@ paths:
 | 
				
			|||||||
              type: object
 | 
					              type: object
 | 
				
			||||||
      summary: 更新猪批次
 | 
					      summary: 更新猪批次
 | 
				
			||||||
      tags:
 | 
					      tags:
 | 
				
			||||||
      - 猪批次管理
 | 
					      - 猪群管理
 | 
				
			||||||
  /api/v1/pig-batches/{id}/assign-pens:
 | 
					  /api/v1/pig-batches/{id}/assign-pens:
 | 
				
			||||||
    post:
 | 
					    post:
 | 
				
			||||||
      consumes:
 | 
					      consumes:
 | 
				
			||||||
@@ -1554,6 +1814,33 @@ paths:
 | 
				
			|||||||
            $ref: '#/definitions/controller.Response'
 | 
					            $ref: '#/definitions/controller.Response'
 | 
				
			||||||
      summary: 为猪批次分配空栏
 | 
					      summary: 为猪批次分配空栏
 | 
				
			||||||
      tags:
 | 
					      tags:
 | 
				
			||||||
 | 
					      - 猪群管理
 | 
				
			||||||
 | 
					  /api/v1/pig-batches/{id}/buy-pigs:
 | 
				
			||||||
 | 
					    post:
 | 
				
			||||||
 | 
					      consumes:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      description: 记录猪批次中的猪只购买事件
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					      - description: 猪批次ID
 | 
				
			||||||
 | 
					        in: path
 | 
				
			||||||
 | 
					        name: id
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      - description: 买猪请求信息
 | 
				
			||||||
 | 
					        in: body
 | 
				
			||||||
 | 
					        name: body
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        schema:
 | 
				
			||||||
 | 
					          $ref: '#/definitions/dto.BuyPigsRequest'
 | 
				
			||||||
 | 
					      produces:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      responses:
 | 
				
			||||||
 | 
					        "200":
 | 
				
			||||||
 | 
					          description: 买猪成功
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            $ref: '#/definitions/controller.Response'
 | 
				
			||||||
 | 
					      summary: 处理买猪的业务逻辑
 | 
				
			||||||
 | 
					      tags:
 | 
				
			||||||
      - 猪批次管理
 | 
					      - 猪批次管理
 | 
				
			||||||
  /api/v1/pig-batches/{id}/move-pigs-into-pen:
 | 
					  /api/v1/pig-batches/{id}/move-pigs-into-pen:
 | 
				
			||||||
    post:
 | 
					    post:
 | 
				
			||||||
@@ -1581,6 +1868,249 @@ paths:
 | 
				
			|||||||
            $ref: '#/definitions/controller.Response'
 | 
					            $ref: '#/definitions/controller.Response'
 | 
				
			||||||
      summary: 将猪只从“虚拟库存”移入指定猪栏
 | 
					      summary: 将猪只从“虚拟库存”移入指定猪栏
 | 
				
			||||||
      tags:
 | 
					      tags:
 | 
				
			||||||
 | 
					      - 猪群管理
 | 
				
			||||||
 | 
					  /api/v1/pig-batches/{id}/record-cull:
 | 
				
			||||||
 | 
					    post:
 | 
				
			||||||
 | 
					      consumes:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      description: 记录猪批次中正常猪只淘汰的数量和发生时间
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					      - description: 猪批次ID
 | 
				
			||||||
 | 
					        in: path
 | 
				
			||||||
 | 
					        name: id
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      - description: 记录正常猪只淘汰请求信息
 | 
				
			||||||
 | 
					        in: body
 | 
				
			||||||
 | 
					        name: body
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        schema:
 | 
				
			||||||
 | 
					          $ref: '#/definitions/dto.RecordCullRequest'
 | 
				
			||||||
 | 
					      produces:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      responses:
 | 
				
			||||||
 | 
					        "200":
 | 
				
			||||||
 | 
					          description: 记录成功
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            $ref: '#/definitions/controller.Response'
 | 
				
			||||||
 | 
					      summary: 记录正常猪只淘汰事件
 | 
				
			||||||
 | 
					      tags:
 | 
				
			||||||
 | 
					      - 猪批次管理
 | 
				
			||||||
 | 
					  /api/v1/pig-batches/{id}/record-death:
 | 
				
			||||||
 | 
					    post:
 | 
				
			||||||
 | 
					      consumes:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      description: 记录猪批次中正常猪只死亡的数量和发生时间
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					      - description: 猪批次ID
 | 
				
			||||||
 | 
					        in: path
 | 
				
			||||||
 | 
					        name: id
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      - description: 记录正常猪只死亡请求信息
 | 
				
			||||||
 | 
					        in: body
 | 
				
			||||||
 | 
					        name: body
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        schema:
 | 
				
			||||||
 | 
					          $ref: '#/definitions/dto.RecordDeathRequest'
 | 
				
			||||||
 | 
					      produces:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      responses:
 | 
				
			||||||
 | 
					        "200":
 | 
				
			||||||
 | 
					          description: 记录成功
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            $ref: '#/definitions/controller.Response'
 | 
				
			||||||
 | 
					      summary: 记录正常猪只死亡事件
 | 
				
			||||||
 | 
					      tags:
 | 
				
			||||||
 | 
					      - 猪批次管理
 | 
				
			||||||
 | 
					  /api/v1/pig-batches/{id}/record-sick-pig-cull:
 | 
				
			||||||
 | 
					    post:
 | 
				
			||||||
 | 
					      consumes:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      description: 记录猪批次中病猪淘汰的数量、治疗地点和发生时间
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					      - description: 猪批次ID
 | 
				
			||||||
 | 
					        in: path
 | 
				
			||||||
 | 
					        name: id
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      - description: 记录病猪淘汰请求信息
 | 
				
			||||||
 | 
					        in: body
 | 
				
			||||||
 | 
					        name: body
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        schema:
 | 
				
			||||||
 | 
					          $ref: '#/definitions/dto.RecordSickPigCullRequest'
 | 
				
			||||||
 | 
					      produces:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      responses:
 | 
				
			||||||
 | 
					        "200":
 | 
				
			||||||
 | 
					          description: 记录成功
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            $ref: '#/definitions/controller.Response'
 | 
				
			||||||
 | 
					      summary: 记录病猪淘汰事件
 | 
				
			||||||
 | 
					      tags:
 | 
				
			||||||
 | 
					      - 猪批次管理
 | 
				
			||||||
 | 
					  /api/v1/pig-batches/{id}/record-sick-pig-death:
 | 
				
			||||||
 | 
					    post:
 | 
				
			||||||
 | 
					      consumes:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      description: 记录猪批次中病猪死亡的数量、治疗地点和发生时间
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					      - description: 猪批次ID
 | 
				
			||||||
 | 
					        in: path
 | 
				
			||||||
 | 
					        name: id
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      - description: 记录病猪死亡请求信息
 | 
				
			||||||
 | 
					        in: body
 | 
				
			||||||
 | 
					        name: body
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        schema:
 | 
				
			||||||
 | 
					          $ref: '#/definitions/dto.RecordSickPigDeathRequest'
 | 
				
			||||||
 | 
					      produces:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      responses:
 | 
				
			||||||
 | 
					        "200":
 | 
				
			||||||
 | 
					          description: 记录成功
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            $ref: '#/definitions/controller.Response'
 | 
				
			||||||
 | 
					      summary: 记录病猪死亡事件
 | 
				
			||||||
 | 
					      tags:
 | 
				
			||||||
 | 
					      - 猪批次管理
 | 
				
			||||||
 | 
					  /api/v1/pig-batches/{id}/record-sick-pig-recovery:
 | 
				
			||||||
 | 
					    post:
 | 
				
			||||||
 | 
					      consumes:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      description: 记录猪批次中病猪康复的数量、治疗地点和发生时间
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					      - description: 猪批次ID
 | 
				
			||||||
 | 
					        in: path
 | 
				
			||||||
 | 
					        name: id
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      - description: 记录病猪康复请求信息
 | 
				
			||||||
 | 
					        in: body
 | 
				
			||||||
 | 
					        name: body
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        schema:
 | 
				
			||||||
 | 
					          $ref: '#/definitions/dto.RecordSickPigRecoveryRequest'
 | 
				
			||||||
 | 
					      produces:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      responses:
 | 
				
			||||||
 | 
					        "200":
 | 
				
			||||||
 | 
					          description: 记录成功
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            $ref: '#/definitions/controller.Response'
 | 
				
			||||||
 | 
					      summary: 记录病猪康复事件
 | 
				
			||||||
 | 
					      tags:
 | 
				
			||||||
 | 
					      - 猪批次管理
 | 
				
			||||||
 | 
					  /api/v1/pig-batches/{id}/record-sick-pigs:
 | 
				
			||||||
 | 
					    post:
 | 
				
			||||||
 | 
					      consumes:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      description: 记录猪批次中新增病猪的数量、治疗地点和发生时间
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					      - description: 猪批次ID
 | 
				
			||||||
 | 
					        in: path
 | 
				
			||||||
 | 
					        name: id
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      - description: 记录病猪请求信息
 | 
				
			||||||
 | 
					        in: body
 | 
				
			||||||
 | 
					        name: body
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        schema:
 | 
				
			||||||
 | 
					          $ref: '#/definitions/dto.RecordSickPigsRequest'
 | 
				
			||||||
 | 
					      produces:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      responses:
 | 
				
			||||||
 | 
					        "200":
 | 
				
			||||||
 | 
					          description: 记录成功
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            $ref: '#/definitions/controller.Response'
 | 
				
			||||||
 | 
					      summary: 记录新增病猪事件
 | 
				
			||||||
 | 
					      tags:
 | 
				
			||||||
 | 
					      - 猪批次管理
 | 
				
			||||||
 | 
					  /api/v1/pig-batches/{id}/sell-pigs:
 | 
				
			||||||
 | 
					    post:
 | 
				
			||||||
 | 
					      consumes:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      description: 记录猪批次中的猪只出售事件
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					      - description: 猪批次ID
 | 
				
			||||||
 | 
					        in: path
 | 
				
			||||||
 | 
					        name: id
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      - description: 卖猪请求信息
 | 
				
			||||||
 | 
					        in: body
 | 
				
			||||||
 | 
					        name: body
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        schema:
 | 
				
			||||||
 | 
					          $ref: '#/definitions/dto.SellPigsRequest'
 | 
				
			||||||
 | 
					      produces:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      responses:
 | 
				
			||||||
 | 
					        "200":
 | 
				
			||||||
 | 
					          description: 卖猪成功
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            $ref: '#/definitions/controller.Response'
 | 
				
			||||||
 | 
					      summary: 处理卖猪的业务逻辑
 | 
				
			||||||
 | 
					      tags:
 | 
				
			||||||
 | 
					      - 猪批次管理
 | 
				
			||||||
 | 
					  /api/v1/pig-batches/{id}/transfer-within-batch:
 | 
				
			||||||
 | 
					    post:
 | 
				
			||||||
 | 
					      consumes:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      description: 将指定数量的猪只在同一个猪群的不同猪栏间调动
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					      - description: 猪批次ID
 | 
				
			||||||
 | 
					        in: path
 | 
				
			||||||
 | 
					        name: id
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      - description: 群内调栏请求信息
 | 
				
			||||||
 | 
					        in: body
 | 
				
			||||||
 | 
					        name: body
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        schema:
 | 
				
			||||||
 | 
					          $ref: '#/definitions/dto.TransferPigsWithinBatchRequest'
 | 
				
			||||||
 | 
					      produces:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      responses:
 | 
				
			||||||
 | 
					        "200":
 | 
				
			||||||
 | 
					          description: 调栏成功
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            $ref: '#/definitions/controller.Response'
 | 
				
			||||||
 | 
					      summary: 群内调栏
 | 
				
			||||||
 | 
					      tags:
 | 
				
			||||||
 | 
					      - 猪批次管理
 | 
				
			||||||
 | 
					  /api/v1/pig-batches/{sourceBatchID}/transfer-across-batches:
 | 
				
			||||||
 | 
					    post:
 | 
				
			||||||
 | 
					      consumes:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      description: 将指定数量的猪只从一个猪群的猪栏调动到另一个猪群的猪栏
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					      - description: 源猪批次ID
 | 
				
			||||||
 | 
					        in: path
 | 
				
			||||||
 | 
					        name: sourceBatchID
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      - description: 跨群调栏请求信息
 | 
				
			||||||
 | 
					        in: body
 | 
				
			||||||
 | 
					        name: body
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        schema:
 | 
				
			||||||
 | 
					          $ref: '#/definitions/dto.TransferPigsAcrossBatchesRequest'
 | 
				
			||||||
 | 
					      produces:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      responses:
 | 
				
			||||||
 | 
					        "200":
 | 
				
			||||||
 | 
					          description: 调栏成功
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            $ref: '#/definitions/controller.Response'
 | 
				
			||||||
 | 
					      summary: 跨猪群调栏
 | 
				
			||||||
 | 
					      tags:
 | 
				
			||||||
      - 猪批次管理
 | 
					      - 猪批次管理
 | 
				
			||||||
  /api/v1/pig-houses:
 | 
					  /api/v1/pig-houses:
 | 
				
			||||||
    get:
 | 
					    get:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -226,7 +226,7 @@ func (a *API) setupRoutes() {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		a.logger.Info("猪圈相关接口注册成功 (需要认证和审计)")
 | 
							a.logger.Info("猪圈相关接口注册成功 (需要认证和审计)")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// 猪批次相关路由组
 | 
							// 猪群相关路由组
 | 
				
			||||||
		pigBatchGroup := authGroup.Group("/pig-batches")
 | 
							pigBatchGroup := authGroup.Group("/pig-batches")
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			pigBatchGroup.POST("", a.pigBatchController.CreatePigBatch)
 | 
								pigBatchGroup.POST("", a.pigBatchController.CreatePigBatch)
 | 
				
			||||||
@@ -238,6 +238,16 @@ func (a *API) setupRoutes() {
 | 
				
			|||||||
			pigBatchGroup.POST("/:fromBatchID/reclassify-pen", a.pigBatchController.ReclassifyPenToNewBatch)
 | 
								pigBatchGroup.POST("/:fromBatchID/reclassify-pen", a.pigBatchController.ReclassifyPenToNewBatch)
 | 
				
			||||||
			pigBatchGroup.DELETE("/:batchID/remove-pen/:penID", a.pigBatchController.RemoveEmptyPenFromBatch)
 | 
								pigBatchGroup.DELETE("/:batchID/remove-pen/:penID", a.pigBatchController.RemoveEmptyPenFromBatch)
 | 
				
			||||||
			pigBatchGroup.POST("/:id/move-pigs-into-pen", a.pigBatchController.MovePigsIntoPen)
 | 
								pigBatchGroup.POST("/:id/move-pigs-into-pen", a.pigBatchController.MovePigsIntoPen)
 | 
				
			||||||
 | 
								pigBatchGroup.POST("/:id/sell-pigs", a.pigBatchController.SellPigs)
 | 
				
			||||||
 | 
								pigBatchGroup.POST("/:id/buy-pigs", a.pigBatchController.BuyPigs)
 | 
				
			||||||
 | 
								pigBatchGroup.POST("/:sourceBatchID/transfer-across-batches", a.pigBatchController.TransferPigsAcrossBatches)
 | 
				
			||||||
 | 
								pigBatchGroup.POST("/:id/transfer-within-batch", a.pigBatchController.TransferPigsWithinBatch)
 | 
				
			||||||
 | 
								pigBatchGroup.POST("/:id/record-sick-pigs", a.pigBatchController.RecordSickPigs)
 | 
				
			||||||
 | 
								pigBatchGroup.POST("/:id/record-sick-pig-recovery", a.pigBatchController.RecordSickPigRecovery)
 | 
				
			||||||
 | 
								pigBatchGroup.POST("/:id/record-sick-pig-death", a.pigBatchController.RecordSickPigDeath)
 | 
				
			||||||
 | 
								pigBatchGroup.POST("/:id/record-sick-pig-cull", a.pigBatchController.RecordSickPigCull)
 | 
				
			||||||
 | 
								pigBatchGroup.POST("/:id/record-death", a.pigBatchController.RecordDeath)
 | 
				
			||||||
 | 
								pigBatchGroup.POST("/:id/record-cull", a.pigBatchController.RecordCull)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		a.logger.Info("猪批次相关接口注册成功 (需要认证和审计)")
 | 
							a.logger.Info("猪批次相关接口注册成功 (需要认证和审计)")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,7 @@ func NewPigBatchController(logger *logs.Logger, service service.PigBatchService)
 | 
				
			|||||||
// CreatePigBatch godoc
 | 
					// CreatePigBatch godoc
 | 
				
			||||||
// @Summary      创建猪批次
 | 
					// @Summary      创建猪批次
 | 
				
			||||||
// @Description  创建一个新的猪批次
 | 
					// @Description  创建一个新的猪批次
 | 
				
			||||||
// @Tags         猪批次管理
 | 
					// @Tags         猪群管理
 | 
				
			||||||
// @Accept       json
 | 
					// @Accept       json
 | 
				
			||||||
// @Produce      json
 | 
					// @Produce      json
 | 
				
			||||||
// @Param        body body dto.PigBatchCreateDTO true "猪批次信息"
 | 
					// @Param        body body dto.PigBatchCreateDTO true "猪批次信息"
 | 
				
			||||||
@@ -58,7 +58,7 @@ func (c *PigBatchController) CreatePigBatch(ctx *gin.Context) {
 | 
				
			|||||||
// GetPigBatch godoc
 | 
					// GetPigBatch godoc
 | 
				
			||||||
// @Summary      获取单个猪批次
 | 
					// @Summary      获取单个猪批次
 | 
				
			||||||
// @Description  根据ID获取单个猪批次信息
 | 
					// @Description  根据ID获取单个猪批次信息
 | 
				
			||||||
// @Tags         猪批次管理
 | 
					// @Tags         猪群管理
 | 
				
			||||||
// @Produce      json
 | 
					// @Produce      json
 | 
				
			||||||
// @Param        id path int true "猪批次ID"
 | 
					// @Param        id path int true "猪批次ID"
 | 
				
			||||||
// @Success      200 {object} controller.Response{data=dto.PigBatchResponseDTO} "获取成功"
 | 
					// @Success      200 {object} controller.Response{data=dto.PigBatchResponseDTO} "获取成功"
 | 
				
			||||||
@@ -88,7 +88,7 @@ func (c *PigBatchController) GetPigBatch(ctx *gin.Context) {
 | 
				
			|||||||
// UpdatePigBatch godoc
 | 
					// UpdatePigBatch godoc
 | 
				
			||||||
// @Summary      更新猪批次
 | 
					// @Summary      更新猪批次
 | 
				
			||||||
// @Description  更新一个已存在的猪批次信息
 | 
					// @Description  更新一个已存在的猪批次信息
 | 
				
			||||||
// @Tags         猪批次管理
 | 
					// @Tags         猪群管理
 | 
				
			||||||
// @Accept       json
 | 
					// @Accept       json
 | 
				
			||||||
// @Produce      json
 | 
					// @Produce      json
 | 
				
			||||||
// @Param        id path int true "猪批次ID"
 | 
					// @Param        id path int true "猪批次ID"
 | 
				
			||||||
@@ -126,7 +126,7 @@ func (c *PigBatchController) UpdatePigBatch(ctx *gin.Context) {
 | 
				
			|||||||
// DeletePigBatch godoc
 | 
					// DeletePigBatch godoc
 | 
				
			||||||
// @Summary      删除猪批次
 | 
					// @Summary      删除猪批次
 | 
				
			||||||
// @Description  根据ID删除一个猪批次
 | 
					// @Description  根据ID删除一个猪批次
 | 
				
			||||||
// @Tags         猪批次管理
 | 
					// @Tags         猪群管理
 | 
				
			||||||
// @Produce      json
 | 
					// @Produce      json
 | 
				
			||||||
// @Param        id path int true "猪批次ID"
 | 
					// @Param        id path int true "猪批次ID"
 | 
				
			||||||
// @Success      200 {object} controller.Response "删除成功"
 | 
					// @Success      200 {object} controller.Response "删除成功"
 | 
				
			||||||
@@ -155,7 +155,7 @@ func (c *PigBatchController) DeletePigBatch(ctx *gin.Context) {
 | 
				
			|||||||
// ListPigBatches godoc
 | 
					// ListPigBatches godoc
 | 
				
			||||||
// @Summary      获取猪批次列表
 | 
					// @Summary      获取猪批次列表
 | 
				
			||||||
// @Description  获取所有猪批次的列表,支持按活跃状态筛选
 | 
					// @Description  获取所有猪批次的列表,支持按活跃状态筛选
 | 
				
			||||||
// @Tags         猪批次管理
 | 
					// @Tags         猪群管理
 | 
				
			||||||
// @Produce      json
 | 
					// @Produce      json
 | 
				
			||||||
// @Param        is_active query bool false "是否活跃 (true/false)"
 | 
					// @Param        is_active query bool false "是否活跃 (true/false)"
 | 
				
			||||||
// @Success      200 {object} controller.Response{data=[]dto.PigBatchResponseDTO} "获取成功"
 | 
					// @Success      200 {object} controller.Response{data=[]dto.PigBatchResponseDTO} "获取成功"
 | 
				
			||||||
@@ -182,7 +182,7 @@ func (c *PigBatchController) ListPigBatches(ctx *gin.Context) {
 | 
				
			|||||||
// AssignEmptyPensToBatch godoc
 | 
					// AssignEmptyPensToBatch godoc
 | 
				
			||||||
// @Summary      为猪批次分配空栏
 | 
					// @Summary      为猪批次分配空栏
 | 
				
			||||||
// @Description  将一个或多个空闲猪栏分配给指定的猪批次
 | 
					// @Description  将一个或多个空闲猪栏分配给指定的猪批次
 | 
				
			||||||
// @Tags         猪批次管理
 | 
					// @Tags         猪群管理
 | 
				
			||||||
// @Accept       json
 | 
					// @Accept       json
 | 
				
			||||||
// @Produce      json
 | 
					// @Produce      json
 | 
				
			||||||
// @Param        id path int true "猪批次ID"
 | 
					// @Param        id path int true "猪批次ID"
 | 
				
			||||||
@@ -225,7 +225,7 @@ func (c *PigBatchController) AssignEmptyPensToBatch(ctx *gin.Context) {
 | 
				
			|||||||
// ReclassifyPenToNewBatch godoc
 | 
					// ReclassifyPenToNewBatch godoc
 | 
				
			||||||
// @Summary      将猪栏划拨到新批次
 | 
					// @Summary      将猪栏划拨到新批次
 | 
				
			||||||
// @Description  将一个猪栏(连同其中的猪只)从一个批次整体划拨到另一个批次
 | 
					// @Description  将一个猪栏(连同其中的猪只)从一个批次整体划拨到另一个批次
 | 
				
			||||||
// @Tags         猪批次管理
 | 
					// @Tags         猪群管理
 | 
				
			||||||
// @Accept       json
 | 
					// @Accept       json
 | 
				
			||||||
// @Produce      json
 | 
					// @Produce      json
 | 
				
			||||||
// @Param        fromBatchID path int true "源猪批次ID"
 | 
					// @Param        fromBatchID path int true "源猪批次ID"
 | 
				
			||||||
@@ -268,7 +268,7 @@ func (c *PigBatchController) ReclassifyPenToNewBatch(ctx *gin.Context) {
 | 
				
			|||||||
// RemoveEmptyPenFromBatch godoc
 | 
					// RemoveEmptyPenFromBatch godoc
 | 
				
			||||||
// @Summary      从猪批次移除空栏
 | 
					// @Summary      从猪批次移除空栏
 | 
				
			||||||
// @Description  将一个空闲猪栏从指定的猪批次中移除
 | 
					// @Description  将一个空闲猪栏从指定的猪批次中移除
 | 
				
			||||||
// @Tags         猪批次管理
 | 
					// @Tags         猪群管理
 | 
				
			||||||
// @Produce      json
 | 
					// @Produce      json
 | 
				
			||||||
// @Param        batchID path int true "猪批次ID"
 | 
					// @Param        batchID path int true "猪批次ID"
 | 
				
			||||||
// @Param        penID path int true "待移除的猪栏ID"
 | 
					// @Param        penID path int true "待移除的猪栏ID"
 | 
				
			||||||
@@ -308,7 +308,7 @@ func (c *PigBatchController) RemoveEmptyPenFromBatch(ctx *gin.Context) {
 | 
				
			|||||||
// MovePigsIntoPen godoc
 | 
					// MovePigsIntoPen godoc
 | 
				
			||||||
// @Summary      将猪只从“虚拟库存”移入指定猪栏
 | 
					// @Summary      将猪只从“虚拟库存”移入指定猪栏
 | 
				
			||||||
// @Description  将指定数量的猪只从批次的“虚拟库存”移入一个已分配的猪栏
 | 
					// @Description  将指定数量的猪只从批次的“虚拟库存”移入一个已分配的猪栏
 | 
				
			||||||
// @Tags         猪批次管理
 | 
					// @Tags         猪群管理
 | 
				
			||||||
// @Accept       json
 | 
					// @Accept       json
 | 
				
			||||||
// @Produce      json
 | 
					// @Produce      json
 | 
				
			||||||
// @Param        id path int true "猪批次ID"
 | 
					// @Param        id path int true "猪批次ID"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,269 @@
 | 
				
			|||||||
 | 
					package management
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
 | 
						"strconv"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.huangwc.com/pig/pig-farm-controller/internal/app/controller"
 | 
				
			||||||
 | 
						"git.huangwc.com/pig/pig-farm-controller/internal/app/dto"
 | 
				
			||||||
 | 
						"git.huangwc.com/pig/pig-farm-controller/internal/app/service"
 | 
				
			||||||
 | 
						"github.com/gin-gonic/gin"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RecordSickPigs godoc
 | 
				
			||||||
 | 
					// @Summary      记录新增病猪事件
 | 
				
			||||||
 | 
					// @Description  记录猪批次中新增病猪的数量、治疗地点和发生时间
 | 
				
			||||||
 | 
					// @Tags         猪批次管理
 | 
				
			||||||
 | 
					// @Accept       json
 | 
				
			||||||
 | 
					// @Produce      json
 | 
				
			||||||
 | 
					// @Param        id path int true "猪批次ID"
 | 
				
			||||||
 | 
					// @Param        body body dto.RecordSickPigsRequest true "记录病猪请求信息"
 | 
				
			||||||
 | 
					// @Success      200 {object} controller.Response "记录成功"
 | 
				
			||||||
 | 
					// @Router       /api/v1/pig-batches/{id}/record-sick-pigs [post]
 | 
				
			||||||
 | 
					func (c *PigBatchController) RecordSickPigs(ctx *gin.Context) {
 | 
				
			||||||
 | 
						const action = "记录新增病猪事件"
 | 
				
			||||||
 | 
						batchID, err := strconv.ParseUint(ctx.Param("id"), 10, 32)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的猪批次ID格式", action, "ID格式错误", ctx.Param("id"))
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var req dto.RecordSickPigsRequest
 | 
				
			||||||
 | 
						if err := ctx.ShouldBindJSON(&req); err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的请求体", action, "请求体绑定失败", req)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						operatorID, err := controller.GetOperatorIDFromContext(ctx)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = c.service.RecordSickPigs(operatorID, uint(batchID), req.PenID, req.Quantity, req.TreatmentLocation, req.HappenedAt, req.Remarks)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if errors.Is(err, service.ErrPigBatchNotFound) || errors.Is(err, service.ErrPenNotFound) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeNotFound, err.Error(), action, err.Error(), batchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							} else if errors.Is(err, service.ErrInvalidOperation) || errors.Is(err, service.ErrPigBatchNotActive) || errors.Is(err, service.ErrPenNotAssociatedWithBatch) || errors.Is(err, service.ErrPenNotEmpty) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeConflict, err.Error(), action, err.Error(), batchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							c.logger.Errorf("%s: 业务逻辑失败: %v", action, err)
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeInternalError, "记录新增病猪事件失败", action, err.Error(), batchID)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						controller.SendSuccessWithAudit(ctx, controller.CodeSuccess, "记录成功", nil, action, "记录成功", batchID)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RecordSickPigRecovery godoc
 | 
				
			||||||
 | 
					// @Summary      记录病猪康复事件
 | 
				
			||||||
 | 
					// @Description  记录猪批次中病猪康复的数量、治疗地点和发生时间
 | 
				
			||||||
 | 
					// @Tags         猪批次管理
 | 
				
			||||||
 | 
					// @Accept       json
 | 
				
			||||||
 | 
					// @Produce      json
 | 
				
			||||||
 | 
					// @Param        id path int true "猪批次ID"
 | 
				
			||||||
 | 
					// @Param        body body dto.RecordSickPigRecoveryRequest true "记录病猪康复请求信息"
 | 
				
			||||||
 | 
					// @Success      200 {object} controller.Response "记录成功"
 | 
				
			||||||
 | 
					// @Router       /api/v1/pig-batches/{id}/record-sick-pig-recovery [post]
 | 
				
			||||||
 | 
					func (c *PigBatchController) RecordSickPigRecovery(ctx *gin.Context) {
 | 
				
			||||||
 | 
						const action = "记录病猪康复事件"
 | 
				
			||||||
 | 
						batchID, err := strconv.ParseUint(ctx.Param("id"), 10, 32)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的猪批次ID格式", action, "ID格式错误", ctx.Param("id"))
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var req dto.RecordSickPigRecoveryRequest
 | 
				
			||||||
 | 
						if err := ctx.ShouldBindJSON(&req); err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的请求体", action, "请求体绑定失败", req)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						operatorID, err := controller.GetOperatorIDFromContext(ctx)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = c.service.RecordSickPigRecovery(operatorID, uint(batchID), req.PenID, req.Quantity, req.TreatmentLocation, req.HappenedAt, req.Remarks)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if errors.Is(err, service.ErrPigBatchNotFound) || errors.Is(err, service.ErrPenNotFound) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeNotFound, err.Error(), action, err.Error(), batchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							} else if errors.Is(err, service.ErrInvalidOperation) || errors.Is(err, service.ErrPigBatchNotActive) || errors.Is(err, service.ErrPenNotAssociatedWithBatch) || errors.Is(err, service.ErrPenNotEmpty) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeConflict, err.Error(), action, err.Error(), batchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							c.logger.Errorf("%s: 业务逻辑失败: %v", action, err)
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeInternalError, "记录病猪康复事件失败", action, err.Error(), batchID)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						controller.SendSuccessWithAudit(ctx, controller.CodeSuccess, "记录成功", nil, action, "记录成功", batchID)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RecordSickPigDeath godoc
 | 
				
			||||||
 | 
					// @Summary      记录病猪死亡事件
 | 
				
			||||||
 | 
					// @Description  记录猪批次中病猪死亡的数量、治疗地点和发生时间
 | 
				
			||||||
 | 
					// @Tags         猪批次管理
 | 
				
			||||||
 | 
					// @Accept       json
 | 
				
			||||||
 | 
					// @Produce      json
 | 
				
			||||||
 | 
					// @Param        id path int true "猪批次ID"
 | 
				
			||||||
 | 
					// @Param        body body dto.RecordSickPigDeathRequest true "记录病猪死亡请求信息"
 | 
				
			||||||
 | 
					// @Success      200 {object} controller.Response "记录成功"
 | 
				
			||||||
 | 
					// @Router       /api/v1/pig-batches/{id}/record-sick-pig-death [post]
 | 
				
			||||||
 | 
					func (c *PigBatchController) RecordSickPigDeath(ctx *gin.Context) {
 | 
				
			||||||
 | 
						const action = "记录病猪死亡事件"
 | 
				
			||||||
 | 
						batchID, err := strconv.ParseUint(ctx.Param("id"), 10, 32)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的猪批次ID格式", action, "ID格式错误", ctx.Param("id"))
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var req dto.RecordSickPigDeathRequest
 | 
				
			||||||
 | 
						if err := ctx.ShouldBindJSON(&req); err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的请求体", action, "请求体绑定失败", req)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						operatorID, err := controller.GetOperatorIDFromContext(ctx)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = c.service.RecordSickPigDeath(operatorID, uint(batchID), req.PenID, req.Quantity, req.TreatmentLocation, req.HappenedAt, req.Remarks)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if errors.Is(err, service.ErrPigBatchNotFound) || errors.Is(err, service.ErrPenNotFound) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeNotFound, err.Error(), action, err.Error(), batchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							} else if errors.Is(err, service.ErrInvalidOperation) || errors.Is(err, service.ErrPigBatchNotActive) || errors.Is(err, service.ErrPenNotAssociatedWithBatch) || errors.Is(err, service.ErrPenNotEmpty) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeConflict, err.Error(), action, err.Error(), batchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							c.logger.Errorf("%s: 业务逻辑失败: %v", action, err)
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeInternalError, "记录病猪死亡事件失败", action, err.Error(), batchID)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						controller.SendSuccessWithAudit(ctx, controller.CodeSuccess, "记录成功", nil, action, "记录成功", batchID)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RecordSickPigCull godoc
 | 
				
			||||||
 | 
					// @Summary      记录病猪淘汰事件
 | 
				
			||||||
 | 
					// @Description  记录猪批次中病猪淘汰的数量、治疗地点和发生时间
 | 
				
			||||||
 | 
					// @Tags         猪批次管理
 | 
				
			||||||
 | 
					// @Accept       json
 | 
				
			||||||
 | 
					// @Produce      json
 | 
				
			||||||
 | 
					// @Param        id path int true "猪批次ID"
 | 
				
			||||||
 | 
					// @Param        body body dto.RecordSickPigCullRequest true "记录病猪淘汰请求信息"
 | 
				
			||||||
 | 
					// @Success      200 {object} controller.Response "记录成功"
 | 
				
			||||||
 | 
					// @Router       /api/v1/pig-batches/{id}/record-sick-pig-cull [post]
 | 
				
			||||||
 | 
					func (c *PigBatchController) RecordSickPigCull(ctx *gin.Context) {
 | 
				
			||||||
 | 
						const action = "记录病猪淘汰事件"
 | 
				
			||||||
 | 
						batchID, err := strconv.ParseUint(ctx.Param("id"), 10, 32)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的猪批次ID格式", action, "ID格式错误", ctx.Param("id"))
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var req dto.RecordSickPigCullRequest
 | 
				
			||||||
 | 
						if err := ctx.ShouldBindJSON(&req); err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的请求体", action, "请求体绑定失败", req)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						operatorID, err := controller.GetOperatorIDFromContext(ctx)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = c.service.RecordSickPigCull(operatorID, uint(batchID), req.PenID, req.Quantity, req.TreatmentLocation, req.HappenedAt, req.Remarks)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if errors.Is(err, service.ErrPigBatchNotFound) || errors.Is(err, service.ErrPenNotFound) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeNotFound, err.Error(), action, err.Error(), batchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							} else if errors.Is(err, service.ErrInvalidOperation) || errors.Is(err, service.ErrPigBatchNotActive) || errors.Is(err, service.ErrPenNotAssociatedWithBatch) || errors.Is(err, service.ErrPenNotEmpty) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeConflict, err.Error(), action, err.Error(), batchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							c.logger.Errorf("%s: 业务逻辑失败: %v", action, err)
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeInternalError, "记录病猪淘汰事件失败", action, err.Error(), batchID)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						controller.SendSuccessWithAudit(ctx, controller.CodeSuccess, "记录成功", nil, action, "记录成功", batchID)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RecordDeath godoc
 | 
				
			||||||
 | 
					// @Summary      记录正常猪只死亡事件
 | 
				
			||||||
 | 
					// @Description  记录猪批次中正常猪只死亡的数量和发生时间
 | 
				
			||||||
 | 
					// @Tags         猪批次管理
 | 
				
			||||||
 | 
					// @Accept       json
 | 
				
			||||||
 | 
					// @Produce      json
 | 
				
			||||||
 | 
					// @Param        id path int true "猪批次ID"
 | 
				
			||||||
 | 
					// @Param        body body dto.RecordDeathRequest true "记录正常猪只死亡请求信息"
 | 
				
			||||||
 | 
					// @Success      200 {object} controller.Response "记录成功"
 | 
				
			||||||
 | 
					// @Router       /api/v1/pig-batches/{id}/record-death [post]
 | 
				
			||||||
 | 
					func (c *PigBatchController) RecordDeath(ctx *gin.Context) {
 | 
				
			||||||
 | 
						const action = "记录正常猪只死亡事件"
 | 
				
			||||||
 | 
						batchID, err := strconv.ParseUint(ctx.Param("id"), 10, 32)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的猪批次ID格式", action, "ID格式错误", ctx.Param("id"))
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var req dto.RecordDeathRequest
 | 
				
			||||||
 | 
						if err := ctx.ShouldBindJSON(&req); err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的请求体", action, "请求体绑定失败", req)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						operatorID, err := controller.GetOperatorIDFromContext(ctx)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = c.service.RecordDeath(operatorID, uint(batchID), req.PenID, req.Quantity, req.HappenedAt, req.Remarks)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if errors.Is(err, service.ErrPigBatchNotFound) || errors.Is(err, service.ErrPenNotFound) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeNotFound, err.Error(), action, err.Error(), batchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							} else if errors.Is(err, service.ErrInvalidOperation) || errors.Is(err, service.ErrPigBatchNotActive) || errors.Is(err, service.ErrPenNotAssociatedWithBatch) || errors.Is(err, service.ErrPenNotEmpty) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeConflict, err.Error(), action, err.Error(), batchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							c.logger.Errorf("%s: 业务逻辑失败: %v", action, err)
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeInternalError, "记录正常猪只死亡事件失败", action, err.Error(), batchID)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						controller.SendSuccessWithAudit(ctx, controller.CodeSuccess, "记录成功", nil, action, "记录成功", batchID)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RecordCull godoc
 | 
				
			||||||
 | 
					// @Summary      记录正常猪只淘汰事件
 | 
				
			||||||
 | 
					// @Description  记录猪批次中正常猪只淘汰的数量和发生时间
 | 
				
			||||||
 | 
					// @Tags         猪批次管理
 | 
				
			||||||
 | 
					// @Accept       json
 | 
				
			||||||
 | 
					// @Produce      json
 | 
				
			||||||
 | 
					// @Param        id path int true "猪批次ID"
 | 
				
			||||||
 | 
					// @Param        body body dto.RecordCullRequest true "记录正常猪只淘汰请求信息"
 | 
				
			||||||
 | 
					// @Success      200 {object} controller.Response "记录成功"
 | 
				
			||||||
 | 
					// @Router       /api/v1/pig-batches/{id}/record-cull [post]
 | 
				
			||||||
 | 
					func (c *PigBatchController) RecordCull(ctx *gin.Context) {
 | 
				
			||||||
 | 
						const action = "记录正常猪只淘汰事件"
 | 
				
			||||||
 | 
						batchID, err := strconv.ParseUint(ctx.Param("id"), 10, 32)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的猪批次ID格式", action, "ID格式错误", ctx.Param("id"))
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var req dto.RecordCullRequest
 | 
				
			||||||
 | 
						if err := ctx.ShouldBindJSON(&req); err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的请求体", action, "请求体绑定失败", req)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						operatorID, err := controller.GetOperatorIDFromContext(ctx)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = c.service.RecordCull(operatorID, uint(batchID), req.PenID, req.Quantity, req.HappenedAt, req.Remarks)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if errors.Is(err, service.ErrPigBatchNotFound) || errors.Is(err, service.ErrPenNotFound) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeNotFound, err.Error(), action, err.Error(), batchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							} else if errors.Is(err, service.ErrInvalidOperation) || errors.Is(err, service.ErrPigBatchNotActive) || errors.Is(err, service.ErrPenNotAssociatedWithBatch) || errors.Is(err, service.ErrPenNotEmpty) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeConflict, err.Error(), action, err.Error(), batchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							c.logger.Errorf("%s: 业务逻辑失败: %v", action, err)
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeInternalError, "记录正常猪只淘汰事件失败", action, err.Error(), batchID)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						controller.SendSuccessWithAudit(ctx, controller.CodeSuccess, "记录成功", nil, action, "记录成功", batchID)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,97 @@
 | 
				
			|||||||
 | 
					package management
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
 | 
						"strconv"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.huangwc.com/pig/pig-farm-controller/internal/app/controller"
 | 
				
			||||||
 | 
						"git.huangwc.com/pig/pig-farm-controller/internal/app/dto"
 | 
				
			||||||
 | 
						"git.huangwc.com/pig/pig-farm-controller/internal/app/service"
 | 
				
			||||||
 | 
						"github.com/gin-gonic/gin"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// SellPigs godoc
 | 
				
			||||||
 | 
					// @Summary      处理卖猪的业务逻辑
 | 
				
			||||||
 | 
					// @Description  记录猪批次中的猪只出售事件
 | 
				
			||||||
 | 
					// @Tags         猪批次管理
 | 
				
			||||||
 | 
					// @Accept       json
 | 
				
			||||||
 | 
					// @Produce      json
 | 
				
			||||||
 | 
					// @Param        id path int true "猪批次ID"
 | 
				
			||||||
 | 
					// @Param        body body dto.SellPigsRequest true "卖猪请求信息"
 | 
				
			||||||
 | 
					// @Success      200 {object} controller.Response "卖猪成功"
 | 
				
			||||||
 | 
					// @Router       /api/v1/pig-batches/{id}/sell-pigs [post]
 | 
				
			||||||
 | 
					func (c *PigBatchController) SellPigs(ctx *gin.Context) {
 | 
				
			||||||
 | 
						const action = "卖猪"
 | 
				
			||||||
 | 
						batchID, err := strconv.ParseUint(ctx.Param("id"), 10, 32)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的猪批次ID格式", action, "ID格式错误", ctx.Param("id"))
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var req dto.SellPigsRequest
 | 
				
			||||||
 | 
						if err := ctx.ShouldBindJSON(&req); err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的请求体", action, "请求体绑定失败", req)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						operatorID, err := controller.GetOperatorIDFromContext(ctx)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = c.service.SellPigs(uint(batchID), req.PenID, req.Quantity, req.UnitPrice, req.TotalPrice, req.TraderName, req.TradeDate, req.Remarks, operatorID)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if errors.Is(err, service.ErrPigBatchNotFound) || errors.Is(err, service.ErrPenNotFound) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeNotFound, err.Error(), action, err.Error(), batchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							} else if errors.Is(err, service.ErrInvalidOperation) || errors.Is(err, service.ErrPigBatchNotActive) || errors.Is(err, service.ErrPenNotAssociatedWithBatch) || errors.Is(err, service.ErrPenNotEmpty) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeConflict, err.Error(), action, err.Error(), batchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							c.logger.Errorf("%s: 业务逻辑失败: %v", action, err)
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeInternalError, "卖猪失败", action, err.Error(), batchID)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						controller.SendSuccessWithAudit(ctx, controller.CodeSuccess, "卖猪成功", nil, action, "卖猪成功", batchID)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// BuyPigs godoc
 | 
				
			||||||
 | 
					// @Summary      处理买猪的业务逻辑
 | 
				
			||||||
 | 
					// @Description  记录猪批次中的猪只购买事件
 | 
				
			||||||
 | 
					// @Tags         猪批次管理
 | 
				
			||||||
 | 
					// @Accept       json
 | 
				
			||||||
 | 
					// @Produce      json
 | 
				
			||||||
 | 
					// @Param        id path int true "猪批次ID"
 | 
				
			||||||
 | 
					// @Param        body body dto.BuyPigsRequest true "买猪请求信息"
 | 
				
			||||||
 | 
					// @Success      200 {object} controller.Response "买猪成功"
 | 
				
			||||||
 | 
					// @Router       /api/v1/pig-batches/{id}/buy-pigs [post]
 | 
				
			||||||
 | 
					func (c *PigBatchController) BuyPigs(ctx *gin.Context) {
 | 
				
			||||||
 | 
						const action = "买猪"
 | 
				
			||||||
 | 
						batchID, err := strconv.ParseUint(ctx.Param("id"), 10, 32)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的猪批次ID格式", action, "ID格式错误", ctx.Param("id"))
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var req dto.BuyPigsRequest
 | 
				
			||||||
 | 
						if err := ctx.ShouldBindJSON(&req); err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的请求体", action, "请求体绑定失败", req)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						operatorID, err := controller.GetOperatorIDFromContext(ctx)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = c.service.BuyPigs(uint(batchID), req.PenID, req.Quantity, req.UnitPrice, req.TotalPrice, req.TraderName, req.TradeDate, req.Remarks, operatorID)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if errors.Is(err, service.ErrPigBatchNotFound) || errors.Is(err, service.ErrPenNotFound) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeNotFound, err.Error(), action, err.Error(), batchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							} else if errors.Is(err, service.ErrInvalidOperation) || errors.Is(err, service.ErrPigBatchNotActive) || errors.Is(err, service.ErrPenNotAssociatedWithBatch) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeConflict, err.Error(), action, err.Error(), batchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							c.logger.Errorf("%s: 业务逻辑失败: %v", action, err)
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeInternalError, "买猪失败", action, err.Error(), batchID)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						controller.SendSuccessWithAudit(ctx, controller.CodeSuccess, "买猪成功", nil, action, "买猪成功", batchID)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,97 @@
 | 
				
			|||||||
 | 
					package management
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
 | 
						"strconv"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.huangwc.com/pig/pig-farm-controller/internal/app/controller"
 | 
				
			||||||
 | 
						"git.huangwc.com/pig/pig-farm-controller/internal/app/dto"
 | 
				
			||||||
 | 
						"git.huangwc.com/pig/pig-farm-controller/internal/app/service"
 | 
				
			||||||
 | 
						"github.com/gin-gonic/gin"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TransferPigsAcrossBatches godoc
 | 
				
			||||||
 | 
					// @Summary      跨猪群调栏
 | 
				
			||||||
 | 
					// @Description  将指定数量的猪只从一个猪群的猪栏调动到另一个猪群的猪栏
 | 
				
			||||||
 | 
					// @Tags         猪批次管理
 | 
				
			||||||
 | 
					// @Accept       json
 | 
				
			||||||
 | 
					// @Produce      json
 | 
				
			||||||
 | 
					// @Param        sourceBatchID path int true "源猪批次ID"
 | 
				
			||||||
 | 
					// @Param        body body dto.TransferPigsAcrossBatchesRequest true "跨群调栏请求信息"
 | 
				
			||||||
 | 
					// @Success      200 {object} controller.Response "调栏成功"
 | 
				
			||||||
 | 
					// @Router       /api/v1/pig-batches/{sourceBatchID}/transfer-across-batches [post]
 | 
				
			||||||
 | 
					func (c *PigBatchController) TransferPigsAcrossBatches(ctx *gin.Context) {
 | 
				
			||||||
 | 
						const action = "跨猪群调栏"
 | 
				
			||||||
 | 
						sourceBatchID, err := strconv.ParseUint(ctx.Param("sourceBatchID"), 10, 32)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的源猪批次ID格式", action, "ID格式错误", ctx.Param("sourceBatchID"))
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var req dto.TransferPigsAcrossBatchesRequest
 | 
				
			||||||
 | 
						if err := ctx.ShouldBindJSON(&req); err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的请求体", action, "请求体绑定失败", req)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						operatorID, err := controller.GetOperatorIDFromContext(ctx)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = c.service.TransferPigsAcrossBatches(uint(sourceBatchID), req.DestBatchID, req.FromPenID, req.ToPenID, req.Quantity, operatorID, req.Remarks)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if errors.Is(err, service.ErrPigBatchNotFound) || errors.Is(err, service.ErrPenNotFound) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeNotFound, err.Error(), action, err.Error(), sourceBatchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							} else if errors.Is(err, service.ErrInvalidOperation) || errors.Is(err, service.ErrPigBatchNotActive) || errors.Is(err, service.ErrPenNotAssociatedWithBatch) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeConflict, err.Error(), action, err.Error(), sourceBatchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							c.logger.Errorf("%s: 业务逻辑失败: %v", action, err)
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeInternalError, "跨猪群调栏失败", action, err.Error(), sourceBatchID)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						controller.SendSuccessWithAudit(ctx, controller.CodeSuccess, "调栏成功", nil, action, "调栏成功", sourceBatchID)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TransferPigsWithinBatch godoc
 | 
				
			||||||
 | 
					// @Summary      群内调栏
 | 
				
			||||||
 | 
					// @Description  将指定数量的猪只在同一个猪群的不同猪栏间调动
 | 
				
			||||||
 | 
					// @Tags         猪批次管理
 | 
				
			||||||
 | 
					// @Accept       json
 | 
				
			||||||
 | 
					// @Produce      json
 | 
				
			||||||
 | 
					// @Param        id path int true "猪批次ID"
 | 
				
			||||||
 | 
					// @Param        body body dto.TransferPigsWithinBatchRequest true "群内调栏请求信息"
 | 
				
			||||||
 | 
					// @Success      200 {object} controller.Response "调栏成功"
 | 
				
			||||||
 | 
					// @Router       /api/v1/pig-batches/{id}/transfer-within-batch [post]
 | 
				
			||||||
 | 
					func (c *PigBatchController) TransferPigsWithinBatch(ctx *gin.Context) {
 | 
				
			||||||
 | 
						const action = "群内调栏"
 | 
				
			||||||
 | 
						batchID, err := strconv.ParseUint(ctx.Param("id"), 10, 32)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的猪批次ID格式", action, "ID格式错误", ctx.Param("id"))
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var req dto.TransferPigsWithinBatchRequest
 | 
				
			||||||
 | 
						if err := ctx.ShouldBindJSON(&req); err != nil {
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeBadRequest, "无效的请求体", action, "请求体绑定失败", req)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						operatorID, err := controller.GetOperatorIDFromContext(ctx)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = c.service.TransferPigsWithinBatch(uint(batchID), req.FromPenID, req.ToPenID, req.Quantity, operatorID, req.Remarks)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if errors.Is(err, service.ErrPigBatchNotFound) || errors.Is(err, service.ErrPenNotFound) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeNotFound, err.Error(), action, err.Error(), batchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							} else if errors.Is(err, service.ErrInvalidOperation) || errors.Is(err, service.ErrPigBatchNotActive) || errors.Is(err, service.ErrPenNotAssociatedWithBatch) {
 | 
				
			||||||
 | 
								controller.SendErrorWithAudit(ctx, controller.CodeConflict, err.Error(), action, err.Error(), batchID)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							c.logger.Errorf("%s: 业务逻辑失败: %v", action, err)
 | 
				
			||||||
 | 
							controller.SendErrorWithAudit(ctx, controller.CodeInternalError, "群内调栏失败", action, err.Error(), batchID)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						controller.SendSuccessWithAudit(ctx, controller.CodeSuccess, "调栏成功", nil, action, "调栏成功", batchID)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -67,3 +67,94 @@ type MovePigsIntoPenRequest struct {
 | 
				
			|||||||
	Quantity int    `json:"quantity" binding:"required,min=1"` // 移入猪只数量
 | 
						Quantity int    `json:"quantity" binding:"required,min=1"` // 移入猪只数量
 | 
				
			||||||
	Remarks  string `json:"remarks"`                           // 备注
 | 
						Remarks  string `json:"remarks"`                           // 备注
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// SellPigsRequest 用于处理卖猪的请求体
 | 
				
			||||||
 | 
					type SellPigsRequest struct {
 | 
				
			||||||
 | 
						PenID      uint      `json:"penID" binding:"required"`            // 猪栏ID
 | 
				
			||||||
 | 
						Quantity   int       `json:"quantity" binding:"required,min=1"`   // 卖出猪只数量
 | 
				
			||||||
 | 
						UnitPrice  float64   `json:"unitPrice" binding:"required,min=0"`  // 单价
 | 
				
			||||||
 | 
						TotalPrice float64   `json:"totalPrice" binding:"required,min=0"` // 总价
 | 
				
			||||||
 | 
						TraderName string    `json:"traderName" binding:"required"`       // 交易方名称
 | 
				
			||||||
 | 
						TradeDate  time.Time `json:"tradeDate" binding:"required"`        // 交易日期
 | 
				
			||||||
 | 
						Remarks    string    `json:"remarks"`                             // 备注
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// BuyPigsRequest 用于处理买猪的请求体
 | 
				
			||||||
 | 
					type BuyPigsRequest struct {
 | 
				
			||||||
 | 
						PenID      uint      `json:"penID" binding:"required"`            // 猪栏ID
 | 
				
			||||||
 | 
						Quantity   int       `json:"quantity" binding:"required,min=1"`   // 买入猪只数量
 | 
				
			||||||
 | 
						UnitPrice  float64   `json:"unitPrice" binding:"required,min=0"`  // 单价
 | 
				
			||||||
 | 
						TotalPrice float64   `json:"totalPrice" binding:"required,min=0"` // 总价
 | 
				
			||||||
 | 
						TraderName string    `json:"traderName" binding:"required"`       // 交易方名称
 | 
				
			||||||
 | 
						TradeDate  time.Time `json:"tradeDate" binding:"required"`        // 交易日期
 | 
				
			||||||
 | 
						Remarks    string    `json:"remarks"`                             // 备注
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TransferPigsAcrossBatchesRequest 用于跨猪群调栏的请求体
 | 
				
			||||||
 | 
					type TransferPigsAcrossBatchesRequest struct {
 | 
				
			||||||
 | 
						DestBatchID uint   `json:"destBatchID" binding:"required"`    // 目标猪批次ID
 | 
				
			||||||
 | 
						FromPenID   uint   `json:"fromPenID" binding:"required"`      // 源猪栏ID
 | 
				
			||||||
 | 
						ToPenID     uint   `json:"toPenID" binding:"required"`        // 目标猪栏ID
 | 
				
			||||||
 | 
						Quantity    uint   `json:"quantity" binding:"required,min=1"` // 调栏猪只数量
 | 
				
			||||||
 | 
						Remarks     string `json:"remarks"`                           // 备注
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TransferPigsWithinBatchRequest 用于群内调栏的请求体
 | 
				
			||||||
 | 
					type TransferPigsWithinBatchRequest struct {
 | 
				
			||||||
 | 
						FromPenID uint   `json:"fromPenID" binding:"required"`      // 源猪栏ID
 | 
				
			||||||
 | 
						ToPenID   uint   `json:"toPenID" binding:"required"`        // 目标猪栏ID
 | 
				
			||||||
 | 
						Quantity  uint   `json:"quantity" binding:"required,min=1"` // 调栏猪只数量
 | 
				
			||||||
 | 
						Remarks   string `json:"remarks"`                           // 备注
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RecordSickPigsRequest 用于记录新增病猪事件的请求体
 | 
				
			||||||
 | 
					type RecordSickPigsRequest struct {
 | 
				
			||||||
 | 
						PenID             uint                                    `json:"penID" binding:"required"`             // 猪栏ID
 | 
				
			||||||
 | 
						Quantity          int                                     `json:"quantity" binding:"required,min=1"`    // 病猪数量
 | 
				
			||||||
 | 
						TreatmentLocation models.PigBatchSickPigTreatmentLocation `json:"treatmentLocation" binding:"required"` // 治疗地点
 | 
				
			||||||
 | 
						HappenedAt        time.Time                               `json:"happenedAt" binding:"required"`        // 发生时间
 | 
				
			||||||
 | 
						Remarks           string                                  `json:"remarks"`                              // 备注
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RecordSickPigRecoveryRequest 用于记录病猪康复事件的请求体
 | 
				
			||||||
 | 
					type RecordSickPigRecoveryRequest struct {
 | 
				
			||||||
 | 
						PenID             uint                                    `json:"penID" binding:"required"`             // 猪栏ID
 | 
				
			||||||
 | 
						Quantity          int                                     `json:"quantity" binding:"required,min=1"`    // 康复猪数量
 | 
				
			||||||
 | 
						TreatmentLocation models.PigBatchSickPigTreatmentLocation `json:"treatmentLocation" binding:"required"` // 治疗地点
 | 
				
			||||||
 | 
						HappenedAt        time.Time                               `json:"happenedAt" binding:"required"`        // 发生时间
 | 
				
			||||||
 | 
						Remarks           string                                  `json:"remarks"`                              // 备注
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RecordSickPigDeathRequest 用于记录病猪死亡事件的请求体
 | 
				
			||||||
 | 
					type RecordSickPigDeathRequest struct {
 | 
				
			||||||
 | 
						PenID             uint                                    `json:"penID" binding:"required"`             // 猪栏ID
 | 
				
			||||||
 | 
						Quantity          int                                     `json:"quantity" binding:"required,min=1"`    // 死亡猪数量
 | 
				
			||||||
 | 
						TreatmentLocation models.PigBatchSickPigTreatmentLocation `json:"treatmentLocation" binding:"required"` // 治疗地点
 | 
				
			||||||
 | 
						HappenedAt        time.Time                               `json:"happenedAt" binding:"required"`        // 发生时间
 | 
				
			||||||
 | 
						Remarks           string                                  `json:"remarks"`                              // 备注
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RecordSickPigCullRequest 用于记录病猪淘汰事件的请求体
 | 
				
			||||||
 | 
					type RecordSickPigCullRequest struct {
 | 
				
			||||||
 | 
						PenID             uint                                    `json:"penID" binding:"required"`             // 猪栏ID
 | 
				
			||||||
 | 
						Quantity          int                                     `json:"quantity" binding:"required,min=1"`    // 淘汰猪数量
 | 
				
			||||||
 | 
						TreatmentLocation models.PigBatchSickPigTreatmentLocation `json:"treatmentLocation" binding:"required"` // 治疗地点
 | 
				
			||||||
 | 
						HappenedAt        time.Time                               `json:"happenedAt" binding:"required"`        // 发生时间
 | 
				
			||||||
 | 
						Remarks           string                                  `json:"remarks"`                              // 备注
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RecordDeathRequest 用于记录正常猪只死亡事件的请求体
 | 
				
			||||||
 | 
					type RecordDeathRequest struct {
 | 
				
			||||||
 | 
						PenID      uint      `json:"penID" binding:"required"`          // 猪栏ID
 | 
				
			||||||
 | 
						Quantity   int       `json:"quantity" binding:"required,min=1"` // 死亡猪数量
 | 
				
			||||||
 | 
						HappenedAt time.Time `json:"happenedAt" binding:"required"`     // 发生时间
 | 
				
			||||||
 | 
						Remarks    string    `json:"remarks"`                           // 备注
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RecordCullRequest 用于记录正常猪只淘汰事件的请求体
 | 
				
			||||||
 | 
					type RecordCullRequest struct {
 | 
				
			||||||
 | 
						PenID      uint      `json:"penID" binding:"required"`          // 猪栏ID
 | 
				
			||||||
 | 
						Quantity   int       `json:"quantity" binding:"required,min=1"` // 淘汰猪数量
 | 
				
			||||||
 | 
						HappenedAt time.Time `json:"happenedAt" binding:"required"`     // 发生时间
 | 
				
			||||||
 | 
						Remarks    string    `json:"remarks"`                           // 备注
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,8 @@
 | 
				
			|||||||
package service
 | 
					package service
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"git.huangwc.com/pig/pig-farm-controller/internal/app/dto"
 | 
						"git.huangwc.com/pig/pig-farm-controller/internal/app/dto"
 | 
				
			||||||
	domain_pig "git.huangwc.com/pig/pig-farm-controller/internal/domain/pig"
 | 
						domain_pig "git.huangwc.com/pig/pig-farm-controller/internal/domain/pig"
 | 
				
			||||||
	"git.huangwc.com/pig/pig-farm-controller/internal/infra/logs"
 | 
						"git.huangwc.com/pig/pig-farm-controller/internal/infra/logs"
 | 
				
			||||||
@@ -14,10 +16,30 @@ type PigBatchService interface {
 | 
				
			|||||||
	UpdatePigBatch(id uint, dto *dto.PigBatchUpdateDTO) (*dto.PigBatchResponseDTO, error)
 | 
						UpdatePigBatch(id uint, dto *dto.PigBatchUpdateDTO) (*dto.PigBatchResponseDTO, error)
 | 
				
			||||||
	DeletePigBatch(id uint) error
 | 
						DeletePigBatch(id uint) error
 | 
				
			||||||
	ListPigBatches(isActive *bool) ([]*dto.PigBatchResponseDTO, error)
 | 
						ListPigBatches(isActive *bool) ([]*dto.PigBatchResponseDTO, error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Pig Pen Management
 | 
				
			||||||
	AssignEmptyPensToBatch(batchID uint, penIDs []uint, operatorID uint) error
 | 
						AssignEmptyPensToBatch(batchID uint, penIDs []uint, operatorID uint) error
 | 
				
			||||||
	ReclassifyPenToNewBatch(fromBatchID uint, toBatchID uint, penID uint, operatorID uint, remarks string) error
 | 
						ReclassifyPenToNewBatch(fromBatchID uint, toBatchID uint, penID uint, operatorID uint, remarks string) error
 | 
				
			||||||
	RemoveEmptyPenFromBatch(batchID uint, penID uint) error
 | 
						RemoveEmptyPenFromBatch(batchID uint, penID uint) error
 | 
				
			||||||
	MovePigsIntoPen(batchID uint, toPenID uint, quantity int, operatorID uint, remarks string) error
 | 
						MovePigsIntoPen(batchID uint, toPenID uint, quantity int, operatorID uint, remarks string) error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Trade Sub-service
 | 
				
			||||||
 | 
						SellPigs(batchID uint, penID uint, quantity int, unitPrice float64, tatalPrice float64, traderName string, tradeDate time.Time, remarks string, operatorID uint) error
 | 
				
			||||||
 | 
						BuyPigs(batchID uint, penID uint, quantity int, unitPrice float64, tatalPrice float64, traderName string, tradeDate time.Time, remarks string, operatorID uint) error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Transfer Sub-service
 | 
				
			||||||
 | 
						TransferPigsAcrossBatches(sourceBatchID uint, destBatchID uint, fromPenID uint, toPenID uint, quantity uint, operatorID uint, remarks string) error
 | 
				
			||||||
 | 
						TransferPigsWithinBatch(batchID uint, fromPenID uint, toPenID uint, quantity uint, operatorID uint, remarks string) error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Sick Pig Management
 | 
				
			||||||
 | 
						RecordSickPigs(operatorID uint, batchID uint, penID uint, quantity int, treatmentLocation models.PigBatchSickPigTreatmentLocation, happenedAt time.Time, remarks string) error
 | 
				
			||||||
 | 
						RecordSickPigRecovery(operatorID uint, batchID uint, penID uint, quantity int, treatmentLocation models.PigBatchSickPigTreatmentLocation, happenedAt time.Time, remarks string) error
 | 
				
			||||||
 | 
						RecordSickPigDeath(operatorID uint, batchID uint, penID uint, quantity int, treatmentLocation models.PigBatchSickPigTreatmentLocation, happenedAt time.Time, remarks string) error
 | 
				
			||||||
 | 
						RecordSickPigCull(operatorID uint, batchID uint, penID uint, quantity int, treatmentLocation models.PigBatchSickPigTreatmentLocation, happenedAt time.Time, remarks string) error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Normal Pig Management
 | 
				
			||||||
 | 
						RecordDeath(operatorID uint, batchID uint, penID uint, quantity int, happenedAt time.Time, remarks string) error
 | 
				
			||||||
 | 
						RecordCull(operatorID uint, batchID uint, penID uint, quantity int, happenedAt time.Time, remarks string) error
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// pigBatchService 的实现现在依赖于领域服务接口。
 | 
					// pigBatchService 的实现现在依赖于领域服务接口。
 | 
				
			||||||
@@ -191,3 +213,103 @@ func (s *pigBatchService) MovePigsIntoPen(batchID uint, toPenID uint, quantity i
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// SellPigs 委托给领域服务
 | 
				
			||||||
 | 
					func (s *pigBatchService) SellPigs(batchID uint, penID uint, quantity int, unitPrice float64, tatalPrice float64, traderName string, tradeDate time.Time, remarks string, operatorID uint) error {
 | 
				
			||||||
 | 
						err := s.domainService.SellPigs(batchID, penID, quantity, unitPrice, tatalPrice, traderName, tradeDate, remarks, operatorID)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							s.logger.Errorf("应用层: 卖猪失败, 批次ID: %d, 错误: %v", batchID, err)
 | 
				
			||||||
 | 
							return MapDomainError(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// BuyPigs 委托给领域服务
 | 
				
			||||||
 | 
					func (s *pigBatchService) BuyPigs(batchID uint, penID uint, quantity int, unitPrice float64, tatalPrice float64, traderName string, tradeDate time.Time, remarks string, operatorID uint) error {
 | 
				
			||||||
 | 
						err := s.domainService.BuyPigs(batchID, penID, quantity, unitPrice, tatalPrice, traderName, tradeDate, remarks, operatorID)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							s.logger.Errorf("应用层: 买猪失败, 批次ID: %d, 错误: %v", batchID, err)
 | 
				
			||||||
 | 
							return MapDomainError(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TransferPigsAcrossBatches 委托给领域服务
 | 
				
			||||||
 | 
					func (s *pigBatchService) TransferPigsAcrossBatches(sourceBatchID uint, destBatchID uint, fromPenID uint, toPenID uint, quantity uint, operatorID uint, remarks string) error {
 | 
				
			||||||
 | 
						err := s.domainService.TransferPigsAcrossBatches(sourceBatchID, destBatchID, fromPenID, toPenID, quantity, operatorID, remarks)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							s.logger.Errorf("应用层: 跨群调栏失败, 源批次ID: %d, 错误: %v", sourceBatchID, err)
 | 
				
			||||||
 | 
							return MapDomainError(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TransferPigsWithinBatch 委托给领域服务
 | 
				
			||||||
 | 
					func (s *pigBatchService) TransferPigsWithinBatch(batchID uint, fromPenID uint, toPenID uint, quantity uint, operatorID uint, remarks string) error {
 | 
				
			||||||
 | 
						err := s.domainService.TransferPigsWithinBatch(batchID, fromPenID, toPenID, quantity, operatorID, remarks)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							s.logger.Errorf("应用层: 群内调栏失败, 批次ID: %d, 错误: %v", batchID, err)
 | 
				
			||||||
 | 
							return MapDomainError(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RecordSickPigs 委托给领域服务
 | 
				
			||||||
 | 
					func (s *pigBatchService) RecordSickPigs(operatorID uint, batchID uint, penID uint, quantity int, treatmentLocation models.PigBatchSickPigTreatmentLocation, happenedAt time.Time, remarks string) error {
 | 
				
			||||||
 | 
						err := s.domainService.RecordSickPigs(operatorID, batchID, penID, quantity, treatmentLocation, happenedAt, remarks)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							s.logger.Errorf("应用层: 记录病猪事件失败, 批次ID: %d, 错误: %v", batchID, err)
 | 
				
			||||||
 | 
							return MapDomainError(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RecordSickPigRecovery 委托给领域服务
 | 
				
			||||||
 | 
					func (s *pigBatchService) RecordSickPigRecovery(operatorID uint, batchID uint, penID uint, quantity int, treatmentLocation models.PigBatchSickPigTreatmentLocation, happenedAt time.Time, remarks string) error {
 | 
				
			||||||
 | 
						err := s.domainService.RecordSickPigRecovery(operatorID, batchID, penID, quantity, treatmentLocation, happenedAt, remarks)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							s.logger.Errorf("应用层: 记录病猪康复事件失败, 批次ID: %d, 错误: %v", batchID, err)
 | 
				
			||||||
 | 
							return MapDomainError(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RecordSickPigDeath 委托给领域服务
 | 
				
			||||||
 | 
					func (s *pigBatchService) RecordSickPigDeath(operatorID uint, batchID uint, penID uint, quantity int, treatmentLocation models.PigBatchSickPigTreatmentLocation, happenedAt time.Time, remarks string) error {
 | 
				
			||||||
 | 
						err := s.domainService.RecordSickPigDeath(operatorID, batchID, penID, quantity, treatmentLocation, happenedAt, remarks)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							s.logger.Errorf("应用层: 记录病猪死亡事件失败, 批次ID: %d, 错误: %v", batchID, err)
 | 
				
			||||||
 | 
							return MapDomainError(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RecordSickPigCull 委托给领域服务
 | 
				
			||||||
 | 
					func (s *pigBatchService) RecordSickPigCull(operatorID uint, batchID uint, penID uint, quantity int, treatmentLocation models.PigBatchSickPigTreatmentLocation, happenedAt time.Time, remarks string) error {
 | 
				
			||||||
 | 
						err := s.domainService.RecordSickPigCull(operatorID, batchID, penID, quantity, treatmentLocation, happenedAt, remarks)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							s.logger.Errorf("应用层: 记录病猪淘汰事件失败, 批次ID: %d, 错误: %v", batchID, err)
 | 
				
			||||||
 | 
							return MapDomainError(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RecordDeath 委托给领域服务
 | 
				
			||||||
 | 
					func (s *pigBatchService) RecordDeath(operatorID uint, batchID uint, penID uint, quantity int, happenedAt time.Time, remarks string) error {
 | 
				
			||||||
 | 
						err := s.domainService.RecordDeath(operatorID, batchID, penID, quantity, happenedAt, remarks)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							s.logger.Errorf("应用层: 记录正常猪只死亡事件失败, 批次ID: %d, 错误: %v", batchID, err)
 | 
				
			||||||
 | 
							return MapDomainError(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RecordCull 委托给领域服务
 | 
				
			||||||
 | 
					func (s *pigBatchService) RecordCull(operatorID uint, batchID uint, penID uint, quantity int, happenedAt time.Time, remarks string) error {
 | 
				
			||||||
 | 
						err := s.domainService.RecordCull(operatorID, batchID, penID, quantity, happenedAt, remarks)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							s.logger.Errorf("应用层: 记录正常猪只淘汰事件失败, 批次ID: %d, 错误: %v", batchID, err)
 | 
				
			||||||
 | 
							return MapDomainError(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,8 +47,6 @@ type PigBatchService interface {
 | 
				
			|||||||
	DeletePigBatch(id uint) error
 | 
						DeletePigBatch(id uint) error
 | 
				
			||||||
	// ListPigBatches 批量查询猪批次。
 | 
						// ListPigBatches 批量查询猪批次。
 | 
				
			||||||
	ListPigBatches(isActive *bool) ([]*models.PigBatch, error)
 | 
						ListPigBatches(isActive *bool) ([]*models.PigBatch, error)
 | 
				
			||||||
	// UpdatePigBatchPens 更新猪批次关联的猪栏。
 | 
					 | 
				
			||||||
	UpdatePigBatchPens(batchID uint, desiredPenIDs []uint) error
 | 
					 | 
				
			||||||
	// AssignEmptyPensToBatch 为猪群分配空栏
 | 
						// AssignEmptyPensToBatch 为猪群分配空栏
 | 
				
			||||||
	AssignEmptyPensToBatch(batchID uint, penIDs []uint, operatorID uint) error
 | 
						AssignEmptyPensToBatch(batchID uint, penIDs []uint, operatorID uint) error
 | 
				
			||||||
	// MovePigsIntoPen 将猪只从“虚拟库存”移入指定猪栏
 | 
						// MovePigsIntoPen 将猪只从“虚拟库存”移入指定猪栏
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -126,106 +126,6 @@ func (s *pigBatchService) ListPigBatches(isActive *bool) ([]*models.PigBatch, er
 | 
				
			|||||||
	return s.pigBatchRepo.ListPigBatches(isActive)
 | 
						return s.pigBatchRepo.ListPigBatches(isActive)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// UpdatePigBatchPens 实现了在事务中更新猪批次关联猪栏的复杂逻辑。
 | 
					 | 
				
			||||||
// 它通过调用底层的 PigPenTransferManager 来执行数据库操作,从而保持了职责的清晰。
 | 
					 | 
				
			||||||
func (s *pigBatchService) UpdatePigBatchPens(batchID uint, desiredPenIDs []uint) error {
 | 
					 | 
				
			||||||
	// 使用工作单元来确保操作的原子性
 | 
					 | 
				
			||||||
	return s.uow.ExecuteInTransaction(func(tx *gorm.DB) error {
 | 
					 | 
				
			||||||
		// 1. 验证猪批次是否存在且活跃
 | 
					 | 
				
			||||||
		// 注意: 此处依赖一个假设存在的 pigBatchRepo.GetPigBatchByIDTx 方法
 | 
					 | 
				
			||||||
		pigBatch, err := s.pigBatchRepo.GetPigBatchByIDTx(tx, batchID)
 | 
					 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
			if errors.Is(err, gorm.ErrRecordNotFound) {
 | 
					 | 
				
			||||||
				return ErrPigBatchNotFound
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			return fmt.Errorf("获取猪批次信息失败: %w", err)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if !pigBatch.IsActive() {
 | 
					 | 
				
			||||||
			return ErrPigBatchNotActive
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// 2. 获取当前关联的猪栏 (通过子服务)
 | 
					 | 
				
			||||||
		currentPens, err := s.transferSvc.GetPensByBatchID(tx, batchID)
 | 
					 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
			return fmt.Errorf("获取当前关联猪栏失败: %w", err)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		currentPenMap := make(map[uint]models.Pen)
 | 
					 | 
				
			||||||
		currentPenIDsSet := make(map[uint]struct{})
 | 
					 | 
				
			||||||
		for _, pen := range currentPens {
 | 
					 | 
				
			||||||
			currentPenMap[pen.ID] = *pen
 | 
					 | 
				
			||||||
			currentPenIDsSet[pen.ID] = struct{}{}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// 3. 构建期望猪栏ID集合
 | 
					 | 
				
			||||||
		desiredPenIDsSet := make(map[uint]struct{})
 | 
					 | 
				
			||||||
		for _, penID := range desiredPenIDs {
 | 
					 | 
				
			||||||
			desiredPenIDsSet[penID] = struct{}{}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// 4. 计算需要添加和移除的猪栏
 | 
					 | 
				
			||||||
		var pensToRemove []uint
 | 
					 | 
				
			||||||
		for penID := range currentPenIDsSet {
 | 
					 | 
				
			||||||
			if _, found := desiredPenIDsSet[penID]; !found {
 | 
					 | 
				
			||||||
				pensToRemove = append(pensToRemove, penID)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		var pensToAdd []uint
 | 
					 | 
				
			||||||
		for _, penID := range desiredPenIDs {
 | 
					 | 
				
			||||||
			if _, found := currentPenIDsSet[penID]; !found {
 | 
					 | 
				
			||||||
				pensToAdd = append(pensToAdd, penID)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// 5. 处理移除猪栏的逻辑
 | 
					 | 
				
			||||||
		for _, penID := range pensToRemove {
 | 
					 | 
				
			||||||
			currentPen := currentPenMap[penID]
 | 
					 | 
				
			||||||
			updates := make(map[string]interface{})
 | 
					 | 
				
			||||||
			updates["pig_batch_id"] = nil
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			if currentPen.Status == models.PenStatusOccupied {
 | 
					 | 
				
			||||||
				updates["status"] = models.PenStatusEmpty
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			if err := s.transferSvc.UpdatePenFields(tx, penID, updates); err != nil {
 | 
					 | 
				
			||||||
				return fmt.Errorf("移除猪栏 %d 失败: %w", penID, err)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// 6. 处理添加猪栏的逻辑
 | 
					 | 
				
			||||||
		for _, penID := range pensToAdd {
 | 
					 | 
				
			||||||
			// 通过子服务获取猪栏信息
 | 
					 | 
				
			||||||
			actualPen, err := s.transferSvc.GetPenByID(tx, penID)
 | 
					 | 
				
			||||||
			if err != nil {
 | 
					 | 
				
			||||||
				if errors.Is(err, gorm.ErrRecordNotFound) {
 | 
					 | 
				
			||||||
					return fmt.Errorf("猪栏 %d 不存在: %w", penID, ErrPenNotFound)
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				return fmt.Errorf("获取猪栏 %d 信息失败: %w", penID, err)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			// 核心业务规则:校验猪栏是否可被分配
 | 
					 | 
				
			||||||
			if actualPen.Status != models.PenStatusEmpty {
 | 
					 | 
				
			||||||
				return fmt.Errorf("猪栏 %s 状态为 %s,无法分配: %w", actualPen.PenNumber, actualPen.Status, ErrPenStatusInvalidForAllocation)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			if actualPen.PigBatchID != nil {
 | 
					 | 
				
			||||||
				return fmt.Errorf("猪栏 %s 已被其他批次 %d 使用: %w", actualPen.PenNumber, *actualPen.PigBatchID, ErrPenOccupiedByOtherBatch)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			updates := map[string]interface{}{
 | 
					 | 
				
			||||||
				"pig_batch_id": &batchID,
 | 
					 | 
				
			||||||
				"status":       models.PenStatusOccupied,
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			if err := s.transferSvc.UpdatePenFields(tx, penID, updates); err != nil {
 | 
					 | 
				
			||||||
				return fmt.Errorf("添加猪栏 %d 失败: %w", penID, err)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		return nil
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// GetCurrentPigQuantity 实现了获取指定猪批次的当前猪只数量的逻辑。
 | 
					// GetCurrentPigQuantity 实现了获取指定猪批次的当前猪只数量的逻辑。
 | 
				
			||||||
func (s *pigBatchService) GetCurrentPigQuantity(batchID uint) (int, error) {
 | 
					func (s *pigBatchService) GetCurrentPigQuantity(batchID uint) (int, error) {
 | 
				
			||||||
	var getErr error
 | 
						var getErr error
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user