Giter VIP home page Giter VIP logo

doublechaintech / scm-biz-suite Goto Github PK

View Code? Open in Web Editor NEW
2.4K 100.0 905.0 47.98 MB

供应链中台系统基础版,集成零售管理, 电子商务, 供应链管理, 财务管理, 车队管理, 仓库管理, 人员管理, 产品管理, 订单管理, 会员管理, 连锁店管理, 加盟管理, 前端React/Ant Design, 后端Java Spring+自有开源框架,全面支持MySQL, PostgreSQL, 全面支持国产数据库南大通用GBase 8s,通过REST接口调用,前后端完全分离。

HTML 0.07% CSS 0.03% JavaScript 35.40% Shell 0.02% PLpgSQL 0.97% Java 61.57% Less 1.18% EJS 0.01% TypeScript 0.61% SCSS 0.14%
retail erp scm antd redis spring mysql java tms fleet-management

scm-biz-suite's Introduction

请使用SCMR1来建立环境,项目将有重大更新!!

DaaS新特性TeaQL,用于支持大型复杂关联应用

    Task task =Q.task(orderId) // 根据订单找到一个任务
                .selectAll() // 取所有字段, 但是不包含子列表
                .selectDropOffTaskItemList( // 选择所有的卸车任务
                    Q.dropOffTaskItem() // 定制卸车任务
                        .selectProduct() // 选择产品
                        .selectCustomOrder( // 卸车任务上面还关联了一个订单
                            Q.customOrder() // 定制订单选择
                                .selectAll() // 选择订单所有字段
                                .selectCustomOrderItemList() // 选择订单下面的订单项
                                .selectDeliveryOrderAssetList( // 选择订单子列表下面的相关资产列表
                                    Q.deliveryOrderAsset() // 定制订单资产列表
                                        .selectAsset( // 选择资产对象
                                            Q.asset() // 定制资产选择
                                                .selectAssetStatus() // 状态要加上,便于显示资产状态
                                                .where( // 把不合法的资产过滤出去
                                                    Asset.ASSET_STATUS_PROPERTY,
                                                    QueryOperator.NOT_EQUAL,
                                                    AssetStatus.INVALID))))).execute(ctx);

TeaQL是双链团队新发明的基于各种编程语言的应用语言,为高复杂度长期维护的大型应用开发提供帮助。

集成供应链套件(全部源码)

高度可定制零售供应链中台基础系统,中台管理界面可通过javascript高阶函数定制,Java后台主要通过增加方法或者重写已有的大量方法来灵活定制。

本系统代码是用自研知识图谱和因果网络处理系统自动生成高可维护源代码。

传统开发方式无法开发如此大规模的应用系统并且灵活变更,我们使用了自研的云端开发工具DaaS(Development as a Service)开发了这个平台,目前已有多家公司采用,请参见DaaS Start Kit, 这个项目的模型文件 retailscm.xml 也在里面(运行该模型需要注册)。注意:运行本项目无需DaaS,直接参考部署手册。

智能化开发的简单例子,请参见医生排班系统

针对生鲜供应链, 请访问:

角色 用户名 密码
平台 13900000001 admin123
商户1 13900000002 admin123
商户2 13900000003 admin123

主要特征如下:

  • 生鲜供应链是基于点对点多商户模式构建的系统
  • 商户之间的关系是平等的, 即使核心商户也是这样,
  • 每个商户自己的组织结构,有采购目录和销售目录,通过这种方式,可以把商户之间的信息流、商流、物流链接起来,形成一个供应链
  • 传统供应链系统就像SAP基于核心企业作为使用对象,上下游合作企业并没有供应链账号可用
  • 本供应链是使得上下游企业也可以通过管理完成的人力资源、产品信息交换,库存等。可以通过定制本系统实现不同的应用。

目录

业务涵盖范围

  • 参考下面的图

概念关系

核心特性

  • 本系统包括前端、后端、数据大屏,数据结构和基础数据都是通过自研软件开发开发
  • 高度可定制,增加、修改、屏蔽界面和后台功能不必更改生成代码,只是需要在custom层加入代码即可,看后文解释
  • 以零售平台为核心开发,集成五流:信息流,商流,物流,资金流,人才流。

