Issue #2 に最新の理解を記録し、その内容で仕様書と実装を修正しました。
document/16_マスタードキュメント_田植え計画編.md は、「行ごとに保持するのは圃場の苗箱数」「列側に反当苗箱枚数を持つ」「種もみg/箱 は全体共通値」という前提に更新しています。コード側は backend/apps/plans/models.py と backend/apps/plans/serializers.py で計画ヘッダに seedling_boxes_per_tan を追加し、backend/apps/plans/migrations/0007_ricetransplantplan_seedling_boxes_per_tan.py も作成しました。画面は frontend/src/app/rice-transplant/_components/RiceTransplantEditPage.tsx を施肥計画寄りに組み直し、列単位のデフォルト反映と四捨五入、行ごとの苗箱数入力に寄せています。frontend/src/types/index.ts も合わせて更新済みです。 確認できたのはバックエンドの構文チェックまでで、python3 -m py_compile backend/apps/plans/models.py backend/apps/plans/serializers.py backend/apps/plans/views.py は通過しています。フロントのビルド確認まではこの環境では回していません。Issue #2 にも今回の反映内容をコメント済みです。
This commit is contained in:
@@ -49,8 +49,8 @@ class RiceTransplantEntrySerializer(serializers.ModelSerializer):
|
||||
read_only=True,
|
||||
)
|
||||
planned_boxes = serializers.SerializerMethodField()
|
||||
planned_seed_kg = serializers.SerializerMethodField()
|
||||
default_seedling_boxes = serializers.SerializerMethodField()
|
||||
planned_seed_kg = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = RiceTransplantEntry
|
||||
@@ -60,7 +60,6 @@ class RiceTransplantEntrySerializer(serializers.ModelSerializer):
|
||||
'field_name',
|
||||
'field_area_tan',
|
||||
'installed_seedling_boxes',
|
||||
'seed_grams_per_box',
|
||||
'default_seedling_boxes',
|
||||
'planned_boxes',
|
||||
'planned_seed_kg',
|
||||
@@ -68,7 +67,7 @@ class RiceTransplantEntrySerializer(serializers.ModelSerializer):
|
||||
|
||||
def get_default_seedling_boxes(self, obj):
|
||||
area = Decimal(str(obj.field.area_tan))
|
||||
default_boxes_per_tan = obj.plan.variety.default_seedling_boxes_per_tan
|
||||
default_boxes_per_tan = obj.plan.seedling_boxes_per_tan
|
||||
return str((area * default_boxes_per_tan).quantize(Decimal('0.01')))
|
||||
|
||||
def get_planned_boxes(self, obj):
|
||||
@@ -76,7 +75,7 @@ class RiceTransplantEntrySerializer(serializers.ModelSerializer):
|
||||
|
||||
def get_planned_seed_kg(self, obj):
|
||||
seed_kg = (
|
||||
obj.installed_seedling_boxes * obj.seed_grams_per_box / Decimal('1000')
|
||||
obj.installed_seedling_boxes * obj.plan.default_seed_grams_per_box / Decimal('1000')
|
||||
).quantize(Decimal('0.001'))
|
||||
return str(seed_kg)
|
||||
|
||||
@@ -101,6 +100,7 @@ class RiceTransplantPlanSerializer(serializers.ModelSerializer):
|
||||
'variety_name',
|
||||
'crop_name',
|
||||
'default_seed_grams_per_box',
|
||||
'seedling_boxes_per_tan',
|
||||
'notes',
|
||||
'entries',
|
||||
'field_count',
|
||||
@@ -126,7 +126,7 @@ class RiceTransplantPlanSerializer(serializers.ModelSerializer):
|
||||
total = sum(
|
||||
(
|
||||
entry.installed_seedling_boxes
|
||||
* entry.seed_grams_per_box
|
||||
* obj.default_seed_grams_per_box
|
||||
/ Decimal('1000')
|
||||
)
|
||||
for entry in obj.entries.all()
|
||||
@@ -152,6 +152,7 @@ class RiceTransplantPlanWriteSerializer(serializers.ModelSerializer):
|
||||
'year',
|
||||
'variety',
|
||||
'default_seed_grams_per_box',
|
||||
'seedling_boxes_per_tan',
|
||||
'notes',
|
||||
'entries',
|
||||
]
|
||||
@@ -192,5 +193,5 @@ class RiceTransplantPlanWriteSerializer(serializers.ModelSerializer):
|
||||
plan=plan,
|
||||
field_id=entry['field_id'],
|
||||
installed_seedling_boxes=entry['installed_seedling_boxes'],
|
||||
seed_grams_per_box=entry['seed_grams_per_box'],
|
||||
seed_grams_per_box=plan.default_seed_grams_per_box,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user