This commit is contained in:
Андрей Дувакин 2024-10-04 14:38:55 +05:00
parent a2510f9401
commit f3e1ccb7c4
31 changed files with 562 additions and 1140 deletions

View File

@ -1,532 +1,617 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.8 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.8"> <mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.17 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.17">
<diagram name="Page-1" id="mP2IPReIOeFjsobHqe8U"> <diagram name="Page-1" id="mP2IPReIOeFjsobHqe8U">
<mxGraphModel dx="598" dy="346" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2336" pageHeight="1654" math="0" shadow="0"> <mxGraphModel dx="819" dy="474" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2336" pageHeight="1654" math="0" shadow="0">
<root> <root>
<mxCell id="0" /> <mxCell id="0" />
<mxCell id="1" parent="0" /> <mxCell id="1" parent="0" />
<mxCell id="vXrQV9W24_iiTXsCYrPu-1" value="accessories" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1"> <mxCell id="vXrQV9W24_iiTXsCYrPu-23" value="city" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="1" vertex="1">
<mxGeometry x="793" y="557" width="180" height="210" as="geometry" /> <mxGeometry x="1343" y="557" width="180" height="120" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-2" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-1"> <mxCell id="vXrQV9W24_iiTXsCYrPu-24" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="vXrQV9W24_iiTXsCYrPu-23" vertex="1">
<mxGeometry y="30" width="180" height="30" as="geometry" /> <mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-3" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-2"> <mxCell id="vXrQV9W24_iiTXsCYrPu-25" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-24" vertex="1">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-4" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-2"> <mxCell id="vXrQV9W24_iiTXsCYrPu-26" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-24" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry"> <mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-5" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-1"> <mxCell id="vXrQV9W24_iiTXsCYrPu-27" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="vXrQV9W24_iiTXsCYrPu-23" vertex="1">
<mxGeometry y="60" width="180" height="30" as="geometry" /> <mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-6" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-5"> <mxCell id="vXrQV9W24_iiTXsCYrPu-28" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-27" vertex="1">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-7" value="name" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-5"> <mxCell id="vXrQV9W24_iiTXsCYrPu-29" value="name" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-27" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry"> <mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-8" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-1"> <mxCell id="vXrQV9W24_iiTXsCYrPu-30" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="vXrQV9W24_iiTXsCYrPu-23" vertex="1">
<mxGeometry y="90" width="180" height="30" as="geometry" /> <mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-9" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-8"> <mxCell id="vXrQV9W24_iiTXsCYrPu-31" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-30" vertex="1">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-10" value="width" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-8"> <mxCell id="vXrQV9W24_iiTXsCYrPu-32" value="federal_district_id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-30" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry"> <mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-11" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-1"> <mxCell id="vXrQV9W24_iiTXsCYrPu-45" value="accessiories" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="1" vertex="1">
<mxGeometry x="1083" y="557" width="180" height="210" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-46" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="vXrQV9W24_iiTXsCYrPu-45" vertex="1">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-47" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-46" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-48" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-46" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-49" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="vXrQV9W24_iiTXsCYrPu-45" vertex="1">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-50" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-49" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-51" value="name" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-49" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-61" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="vXrQV9W24_iiTXsCYrPu-45" vertex="1">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-62" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-61" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-63" value="volume" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-61" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-12" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-45">
<mxGeometry y="120" width="180" height="30" as="geometry" /> <mxGeometry y="120" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-12" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-11"> <mxCell id="MM7JYfGdxSZRdL4fy3-k-13" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-12">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-13" value="height" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-11"> <mxCell id="MM7JYfGdxSZRdL4fy3-k-14" value="weight" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-12">
<mxGeometry x="30" width="150" height="30" as="geometry"> <mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-14" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-1"> <mxCell id="vXrQV9W24_iiTXsCYrPu-55" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="vXrQV9W24_iiTXsCYrPu-45" vertex="1">
<mxGeometry y="150" width="180" height="30" as="geometry" /> <mxGeometry y="150" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-15" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-14"> <mxCell id="vXrQV9W24_iiTXsCYrPu-56" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-55" vertex="1">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-16" value="length" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-14"> <mxCell id="vXrQV9W24_iiTXsCYrPu-57" value="weight" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-55" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry"> <mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-17" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-1"> <mxCell id="vXrQV9W24_iiTXsCYrPu-58" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="vXrQV9W24_iiTXsCYrPu-45" vertex="1">
<mxGeometry y="180" width="180" height="30" as="geometry" /> <mxGeometry y="180" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-18" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-17"> <mxCell id="vXrQV9W24_iiTXsCYrPu-59" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-58" vertex="1">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-19" value="weight" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-17"> <mxCell id="vXrQV9W24_iiTXsCYrPu-60" value="city_id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-58" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry"> <mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-23" value="storages" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1"> <mxCell id="vXrQV9W24_iiTXsCYrPu-64" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="vXrQV9W24_iiTXsCYrPu-24" target="vXrQV9W24_iiTXsCYrPu-58" edge="1">
<mxGeometry x="1343" y="557" width="180" height="150" as="geometry" /> <mxGeometry relative="1" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-24" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-23"> <mxCell id="vXrQV9W24_iiTXsCYrPu-100" value="total_orders" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="1" vertex="1">
<mxGeometry x="1150" y="800" width="180" height="210" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-101" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="vXrQV9W24_iiTXsCYrPu-100" vertex="1">
<mxGeometry y="30" width="180" height="30" as="geometry" /> <mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-25" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-24"> <mxCell id="vXrQV9W24_iiTXsCYrPu-102" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-101" vertex="1">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-26" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-24"> <mxCell id="vXrQV9W24_iiTXsCYrPu-103" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-101" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry"> <mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-27" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-23"> <mxCell id="vXrQV9W24_iiTXsCYrPu-104" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="vXrQV9W24_iiTXsCYrPu-100" vertex="1">
<mxGeometry y="60" width="180" height="30" as="geometry" /> <mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-28" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-27"> <mxCell id="vXrQV9W24_iiTXsCYrPu-105" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-104" vertex="1">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-29" value="name" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-27"> <mxCell id="vXrQV9W24_iiTXsCYrPu-106" value="order_datetime" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-104" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry"> <mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-30" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-23"> <mxCell id="MM7JYfGdxSZRdL4fy3-k-20" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-100">
<mxGeometry y="90" width="180" height="30" as="geometry" /> <mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-31" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-30"> <mxCell id="MM7JYfGdxSZRdL4fy3-k-21" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-20">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-32" value="x_coordinate" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-30"> <mxCell id="MM7JYfGdxSZRdL4fy3-k-22" value="count_robots" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-20">
<mxGeometry x="30" width="150" height="30" as="geometry"> <mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-33" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-23"> <mxCell id="MM7JYfGdxSZRdL4fy3-k-23" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-100">
<mxGeometry y="120" width="180" height="30" as="geometry" /> <mxGeometry y="120" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-34" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-33"> <mxCell id="MM7JYfGdxSZRdL4fy3-k-24" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-23">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-35" value="y_coordinate" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-33"> <mxCell id="MM7JYfGdxSZRdL4fy3-k-25" value="deadline" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-23">
<mxGeometry x="30" width="150" height="30" as="geometry"> <mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-45" value="storage_accessiories" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1"> <mxCell id="MM7JYfGdxSZRdL4fy3-k-16" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-100">
<mxGeometry x="1083" y="557" width="180" height="180" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-46" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-45">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-47" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-46">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-48" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-46">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-49" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-45">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-50" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-49">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-51" value="current_count" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-49">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-61" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-45">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-62" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-61">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-63" value="change_datetime" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-61">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-58" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-45">
<mxGeometry y="120" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-59" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-58">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-60" value="storage_id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-58">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-55" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-45">
<mxGeometry y="150" width="180" height="30" as="geometry" /> <mxGeometry y="150" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-56" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-55"> <mxCell id="MM7JYfGdxSZRdL4fy3-k-17" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-16">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-57" value="accessiories_id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-55"> <mxCell id="MM7JYfGdxSZRdL4fy3-k-18" value="status_id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-16">
<mxGeometry x="30" width="150" height="30" as="geometry"> <mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-64" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="vXrQV9W24_iiTXsCYrPu-24" target="vXrQV9W24_iiTXsCYrPu-58"> <mxCell id="vXrQV9W24_iiTXsCYrPu-107" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="vXrQV9W24_iiTXsCYrPu-100" vertex="1">
<mxGeometry relative="1" as="geometry" /> <mxGeometry y="180" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-65" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="vXrQV9W24_iiTXsCYrPu-2" target="vXrQV9W24_iiTXsCYrPu-55"> <mxCell id="vXrQV9W24_iiTXsCYrPu-108" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-107" vertex="1">
<mxGeometry relative="1" as="geometry" /> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-66" value="deliveries" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1"> <mxCell id="vXrQV9W24_iiTXsCYrPu-109" value="&lt;span style=&quot;text-align: center; text-wrap: nowrap;&quot;&gt;user_id&lt;/span&gt;" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-107" vertex="1">
<mxGeometry x="563" y="827" width="180" height="150" as="geometry" /> <mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-67" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-66"> <mxCell id="vXrQV9W24_iiTXsCYrPu-114" value="users" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="1" vertex="1">
<mxGeometry x="1460" y="950" width="180" height="210" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-115" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="vXrQV9W24_iiTXsCYrPu-114" vertex="1">
<mxGeometry y="30" width="180" height="30" as="geometry" /> <mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-68" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-67"> <mxCell id="vXrQV9W24_iiTXsCYrPu-116" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-115" vertex="1">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-69" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-67"> <mxCell id="vXrQV9W24_iiTXsCYrPu-117" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-115" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry"> <mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-70" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-66"> <mxCell id="vXrQV9W24_iiTXsCYrPu-118" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="vXrQV9W24_iiTXsCYrPu-114" vertex="1">
<mxGeometry y="60" width="180" height="30" as="geometry" /> <mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-71" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-70"> <mxCell id="vXrQV9W24_iiTXsCYrPu-119" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-118" vertex="1">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-72" value="count" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-70"> <mxCell id="vXrQV9W24_iiTXsCYrPu-120" value="first_name" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-118" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry"> <mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-76" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-66"> <mxCell id="vXrQV9W24_iiTXsCYrPu-121" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="vXrQV9W24_iiTXsCYrPu-114" vertex="1">
<mxGeometry y="90" width="180" height="30" as="geometry" /> <mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-77" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-76"> <mxCell id="vXrQV9W24_iiTXsCYrPu-122" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-121" vertex="1">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-78" value="&lt;span style=&quot;text-align: center; text-wrap: nowrap;&quot;&gt;storage_accessiories_id&lt;/span&gt;" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-76"> <mxCell id="vXrQV9W24_iiTXsCYrPu-123" value="&lt;span style=&quot;text-align: center; text-wrap: nowrap;&quot;&gt;last_name&lt;/span&gt;" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-121" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry"> <mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-79" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-66"> <mxCell id="vXrQV9W24_iiTXsCYrPu-124" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="vXrQV9W24_iiTXsCYrPu-114" vertex="1">
<mxGeometry y="120" width="180" height="30" as="geometry" /> <mxGeometry y="120" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-80" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-79"> <mxCell id="vXrQV9W24_iiTXsCYrPu-125" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-124" vertex="1">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-81" value="step_id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-79"> <mxCell id="vXrQV9W24_iiTXsCYrPu-126" value="&lt;span style=&quot;text-align: center; text-wrap: nowrap;&quot;&gt;login&lt;/span&gt;" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-124" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry"> <mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-82" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="vXrQV9W24_iiTXsCYrPu-46" target="vXrQV9W24_iiTXsCYrPu-76"> <mxCell id="vXrQV9W24_iiTXsCYrPu-127" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="vXrQV9W24_iiTXsCYrPu-114" vertex="1">
<mxGeometry y="150" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-128" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-127" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-129" value="&lt;span style=&quot;text-align: center; text-wrap: nowrap;&quot;&gt;password&lt;/span&gt;" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-127" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-130" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="vXrQV9W24_iiTXsCYrPu-114" vertex="1">
<mxGeometry y="180" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-131" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-130" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-132" value="&lt;span style=&quot;text-align: center; text-wrap: nowrap;&quot;&gt;role_id&lt;/span&gt;" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-130" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-133" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="vXrQV9W24_iiTXsCYrPu-115" target="vXrQV9W24_iiTXsCYrPu-107" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-134" value="roles" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="1" vertex="1">
<mxGeometry x="1720" y="940" width="180" height="90" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-135" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="vXrQV9W24_iiTXsCYrPu-134" vertex="1">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-136" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-135" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-137" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-135" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-138" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="vXrQV9W24_iiTXsCYrPu-134" vertex="1">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-139" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-138" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-140" value="name" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-138" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-153" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="vXrQV9W24_iiTXsCYrPu-135" target="vXrQV9W24_iiTXsCYrPu-130" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-154" value="statuses" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="1" vertex="1">
<mxGeometry x="1480" y="750" width="180" height="90" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-155" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="vXrQV9W24_iiTXsCYrPu-154" vertex="1">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-156" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-155" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-157" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-155" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-158" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="vXrQV9W24_iiTXsCYrPu-154" vertex="1">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-159" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-158" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-160" value="name" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="vXrQV9W24_iiTXsCYrPu-158" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="MM7JYfGdxSZRdL4fy3-k-1" target="vXrQV9W24_iiTXsCYrPu-30">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-1" value="&lt;span style=&quot;text-align: left; text-wrap: wrap;&quot;&gt;federal_district&lt;/span&gt;" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1">
<mxGeometry x="1600" y="557" width="180" height="90" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-2" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-1">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-3" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-2">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-4" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-2">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-5" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-1">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-6" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-5">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-7" value="name" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-5">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="vXrQV9W24_iiTXsCYrPu-155" target="MM7JYfGdxSZRdL4fy3-k-16">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-26" value="delivery_orders" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1">
<mxGeometry x="810" y="790" width="180" height="210" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-27" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-26">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-28" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-27">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-29" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-27">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-30" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-26">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-31" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-30">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-32" value="order_datetime" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-30">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-33" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-26">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-34" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-33">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-35" value="count_robots" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-33">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-62" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-26">
<mxGeometry y="120" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-63" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-62">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-64" value="deadline" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-62">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-36" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-26">
<mxGeometry y="150" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-37" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-36">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-38" value="truck_id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-36">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-39" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-26">
<mxGeometry y="180" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-40" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-39">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-41" value="total_order_id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-39">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-45" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="vXrQV9W24_iiTXsCYrPu-101" target="MM7JYfGdxSZRdL4fy3-k-39">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-46" value="trucks" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1">
<mxGeometry x="560" y="960" width="180" height="150" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-47" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-46">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-48" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-47">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-49" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-47">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-50" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-46">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-51" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-50">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-52" value="name" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-50">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-53" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-46">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-54" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-53">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-55" value="capacity" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-53">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-56" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-46">
<mxGeometry y="120" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-57" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-56">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-58" value="volume" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-56">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-65" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="MM7JYfGdxSZRdL4fy3-k-47" target="MM7JYfGdxSZRdL4fy3-k-36">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-66" value="delivery_accessories" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1">
<mxGeometry x="800" y="570" width="180" height="180" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-67" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-66">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-68" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-67">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-69" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-67">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-70" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-66">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-71" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-70">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-72" value="queue" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-70">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-73" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-66">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-74" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-73">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-75" value="count" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-73">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-79" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-66">
<mxGeometry y="120" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-80" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-79">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-81" value="&lt;span style=&quot;text-align: center; text-wrap: nowrap;&quot;&gt;accessiory_id&lt;/span&gt;" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-79">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-82" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-66">
<mxGeometry y="150" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-83" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-82">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-84" value="&lt;span style=&quot;text-align: center; text-wrap: nowrap;&quot;&gt;delivery_order&lt;/span&gt;_id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="MM7JYfGdxSZRdL4fy3-k-82">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="MM7JYfGdxSZRdL4fy3-k-85" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="MM7JYfGdxSZRdL4fy3-k-27" target="MM7JYfGdxSZRdL4fy3-k-82">
<mxGeometry relative="1" as="geometry"> <mxGeometry relative="1" as="geometry">
<Array as="points"> <Array as="points">
<mxPoint x="1053" y="602" /> <mxPoint x="750" y="835" />
<mxPoint x="1053" y="497" /> <mxPoint x="750" y="735" />
<mxPoint x="463" y="497" />
<mxPoint x="463" y="932" />
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-83" value="steps" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1"> <mxCell id="MM7JYfGdxSZRdL4fy3-k-86" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="vXrQV9W24_iiTXsCYrPu-46" target="MM7JYfGdxSZRdL4fy3-k-79">
<mxGeometry x="883" y="887" width="180" height="150" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-84" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-83">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-85" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-84">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-86" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-84">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-87" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-83">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-88" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-87">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-89" value="start_deadline" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-87">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-90" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-83">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-91" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-90">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-92" value="&lt;span style=&quot;text-align: center; text-wrap: nowrap;&quot;&gt;finish_deadline&lt;/span&gt;" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-90">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-93" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-83">
<mxGeometry y="120" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-94" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-93">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-95" value="order_id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-93">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-96" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="vXrQV9W24_iiTXsCYrPu-84" target="vXrQV9W24_iiTXsCYrPu-79">
<mxGeometry relative="1" as="geometry" /> <mxGeometry relative="1" as="geometry" />
</mxCell> </mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-100" value="orders" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1">
<mxGeometry x="1173" y="842" width="180" height="120" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-101" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-100">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-102" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-101">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-103" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-101">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-104" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-100">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-105" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-104">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-106" value="order_datetime" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-104">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-107" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-100">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-108" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-107">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-109" value="&lt;span style=&quot;text-align: center; text-wrap: nowrap;&quot;&gt;user_id&lt;/span&gt;" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-107">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-113" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="vXrQV9W24_iiTXsCYrPu-101" target="vXrQV9W24_iiTXsCYrPu-93">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-114" value="users" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1">
<mxGeometry x="1433" y="947" width="180" height="210" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-115" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-114">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-116" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-115">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-117" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-115">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-118" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-114">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-119" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-118">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-120" value="first_name" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-118">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-121" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-114">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-122" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-121">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-123" value="&lt;span style=&quot;text-align: center; text-wrap: nowrap;&quot;&gt;last_name&lt;/span&gt;" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-121">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-124" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-114">
<mxGeometry y="120" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-125" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-124">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-126" value="&lt;span style=&quot;text-align: center; text-wrap: nowrap;&quot;&gt;login&lt;/span&gt;" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-124">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-127" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-114">
<mxGeometry y="150" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-128" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-127">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-129" value="&lt;span style=&quot;text-align: center; text-wrap: nowrap;&quot;&gt;password&lt;/span&gt;" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-127">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-130" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-114">
<mxGeometry y="180" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-131" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-130">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-132" value="&lt;span style=&quot;text-align: center; text-wrap: nowrap;&quot;&gt;role_id&lt;/span&gt;" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-130">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-133" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="vXrQV9W24_iiTXsCYrPu-115" target="vXrQV9W24_iiTXsCYrPu-107">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-134" value="roles" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1">
<mxGeometry x="1693" y="857" width="180" height="90" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-135" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-134">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-136" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-135">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-137" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-135">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-138" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-134">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-139" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-138">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-140" value="name" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-138">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-153" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="vXrQV9W24_iiTXsCYrPu-135" target="vXrQV9W24_iiTXsCYrPu-130">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-154" value="statuses" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1">
<mxGeometry x="1480" y="750" width="180" height="90" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-155" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-154">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-156" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-155">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-157" value="id" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-155">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-158" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-154">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-159" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-158">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="vXrQV9W24_iiTXsCYrPu-160" value="name" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="vXrQV9W24_iiTXsCYrPu-158">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
</root> </root>
</mxGraphModel> </mxGraphModel>
</diagram> </diagram>