架构

前端架构

前端架构

后端架构

后端架构

权限管理

权限管理

部署架构

部署架构

项目概念 来自于 数据库设计

ScreenShot

  • 桑基图, 展现概念血缘

ScreenShot

通过 https://demo.doublechaintech.com/admin/design/retail_design.html 可以看到交互式查看模型

retail-san-key

如何使用

  • 在此基础上定制业务系统,可以在这个系统基础上通过前后台增加代码来定制业务系统
  • 建立数据中台,这样源代码几乎不需要改动,本系统提供了大量的接口,可以让业务系统通过API插入数据,可以视作一个独立的微服务
  • 用于教学和练习

许可

除Logo,登录页和主页图片以外,本系统源代码为Apache 2 License,可以用于商用目的

技术支持

本系统提供商业化系统支持和基于Issue的免费的技术支持

兼容性,以下环境测试通过

  • 硬件环境:Amd64/ARM64/华为鲲鹏服务器
  • 操作系统环境:CentOS 6+/Ubuntu 16.04+
  • 数据库:MySQL 5.7+, GBase 8s,Informix 11, PostgreSQL 9.3+
  • 缓存系统: Redis 3.2+
  • 事件流系统: Kafka

二次开发

部署

如果要自行部署,请参照 部署指南

在线演示系统(不支持IE,最好使用Chrome)

系统平台框架天然支持一个用户多个App,下面为18种角色建立了演示账户,每种角色都可以登录,代表不同用户管理的不同资源。

  • 最新支持数据搜索
  • 功能分组

总部及分支机构运营

角色 用户名 密码
零售商店全国中心 13900000001 admin123
零售商店省中心 13900000002 admin123
零售商店城市服务中心 13900000003 admin123

演示地址:https://demo.doublechaintech.com/admin/retailscm/index.html

业务扩展

角色 用户名 密码
城市的合作伙伴 13900000004 admin123
潜在客户 13900000005 admin123

演示地址:https://demo.doublechaintech.com/admin/retailscm/index.html

落地业务运营

角色 用户名 密码
零售商店 13900000006 admin123
零售商店的会员 13900000007 admin123

演示地址:https://demo.doublechaintech.com/admin/retailscm/index.html

采购和供应商管理

角色 用户名 密码
消费者的订单 13900000008 admin123
产品供应商 13900000009 admin123
供应订单 13900000010 admin123
零售商店的订单 13900000011 admin123

演示地址:https://demo.doublechaintech.com/admin/retailscm/index.html

仓配一体化管理

角色 用户名 密码
仓库 13900000012 admin123
货架 13900000013 admin123
运输车队 13900000014 admin123
运输任务 13900000015 admin123
会计凭证 13900000017 admin123

演示地址:https://demo.doublechaintech.com/admin/retailscm/index.html

人力资源管理

角色 用户名 密码
工资等级 13900000018 admin123
员工 13900000020 admin123

演示地址:https://demo.doublechaintech.com/admin/retailscm/index.html

用户权限管理

角色 用户名 密码
用户域 13900000021 admin123

演示地址:https://demo.doublechaintech.com/admin/retailscm/index.html

组成部分

bizcore: 服务器端核心代码项目, Business Core

后端 Java/Spring/Redis/MySQL/ArrangoDB/Kafka Java 源代码在bizcore/WEB-INF/ 下

ScreenShot

caf_core_src: 通用框架库核心代码,包含技术框架,基础设施
caf_custom_src: 通用框架库,主要包含配置文件
retailscm_core_src: 零售业务核心代码
retailscm_custom_src: 零售业务定制代码,如果要定制,在此处增加类,继承retail_core_src的相应类,可以调用或者重写父类,core里面的类提供大量可以重用的方法。

bizui:中台集成界面项目, Business UI,不是闭嘴!

前端 React/dvajs/antd/echarts/Redux

ScreenShot ScreenShot

