<mxfile host="app.diagrams.net" modified="2026-02-26T21:12:00.000Z" agent="OpenCode" version="24.7.17" type="device">
  <diagram id="class-diagram" name="图4.4 系统类图">
    <mxGraphModel dx="1600" dy="1000" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2600" pageHeight="1600" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />

        <mxCell id="10" value="系统类图（核心实体类）" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=2;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="1160" y="20" width="260" height="56" as="geometry" /></mxCell>

        <mxCell id="100" value="&lt;b&gt;用户类&lt;/b&gt;&lt;hr/&gt;+ id: Long&lt;br/&gt;+ username: String&lt;br/&gt;+ phone: String&lt;br/&gt;+ email: String&lt;br/&gt;+ password: String&lt;br/&gt;+ role: String&lt;br/&gt;+ status: Integer&lt;br/&gt;+ avatar: String&lt;br/&gt;+ createTime: DateTime&lt;br/&gt;+ updateTime: DateTime&lt;br/&gt;+ deleted: Integer" style="shape=umlClass;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="80" y="140" width="250" height="280" as="geometry" /></mxCell>
        <mxCell id="101" value="&lt;b&gt;医生类&lt;/b&gt;&lt;hr/&gt;+ id: Long&lt;br/&gt;+ name: String&lt;br/&gt;+ department: String&lt;br/&gt;+ title: String&lt;br/&gt;+ phone: String&lt;br/&gt;+ email: String&lt;br/&gt;+ status: Integer&lt;br/&gt;+ createTime: DateTime&lt;br/&gt;+ updateTime: DateTime&lt;br/&gt;+ deleted: Integer" style="shape=umlClass;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="380" y="140" width="250" height="260" as="geometry" /></mxCell>
        <mxCell id="102" value="&lt;b&gt;宠物类&lt;/b&gt;&lt;hr/&gt;+ id: Long&lt;br/&gt;+ ownerId: Long&lt;br/&gt;+ name: String&lt;br/&gt;+ species: String&lt;br/&gt;+ breed: String&lt;br/&gt;+ gender: String&lt;br/&gt;+ birthday: Date&lt;br/&gt;+ weight: Decimal&lt;br/&gt;+ remark: String&lt;br/&gt;+ createTime: DateTime&lt;br/&gt;+ updateTime: DateTime&lt;br/&gt;+ deleted: Integer" style="shape=umlClass;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="80" y="520" width="260" height="300" as="geometry" /></mxCell>
        <mxCell id="103" value="&lt;b&gt;预约类&lt;/b&gt;&lt;hr/&gt;+ id: Long&lt;br/&gt;+ customerId: Long&lt;br/&gt;+ petId: Long&lt;br/&gt;+ doctorId: Long&lt;br/&gt;+ department: String&lt;br/&gt;+ appointmentDate: Date&lt;br/&gt;+ timeSlot: String&lt;br/&gt;+ status: String&lt;br/&gt;+ remark: String&lt;br/&gt;+ createTime: DateTime&lt;br/&gt;+ updateTime: DateTime&lt;br/&gt;+ deleted: Integer" style="shape=umlClass;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="390" y="520" width="270" height="300" as="geometry" /></mxCell>
        <mxCell id="104" value="&lt;b&gt;就诊类&lt;/b&gt;&lt;hr/&gt;+ id: Long&lt;br/&gt;+ appointmentId: Long&lt;br/&gt;+ customerId: Long&lt;br/&gt;+ petId: Long&lt;br/&gt;+ doctorId: Long&lt;br/&gt;+ symptoms: String&lt;br/&gt;+ diagnosis: String&lt;br/&gt;+ treatmentPlan: String&lt;br/&gt;+ status: String&lt;br/&gt;+ paymentStatus: String&lt;br/&gt;+ createTime: DateTime&lt;br/&gt;+ updateTime: DateTime&lt;br/&gt;+ deleted: Integer" style="shape=umlClass;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="710" y="520" width="280" height="320" as="geometry" /></mxCell>
        <mxCell id="105" value="&lt;b&gt;病历类&lt;/b&gt;&lt;hr/&gt;+ id: Long&lt;br/&gt;+ visitId: Long&lt;br/&gt;+ doctorId: Long&lt;br/&gt;+ content: Text&lt;br/&gt;+ recordType: String&lt;br/&gt;+ createTime: DateTime&lt;br/&gt;+ updateTime: DateTime&lt;br/&gt;+ deleted: Integer" style="shape=umlClass;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1030" y="520" width="250" height="230" as="geometry" /></mxCell>
        <mxCell id="106" value="&lt;b&gt;处方类&lt;/b&gt;&lt;hr/&gt;+ id: Long&lt;br/&gt;+ visitId: Long&lt;br/&gt;+ doctorId: Long&lt;br/&gt;+ customerId: Long&lt;br/&gt;+ totalAmount: Decimal&lt;br/&gt;+ status: String&lt;br/&gt;+ createTime: DateTime&lt;br/&gt;+ updateTime: DateTime&lt;br/&gt;+ deleted: Integer" style="shape=umlClass;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1320" y="520" width="260" height="250" as="geometry" /></mxCell>
        <mxCell id="107" value="&lt;b&gt;处方明细类&lt;/b&gt;&lt;hr/&gt;+ id: Long&lt;br/&gt;+ prescriptionId: Long&lt;br/&gt;+ drugId: Long&lt;br/&gt;+ quantity: Integer&lt;br/&gt;+ dosage: String&lt;br/&gt;+ frequency: String&lt;br/&gt;+ duration: String&lt;br/&gt;+ createTime: DateTime&lt;br/&gt;+ updateTime: DateTime&lt;br/&gt;+ deleted: Integer" style="shape=umlClass;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1620" y="520" width="280" height="270" as="geometry" /></mxCell>
        <mxCell id="108" value="&lt;b&gt;药品类&lt;/b&gt;&lt;hr/&gt;+ id: Long&lt;br/&gt;+ name: String&lt;br/&gt;+ category: String&lt;br/&gt;+ specification: String&lt;br/&gt;+ unitPrice: Decimal&lt;br/&gt;+ stockQuantity: Integer&lt;br/&gt;+ alertThreshold: Integer&lt;br/&gt;+ status: Integer&lt;br/&gt;+ createTime: DateTime&lt;br/&gt;+ updateTime: DateTime&lt;br/&gt;+ deleted: Integer" style="shape=umlClass;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1940" y="520" width="280" height="290" as="geometry" /></mxCell>
        <mxCell id="109" value="&lt;b&gt;订单类&lt;/b&gt;&lt;hr/&gt;+ id: Long&lt;br/&gt;+ visitId: Long&lt;br/&gt;+ customerId: Long&lt;br/&gt;+ amount: Decimal&lt;br/&gt;+ status: String&lt;br/&gt;+ paymentMethod: String&lt;br/&gt;+ paymentTime: DateTime&lt;br/&gt;+ createTime: DateTime&lt;br/&gt;+ updateTime: DateTime&lt;br/&gt;+ deleted: Integer" style="shape=umlClass;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="710" y="930" width="280" height="270" as="geometry" /></mxCell>
        <mxCell id="110" value="&lt;b&gt;入库类&lt;/b&gt;&lt;hr/&gt;+ id: Long&lt;br/&gt;+ drugId: Long&lt;br/&gt;+ quantity: Integer&lt;br/&gt;+ unitPrice: Decimal&lt;br/&gt;+ supplier: String&lt;br/&gt;+ operatorId: Long&lt;br/&gt;+ createTime: DateTime&lt;br/&gt;+ updateTime: DateTime&lt;br/&gt;+ deleted: Integer" style="shape=umlClass;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1940" y="930" width="270" height="250" as="geometry" /></mxCell>
        <mxCell id="111" value="&lt;b&gt;出库类&lt;/b&gt;&lt;hr/&gt;+ id: Long&lt;br/&gt;+ drugId: Long&lt;br/&gt;+ quantity: Integer&lt;br/&gt;+ purpose: String&lt;br/&gt;+ operatorId: Long&lt;br/&gt;+ createTime: DateTime&lt;br/&gt;+ updateTime: DateTime&lt;br/&gt;+ deleted: Integer" style="shape=umlClass;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="2240" y="930" width="260" height="230" as="geometry" /></mxCell>
        <mxCell id="112" value="&lt;b&gt;公告类&lt;/b&gt;&lt;hr/&gt;+ id: Long&lt;br/&gt;+ title: String&lt;br/&gt;+ content: Text&lt;br/&gt;+ publishTime: DateTime&lt;br/&gt;+ status: Integer&lt;br/&gt;+ createTime: DateTime&lt;br/&gt;+ updateTime: DateTime&lt;br/&gt;+ deleted: Integer" style="shape=umlClass;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1030" y="140" width="250" height="230" as="geometry" /></mxCell>
        <mxCell id="113" value="&lt;b&gt;报告类&lt;/b&gt;&lt;hr/&gt;+ id: Long&lt;br/&gt;+ visitId: Long&lt;br/&gt;+ customerId: Long&lt;br/&gt;+ petId: Long&lt;br/&gt;+ reportType: String&lt;br/&gt;+ content: Text&lt;br/&gt;+ createTime: DateTime&lt;br/&gt;+ updateTime: DateTime&lt;br/&gt;+ deleted: Integer" style="shape=umlClass;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1320" y="140" width="260" height="250" as="geometry" /></mxCell>

        <mxCell id="200" value="1:N" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;endArrow=none;" edge="1" parent="1" source="100" target="102"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="201" value="1:N" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;endArrow=none;" edge="1" parent="1" source="100" target="103"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="202" value="1:N" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;endArrow=none;" edge="1" parent="1" source="101" target="103"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="203" value="1:N" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;endArrow=none;" edge="1" parent="1" source="102" target="103"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="204" value="1:1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;endArrow=none;" edge="1" parent="1" source="103" target="104"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="205" value="1:N" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;endArrow=none;" edge="1" parent="1" source="104" target="105"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="206" value="1:N" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;endArrow=none;" edge="1" parent="1" source="104" target="106"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="207" value="1:N" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;endArrow=none;" edge="1" parent="1" source="106" target="107"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="208" value="N:1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;endArrow=none;" edge="1" parent="1" source="107" target="108"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="209" value="1:1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;endArrow=none;" edge="1" parent="1" source="104" target="109"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="210" value="1:N" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;endArrow=none;" edge="1" parent="1" source="108" target="110"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="211" value="1:N" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;endArrow=none;" edge="1" parent="1" source="108" target="111"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="212" value="1:N" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;endArrow=none;" edge="1" parent="1" source="104" target="113"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="213" value="1:N" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;endArrow=none;" edge="1" parent="1" source="100" target="112"><mxGeometry relative="1" as="geometry" /></mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