View File

@ -1,12 +0,0 @@
from typing import Optional
from pydantic import BaseModel
class DeliveryEntity(BaseModel):
id: Optional[int] = None
count: int
storage_accessories_id: int
step_id: int
class Config:
from_attributes = True

View File

@ -1,14 +0,0 @@
from typing import Optional
from datetime import datetime
from pydantic import BaseModel
class StepEntity(BaseModel):
id: Optional[int] = None
start_deadline: datetime
finish_deadline: datetime
order_id: Optional[int] = None
status_id: Optional[int] = None
class Config:
from_attributes = True

View File

@ -1,13 +0,0 @@
from typing import Optional, List
from pydantic import BaseModel
class StorageEntity(BaseModel):
id: Optional[int] = None
name: str
x_coordinate: float
y_coordinate: float
storage_accessories: Optional[List[int]] = []
class Config:
from_attributes = True

View File

@ -1,14 +0,0 @@
from typing import Optional
from datetime import datetime
from pydantic import BaseModel
class StorageAccessoryEntity(BaseModel):
id: Optional[int] = None
current_count: int
change_datetime: Optional[datetime] = None
storage_id: Optional[int] = None
accessory_id: Optional[int] = None
class Config:
from_attributes = True

View File

@ -1,69 +0,0 @@
from typing import List, Optional
from sqlalchemy.orm import Session
from app.core.entities.delivery import DeliveryEntity
from app.infrastructure.database.models.deliveries import Delivery
from app.infrastructure.database.repository.delivery_repository import DeliveryRepository
class DeliveryService:
def __init__(self, db: Session):
self.repository = DeliveryRepository(db)
def get_all_deliveries(self) -> List[DeliveryEntity]:
deliveries = self.repository.get_all()
return [
DeliveryEntity(
id=d.id,
count=d.count,
storage_accessories_id=d.storage_accessories_id,
step_id=d.step_id,
)
for d in deliveries
]
def get_delivery_by_id(self, delivery_id: int) -> Optional[DeliveryEntity]:
delivery = self.repository.get_by_id(delivery_id)
if delivery:
return DeliveryEntity(
id=delivery.id,
count=delivery.count,
storage_accessories_id=delivery.storage_accessories_id,
step_id=delivery.step_id,
)
return None
def create_delivery(self, entity: DeliveryEntity) -> DeliveryEntity:
delivery_model = Delivery(
count=entity.count,
storage_accessories_id=entity.storage_accessories_id,
step_id=entity.step_id,
)
created_delivery = self.repository.create(delivery_model)
return DeliveryEntity(
id=created_delivery.id,
count=created_delivery.count,
storage_accessories_id=created_delivery.storage_accessories_id,
step_id=created_delivery.step_id,
)
def update_delivery(self, delivery_id: int, entity: DeliveryEntity) -> Optional[DeliveryEntity]:
delivery_model = self.repository.get_by_id(delivery_id)
if delivery_model:
delivery_model.count = entity.count
delivery_model.storage_accessories_id = entity.storage_accessories_id
delivery_model.step_id = entity.step_id
self.repository.update(delivery_model)
return DeliveryEntity(
id=delivery_model.id,
count=delivery_model.count,
storage_accessories_id=delivery_model.storage_accessories_id,
step_id=delivery_model.step_id,
)
return None
def delete_delivery(self, delivery_id: int) -> bool:
return self.repository.delete(delivery_id) is not None