数据中台(独立产品在本项目应用,使用了图计算等很多新技术,助做经营决策可以,不能当成报表、结算等数据来源)

  • 新一代图计算实时引擎
  • 数据分析结果管理与分享
  • 支持客户端通过API调用数据,实现闭环反馈
  • 实时推送和订阅 演示地址:https://demo.doublechaintech.com/admin/dmos/
  • 用户名/密码: 13900000005/admin123
  • 浏览任何数据集->菜单选择->常用功能->候选数据集

ScreenShot ScreenShot ScreenShot ScreenShot

配套的数据大屏

ScreenShot

核心功能

  • 平台管理,平台鸟瞰视图
  • 业务开拓管理(CRM),管理联系,销售进度,完成合伙人转化
  • 小超会员管理,会员管理订单,支付,邮寄地址等
  • 人力资源管理(HRM),可以管理入职,绩效考核,工资发放,经验,教育经历,培训考试记录

未来发展

  • 渐进模式,从单个核心企业的中心化SaaS模式,到多核心企业多中心SaaS
  • 应用区块链技术,扩展到多中心
  • 变更控制:所有数据变更,走控制流程,数据来源可以解释
  • 更强的基础分析工作台:支持多个维度分析单个列表的数据。

额外数据库支持

目前已经支持PGSQL9.5+和GBASE 8S

参与本项目

WechatQRCode

  • 探讨供应链发展趋势
  • 探讨供应链相关技术和产品
  • 探讨分享市场机遇
  • 验证时请输入供应链相关的名词: scm, gyl, 供应链

升级计划

  • 本项目于2017年开发,2019年初开源,开发团队在四年里获取了更进一步的供应链知识,模型需求更新
  • 模型上像对等供应链发展
  • 业务操作将提高操作的跟踪性
  • 升级到新的基础平台
  • JSON定义动态前端

scm-biz-suite's People

Contributors

dependabot[bot] avatar hoo-ge avatar philipgreat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

scm-biz-suite's Issues

部署问题

请问如果想在自己电脑上部署,还需要做哪些步骤?数据库结构是什么样的呢?非常感谢这么漂亮的代码

后台登录报错

首先感谢您开发了一套如此完美的供应链系统。

今天在电脑上测试,环境都搭建完毕,在系统登录时,后台会提示如下错误:

Invalid bean definition with name 'cacheService' defined in URL [file:/home/ubuntu/resin-3.1.16/webapps/retailscm/WEB-INF/classes/META-INF/infra.xml]: Could not resolve placeholder 'app.redis.host' in value "${app.redis.host}"; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'app.redis.host' in value "${app.redis.host}" Render JSON result with class: org.springframework.beans.factory.BeanDefinitionStoreException

请问应该处理?谢谢

gradle classes throws out errors

Hi

I got following errors when I ran grandle classes:

> Task :compileJava
/Users/i851981/projects/retailscm-biz-suite/bizcore/WEB-INF/retailscm_core_src/com/doublechaintech/retailscm/BaseRetailscmListOfViewScope.java:5282: error: illegal character: '#'
                scopError#: ObjectCollection for retailscm failed with /home/philip/resin-3.1.12/webapps/sky/WEB-INF/work/_jsp/_javaweb/_java_0candidates_0util__jsp.java:26: error: cannot find symbol
                         ^
/Users/i851981/projects/retailscm-biz-suite/bizcore/WEB-INF/retailscm_core_src/com/doublechaintech/retailscm/BaseRetailscmListOfViewScope.java:5282: error: not a statement
                scopError#: ObjectCollection for retailscm failed with /home/philip/resin-3.1.12/webapps/sky/WEB-INF/work/_jsp/_javaweb/_java_0candidates_0util__jsp.java:26: error: cannot find symbol
                ^
/Users/i851981/projects/retailscm-biz-suite/bizcore/WEB-INF/retailscm_core_src/com/doublechaintech/retailscm/BaseRetailscmListOfViewScope.java:5282: error: not a statement
                scopError#: ObjectCollection for retailscm failed with /home/philip/resin-3.1.12/webapps/sky/WEB-INF/work/_jsp/_javaweb/_java_0candidates_0util__jsp.java:26: error: cannot find symbol
                            ^
.....
....
> Task :compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> Compilation failed; see the compiler error output for details.

