# jishenghua/jsherp architecture

> Architecture diagram of the GitHub repository jishenghua/jsherp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-01). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jishenghua/jsherp
- Repository: https://github.com/jishenghua/jsherp

## Overview

jshERP is a web-based ERP for small businesses, covering inventory, purchasing and sales, finance, production, reporting, product data, and administration. A user works through the Vue interface to manage a business record; the backend exposes controller endpoints and services that apply business rules and persist data through MyBatis. The sampled code supports the inventory, material, and bill-processing layers most directly. Other major product areas are retained based on the README, but their internal wiring was not sampled, so those links are shown as unverified.

Main entry points: [`jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadService.java`](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadService.java) (Bill processing), [`jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java`](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java) (Stock processing), [`jshERP-web/src/main.js`](https://github.com/jishenghua/jsherp/blob/master/jshERP-web/src/main.js) (Vue application), [`jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java`](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java) (Material endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web interface"]
  node_web["Vue application<br/>[main.js]"]
  node_bill_ui["Bill screens<br/>[SaleOrderList.vue]"]
  node_material_ui["Material screens<br/>[MaterialList.vue]"]
  node_finance_ui["Financial screens<br/>[MoneyInList.vue]"]
  node_report_ui["Report screens<br/>[InDetail.vue]"]
end

subgraph group_inventory["Inventory and bills"]
  node_bill_controller["Bill endpoints"]
  node_stock_controller["Stock endpoints"]
  node_material_controller["Material endpoints"]
  node_bill_service["Bill processing"]
  node_stock_service["Stock processing"]
  node_material_service["Material catalog"]
  node_bill_entity["Bill records<br/>[DepotHead.java]"]
  node_depot_service["Depot records<br/>[DepotService.java]"]
  node_unit_service["Unit records<br/>[UnitService.java]"]
end

subgraph group_finance["Finance and reports"]
  node_finance_backend["Finance services"]
  node_report_backend["Reporting services"]
end

subgraph group_admin["Administration"]
  node_user_service["User and access<br/>[UserService.java]"]
  node_role_service["Role management<br/>[RoleService.java]"]
  node_config_service["System settings"]
  node_business_constants["Business rules"]
  node_exception_constants["Error definitions"]
  node_user_business["User assignments"]
end

subgraph group_persistence["Persistence"]
  node_bill_mapper["Bill data access"]
  node_database[("Relational database")]
  node_excel["Spreadsheet support<br/>[ExcelUtils.java]"]
  node_string_util["Shared string utilities<br/>[StringUtil.java]"]
  node_tools["Shared utilities<br/>[Tools.java]"]
end

node_user(("ERP user"))

node_user -->|"uses"| node_web
node_web -.->|"opens bills"| node_bill_ui
node_web -.->|"opens catalog"| node_material_ui
node_web -.->|"opens finance"| node_finance_ui
node_web -.->|"opens reports"| node_report_ui
node_bill_ui -.->|"requests bills"| node_bill_controller
node_material_ui -.->|"requests materials"| node_material_controller
node_finance_ui -.->|"requests finance"| node_finance_backend
node_report_ui -.->|"requests reports"| node_report_backend
node_bill_controller -->|"delegates to"| node_bill_service
node_stock_controller -->|"delegates to"| node_stock_service
node_material_controller -->|"delegates to"| node_material_service
node_stock_controller -->|"uses depot data"| node_depot_service
node_stock_controller -->|"uses bill data"| node_bill_service
node_stock_controller -->|"uses materials"| node_material_service
node_material_controller -->|"uses stock data"| node_stock_service
node_material_controller -->|"uses depot data"| node_depot_service
node_material_controller -->|"uses unit data"| node_unit_service
node_bill_service -->|"queries stock"| node_bill_mapper
node_bill_service -->|"processes records"| node_bill_entity
node_stock_service -->|"uses material data"| node_material_service
node_stock_service -->|"uses bill data"| node_bill_service
node_bill_service -->|"exports sheets"| node_excel
node_bill_service -->|"formats values"| node_string_util
node_bill_service -->|"uses utilities"| node_tools
node_bill_service -->|"applies bill rules"| node_business_constants
node_stock_service -->|"applies stock rules"| node_business_constants
node_material_service -->|"applies catalog rules"| node_business_constants
node_stock_service -->|"queries records"| node_bill_mapper
node_database -.->|"stores records"| node_bill_mapper
node_user_service -->|"assigns access"| node_user_business
node_user_service -->|"manages roles"| node_role_service
node_user_service -->|"checks errors"| node_exception_constants
node_config_service -.->|"reads settings"| node_database

click node_web "https://github.com/jishenghua/jsherp/blob/master/jshERP-web/src/main.js"
click node_bill_ui "https://github.com/jishenghua/jsherp/blob/master/jshERP-web/src/views/bill/SaleOrderList.vue"
click node_material_ui "https://github.com/jishenghua/jsherp/blob/master/jshERP-web/src/views/material/MaterialList.vue"
click node_finance_ui "https://github.com/jishenghua/jsherp/blob/master/jshERP-web/src/views/financial/MoneyInList.vue"
click node_report_ui "https://github.com/jishenghua/jsherp/blob/master/jshERP-web/src/views/report/InDetail.vue"
click node_bill_controller "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotHeadController.java"
click node_stock_controller "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java"
click node_material_controller "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java"
click node_bill_service "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadService.java"
click node_stock_service "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java"
click node_material_service "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialService.java"
click node_bill_entity "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/DepotHead.java"
click node_finance_backend "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/AccountHeadService.java"
click node_report_backend "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/InOutItemService.java"
click node_user_service "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/UserService.java"
click node_role_service "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/RoleService.java"
click node_config_service "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/SystemConfigService.java"
click node_business_constants "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/constants/BusinessConstants.java"
click node_exception_constants "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java"
click node_depot_service "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/DepotService.java"
click node_unit_service "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/UnitService.java"
click node_user_business "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/UserBusinessService.java"
click node_bill_mapper "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java"
click node_excel "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/utils/ExcelUtils.java"
click node_string_util "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/utils/StringUtil.java"
click node_tools "https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/utils/Tools.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_web,node_bill_ui,node_material_ui,node_finance_ui,node_report_ui,node_user toneBlue
class node_bill_controller,node_stock_controller,node_material_controller,node_bill_service,node_stock_service,node_material_service,node_bill_entity,node_depot_service,node_unit_service toneAmber
class node_finance_backend,node_report_backend toneMint
class node_user_service,node_role_service,node_config_service,node_business_constants,node_exception_constants,node_user_business toneRose
class node_bill_mapper,node_database,node_excel,node_string_util,node_tools toneIndigo
```

## Components

### Web interface

- [Vue application](https://github.com/jishenghua/jsherp/blob/master/jshERP-web/src/main.js): `jshERP-web/src/main.js`
- [Bill screens](https://github.com/jishenghua/jsherp/blob/master/jshERP-web/src/views/bill/SaleOrderList.vue): `jshERP-web/src/views/bill/SaleOrderList.vue`
- [Material screens](https://github.com/jishenghua/jsherp/blob/master/jshERP-web/src/views/material/MaterialList.vue): `jshERP-web/src/views/material/MaterialList.vue`
- [Financial screens](https://github.com/jishenghua/jsherp/blob/master/jshERP-web/src/views/financial/MoneyInList.vue): `jshERP-web/src/views/financial/MoneyInList.vue`
- [Report screens](https://github.com/jishenghua/jsherp/blob/master/jshERP-web/src/views/report/InDetail.vue): `jshERP-web/src/views/report/InDetail.vue`

### Inventory and bills

- [Bill endpoints](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotHeadController.java): `jshERP-boot/src/main/java/com/jsh/erp/controller/DepotHeadController.java`
- [Stock endpoints](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java): `jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java`
- [Material endpoints](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java): `jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java`
- [Bill processing](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadService.java): `jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadService.java`
- [Stock processing](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java): `jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java`
- [Material catalog](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialService.java): `jshERP-boot/src/main/java/com/jsh/erp/service/MaterialService.java`
- [Bill records](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/DepotHead.java): `jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/DepotHead.java`
- [Depot records](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/DepotService.java): `jshERP-boot/src/main/java/com/jsh/erp/service/DepotService.java`
- [Unit records](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/UnitService.java): `jshERP-boot/src/main/java/com/jsh/erp/service/UnitService.java`

### Finance and reports

- [Finance services](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/AccountHeadService.java): `jshERP-boot/src/main/java/com/jsh/erp/service/AccountHeadService.java`
- [Reporting services](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/InOutItemService.java): `jshERP-boot/src/main/java/com/jsh/erp/service/InOutItemService.java`

### Administration

- [User and access](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/UserService.java): `jshERP-boot/src/main/java/com/jsh/erp/service/UserService.java`
- [Role management](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/RoleService.java): `jshERP-boot/src/main/java/com/jsh/erp/service/RoleService.java`
- [System settings](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/SystemConfigService.java): `jshERP-boot/src/main/java/com/jsh/erp/service/SystemConfigService.java`
- [Business rules](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/constants/BusinessConstants.java): `jshERP-boot/src/main/java/com/jsh/erp/constants/BusinessConstants.java`
- [Error definitions](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java): `jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java`
- [User assignments](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/service/UserBusinessService.java): `jshERP-boot/src/main/java/com/jsh/erp/service/UserBusinessService.java`

### Persistence

- [Bill data access](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java): `jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java`
- **Relational database**
- [Spreadsheet support](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/utils/ExcelUtils.java): `jshERP-boot/src/main/java/com/jsh/erp/utils/ExcelUtils.java`
- [Shared string utilities](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/utils/StringUtil.java): `jshERP-boot/src/main/java/com/jsh/erp/utils/StringUtil.java`
- [Shared utilities](https://github.com/jishenghua/jsherp/blob/master/jshERP-boot/src/main/java/com/jsh/erp/utils/Tools.java): `jshERP-boot/src/main/java/com/jsh/erp/utils/Tools.java`

### Other components

- **ERP user**

## Connections

- ERP user → Vue application: uses
- Vue application → Bill screens: opens bills
- Vue application → Material screens: opens catalog
- Vue application → Financial screens: opens finance
- Vue application → Report screens: opens reports
- Bill screens → Bill endpoints: requests bills
- Material screens → Material endpoints: requests materials
- Financial screens → Finance services: requests finance
- Report screens → Reporting services: requests reports
- Bill endpoints → Bill processing: delegates to (evidence: `jshERP-boot/src/main/java/com/jsh/erp/controller/DepotHeadController.java`)
- Stock endpoints → Stock processing: delegates to (evidence: `jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java`)
- Material endpoints → Material catalog: delegates to (evidence: `jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java`)
- Stock endpoints → Depot records: uses depot data (evidence: `jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java`)
- Stock endpoints → Bill processing: uses bill data (evidence: `jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java`)
- Stock endpoints → Material catalog: uses materials (evidence: `jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java`)
- Material endpoints → Stock processing: uses stock data (evidence: `jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java`)
- Material endpoints → Depot records: uses depot data (evidence: `jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java`)
- Material endpoints → Unit records: uses unit data (evidence: `jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java`)
- Bill processing → Bill data access: queries stock (evidence: `jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadService.java`)
- Bill processing → Bill records: processes records (evidence: `jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadService.java`)
- Stock processing → Material catalog: uses material data (evidence: `jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java`)
- Stock processing → Bill processing: uses bill data (evidence: `jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java`)
- Bill processing → Spreadsheet support: exports sheets (evidence: `jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadService.java`)
- Bill processing → Shared string utilities: formats values (evidence: `jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadService.java`)
- Bill processing → Shared utilities: uses utilities (evidence: `jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadService.java`)
- Bill processing → Business rules: applies bill rules (evidence: `jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadService.java`)
- Stock processing → Business rules: applies stock rules (evidence: `jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java`)
- Material catalog → Business rules: applies catalog rules (evidence: `jshERP-boot/src/main/java/com/jsh/erp/service/MaterialService.java`)
- Stock processing → Bill data access: queries records (evidence: `jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java`)
- Relational database → Bill data access: stores records
- User and access → User assignments: assigns access (evidence: `jshERP-boot/src/main/java/com/jsh/erp/service/UserService.java`)
- User and access → Role management: manages roles (evidence: `jshERP-boot/src/main/java/com/jsh/erp/service/UserService.java`)
- User and access → Error definitions: checks errors (evidence: `jshERP-boot/src/main/java/com/jsh/erp/service/UserService.java`)
- System settings → Relational database: reads settings