View File

@ -3,7 +3,7 @@ from typing import List, Optional
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from app.core.entities.order import OrderEntity from app.core.entities.order import OrderEntity
from app.infrastructure.database.models.orders import Order from app.infrastructure.database.models.total_orders import TotalOrder
from app.infrastructure.database.repository.order_repository import OrderRepository from app.infrastructure.database.repository.order_repository import OrderRepository
@ -36,7 +36,7 @@ class OrderService:
return None return None
def create_order(self, entity: OrderEntity) -> OrderEntity: def create_order(self, entity: OrderEntity) -> OrderEntity:
order_model = Order( order_model = TotalOrder(
order_datetime=entity.order_datetime, order_datetime=entity.order_datetime,
user_id=entity.user_id, user_id=entity.user_id,
status_id=entity.status_id, status_id=entity.status_id,

View File

@ -1,74 +0,0 @@
from typing import List, Optional
from sqlalchemy.orm import Session
from app.core.entities.step import StepEntity
from app.infrastructure.database.models.steps import Step
from app.infrastructure.database.repository.step_repository import StepRepository
class StepService:
def __init__(self, db: Session):
self.repository = StepRepository(db)
def get_all_steps(self) -> List[StepEntity]:
steps = self.repository.get_all()
return [
StepEntity(
id=s.id,
start_deadline=s.start_deadline,
finish_deadline=s.finish_deadline,
order_id=s.order_id,
status_id=s.status_id,
) for s in steps
]
def get_step_by_id(self, step_id: int) -> Optional[StepEntity]:
step = self.repository.get_by_id(step_id)
if step:
return StepEntity(
id=step.id,
start_deadline=step.start_deadline,
finish_deadline=step.finish_deadline,
order_id=step.order_id,
status_id=step.status_id,
)
return None
def create_step(self, entity: StepEntity) -> StepEntity:
step_model = Step(
start_deadline=entity.start_deadline,
finish_deadline=entity.finish_deadline,
order_id=entity.order_id,
status_id=entity.status_id,
)
created_step = self.repository.create(step_model)
return StepEntity(
id=created_step.id,
start_deadline=created_step.start_deadline,
finish_deadline=created_step.finish_deadline,
order_id=created_step.order_id,
status_id=created_step.status_id,
)
def update_step(self, step_id: int, entity: StepEntity) -> Optional[StepEntity]:
step_model = self.repository.get_by_id(step_id)
if step_model:
step_model.start_deadline = entity.start_deadline
step_model.finish_deadline = entity.finish_deadline
step_model.order_id = entity.order_id
step_model.status_id = entity.status_id
self.repository.update(step_model)
return StepEntity(
id=step_model.id,
start_deadline=step_model.start_deadline,
finish_deadline=step_model.finish_deadline,
order_id=step_model.order_id,
status_id=step_model.status_id,
)
return None
def delete_step(self, step_id: int) -> bool:
return self.repository.delete(step_id) is not None

View File

@ -1,75 +0,0 @@
from typing import List, Optional
from sqlalchemy.orm import Session
from app.core.entities.storage_accessory import StorageAccessoryEntity
from app.infrastructure.database.models.storage_accessories import StorageAccessories
from app.infrastructure.database.repository.storage_accessory_repository import StorageAccessoryRepository
class StorageAccessoryService:
def __init__(self, db: Session):
self.repository = StorageAccessoryRepository(db)
def get_all_storage_accessories(self) -> List[StorageAccessoryEntity]:
storage_accessories = self.repository.get_all()
return [
StorageAccessoryEntity(
id=sa.id,
current_count=sa.current_count,
change_datetime=sa.change_datetime,
storage_id=sa.storage_id,
accessory_id=sa.accessory_id,
) for sa in storage_accessories
]
def get_storage_accessory_by_id(self, storage_accessories_id: int) -> Optional[StorageAccessoryEntity]:
storage_accessory = self.repository.get_by_id(storage_accessories_id)
if storage_accessory:
return StorageAccessoryEntity(
id=storage_accessory.id,
current_count=storage_accessory.current_count,
change_datetime=storage_accessory.change_datetime,
storage_id=storage_accessory.storage_id,
accessory_id=storage_accessory.accessory_id,
)
return None
def create_storage_accessory(self, entity: StorageAccessoryEntity) -> StorageAccessoryEntity:
storage_accessory_model = StorageAccessories(
current_count=entity.current_count,
change_datetime=entity.change_datetime,
storage_id=entity.storage_id,
accessory_id=entity.accessory_id,
)
created_storage_accessory = self.repository.create(storage_accessory_model)
return StorageAccessoryEntity(
id=created_storage_accessory.id,
current_count=created_storage_accessory.current_count,
change_datetime=created_storage_accessory.change_datetime,
storage_id=created_storage_accessory.storage_id,
accessory_id=created_storage_accessory.accessory_id,
)
def update_storage_accessory(self, storage_accessories_id: int, entity: StorageAccessoryEntity) -> Optional[
StorageAccessoryEntity]:
storage_accessory_model = self.repository.get_by_id(storage_accessories_id)
if storage_accessory_model:
storage_accessory_model.current_count = entity.current_count
storage_accessory_model.change_datetime = entity.change_datetime
storage_accessory_model.storage_id = entity.storage_id
storage_accessory_model.accessory_id = entity.accessory_id
self.repository.update(storage_accessory_model)
return StorageAccessoryEntity(
id=storage_accessory_model.id,
current_count=storage_accessory_model.current_count,
change_datetime=storage_accessory_model.change_datetime,
storage_id=storage_accessory_model.storage_id,
accessory_id=storage_accessory_model.accessory_id,
)
return None
def delete_storage_accessory(self, storage_accessories_id: int) -> bool:
return self.repository.delete(storage_accessories_id) is not None

View File

@ -1,74 +0,0 @@
from typing import List, Optional
from sqlalchemy.orm import Session
from app.core.entities.storage import StorageEntity
from app.infrastructure.database.models.storages import Storage
from app.infrastructure.database.repository.storage_repository import StorageRepository
class StorageService:
def __init__(self, db: Session):
self.repository = StorageRepository(db)
def get_all_storages(self) -> List[StorageEntity]:
storages = self.repository.get_all()
return [
StorageEntity(
id=s.id,
name=s.name,
x_coordinate=s.x_coordinate,
y_coordinate=s.y_coordinate,
storage_accessories=s.storage_accessories,
) for s in storages
]
def get_storage_by_id(self, storage_id: int) -> Optional[StorageEntity]:
storage = self.repository.get_by_id(storage_id)
if storage:
return StorageEntity(
id=storage.id,
name=storage.name,
x_coordinate=storage.x_coordinate,
y_coordinate=storage.y_coordinate,
storage_accessories=storage.storage_accessories,
)
return None
def create_storage(self, entity: StorageEntity) -> StorageEntity:
storage_model = Storage(
name=entity.name,
x_coordinate=entity.x_coordinate,
y_coordinate=entity.y_coordinate,
storage_accessories=entity.storage_accessories
)
created_storage = self.repository.create(storage_model)
return StorageEntity(
id=created_storage.id,
name=created_storage.name,
x_coordinate=created_storage.x_coordinate,
y_coordinate=created_storage.y_coordinate,
storage_accessories=created_storage.storage_accessories,
)
def update_storage(self, storage_id: int, entity: StorageEntity) -> Optional[StorageEntity]:
storage_model = self.repository.get_by_id(storage_id)
if storage_model:
storage_model.name = entity.name
storage_model.x_coordinate = entity.x_coordinate
storage_model.y_coordinate = entity.y_coordinate
storage_model.storage_accessories = entity.storage_accessories
self.repository.update(storage_model)
return StorageEntity(
id=storage_model.id,
name=storage_model.name,
x_coordinate=storage_model.x_coordinate,
y_coordinate=storage_model.y_coordinate,
storage_accessories=storage_model.storage_accessories,
)
return None
def delete_storage(self, storage_id: int) -> bool:
return self.repository.delete(storage_id) is not None

View File

@ -14,14 +14,15 @@ SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
def init_db(): def init_db():
import app.infrastructure.database.models.accessory
import app.infrastructure.database.models.deliveries
import app.infrastructure.database.models.orders
import app.infrastructure.database.models.roles import app.infrastructure.database.models.roles
import app.infrastructure.database.models.statuses
import app.infrastructure.database.models.steps
import app.infrastructure.database.models.storage_accessories
import app.infrastructure.database.models.storages
import app.infrastructure.database.models.users import app.infrastructure.database.models.users
import app.infrastructure.database.models.statuses
import app.infrastructure.database.models.federal_districts
import app.infrastructure.database.models.trucks
import app.infrastructure.database.models.cities
import app.infrastructure.database.models.accessory
import app.infrastructure.database.models.total_orders
import app.infrastructure.database.models.delivery_orders
import app.infrastructure.database.models.dilevery_accessiories
Base.metadata.create_all(bind=engine) Base.metadata.create_all(bind=engine)

View File

@ -1,4 +1,4 @@
from sqlalchemy import Column, Integer, VARCHAR, Float from sqlalchemy import Column, Integer, VARCHAR, Float, ForeignKey
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from app.infrastructure.database.models import Base from app.infrastructure.database.models import Base
@ -9,9 +9,13 @@ class Accessory(Base):
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(VARCHAR(100), nullable=False) name = Column(VARCHAR(100), nullable=False)
width = Column(Float) volume = Column(Float)
height = Column(Float)
length = Column(Float)
weight = Column(Float) weight = Column(Float)
period = Column(Integer)
city_id = Column(ForeignKey('cities.id'))
city = relationship('City', back_populates='accessories')
delivery_accessories = relationship('DeliveryAccessory', back_populates='accessory')
storage_accessories = relationship('StorageAccessories', back_populates='accessory')

View File

@ -0,0 +1,17 @@
from sqlalchemy import Column, Integer, VARCHAR, Float, ForeignKey
from sqlalchemy.orm import relationship
from app.infrastructure.database.models import Base
class City(Base):
__tablename__ = 'cities'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(VARCHAR(100), nullable=False)
federal_district_id = Column(Integer, ForeignKey('federal_districts.id'))
federal_district = relationship('FederalDistrict', back_populates='cities')
accessories = relationship('City', back_populates='Accessory')

View File

@ -1,17 +0,0 @@
from sqlalchemy import Column, Integer, ForeignKey
from sqlalchemy.orm import relationship
from app.infrastructure.database.models import Base
class Delivery(Base):
__tablename__ = 'deliveries'
id = Column(Integer, primary_key=True, autoincrement=True)
count = Column(Integer, nullable=False)
storage_accessories_id = Column(Integer, ForeignKey('storage_accessories.id'))
step_id = Column(Integer, ForeignKey('steps.id'))
storage_accessory = relationship('StorageAccessories', back_populates='deliveries')
step = relationship('Step', back_populates='deliveries')

View File

@ -0,0 +1,21 @@
from sqlalchemy import Column, Integer, VARCHAR, Float, DateTime, ForeignKey
from sqlalchemy.orm import relationship
from app.infrastructure.database.models import Base
class DeliveryOrder(Base):
__tablename__ = 'delivery_orders'
id = Column(Integer, primary_key=True, autoincrement=True)
order_datetime = Column(DateTime, nullable=False)
count_robots = Column(Integer, nullable=False)
deadline = Column(DateTime, nullable=False)
truck_id = Column(Integer, ForeignKey('trucks.id'))
total_order_id = Column(Integer, ForeignKey('total_orders.id'))
truck = relationship('Truck', back_populates='delivery_orders')
total_order = relationship('TotalOrder', back_populates='delivery_orders')
delivery_accessories = relationship('DeliveryAccessory', back_populates='delivery_order')

View File

@ -0,0 +1,18 @@
from sqlalchemy import Column, Integer, VARCHAR, Float, DateTime, ForeignKey
from sqlalchemy.orm import relationship
from app.infrastructure.database.models import Base
class DeliveryAccessory(Base):
__tablename__ = 'delivery_accessories'
id = Column(Integer, primary_key=True, autoincrement=True)
queue = Column(Integer, nullable=False)
count = Column(Integer, nullable=False)
accessory_id = Column(Integer, ForeignKey('accessories.id'))
delivery_order_id = Column(Integer, ForeignKey('delivery_orders.id'))
accessory = relationship('Accessory', back_populates='delivery_accessories')
delivery_order = relationship('DeliveryOrder', back_populates='delivery_accessories')

View File

@ -0,0 +1,13 @@
from sqlalchemy import Column, Integer, VARCHAR
from sqlalchemy.orm import relationship
from app.infrastructure.database.models import Base
class FederalDistrict(Base):
__tablename__ = 'federal_districts'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(VARCHAR(100), nullable=False)
cities = relationship('City', back_populates='federal_district')

View File

@ -1,20 +0,0 @@
from sqlalchemy import Column, Integer, DateTime, ForeignKey
from sqlalchemy.orm import relationship
from app.infrastructure.database.models import Base
class Step(Base):
__tablename__ = 'steps'
id = Column(Integer, primary_key=True, autoincrement=True)
start_deadline = Column(DateTime, nullable=False)
finish_deadline = Column(DateTime, nullable=False)
order_id = Column(Integer, ForeignKey('orders.id'))
status_id = Column(Integer, ForeignKey('statuses.id'))
order = relationship('Order', back_populates='steps')
status = relationship('Status', back_populates='steps')
deliveries = relationship('Delivery', back_populates='step')

View File

@ -1,21 +0,0 @@
from sqlalchemy import Column, Integer, DateTime, ForeignKey
from sqlalchemy.orm import relationship
from app.infrastructure.database.models import Base
class StorageAccessories(Base):
__tablename__ = 'storage_accessories'
id = Column(Integer, primary_key=True, autoincrement=True)
current_count = Column(Integer, nullable=False)
change_datetime = Column(DateTime)
storage_id = Column(Integer, ForeignKey('storages.id'))
accessory_id = Column(Integer, ForeignKey('accessories.id'))
storage = relationship('Storage', back_populates='storage_accessories')
accessory = relationship('Accessory', back_populates='storage_accessories')
deliveries = relationship('Delivery', back_populates='storage_accessory')

View File

@ -4,11 +4,13 @@ from sqlalchemy.orm import relationship
from app.infrastructure.database.models import Base from app.infrastructure.database.models import Base
class Order(Base): class TotalOrder(Base):
__tablename__ = 'orders' __tablename__ = 'total_orders'
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, primary_key=True, autoincrement=True)
order_datetime = Column(DateTime, nullable=False) order_datetime = Column(DateTime, nullable=False)
count_robots = Column(Integer, nullable=False)
deadline = Column(DateTime)
user_id = Column(Integer, ForeignKey('users.id')) user_id = Column(Integer, ForeignKey('users.id'))
status_id = Column(Integer, ForeignKey('statuses.id')) status_id = Column(Integer, ForeignKey('statuses.id'))
@ -16,4 +18,4 @@ class Order(Base):
user = relationship('User', back_populates='orders') user = relationship('User', back_populates='orders')
status = relationship('Status', back_populates='orders') status = relationship('Status', back_populates='orders')
steps = relationship('Step', back_populates='order') delivery_orders = relationship('DeliveryOrder', back_populates='total_orders')

View File

@ -4,12 +4,13 @@ from sqlalchemy.orm import relationship
from app.infrastructure.database.models import Base from app.infrastructure.database.models import Base
class Storage(Base): class Truck(Base):
__tablename__ = 'storages' __tablename__ = 'trucks'
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(VARCHAR(100), nullable=False) name = Column(VARCHAR(100), nullable=False)
x_coordinate = Column(Float, nullable=False) capacity = Column(Float, nullable=False)
y_coordinate = Column(Float, nullable=False) volume = Column(Float, nullable=False)
delivery_orders = relationship('DeliveryOrder', back_populates='truck')
storage_accessories = relationship('StorageAccessories', back_populates='storage')

View File

@ -1,31 +0,0 @@
from sqlalchemy.orm import Session
from app.infrastructure.database.models.deliveries import Delivery
class DeliveryRepository:
def __init__(self, db: Session):
self.db = db
def get_all(self):
return self.db.query(Delivery).all()
def get_by_id(self, delivery_id: int):
return self.db.query(Delivery).filter(Delivery.id == delivery_id).first()
def create(self, delivery: Delivery):
self.db.add(delivery)
self.db.commit()
self.db.refresh(delivery)
return delivery
def update(self, delivery: Delivery):
self.db.commit()
return delivery
def delete(self, delivery_id: int):
delivery = self.db.query(Delivery).filter(Delivery.id == delivery_id).first()
if delivery:
self.db.delete(delivery)
self.db.commit()
return delivery
return None

View File

@ -1,28 +1,28 @@
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from app.infrastructure.database.models.orders import Order from app.infrastructure.database.models.total_orders import TotalOrder
class OrderRepository: class OrderRepository:
def __init__(self, db: Session): def __init__(self, db: Session):
self.db = db self.db = db
def get_all(self): def get_all(self):
return self.db.query(Order).all() return self.db.query(TotalOrder).all()
def get_by_id(self, order_id: int): def get_by_id(self, order_id: int):
return self.db.query(Order).filter(Order.id == order_id).first() return self.db.query(TotalOrder).filter(TotalOrder.id == order_id).first()
def create(self, order: Order): def create(self, order: TotalOrder):
self.db.add(order) self.db.add(order)
self.db.commit() self.db.commit()
self.db.refresh(order) self.db.refresh(order)
return order return order
def update(self, order: Order): def update(self, order: TotalOrder):
self.db.commit() self.db.commit()
return order return order
def delete(self, order_id: int): def delete(self, order_id: int):
order = self.db.query(Order).filter(Order.id == order_id).first() order = self.db.query(TotalOrder).filter(TotalOrder.id == order_id).first()
if order: if order:
self.db.delete(order) self.db.delete(order)
self.db.commit() self.db.commit()

View File

@ -1,30 +0,0 @@
from sqlalchemy.orm import Session
from app.infrastructure.database.models.steps import Step
class StepRepository:
def __init__(self, db: Session):
self.db = db
def get_all(self):
return self.db.query(Step).all()
def get_by_id(self, step_id: int):
return self.db.query(Step).filter(Step.id == step_id).first()
def create(self, step: Step):
self.db.add(step)
self.db.commit()
self.db.refresh(step)
return step
def update(self, step: Step):
self.db.commit()
return step
def delete(self, step_id: int):
step = self.db.query(Step).filter(Step.id == step_id).first()
if step:
self.db.delete(step)
self.db.commit()
return step
return None

View File

@ -1,32 +0,0 @@
from sqlalchemy.orm import Session
from app.infrastructure.database.models.storage_accessories import StorageAccessories
class StorageAccessoryRepository:
def __init__(self, db: Session):
self.db = db
def get_all(self):
return self.db.query(StorageAccessories).all()
def get_by_id(self, storage_accessories_id: int):
return self.db.query(StorageAccessories).filter(StorageAccessories.id == storage_accessories_id).first()
def create(self, storage_accessories: StorageAccessories):
self.db.add(storage_accessories)
self.db.commit()
self.db.refresh(storage_accessories)
return storage_accessories
def update(self, storage_accessories: StorageAccessories):
self.db.commit()
return storage_accessories
def delete(self, storage_accessories_id: int):
storage_accessories = self.db.query(StorageAccessories).filter(
StorageAccessories.id == storage_accessories_id).first()
if storage_accessories:
self.db.delete(storage_accessories)
self.db.commit()
return storage_accessories
return None

View File

@ -1,31 +0,0 @@
from sqlalchemy.orm import Session
from app.infrastructure.database.models.storages import Storage
class StorageRepository:
def __init__(self, db: Session):
self.db = db
def get_all(self):
return self.db.query(Storage).all()
def get_by_id(self, storage_id: int):
return self.db.query(Storage).filter(Storage.id == storage_id).first()
def create(self, storage: Storage):
self.db.add(storage)
self.db.commit()
self.db.refresh(storage)
return storage
def update(self, storage: Storage):
self.db.commit()
return storage
def delete(self, storage_id: int):
storage = self.db.query(Storage).filter(Storage.id == storage_id).first()
if storage:
self.db.delete(storage)
self.db.commit()
return storage
return None

View File

@ -1,52 +0,0 @@
from typing import List
from fastapi import APIRouter, HTTPException, Depends
from sqlalchemy.orm import Session
from app.infrastructure.database.dependencies import get_db
from app.core.entities.delivery import DeliveryEntity
from app.core.usecases.delivery_service import DeliveryService
router = APIRouter()
@router.get("/deliveries", response_model=List[DeliveryEntity])
def read_deliveries(db: Session = Depends(get_db)):
service = DeliveryService(db)
return service.get_all_deliveries()
@router.get("/deliveries/{delivery_id}", response_model=DeliveryEntity)
def read_delivery(delivery_id: int, db: Session = Depends(get_db)):
service = DeliveryService(db)
delivery = service.get_delivery_by_id(delivery_id)
if delivery is None:
raise HTTPException(status_code=404, detail="Delivery not found")
return delivery
@router.post("/deliveries", response_model=DeliveryEntity)
def create_delivery(delivery: DeliveryEntity, db: Session = Depends(get_db)):
service = DeliveryService(db)
return service.create_delivery(delivery)
@router.put("/deliveries/{delivery_id}", response_model=DeliveryEntity)
def update_delivery(delivery_id: int, delivery: DeliveryEntity, db: Session = Depends(get_db)):
service = DeliveryService(db)
updated_delivery = service.update_delivery(delivery_id, delivery)
if updated_delivery is None:
raise HTTPException(status_code=404, detail="Delivery not found")
return updated_delivery
@router.delete("/deliveries/{delivery_id}", response_model=bool)
def delete_delivery(delivery_id: int, db: Session = Depends(get_db)):
service = DeliveryService(db)
success = service.delete_delivery(delivery_id)
if not success:
raise HTTPException(status_code=404, detail="Delivery not found")
return success

View File

@ -1,52 +0,0 @@
from typing import List
from fastapi import APIRouter, HTTPException, Depends
from sqlalchemy.orm import Session
from app.infrastructure.database.dependencies import get_db
from app.core.entities.step import StepEntity
from app.core.usecases.step_service import StepService
router = APIRouter()
@router.get("/steps", response_model=List[StepEntity])
def read_steps(db: Session = Depends(get_db)):
service = StepService(db)
return service.get_all_steps()
@router.get("/steps/{step_id}", response_model=StepEntity)
def read_step(step_id: int, db: Session = Depends(get_db)):
service = StepService(db)
step = service.get_step_by_id(step_id)
if step is None:
raise HTTPException(status_code=404, detail="Step not found")
return step
@router.post("/steps", response_model=StepEntity)
def create_step(step: StepEntity, db: Session = Depends(get_db)):
service = StepService(db)
return service.create_step(step)
@router.put("/steps/{step_id}", response_model=StepEntity)
def update_step(step_id: int, step: StepEntity, db: Session = Depends(get_db)):
service = StepService(db)
updated_step = service.update_step(step_id, step)
if updated_step is None:
raise HTTPException(status_code=404, detail="Step not found")
return updated_step
@router.delete("/steps/{step_id}", response_model=bool)
def delete_step(step_id: int, db: Session = Depends(get_db)):
service = StepService(db)
success = service.delete_step(step_id)
if not success:
raise HTTPException(status_code=404, detail="Step not found")
return success

View File

@ -1,53 +0,0 @@
from typing import List
from fastapi import APIRouter, HTTPException, Depends
from sqlalchemy.orm import Session
from app.infrastructure.database.dependencies import get_db
from app.core.entities.storage_accessory import StorageAccessoryEntity
from app.core.usecases.storage_accessory_service import StorageAccessoryService
router = APIRouter()
@router.get("/storage-accessories", response_model=List[StorageAccessoryEntity])
def read_storage_accessories(db: Session = Depends(get_db)):
service = StorageAccessoryService(db)
return service.get_all_storage_accessories()
@router.get("/storage-accessories/{storage_accessories_id}", response_model=StorageAccessoryEntity)
def read_storage_accessory(storage_accessories_id: int, db: Session = Depends(get_db)):
service = StorageAccessoryService(db)
storage_accessory = service.get_storage_accessory_by_id(storage_accessories_id)
if storage_accessory is None:
raise HTTPException(status_code=404, detail="Storage Accessory not found")
return storage_accessory
@router.post("/storage-accessories", response_model=StorageAccessoryEntity)
def create_storage_accessory(storage_accessory: StorageAccessoryEntity, db: Session = Depends(get_db)):
service = StorageAccessoryService(db)
return service.create_storage_accessory(storage_accessory)
@router.put("/storage-accessories/{storage_accessories_id}", response_model=StorageAccessoryEntity)
def update_storage_accessory(storage_accessories_id: int, storage_accessory: StorageAccessoryEntity,
db: Session = Depends(get_db)):
service = StorageAccessoryService(db)
updated_storage_accessory = service.update_storage_accessory(storage_accessories_id, storage_accessory)
if updated_storage_accessory is None:
raise HTTPException(status_code=404, detail="Storage Accessory not found")
return updated_storage_accessory
@router.delete("/storage-accessories/{storage_accessories_id}", response_model=bool)
def delete_storage_accessory(storage_accessories_id: int, db: Session = Depends(get_db)):
service = StorageAccessoryService(db)
success = service.delete_storage_accessory(storage_accessories_id)
if not success:
raise HTTPException(status_code=404, detail="Storage Accessory not found")
return success

View File

@ -1,52 +0,0 @@
from typing import List
from fastapi import APIRouter, HTTPException, Depends
from sqlalchemy.orm import Session
from app.infrastructure.database.dependencies import get_db
from app.core.entities.storage import StorageEntity
from app.core.usecases.storage_service import StorageService
router = APIRouter()
@router.get("/storages", response_model=List[StorageEntity])
def read_storages(db: Session = Depends(get_db)):
service = StorageService(db)
return service.get_all_storages()
@router.get("/storages/{storage_id}", response_model=StorageEntity)
def read_storage(storage_id: int, db: Session = Depends(get_db)):
service = StorageService(db)
storage = service.get_storage_by_id(storage_id)
if storage is None:
raise HTTPException(status_code=404, detail="Storage not found")
return storage
@router.post("/storages", response_model=StorageEntity)
def create_storage(storage: StorageEntity, db: Session = Depends(get_db)):
service = StorageService(db)
return service.create_storage(storage)
@router.put("/storages/{storage_id}", response_model=StorageEntity)
def update_storage(storage_id: int, storage: StorageEntity, db: Session = Depends(get_db)):
service = StorageService(db)
updated_storage = service.update_storage(storage_id, storage)
if updated_storage is None:
raise HTTPException(status_code=404, detail="Storage not found")
return updated_storage
@router.delete("/storages/{storage_id}", response_model=bool)
def delete_storage(storage_id: int, db: Session = Depends(get_db)):
service = StorageService(db)
success = service.delete_storage(storage_id)
if not success:
raise HTTPException(status_code=404, detail="Storage not found")
return success

View File

@ -1,25 +1,21 @@
from fastapi import FastAPI from fastapi import FastAPI
from app.infrastructure.database.database import init_db from app.infrastructure.database.database import init_db
from app.infrastructure.fastapi.user_routes import router as user_router from app.infrastructure.fastapi.user_routes import router as user_router
from app.infrastructure.fastapi.storage_routes import router as storage_router
from app.infrastructure.fastapi.storage_accessory_routes import router as storage_accessory_router
from app.infrastructure.fastapi.step_routes import router as step_router
from app.infrastructure.fastapi.status_routes import router as status_router from app.infrastructure.fastapi.status_routes import router as status_router
from app.infrastructure.fastapi.role_routes import router as role_router from app.infrastructure.fastapi.role_routes import router as role_router
from app.infrastructure.fastapi.order_routes import router as order_router from app.infrastructure.fastapi.order_routes import router as order_router
from app.infrastructure.fastapi.delivery_routes import router as delivery_router
from app.infrastructure.fastapi.accessory_routes import router as accessory_router from app.infrastructure.fastapi.accessory_routes import router as accessory_router
app = FastAPI() app = FastAPI()
init_db() init_db()
app.include_router(user_router, prefix="/api/users", tags=["users"]) # app.include_router(user_router, prefix="/api/users", tags=["users"])
app.include_router(storage_router, prefix="/api/storages", tags=["storages"]) # app.include_router(storage_router, prefix="/api/storages", tags=["storages"])
app.include_router(storage_accessory_router, prefix="/api/storage_accessories", tags=["storage_accessories"]) # app.include_router(storage_accessory_router, prefix="/api/storage_accessories", tags=["storage_accessories"])
app.include_router(step_router, prefix="/api/steps", tags=["steps"]) # app.include_router(step_router, prefix="/api/steps", tags=["steps"])
app.include_router(status_router, prefix="/api/statuses", tags=["statuses"]) # app.include_router(status_router, prefix="/api/statuses", tags=["statuses"])
app.include_router(role_router, prefix="/api/roles", tags=["roles"]) # app.include_router(role_router, prefix="/api/roles", tags=["roles"])
app.include_router(order_router, prefix="/api/orders", tags=["orders"]) # app.include_router(order_router, prefix="/api/orders", tags=["orders"])
app.include_router(delivery_router, prefix="/api/deliveries", tags=["deliveries"]) # app.include_router(delivery_router, prefix="/api/deliveries", tags=["deliveries"])
app.include_router(accessory_router, prefix="/api/accessories", tags=["accessories"]) # app.include_router(accessory_router, prefix="/api/accessories", tags=["accessories"])