I followed the instructions and tried both gradle 5.3 and 6.3:

➜  bizcore git:(master) ✗ gradle -v

------------------------------------------------------------
Gradle 6.3
------------------------------------------------------------

Build time:   2020-03-24 19:52:07 UTC
Revision:     bacd40b727b0130eeac8855ae3f9fd9a0b207c60

Kotlin:       1.3.70
Groovy:       2.5.10
Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM:          1.8.0_252 (AdoptOpenJDK 25.252-b09)
OS:           Mac OS X 10.15.4 x86_64

Anyone know what's the root cause of such error? Any help is appreciated!

项目里用来防止并发的synchronized看起来并不能起到应有的作用

例如在RetailStoreCountryCenterManagerImpl.java#addAccountSet里有这么一段代码,看起来是想防止并发创建帐套,但是每次retailStoreCountryCenter都是被重新从数据库读进来的,两个线程读到的都不是同一对象,所以这个synchronized似乎是完全没用的。

RetailStoreCountryCenter retailStoreCountryCenter = loadRetailStoreCountryCenter(userContext, retailStoreCountryCenterId, emptyOptions());
		synchronized(retailStoreCountryCenter){
			//Will be good when the retailStoreCountryCenter loaded from this JVM process cache.
			//Also good when there is a RAM based DAO implementation
			retailStoreCountryCenter.addAccountSet( accountSet );
			retailStoreCountryCenter = saveRetailStoreCountryCenter(userContext, retailStoreCountryCenter, tokens().withAccountSetList().done());
			
			accountSetManagerOf(userContext).onNewInstanceCreated(userContext, accountSet);
			return present(userContext,retailStoreCountryCenter, mergedAllTokens(tokensExpr));
		}

看起来代码里有很多地方都用了这样的模板,能不能解释一下为什么这么用synbchronized,以及里面的这个注释是什么意思。

yarn install && yarn build fail with missing component - Tree Container

$ cross-env ESLINT=none roadhog build
build [============= ] 65%Failed to compile.

Module not found: Error: Can't resolve '../../components/TreeContainer' in '/Users/i851981/projects/retailscm-biz-suite/bizui/src/bizcomponents/treenode'

[graceful-process#22726] exit with code:1
error Command failed with exit code 1.

gradle打包报错

按照部署手顺,在gradle class的时候报错,如下:

[root@localhost bizcore]# gradle classes

Task :compileJava
/root/retailscm-biz-suite/bizcore/WEB-INF/retailscm_core_src/com/doublechaintech/retailscm/RetailscmQuery.java:3: 错误: 找不到符号
import com.skynet.infrastructure.graphservice.BaseQuery;
^
符号: 类 BaseQuery
位置: 程序包 com.skynet.infrastructure.graphservice
/root/retailscm-biz-suite/bizcore/WEB-INF/retailscm_core_src/com/doublechaintech/retailscm/RetailscmQuery.java:7: 错误: 找不到符号
public class RetailscmQuery extends BaseQuery {
^
符号: 类 BaseQuery
/root/retailscm-biz-suite/bizcore/WEB-INF/retailscm_custom_src/com/doublechaintech/retailscm/secuser/CustomSecUserManagerImpl.java:41: 错误: 找不到符号
import com.terapico.caf.Password;
^
符号: 类 Password
位置: 程序包 com.terapico.caf
/root/retailscm-biz-suite/bizcore/WEB-INF/retailscm_custom_src/com/doublechaintech/retailscm/secuser/CustomSecUserManagerImpl.java:362: 错误: 找不到符号
Password password) {
^
符号: 类 Password
位置: 类 CustomSecUserManagerImpl
/root/retailscm-biz-suite/bizcore/WEB-INF/retailscm_custom_src/com/doublechaintech/retailscm/secuser/CustomSecUserManagerImpl.java:368: 错误: 找不到符号
Password password) {
^
符号: 类 Password
位置: 类 CustomSecUserManagerImpl
/root/retailscm-biz-suite/bizcore/WEB-INF/retailscm_custom_src/com/doublechaintech/retailscm/secuser/CustomSecUserManagerImpl.java:376: 错误: 找不到符号
Password password) {
^
符号: 类 Password
位置: 类 CustomSecUserManagerImpl
/root/retailscm-biz-suite/bizcore/WEB-INF/retailscm_custom_src/com/doublechaintech/retailscm/secuser/CustomSecUserManagerImpl.java:382: 错误: 找不到符号
Password password) {
^
符号: 类 Password
位置: 类 CustomSecUserManagerImpl
/root/retailscm-biz-suite/bizcore/WEB-INF/retailscm_custom_src/com/doublechaintech/retailscm/secuser/CustomSecUserManagerImpl.java:400: 错误: 找不到符号
Password password) {
^
符号: 类 Password
位置: 类 CustomSecUserManagerImpl
/root/retailscm-biz-suite/bizcore/WEB-INF/retailscm_core_src/com/doublechaintech/retailscm/BaseFormProcessor.java:331: 错误: 找不到符号
return CollectionUtils.toList(strVals);
^
符号: 方法 toList(String[])
位置: 类 CollectionUtils
/root/retailscm-biz-suite/bizcore/WEB-INF/retailscm_core_src/com/doublechaintech/retailscm/BaseViewPage.java:145: 错误: 找不到符号
return scope != null && scope.isMoveUp() && fieldValue instanceof Map;
^
符号: 方法 isMoveUp()
位置: 类型为SerializeScope的变量 scope
/root/retailscm-biz-suite/bizcore/WEB-INF/retailscm_core_src/com/doublechaintech/retailscm/RetailscmQuery.java:11: 错误: 找不到符号
super.setProject("retailscm");
^
符号: 变量 super
位置: 类 RetailscmQuery
/root/retailscm-biz-suite/bizcore/WEB-INF/retailscm_custom_src/com/doublechaintech/retailscm/secuser/CustomSecUserManagerImpl.java:132: 错误: 找不到符号
Password pwd = new Password(newPassword);
^
符号: 类 Password
位置: 类 CustomSecUserManagerImpl
/root/retailscm-biz-suite/bizcore/WEB-INF/retailscm_custom_src/com/doublechaintech/retailscm/secuser/CustomSecUserManagerImpl.java:132: 错误: 找不到符号
Password pwd = new Password(newPassword);
^
符号: 类 Password
位置: 类 CustomSecUserManagerImpl
注: 某些输入文件使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
注: 某些输入文件使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
13 个错误

Task :compileJava FAILED

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':compileJava'.

Compilation failed; see the compiler error output for details.

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 19s
1 actionable task: 1 executed

项目不能clone,报错

Cloning into '/github/scm-biz-suite'...
remote: Enumerating objects: 83, done.
remote: Counting objects: 100% (83/83), done.
remote: Compressing objects: 100% (67/67), done.
remote: Total 32144 (delta 44), reused 39 (delta 16), pack-reused 32061
Receiving objects: 100% (32144/32144), 37.06 MiB | 733.00 KiB/s, done.
Resolving deltas: 100% (29806/29806), done.
error: invalid path 'bizcore/.settings/org.eclipse.jdt.core.prefs '
fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry with 'git restore --source=HEAD :/'

Would you like to retry cloning scm-biz-suite?

查了下问题说在:
git上的项目问题路径文件夹末尾包含一个空格,但是在Windows中无法创建末尾包含空格的目录。

Add SECURITY.md

Hey there!

I belong to an open source security research community, and a member (@ktg9) has found an issue, but doesn’t know the best way to disclose it.

If not a hassle, might you kindly add a SECURITY.md file with an email, or another contact method? GitHub recommends this best practice to ensure security issues are responsibly disclosed, and it would serve as a simple instruction for security researchers in the future.

Thank you for your consideration, and I look forward to hearing from you!

(cc @huntr-helper)

登录问题

{"class":"com.doublechaintech.retailscm.LoginForm","errorMessage":"对不起, 系统出错,跟你没关系哈,你等会再试下java.net.ConnectException: 拒绝连接 (Connection refused)","usernameParmeter":null,"passwordParmeter":null}

登录会报上面的错误,什么原因?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.