diff --git a/jshERP-boot/dist/jshERP/bin/run-manage.sh b/jshERP-boot/dist/jshERP/bin/run-manage.sh
new file mode 100644
index 000000000..a349a383a
--- /dev/null
+++ b/jshERP-boot/dist/jshERP/bin/run-manage.sh
@@ -0,0 +1,133 @@
+#!/bin/bash
+
+SERVER_NAME=jshERP
+readonly APP_HOME=${FILE_PATH:-$(dirname $(cd `dirname $0`; pwd))}
+#readonly JAVA_HOME=""
+readonly CONFIG_HOME="$APP_HOME/config/"
+readonly LIB_HOME="$APP_HOME/lib"
+readonly LOGS_HOME="$APP_HOME/logs"
+readonly PID_FILE="$LOGS_HOME/application.pid"
+readonly APP_MAIN_CLASS="jshERP.jar"
+readonly LOG_CONFIG="$CONFIG_HOME/logback-spring.xml"
+readonly JAVA_RUN="-Dlogs.home=$LOGS_HOME -Dlogging.config=$LOG_CONFIG -Dspring.config.location=file:$CONFIG_HOME -Dspring.pid.file=$PID_FILE -Dspring.pid.fail-on-write-error=true"
+readonly JAVA_OPTS="-server -Xms128m -Xmx320m -XX:PermSize=128M -XX:MaxPermSize=256M $JAVA_RUN"
+readonly JAVA="java"
+PID=0
+if [ ! -x "$LOGS_HOME" ]
+then
+  mkdir $LOGS_HOME
+fi
+chmod +x -R "$JAVA_HOME/bin/"
+functions="/etc/functions.sh"
+if test -f $functions ; then
+  . $functions
+else
+  success()
+  {
+    echo " SUCCESS! $@"
+  }
+  failure()
+  {
+    echo " ERROR! $@"
+  }
+  warning()
+  {
+    echo "WARNING! $@"
+  }
+fi
+function checkpid() {
+   PID=$(ps -ef | grep $APP_MAIN_CLASS | grep -v 'grep' | awk '{print int($2)}')
+    if [[ -n "$PID" ]]
+    then
+      return 0
+    else
+      return 1
+    fi
+}
+function start() {
+   checkpid
+   if [[ $? -eq 0 ]]
+   then
+      warning "[$APP_MAIN_CLASS]: already started! (PID=$PID)"
+   else
+      echo -n "[$APP_MAIN_CLASS]: Starting ..."
+      JAVA_CMD="nohup $JAVA $JAVA_OPTS -jar $LIB_HOME/$APP_MAIN_CLASS > /dev/null 2>&1 &"
+      # echo "Exec cmmand : $JAVA_CMD"
+      sh -c "$JAVA_CMD"
+      sleep 3
+      checkpid
+      if [[ $? -eq 0 ]]
+      then
+         success "(PID=$PID) "
+      else
+         failure " "
+      fi
+   fi
+}
+function stop() {
+   checkpid
+   if [[ $? -eq 0 ]];
+   then
+      echo -n "[$APP_MAIN_CLASS]: Shutting down ...(PID=$PID) "
+      kill -9 $PID
+      if [[ $? -eq 0 ]];
+      then
+	     echo 0 > $PID_FILE
+         success " "
+      else
+         failure " "
+      fi
+   else
+      warning "[$APP_MAIN_CLASS]: is not running ..."
+   fi
+}
+function status() {
+   checkpid
+   if [[ $? -eq 0 ]]
+   then
+      success "[$APP_MAIN_CLASS]: is running! (PID=$PID)"
+      return 0
+   else
+      failure "[$APP_MAIN_CLASS]: is not running"
+      return 1
+   fi
+}
+function info() {
+   echo "System Information:"
+   echo 
+   echo "****************************"
+   echo `head -n 1 /etc/issue`
+   echo `uname -a`
+   echo
+   echo "JAVA_HOME=$JAVA_HOME"
+   echo 
+   echo "JAVA Environment Information:"
+   echo `$JAVA -version`
+   echo
+   echo "APP_HOME=$APP_HOME"
+   echo "APP_MAIN_CLASS=$APP_MAIN_CLASS"
+   echo 
+   echo "****************************"
+}
+case "$1" in
+   'start')
+      start
+      ;;
+   'stop')
+     stop
+     ;;
+   'restart')
+     stop
+     start
+     ;;
+   'status')
+     status
+     ;;
+   'info')
+     info
+     ;;
+    *)
+     echo "Usage: $0 {help|start|stop|restart|status|info}"
+     ;;
+esac
+exit 0
\ No newline at end of file
diff --git a/jshERP-boot/dist/jshERP/config/application.properties b/jshERP-boot/dist/jshERP/config/application.properties
new file mode 100644
index 000000000..c7d486be5
--- /dev/null
+++ b/jshERP-boot/dist/jshERP/config/application.properties
@@ -0,0 +1,37 @@
+server.port=9999
+#登录超时-秒
+server.servlet.session.timeout=36000
+#服务路径
+server.servlet.context-path=/jshERP-boot
+#数据库连接
+spring.datasource.url=jdbc:mysql://127.0.0.1:3306/jsh_erp?useUnicode=true&characterEncoding=utf8&useCursorFetch=true&defaultFetchSize=500&allowMultiQueries=true&rewriteBatchedStatements=true&useSSL=false
+spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
+spring.datasource.username=root
+spring.datasource.password=AWS2025aws!
+#mybatis-plus配置
+mybatis-plus.mapper-locations=classpath:./mapper_xml/*.xml
+# Redis
+spring.redis.host=127.0.0.1
+spring.redis.port=6379
+spring.redis.password=
+#租户对应的角色id
+manage.roleId=10
+#租户允许创建的用户数
+tenant.userNumLimit=1000000
+#租户允许试用的天数
+tenant.tryDayLimit=3000
+#插件配置
+plugin.runMode=prod
+plugin.pluginPath=plugins
+plugin.pluginConfigFilePath=pluginConfig
+#文件上传方式 1-本机 2-oss
+file.uploadType=1
+#文件上传根目录
+file.path=/opt/jshERP/upload
+#文件上传临时路径
+server.tomcat.basedir=/opt/tmp/tomcat
+#文件上传限制(byte)
+spring.servlet.multipart.max-file-size=10485760
+spring.servlet.multipart.max-request-size=10485760 
+#bpm接口地址
+awspaas.bpm.url=http://127.0.0.1:8088/api
diff --git a/jshERP-boot/dist/jshERP/config/logback-spring.xml b/jshERP-boot/dist/jshERP/config/logback-spring.xml
new file mode 100644
index 000000000..86291bb21
--- /dev/null
+++ b/jshERP-boot/dist/jshERP/config/logback-spring.xml
@@ -0,0 +1,34 @@
+
+    
+    
+
+    
+        
+            ${LOG_PATTERN}
+        
+    
+
+    
+        ${LOG_FILE}.log
+        
+            ${LOG_PATTERN}
+        
+        
+            ${LOG_FILE}.%d{yyyy-MM-dd}.%i.log
+            10
+            1GB
+            
+                100MB
+            
+        
+    
+
+    
+        
+        
+    
+    
+        
+        
+    
+
\ No newline at end of file
diff --git a/jshERP-boot/dist/jshERP/docs/jsh_erp.sql b/jshERP-boot/dist/jshERP/docs/jsh_erp.sql
new file mode 100644
index 000000000..b92044663
--- /dev/null
+++ b/jshERP-boot/dist/jshERP/docs/jsh_erp.sql
@@ -0,0 +1,977 @@
+/*
+Navicat MySQL Data Transfer
+
+Source Server         : 127.0.0.1
+Source Server Version : 50704
+Source Host           : 127.0.0.1:3306
+Source Database       : jsh_erp
+
+Target Server Type    : MYSQL
+Target Server Version : 50704
+File Encoding         : 65001
+
+Date: 2025-03-25 23:43:27
+*/
+
+SET FOREIGN_KEY_CHECKS=0;
+
+-- ----------------------------
+-- Table structure for jsh_account
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_account`;
+CREATE TABLE `jsh_account` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `name` varchar(50) DEFAULT NULL COMMENT '名称',
+  `serial_no` varchar(50) DEFAULT NULL COMMENT '编号',
+  `initial_amount` decimal(24,6) DEFAULT NULL COMMENT '期初金额',
+  `current_amount` decimal(24,6) DEFAULT NULL COMMENT '当前余额',
+  `remark` varchar(100) DEFAULT NULL COMMENT '备注',
+  `enabled` bit(1) DEFAULT NULL COMMENT '启用',
+  `sort` varchar(10) DEFAULT NULL COMMENT '排序',
+  `is_default` bit(1) DEFAULT NULL COMMENT '是否默认',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8 COMMENT='账户信息';
+
+-- ----------------------------
+-- Records of jsh_account
+-- ----------------------------
+INSERT INTO `jsh_account` VALUES ('17', '账户1', 'zzz111', '100.000000', '829.000000', 'aabb', '', null, '', '63', '0');
+INSERT INTO `jsh_account` VALUES ('18', '账户2', '1234131324', '200.000000', '-1681.000000', 'bbbb', '', null, '\0', '63', '0');
+
+-- ----------------------------
+-- Table structure for jsh_account_head
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_account_head`;
+CREATE TABLE `jsh_account_head` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `type` varchar(50) DEFAULT NULL COMMENT '类型(支出/收入/收款/付款/转账)',
+  `organ_id` bigint(20) DEFAULT NULL COMMENT '单位Id(收款/付款单位)',
+  `hands_person_id` bigint(20) DEFAULT NULL COMMENT '经手人id',
+  `creator` bigint(20) DEFAULT NULL COMMENT '操作员',
+  `change_amount` decimal(24,6) DEFAULT NULL COMMENT '变动金额(优惠/收款/付款/实付)',
+  `discount_money` decimal(24,6) DEFAULT NULL COMMENT '优惠金额',
+  `total_price` decimal(24,6) DEFAULT NULL COMMENT '合计金额',
+  `account_id` bigint(20) DEFAULT NULL COMMENT '账户(收款/付款)',
+  `bill_no` varchar(50) DEFAULT NULL COMMENT '单据编号',
+  `bill_time` datetime DEFAULT NULL COMMENT '单据日期',
+  `remark` varchar(1000) DEFAULT NULL COMMENT '备注',
+  `file_name` varchar(500) DEFAULT NULL COMMENT '附件名称',
+  `status` varchar(1) DEFAULT NULL COMMENT '状态,0未审核、1已审核、9审核中',
+  `source` varchar(1) DEFAULT '0' COMMENT '单据来源,0-pc,1-手机',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`),
+  KEY `FK9F4C0D8DB610FC06` (`organ_id`),
+  KEY `FK9F4C0D8DAAE50527` (`account_id`),
+  KEY `FK9F4C0D8DC4170B37` (`hands_person_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=127 DEFAULT CHARSET=utf8 COMMENT='财务主表';
+
+-- ----------------------------
+-- Records of jsh_account_head
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for jsh_account_item
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_account_item`;
+CREATE TABLE `jsh_account_item` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `header_id` bigint(20) NOT NULL COMMENT '表头Id',
+  `account_id` bigint(20) DEFAULT NULL COMMENT '账户Id',
+  `in_out_item_id` bigint(20) DEFAULT NULL COMMENT '收支项目Id',
+  `bill_id` bigint(20) DEFAULT NULL COMMENT '单据id',
+  `need_debt` decimal(24,6) DEFAULT NULL COMMENT '应收欠款',
+  `finish_debt` decimal(24,6) DEFAULT NULL COMMENT '已收欠款',
+  `each_amount` decimal(24,6) DEFAULT NULL COMMENT '单项金额',
+  `remark` varchar(500) DEFAULT NULL COMMENT '单据备注',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`),
+  KEY `FK9F4CBAC0AAE50527` (`account_id`),
+  KEY `FK9F4CBAC0C5FE6007` (`header_id`),
+  KEY `FK9F4CBAC0D203EDC5` (`in_out_item_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=152 DEFAULT CHARSET=utf8 COMMENT='财务子表';
+
+-- ----------------------------
+-- Records of jsh_account_item
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for jsh_depot
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_depot`;
+CREATE TABLE `jsh_depot` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `name` varchar(20) DEFAULT NULL COMMENT '仓库名称',
+  `address` varchar(50) DEFAULT NULL COMMENT '仓库地址',
+  `warehousing` decimal(24,6) DEFAULT NULL COMMENT '仓储费',
+  `truckage` decimal(24,6) DEFAULT NULL COMMENT '搬运费',
+  `type` int(10) DEFAULT NULL COMMENT '类型',
+  `sort` varchar(10) DEFAULT NULL COMMENT '排序',
+  `remark` varchar(100) DEFAULT NULL COMMENT '描述',
+  `principal` bigint(20) DEFAULT NULL COMMENT '负责人',
+  `enabled` bit(1) DEFAULT NULL COMMENT '启用',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_Flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  `is_default` bit(1) DEFAULT NULL COMMENT '是否默认',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COMMENT='仓库表';
+
+-- ----------------------------
+-- Records of jsh_depot
+-- ----------------------------
+INSERT INTO `jsh_depot` VALUES ('14', '仓库1', 'dizhi', '12.000000', '12.000000', '0', '1', '描述', '131', '', '63', '0', '');
+INSERT INTO `jsh_depot` VALUES ('15', '仓库2', '地址100', '555.000000', '666.000000', '0', '2', 'dfdf', '131', '', '63', '0', '\0');
+INSERT INTO `jsh_depot` VALUES ('17', '仓库3', '123123', '123.000000', '123.000000', '0', '3', '123', '131', '', '63', '0', '\0');
+
+-- ----------------------------
+-- Table structure for jsh_depot_head
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_depot_head`;
+CREATE TABLE `jsh_depot_head` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `type` varchar(50) DEFAULT NULL COMMENT '类型(出库/入库)',
+  `sub_type` varchar(50) DEFAULT NULL COMMENT '出入库分类',
+  `default_number` varchar(50) DEFAULT NULL COMMENT '初始票据号',
+  `number` varchar(50) DEFAULT NULL COMMENT '票据号',
+  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+  `oper_time` datetime DEFAULT NULL COMMENT '出入库时间',
+  `organ_id` bigint(20) DEFAULT NULL COMMENT '供应商id',
+  `creator` bigint(20) DEFAULT NULL COMMENT '操作员',
+  `account_id` bigint(20) DEFAULT NULL COMMENT '账户id',
+  `change_amount` decimal(24,6) DEFAULT NULL COMMENT '变动金额(收款/付款)',
+  `back_amount` decimal(24,6) DEFAULT NULL COMMENT '找零金额',
+  `total_price` decimal(24,6) DEFAULT NULL COMMENT '合计金额',
+  `pay_type` varchar(50) DEFAULT NULL COMMENT '付款类型(现金、记账等)',
+  `bill_type` varchar(50) DEFAULT NULL COMMENT '单据类型',
+  `remark` varchar(1000) DEFAULT NULL COMMENT '备注',
+  `file_name` varchar(1000) DEFAULT NULL COMMENT '附件名称',
+  `sales_man` varchar(50) DEFAULT NULL COMMENT '销售员(可以多个)',
+  `account_id_list` varchar(50) DEFAULT NULL COMMENT '多账户ID列表',
+  `account_money_list` varchar(200) DEFAULT NULL COMMENT '多账户金额列表',
+  `discount` decimal(24,6) DEFAULT NULL COMMENT '优惠率',
+  `discount_money` decimal(24,6) DEFAULT NULL COMMENT '优惠金额',
+  `discount_last_money` decimal(24,6) DEFAULT NULL COMMENT '优惠后金额',
+  `other_money` decimal(24,6) DEFAULT NULL COMMENT '销售或采购费用合计',
+  `deposit` decimal(24,6) DEFAULT NULL COMMENT '订金',
+  `status` varchar(1) DEFAULT NULL COMMENT '状态,0未审核、1已审核、2完成采购|销售、3部分采购|销售、9审核中',
+  `purchase_status` varchar(1) DEFAULT NULL COMMENT '采购状态,0未采购、2完成采购、3部分采购',
+  `source` varchar(1) DEFAULT '0' COMMENT '单据来源,0-pc,1-手机',
+  `link_number` varchar(50) DEFAULT NULL COMMENT '关联订单号',
+  `link_apply` varchar(50) DEFAULT NULL COMMENT '关联请购单',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`),
+  KEY `FK2A80F214B610FC06` (`organ_id`),
+  KEY `FK2A80F214AAE50527` (`account_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=277 DEFAULT CHARSET=utf8 COMMENT='单据主表';
+
+-- ----------------------------
+-- Records of jsh_depot_head
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for jsh_depot_item
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_depot_item`;
+CREATE TABLE `jsh_depot_item` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `header_id` bigint(20) NOT NULL COMMENT '表头Id',
+  `material_id` bigint(20) NOT NULL COMMENT '商品Id',
+  `material_extend_id` bigint(20) DEFAULT NULL COMMENT '商品扩展id',
+  `material_unit` varchar(20) DEFAULT NULL COMMENT '商品单位',
+  `sku` varchar(50) DEFAULT NULL COMMENT '多属性',
+  `oper_number` decimal(24,6) DEFAULT NULL COMMENT '数量',
+  `basic_number` decimal(24,6) DEFAULT NULL COMMENT '基础数量,如kg、瓶',
+  `unit_price` decimal(24,6) DEFAULT NULL COMMENT '单价',
+  `purchase_unit_price` decimal(24,6) DEFAULT NULL COMMENT '采购单价',
+  `tax_unit_price` decimal(24,6) DEFAULT NULL COMMENT '含税单价',
+  `all_price` decimal(24,6) DEFAULT NULL COMMENT '金额',
+  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
+  `depot_id` bigint(20) DEFAULT NULL COMMENT '仓库ID',
+  `another_depot_id` bigint(20) DEFAULT NULL COMMENT '调拨时,对方仓库Id',
+  `tax_rate` decimal(24,6) DEFAULT NULL COMMENT '税率',
+  `tax_money` decimal(24,6) DEFAULT NULL COMMENT '税额',
+  `tax_last_money` decimal(24,6) DEFAULT NULL COMMENT '价税合计',
+  `material_type` varchar(20) DEFAULT NULL COMMENT '商品类型',
+  `sn_list` varchar(2000) DEFAULT NULL COMMENT '序列号列表',
+  `batch_number` varchar(100) DEFAULT NULL COMMENT '批号',
+  `expiration_date` datetime DEFAULT NULL COMMENT '有效日期',
+  `link_id` bigint(20) DEFAULT NULL COMMENT '关联明细id',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`),
+  KEY `FK2A819F475D61CCF7` (`material_id`),
+  KEY `FK2A819F474BB6190E` (`header_id`),
+  KEY `FK2A819F479485B3F5` (`depot_id`),
+  KEY `FK2A819F47729F5392` (`another_depot_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=334 DEFAULT CHARSET=utf8 COMMENT='单据子表';
+
+-- ----------------------------
+-- Records of jsh_depot_item
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for jsh_function
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_function`;
+CREATE TABLE `jsh_function` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `number` varchar(50) DEFAULT NULL COMMENT '编号',
+  `name` varchar(50) DEFAULT NULL COMMENT '名称',
+  `parent_number` varchar(50) DEFAULT NULL COMMENT '上级编号',
+  `url` varchar(100) DEFAULT NULL COMMENT '链接',
+  `component` varchar(100) DEFAULT NULL COMMENT '组件',
+  `state` bit(1) DEFAULT NULL COMMENT '收缩',
+  `sort` varchar(50) DEFAULT NULL COMMENT '排序',
+  `enabled` bit(1) DEFAULT NULL COMMENT '启用',
+  `type` varchar(50) DEFAULT NULL COMMENT '类型',
+  `push_btn` varchar(50) DEFAULT NULL COMMENT '功能按钮',
+  `icon` varchar(50) DEFAULT NULL COMMENT '图标',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `url` (`url`)
+) ENGINE=InnoDB AUTO_INCREMENT=262 DEFAULT CHARSET=utf8 COMMENT='功能模块表';
+
+-- ----------------------------
+-- Records of jsh_function
+-- ----------------------------
+INSERT INTO `jsh_function` VALUES ('1', '0001', '系统管理', '0', '/system', '/layouts/TabLayout', '', '0910', '', '电脑版', '', 'setting', '0');
+INSERT INTO `jsh_function` VALUES ('13', '000102', '角色管理', '0001', '/system/role', '/system/RoleList', '\0', '0130', '', '电脑版', '1', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('14', '000103', '用户管理', '0001', '/system/user', '/system/UserList', '\0', '0140', '', '电脑版', '1', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('15', '000104', '日志管理', '0001', '/system/log', '/system/LogList', '\0', '0160', '', '电脑版', '', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('16', '000105', '功能管理', '0001', '/system/function', '/system/FunctionList', '\0', '0166', '', '电脑版', '1', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('18', '000109', '租户管理', '0001', '/system/tenant', '/system/TenantList', '\0', '0167', '', '电脑版', '1', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('21', '0101', '商品管理', '0', '/material', '/layouts/TabLayout', '\0', '0620', '', '电脑版', null, 'shopping', '0');
+INSERT INTO `jsh_function` VALUES ('22', '010101', '商品类别', '0101', '/material/material_category', '/material/MaterialCategoryList', '\0', '0230', '', '电脑版', '1', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('23', '010102', '商品信息', '0101', '/material/material', '/material/MaterialList', '\0', '0240', '', '电脑版', '1,3', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('24', '0102', '基本资料', '0', '/systemA', '/layouts/TabLayout', '\0', '0750', '', '电脑版', null, 'appstore', '0');
+INSERT INTO `jsh_function` VALUES ('25', '01020101', '供应商信息', '0102', '/system/vendor', '/system/VendorList', '\0', '0260', '', '电脑版', '1,3', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('26', '010202', '仓库信息', '0102', '/system/depot', '/system/DepotList', '\0', '0270', '', '电脑版', '1', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('31', '010206', '经手人管理', '0102', '/system/person', '/system/PersonList', '\0', '0284', '', '电脑版', '1', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('32', '0502', '采购管理', '0', '/bill', '/layouts/TabLayout', '\0', '0330', '', '电脑版', '', 'retweet', '0');
+INSERT INTO `jsh_function` VALUES ('33', '050201', '采购入库', '0502', '/bill/purchase_in', '/bill/PurchaseInList', '\0', '0340', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('38', '0603', '销售管理', '0', '/billB', '/layouts/TabLayout', '\0', '0390', '', '电脑版', '', 'shopping-cart', '0');
+INSERT INTO `jsh_function` VALUES ('40', '080107', '调拨出库', '0801', '/bill/allocation_out', '/bill/AllocationOutList', '\0', '0807', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('41', '060303', '销售出库', '0603', '/bill/sale_out', '/bill/SaleOutList', '\0', '0394', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('44', '0704', '财务管理', '0', '/financial', '/layouts/TabLayout', '\0', '0450', '', '电脑版', '', 'money-collect', '0');
+INSERT INTO `jsh_function` VALUES ('59', '030101', '进销存统计', '0301', '/report/in_out_stock_report', '/report/InOutStockReport', '\0', '0658', '', '电脑版', '', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('194', '010204', '收支项目', '0102', '/system/in_out_item', '/system/InOutItemList', '\0', '0282', '', '电脑版', '1', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('195', '010205', '结算账户', '0102', '/system/account', '/system/AccountList', '\0', '0283', '', '电脑版', '1', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('197', '070402', '收入单', '0704', '/financial/item_in', '/financial/ItemInList', '\0', '0465', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('198', '0301', '报表查询', '0', '/report', '/layouts/TabLayout', '\0', '0570', '', '电脑版', null, 'pie-chart', '0');
+INSERT INTO `jsh_function` VALUES ('199', '050204', '采购退货', '0502', '/bill/purchase_back', '/bill/PurchaseBackList', '\0', '0345', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('200', '060305', '销售退货', '0603', '/bill/sale_back', '/bill/SaleBackList', '\0', '0396', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('201', '080103', '其它入库', '0801', '/bill/other_in', '/bill/OtherInList', '\0', '0803', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('202', '080105', '其它出库', '0801', '/bill/other_out', '/bill/OtherOutList', '\0', '0805', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('203', '070403', '支出单', '0704', '/financial/item_out', '/financial/ItemOutList', '\0', '0470', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('204', '070404', '收款单', '0704', '/financial/money_in', '/financial/MoneyInList', '\0', '0475', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('205', '070405', '付款单', '0704', '/financial/money_out', '/financial/MoneyOutList', '\0', '0480', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('206', '070406', '转账单', '0704', '/financial/giro', '/financial/GiroList', '\0', '0490', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('207', '030102', '账户统计', '0301', '/report/account_report', '/report/AccountReport', '\0', '0610', '', '电脑版', '', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('208', '030103', '采购统计', '0301', '/report/buy_in_report', '/report/BuyInReport', '\0', '0620', '', '电脑版', '', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('209', '030104', '销售统计', '0301', '/report/sale_out_report', '/report/SaleOutReport', '\0', '0630', '', '电脑版', '', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('210', '040102', '零售出库', '0401', '/bill/retail_out', '/bill/RetailOutList', '\0', '0405', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('211', '040104', '零售退货', '0401', '/bill/retail_back', '/bill/RetailBackList', '\0', '0407', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('212', '070407', '收预付款', '0704', '/financial/advance_in', '/financial/AdvanceInList', '\0', '0495', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('217', '01020102', '客户信息', '0102', '/system/customer', '/system/CustomerList', '\0', '0262', '', '电脑版', '1,3', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('218', '01020103', '会员信息', '0102', '/system/member', '/system/MemberList', '\0', '0263', '', '电脑版', '1,3', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('220', '010103', '多单位', '0101', '/system/unit', '/system/UnitList', '\0', '0245', '', '电脑版', '1', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('225', '0401', '零售管理', '0', '/billC', '/layouts/TabLayout', '\0', '0101', '', '电脑版', '', 'gift', '0');
+INSERT INTO `jsh_function` VALUES ('226', '030106', '入库明细', '0301', '/report/in_detail', '/report/InDetail', '\0', '0640', '', '电脑版', '', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('227', '030107', '出库明细', '0301', '/report/out_detail', '/report/OutDetail', '\0', '0645', '', '电脑版', '', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('228', '030108', '入库汇总', '0301', '/report/in_material_count', '/report/InMaterialCount', '\0', '0650', '', '电脑版', '', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('229', '030109', '出库汇总', '0301', '/report/out_material_count', '/report/OutMaterialCount', '\0', '0655', '', '电脑版', '', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('232', '080109', '组装单', '0801', '/bill/assemble', '/bill/AssembleList', '\0', '0809', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('233', '080111', '拆卸单', '0801', '/bill/disassemble', '/bill/DisassembleList', '\0', '0811', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('234', '000105', '系统配置', '0001', '/system/system_config', '/system/SystemConfigList', '\0', '0164', '', '电脑版', '1', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('235', '030110', '客户对账', '0301', '/report/customer_account', '/report/CustomerAccount', '\0', '0660', '', '电脑版', '', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('236', '000106', '商品属性', '0001', '/material/material_property', '/material/MaterialPropertyList', '\0', '0165', '', '电脑版', '1', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('237', '030111', '供应商对账', '0301', '/report/vendor_account', '/report/VendorAccount', '\0', '0665', '', '电脑版', '', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('239', '0801', '仓库管理', '0', '/billD', '/layouts/TabLayout', '\0', '0420', '', '电脑版', '', 'hdd', '0');
+INSERT INTO `jsh_function` VALUES ('241', '050202', '采购订单', '0502', '/bill/purchase_order', '/bill/PurchaseOrderList', '\0', '0335', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('242', '060301', '销售订单', '0603', '/bill/sale_order', '/bill/SaleOrderList', '\0', '0392', '', '电脑版', '1,2,3,7', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('243', '000108', '机构管理', '0001', '/system/organization', '/system/OrganizationList', '', '0150', '', '电脑版', '1', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('244', '030112', '库存预警', '0301', '/report/stock_warning_report', '/report/StockWarningReport', '\0', '0670', '', '电脑版', '', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('245', '000107', '插件管理', '0001', '/system/plugin', '/system/PluginList', '\0', '0170', '', '电脑版', '1', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('246', '030113', '商品库存', '0301', '/report/material_stock', '/report/MaterialStock', '\0', '0605', '', '电脑版', '', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('247', '010105', '多属性', '0101', '/material/material_attribute', '/material/MaterialAttributeList', '\0', '0250', '', '电脑版', '1', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('248', '030150', '调拨明细', '0301', '/report/allocation_detail', '/report/AllocationDetail', '\0', '0646', '', '电脑版', '', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('258', '000112', '平台配置', '0001', '/system/platform_config', '/system/PlatformConfigList', '\0', '0175', '', '电脑版', '', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('259', '030105', '零售统计', '0301', '/report/retail_out_report', '/report/RetailOutReport', '\0', '0615', '', '电脑版', '', 'profile', '0');
+INSERT INTO `jsh_function` VALUES ('261', '050203', '请购单', '0502', '/bill/purchase_apply', '/bill/PurchaseApplyList', '\0', '0330', '', '电脑版', '1,2,3,7', 'profile', '0');
+
+-- ----------------------------
+-- Table structure for jsh_in_out_item
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_in_out_item`;
+CREATE TABLE `jsh_in_out_item` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `name` varchar(50) DEFAULT NULL COMMENT '名称',
+  `type` varchar(20) DEFAULT NULL COMMENT '类型',
+  `remark` varchar(100) DEFAULT NULL COMMENT '备注',
+  `enabled` bit(1) DEFAULT NULL COMMENT '启用',
+  `sort` varchar(10) DEFAULT NULL COMMENT '排序',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8 COMMENT='收支项目';
+
+-- ----------------------------
+-- Records of jsh_in_out_item
+-- ----------------------------
+INSERT INTO `jsh_in_out_item` VALUES ('21', '快递费', '支出', '', '', null, '63', '0');
+INSERT INTO `jsh_in_out_item` VALUES ('22', '房租收入', '收入', '', '', null, '63', '0');
+INSERT INTO `jsh_in_out_item` VALUES ('23', '利息收入', '收入', '收入', '', null, '63', '0');
+
+-- ----------------------------
+-- Table structure for jsh_log
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_log`;
+CREATE TABLE `jsh_log` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `user_id` bigint(20) DEFAULT NULL COMMENT '用户id',
+  `operation` varchar(500) DEFAULT NULL COMMENT '操作模块名称',
+  `client_ip` varchar(200) DEFAULT NULL COMMENT '客户端IP',
+  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+  `status` tinyint(4) DEFAULT NULL COMMENT '操作状态 0==成功,1==失败',
+  `content` varchar(5000) DEFAULT NULL COMMENT '详情',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  PRIMARY KEY (`id`),
+  KEY `FKF2696AA13E226853` (`user_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=7605 DEFAULT CHARSET=utf8 COMMENT='操作日志';
+
+-- ----------------------------
+-- Records of jsh_log
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for jsh_material
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_material`;
+CREATE TABLE `jsh_material` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `category_id` bigint(20) DEFAULT NULL COMMENT '产品类型id',
+  `name` varchar(100) DEFAULT NULL COMMENT '名称',
+  `mfrs` varchar(50) DEFAULT NULL COMMENT '制造商',
+  `model` varchar(100) DEFAULT NULL COMMENT '型号',
+  `standard` varchar(100) DEFAULT NULL COMMENT '规格',
+  `brand` varchar(100) DEFAULT NULL COMMENT '品牌',
+  `mnemonic` varchar(100) DEFAULT NULL COMMENT '助记码',
+  `color` varchar(50) DEFAULT NULL COMMENT '颜色',
+  `unit` varchar(50) DEFAULT NULL COMMENT '单位-单个',
+  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
+  `img_name` varchar(1000) DEFAULT NULL COMMENT '图片名称',
+  `unit_id` bigint(20) DEFAULT NULL COMMENT '单位Id',
+  `expiry_num` int(10) DEFAULT NULL COMMENT '保质期天数',
+  `weight` decimal(24,6) DEFAULT NULL COMMENT '基础重量(kg)',
+  `enabled` bit(1) DEFAULT NULL COMMENT '启用 0-禁用  1-启用',
+  `other_field1` varchar(50) DEFAULT NULL COMMENT '自定义1',
+  `other_field2` varchar(50) DEFAULT NULL COMMENT '自定义2',
+  `other_field3` varchar(50) DEFAULT NULL COMMENT '自定义3',
+  `enable_serial_number` varchar(1) DEFAULT '0' COMMENT '是否开启序列号,0否,1是',
+  `enable_batch_number` varchar(1) DEFAULT '0' COMMENT '是否开启批号,0否,1是',
+  `position` varchar(100) DEFAULT NULL COMMENT '仓位货架',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`),
+  KEY `FK675951272AB6672C` (`category_id`),
+  KEY `UnitId` (`unit_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=620 DEFAULT CHARSET=utf8 COMMENT='产品表';
+
+-- ----------------------------
+-- Records of jsh_material
+-- ----------------------------
+INSERT INTO `jsh_material` VALUES ('568', '17', '商品1', '制1', 'sp1', '', null, null, '', '个', '', null, null, null, null, '', '', '', '', '0', '0', null, '63', '0');
+INSERT INTO `jsh_material` VALUES ('569', '17', '商品2', '', 'sp2', '', null, null, '', '只', '', null, null, null, null, '', '', '', '', '0', '0', null, '63', '0');
+INSERT INTO `jsh_material` VALUES ('570', '17', '商品3', '', 'sp3', '', null, null, '', '个', '', null, null, null, null, '', '', '', '', '0', '0', null, '63', '0');
+INSERT INTO `jsh_material` VALUES ('577', null, '商品8', '', 'sp8', '', null, null, '', '', '', null, '15', null, null, '', '', '', '', '0', '0', null, '63', '0');
+INSERT INTO `jsh_material` VALUES ('579', '21', '商品17', '', 'sp17', '', null, null, '', '', '', null, '15', null, null, '', '', '', '', '0', '0', null, '63', '0');
+INSERT INTO `jsh_material` VALUES ('586', '17', '序列号商品测试', '', 'xlh123', '', null, null, '', '个', '', null, null, null, null, '', '', '', '', '1', '0', null, '63', '0');
+INSERT INTO `jsh_material` VALUES ('587', '17', '商品test1', '南通中远', '', 'test1', null, null, '', '个', '', null, null, null, null, '', '', '', '', '0', '0', null, '63', '0');
+INSERT INTO `jsh_material` VALUES ('588', '21', '商品200', 'fafda', 'weqwe', '300ml', null, null, '红色', '个', 'aaaabbbbb', null, null, null, null, '', '', '', '', '0', '0', null, '63', '0');
+INSERT INTO `jsh_material` VALUES ('619', null, '衣服', null, null, null, null, null, null, '件', null, '', null, null, null, '', null, null, null, '0', '0', null, '63', '0');
+
+-- ----------------------------
+-- Table structure for jsh_material_attribute
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_material_attribute`;
+CREATE TABLE `jsh_material_attribute` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT,
+  `attribute_name` varchar(50) DEFAULT NULL COMMENT '属性名',
+  `attribute_value` varchar(500) DEFAULT NULL COMMENT '属性值',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='产品属性表';
+
+-- ----------------------------
+-- Records of jsh_material_attribute
+-- ----------------------------
+INSERT INTO `jsh_material_attribute` VALUES ('1', '多颜色', '红色|橙色|黄色|绿色|蓝色|紫色', '63', '0');
+INSERT INTO `jsh_material_attribute` VALUES ('2', '多尺寸', 'S|M|L|XL|XXL|XXXL', '63', '0');
+INSERT INTO `jsh_material_attribute` VALUES ('3', '自定义1', '小米|华为', '63', '0');
+INSERT INTO `jsh_material_attribute` VALUES ('4', '自定义2', null, '63', '0');
+INSERT INTO `jsh_material_attribute` VALUES ('5', '自定义3', null, '63', '0');
+
+-- ----------------------------
+-- Table structure for jsh_material_category
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_material_category`;
+CREATE TABLE `jsh_material_category` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `name` varchar(50) DEFAULT NULL COMMENT '名称',
+  `category_level` smallint(6) DEFAULT NULL COMMENT '等级',
+  `parent_id` bigint(20) DEFAULT NULL COMMENT '上级id',
+  `sort` varchar(10) DEFAULT NULL COMMENT '显示顺序',
+  `serial_no` varchar(100) DEFAULT NULL COMMENT '编号',
+  `remark` varchar(1024) DEFAULT NULL COMMENT '备注',
+  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`),
+  KEY `FK3EE7F725237A77D8` (`parent_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 COMMENT='产品类型表';
+
+-- ----------------------------
+-- Records of jsh_material_category
+-- ----------------------------
+INSERT INTO `jsh_material_category` VALUES ('17', '目录1', null, null, '11', 'wae12', 'eee', '2019-04-10 22:18:12', '2021-02-17 15:11:35', '63', '0');
+INSERT INTO `jsh_material_category` VALUES ('21', '目录2', null, '17', '22', 'ada112', 'ddd', '2020-07-20 23:08:44', '2020-07-20 23:08:44', '63', '0');
+
+-- ----------------------------
+-- Table structure for jsh_material_current_stock
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_material_current_stock`;
+CREATE TABLE `jsh_material_current_stock` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `material_id` bigint(20) DEFAULT NULL COMMENT '产品id',
+  `depot_id` bigint(20) DEFAULT NULL COMMENT '仓库id',
+  `current_number` decimal(24,6) DEFAULT NULL COMMENT '当前库存数量',
+  `current_unit_price` decimal(24,6) DEFAULT NULL COMMENT '当前单价',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='产品当前库存';
+
+-- ----------------------------
+-- Records of jsh_material_current_stock
+-- ----------------------------
+INSERT INTO `jsh_material_current_stock` VALUES ('19', '588', '14', '7.000000', null, '63', '0');
+INSERT INTO `jsh_material_current_stock` VALUES ('20', '568', '14', '2.000000', null, '63', '0');
+INSERT INTO `jsh_material_current_stock` VALUES ('21', '568', '15', '1.000000', null, '63', '0');
+INSERT INTO `jsh_material_current_stock` VALUES ('22', '570', '14', '8.000000', null, '63', '0');
+INSERT INTO `jsh_material_current_stock` VALUES ('23', '619', '14', '5.000000', null, '63', '0');
+INSERT INTO `jsh_material_current_stock` VALUES ('24', '619', '15', '0.000000', null, '63', '0');
+INSERT INTO `jsh_material_current_stock` VALUES ('25', '619', '17', '0.000000', null, '63', '0');
+
+-- ----------------------------
+-- Table structure for jsh_material_extend
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_material_extend`;
+CREATE TABLE `jsh_material_extend` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `material_id` bigint(20) DEFAULT NULL COMMENT '商品id',
+  `bar_code` varchar(50) DEFAULT NULL COMMENT '商品条码',
+  `commodity_unit` varchar(50) DEFAULT NULL COMMENT '商品单位',
+  `sku` varchar(50) DEFAULT NULL COMMENT '多属性',
+  `purchase_decimal` decimal(24,6) DEFAULT NULL COMMENT '采购价格',
+  `commodity_decimal` decimal(24,6) DEFAULT NULL COMMENT '零售价格',
+  `wholesale_decimal` decimal(24,6) DEFAULT NULL COMMENT '销售价格',
+  `low_decimal` decimal(24,6) DEFAULT NULL COMMENT '最低售价',
+  `default_flag` varchar(1) DEFAULT '1' COMMENT '是否为默认单位,1是,0否',
+  `create_time` datetime DEFAULT NULL COMMENT '创建日期',
+  `create_serial` varchar(50) DEFAULT NULL COMMENT '创建人编码',
+  `update_serial` varchar(50) DEFAULT NULL COMMENT '更新人编码',
+  `update_time` bigint(20) DEFAULT NULL COMMENT '更新时间戳',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_Flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='产品价格扩展';
+
+-- ----------------------------
+-- Records of jsh_material_extend
+-- ----------------------------
+INSERT INTO `jsh_material_extend` VALUES ('1', '587', '1000', '个', null, '11.000000', '22.000000', '22.000000', '22.000000', '1', '2020-02-20 23:22:03', 'jsh', 'jsh', '1595263657135', '63', '0');
+INSERT INTO `jsh_material_extend` VALUES ('2', '568', '1001', '个', null, '11.000000', '15.000000', '15.000000', '15.000000', '1', '2020-02-20 23:44:57', 'jsh', 'jsh', '1595265439418', '63', '0');
+INSERT INTO `jsh_material_extend` VALUES ('3', '569', '1002', '只', null, '10.000000', '15.000000', '15.000000', '13.000000', '1', '2020-02-20 23:45:15', 'jsh', 'jsh', '1582213514731', '63', '0');
+INSERT INTO `jsh_material_extend` VALUES ('4', '570', '1003', '个', null, '8.000000', '15.000000', '14.000000', '13.000000', '1', '2020-02-20 23:45:37', 'jsh', 'jsh', '1587657604430', '63', '0');
+INSERT INTO `jsh_material_extend` VALUES ('5', '577', '1004', '个', null, '10.000000', '20.000000', '20.000000', '20.000000', '1', '2020-02-20 23:46:36', 'jsh', 'jsh', '1582213596494', '63', '0');
+INSERT INTO `jsh_material_extend` VALUES ('6', '577', '1005', '箱', null, '120.000000', '240.000000', '240.000000', '240.000000', '0', '2020-02-20 23:46:36', 'jsh', 'jsh', '1582213596497', '63', '0');
+INSERT INTO `jsh_material_extend` VALUES ('7', '579', '1006', '个', null, '20.000000', '30.000000', '30.000000', '30.000000', '1', '2020-02-20 23:47:04', 'jsh', 'jsh', '1595264270458', '63', '0');
+INSERT INTO `jsh_material_extend` VALUES ('8', '579', '1007', '箱', null, '240.000000', '360.000000', '360.000000', '360.000000', '0', '2020-02-20 23:47:04', 'jsh', 'jsh', '1595264270466', '63', '0');
+INSERT INTO `jsh_material_extend` VALUES ('9', '586', '1008', '个', null, '12.000000', '15.000000', '15.000000', '15.000000', '1', '2020-02-20 23:47:23', 'jsh', 'jsh', '1595254981896', '63', '0');
+INSERT INTO `jsh_material_extend` VALUES ('10', '588', '1009', '个', null, '11.000000', '22.000000', '22.000000', '22.000000', '1', '2020-07-21 00:58:15', 'jsh', 'jsh', '1614699799073', '63', '0');
+INSERT INTO `jsh_material_extend` VALUES ('36', '619', '1014', '件', '橙色,M', '12.000000', '15.000000', '14.000000', null, '1', '2021-07-28 01:00:20', 'jsh', 'jsh', '1627405220316', '63', '0');
+INSERT INTO `jsh_material_extend` VALUES ('37', '619', '1015', '件', '橙色,L', '12.000000', '15.000000', '14.000000', null, '0', '2021-07-28 01:00:20', 'jsh', 'jsh', '1627405220327', '63', '0');
+INSERT INTO `jsh_material_extend` VALUES ('38', '619', '1016', '件', '绿色,M', '12.000000', '15.000000', '14.000000', null, '0', '2021-07-28 01:00:20', 'jsh', 'jsh', '1627405220336', '63', '0');
+INSERT INTO `jsh_material_extend` VALUES ('39', '619', '1017', '件', '绿色,L', '12.000000', '15.000000', '14.000000', null, '0', '2021-07-28 01:00:20', 'jsh', 'jsh', '1627405220346', '63', '0');
+
+-- ----------------------------
+-- Table structure for jsh_material_initial_stock
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_material_initial_stock`;
+CREATE TABLE `jsh_material_initial_stock` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `material_id` bigint(20) DEFAULT NULL COMMENT '产品id',
+  `depot_id` bigint(20) DEFAULT NULL COMMENT '仓库id',
+  `number` decimal(24,6) DEFAULT NULL COMMENT '初始库存数量',
+  `low_safe_stock` decimal(24,6) DEFAULT NULL COMMENT '最低库存数量',
+  `high_safe_stock` decimal(24,6) DEFAULT NULL COMMENT '最高库存数量',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=205 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='产品初始库存';
+
+-- ----------------------------
+-- Records of jsh_material_initial_stock
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for jsh_material_property
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_material_property`;
+CREATE TABLE `jsh_material_property` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `native_name` varchar(50) DEFAULT NULL COMMENT '原始名称',
+  `enabled` bit(1) DEFAULT NULL COMMENT '是否启用',
+  `sort` varchar(10) DEFAULT NULL COMMENT '排序',
+  `another_name` varchar(50) DEFAULT NULL COMMENT '别名',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='产品扩展字段表';
+
+-- ----------------------------
+-- Records of jsh_material_property
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for jsh_msg
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_msg`;
+CREATE TABLE `jsh_msg` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `msg_title` varchar(100) DEFAULT NULL COMMENT '消息标题',
+  `msg_content` varchar(500) DEFAULT NULL COMMENT '消息内容',
+  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+  `type` varchar(20) DEFAULT NULL COMMENT '消息类型',
+  `user_id` bigint(20) DEFAULT NULL COMMENT '接收人id',
+  `status` varchar(1) DEFAULT NULL COMMENT '状态,1未读 2已读',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_Flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='消息表';
+
+-- ----------------------------
+-- Records of jsh_msg
+-- ----------------------------
+INSERT INTO `jsh_msg` VALUES ('2', '标题1', '内容1', '2019-09-10 00:11:39', '类型1', '63', '2', '63', '0');
+
+-- ----------------------------
+-- Table structure for jsh_organization
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_organization`;
+CREATE TABLE `jsh_organization` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `org_no` varchar(20) DEFAULT NULL COMMENT '机构编号',
+  `org_abr` varchar(20) DEFAULT NULL COMMENT '机构简称',
+  `parent_id` bigint(20) DEFAULT NULL COMMENT '父机构id',
+  `sort` varchar(20) DEFAULT NULL COMMENT '机构显示顺序',
+  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
+  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8 COMMENT='机构表';
+
+-- ----------------------------
+-- Records of jsh_organization
+-- ----------------------------
+INSERT INTO `jsh_organization` VALUES ('12', '001', '测试机构', null, '2', 'aaaa2', '2019-12-28 12:13:01', '2019-12-28 12:13:01', '63', '0');
+INSERT INTO `jsh_organization` VALUES ('13', 'jg1', '机构1', '12', '3', '', '2020-07-21 00:09:57', '2020-07-21 00:10:22', '63', '0');
+INSERT INTO `jsh_organization` VALUES ('14', '12', '机构2', '13', '4', '', '2020-07-21 22:45:42', '2021-02-15 22:18:30', '63', '0');
+
+-- ----------------------------
+-- Table structure for jsh_orga_user_rel
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_orga_user_rel`;
+CREATE TABLE `jsh_orga_user_rel` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `orga_id` bigint(20) NOT NULL COMMENT '机构id',
+  `user_id` bigint(20) NOT NULL COMMENT '用户id',
+  `user_blng_orga_dspl_seq` varchar(20) DEFAULT NULL COMMENT '用户在所属机构中显示顺序',
+  `delete_flag` char(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+  `creator` bigint(20) DEFAULT NULL COMMENT '创建人',
+  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+  `updater` bigint(20) DEFAULT NULL COMMENT '更新人',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COMMENT='机构用户关系表';
+
+-- ----------------------------
+-- Records of jsh_orga_user_rel
+-- ----------------------------
+INSERT INTO `jsh_orga_user_rel` VALUES ('10', '13', '131', '2', '0', '2019-12-28 12:13:15', '63', '2021-03-18 22:33:19', '63', '63');
+INSERT INTO `jsh_orga_user_rel` VALUES ('11', '12', '63', '15', '0', '2020-09-13 18:42:45', '63', '2021-03-19 00:11:40', '63', '63');
+INSERT INTO `jsh_orga_user_rel` VALUES ('12', '13', '135', '9', '0', '2021-03-18 22:24:25', '63', '2021-03-19 00:09:23', '63', '63');
+INSERT INTO `jsh_orga_user_rel` VALUES ('13', '13', '134', '1', '0', '2021-03-18 22:31:39', '63', '2021-03-18 23:59:55', '63', '63');
+INSERT INTO `jsh_orga_user_rel` VALUES ('14', '22', '133', '22', '0', '2021-03-18 22:31:44', '63', '2021-03-18 22:32:04', '63', '63');
+INSERT INTO `jsh_orga_user_rel` VALUES ('15', '12', '144', null, '0', '2021-03-19 00:00:40', '63', '2021-03-19 00:08:07', '63', '63');
+INSERT INTO `jsh_orga_user_rel` VALUES ('16', '12', '145', null, '0', '2021-03-19 00:03:44', '63', '2021-03-19 00:03:44', '63', '63');
+
+-- ----------------------------
+-- Table structure for jsh_person
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_person`;
+CREATE TABLE `jsh_person` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `type` varchar(20) DEFAULT NULL COMMENT '类型',
+  `name` varchar(50) DEFAULT NULL COMMENT '姓名',
+  `enabled` bit(1) DEFAULT NULL COMMENT '启用',
+  `sort` varchar(10) DEFAULT NULL COMMENT '排序',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8 COMMENT='经手人表';
+
+-- ----------------------------
+-- Records of jsh_person
+-- ----------------------------
+INSERT INTO `jsh_person` VALUES ('14', '销售员', '小李', '', null, '63', '0');
+INSERT INTO `jsh_person` VALUES ('15', '仓管员', '小军', '', null, '63', '0');
+INSERT INTO `jsh_person` VALUES ('16', '财务员', '小夏', '', null, '63', '0');
+INSERT INTO `jsh_person` VALUES ('17', '财务员', '小曹', '', null, '63', '0');
+
+-- ----------------------------
+-- Table structure for jsh_platform_config
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_platform_config`;
+CREATE TABLE `jsh_platform_config` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT,
+  `platform_key` varchar(100) DEFAULT NULL COMMENT '关键词',
+  `platform_key_info` varchar(100) DEFAULT NULL COMMENT '关键词名称',
+  `platform_value` varchar(200) DEFAULT NULL COMMENT '值',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COMMENT='平台参数';
+
+-- ----------------------------
+-- Records of jsh_platform_config
+-- ----------------------------
+INSERT INTO `jsh_platform_config` VALUES ('1', 'platform_name', '平台名称', '管伊佳ERP');
+INSERT INTO `jsh_platform_config` VALUES ('2', 'activation_code', '激活码', '');
+INSERT INTO `jsh_platform_config` VALUES ('3', 'platform_url', '官方网站', 'http://www.gyjerp.com/');
+INSERT INTO `jsh_platform_config` VALUES ('4', 'bill_print_flag', '三联打印启用标记', '0');
+INSERT INTO `jsh_platform_config` VALUES ('5', 'bill_print_url', '三联打印地址', '');
+INSERT INTO `jsh_platform_config` VALUES ('6', 'pay_fee_url', '租户续费地址', '');
+INSERT INTO `jsh_platform_config` VALUES ('7', 'register_flag', '注册启用标记', '1');
+INSERT INTO `jsh_platform_config` VALUES ('8', 'app_activation_code', '手机端激活码', '');
+INSERT INTO `jsh_platform_config` VALUES ('9', 'send_workflow_url', '发起流程地址', '');
+INSERT INTO `jsh_platform_config` VALUES ('10', 'weixinUrl', '微信url', '');
+INSERT INTO `jsh_platform_config` VALUES ('11', 'weixinAppid', '微信appid', '');
+INSERT INTO `jsh_platform_config` VALUES ('12', 'weixinSecret', '微信secret', '');
+INSERT INTO `jsh_platform_config` VALUES ('13', 'aliOss_endpoint', '阿里OSS-endpoint', '');
+INSERT INTO `jsh_platform_config` VALUES ('14', 'aliOss_accessKeyId', '阿里OSS-accessKeyId', '');
+INSERT INTO `jsh_platform_config` VALUES ('15', 'aliOss_accessKeySecret', '阿里OSS-accessKeySecret', '');
+INSERT INTO `jsh_platform_config` VALUES ('16', 'aliOss_bucketName', '阿里OSS-bucketName', '');
+INSERT INTO `jsh_platform_config` VALUES ('17', 'aliOss_linkUrl', '阿里OSS-linkUrl', '');
+INSERT INTO `jsh_platform_config` VALUES ('18', 'bill_excel_url', '单据Excel地址', '');
+
+-- ----------------------------
+-- Table structure for jsh_role
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_role`;
+CREATE TABLE `jsh_role` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `name` varchar(50) DEFAULT NULL COMMENT '名称',
+  `type` varchar(50) DEFAULT NULL COMMENT '类型',
+  `price_limit` varchar(50) DEFAULT NULL COMMENT '价格屏蔽 1-屏蔽采购价 2-屏蔽零售价 3-屏蔽销售价',
+  `value` varchar(200) DEFAULT NULL COMMENT '值',
+  `description` varchar(100) DEFAULT NULL COMMENT '描述',
+  `enabled` bit(1) DEFAULT NULL COMMENT '启用',
+  `sort` varchar(10) DEFAULT NULL COMMENT '排序',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8 COMMENT='角色表';
+
+-- ----------------------------
+-- Records of jsh_role
+-- ----------------------------
+INSERT INTO `jsh_role` VALUES ('4', '管理员', '全部数据', null, null, null, '', null, null, '0');
+INSERT INTO `jsh_role` VALUES ('10', '租户', '全部数据', null, null, '', '', null, null, '0');
+INSERT INTO `jsh_role` VALUES ('16', '销售经理', '全部数据', null, null, 'ddd', '', null, '63', '0');
+INSERT INTO `jsh_role` VALUES ('17', '销售代表', '个人数据', null, null, 'rrr', '', null, '63', '0');
+
+-- ----------------------------
+-- Table structure for jsh_sequence
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_sequence`;
+CREATE TABLE `jsh_sequence` (
+  `seq_name` varchar(50) NOT NULL COMMENT '序列名称',
+  `min_value` bigint(20) NOT NULL COMMENT '最小值',
+  `max_value` bigint(20) NOT NULL COMMENT '最大值',
+  `current_val` bigint(20) NOT NULL COMMENT '当前值',
+  `increment_val` int(11) NOT NULL DEFAULT '1' COMMENT '增长步数',
+  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
+  PRIMARY KEY (`seq_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='单据编号表';
+
+-- ----------------------------
+-- Records of jsh_sequence
+-- ----------------------------
+INSERT INTO `jsh_sequence` VALUES ('depot_number_seq', '1', '999999999999999999', '672', '1', '单据编号sequence');
+
+-- ----------------------------
+-- Table structure for jsh_serial_number
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_serial_number`;
+CREATE TABLE `jsh_serial_number` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `material_id` bigint(20) DEFAULT NULL COMMENT '产品表id',
+  `depot_id` bigint(20) DEFAULT NULL COMMENT '仓库id',
+  `serial_number` varchar(64) DEFAULT NULL COMMENT '序列号',
+  `is_sell` varchar(1) DEFAULT '0' COMMENT '是否卖出,0未卖出,1卖出',
+  `in_price` decimal(24,6) DEFAULT NULL COMMENT '入库单价',
+  `remark` varchar(1024) DEFAULT NULL COMMENT '备注',
+  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+  `creator` bigint(20) DEFAULT NULL COMMENT '创建人',
+  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+  `updater` bigint(20) DEFAULT NULL COMMENT '更新人',
+  `in_bill_no` varchar(50) DEFAULT NULL COMMENT '入库单号',
+  `out_bill_no` varchar(50) DEFAULT NULL COMMENT '出库单号',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=110 DEFAULT CHARSET=utf8 COMMENT='序列号表';
+
+-- ----------------------------
+-- Records of jsh_serial_number
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for jsh_supplier
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_supplier`;
+CREATE TABLE `jsh_supplier` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `supplier` varchar(255) NOT NULL COMMENT '供应商名称',
+  `contacts` varchar(100) DEFAULT NULL COMMENT '联系人',
+  `phone_num` varchar(30) DEFAULT NULL COMMENT '联系电话',
+  `email` varchar(50) DEFAULT NULL COMMENT '电子邮箱',
+  `description` varchar(500) DEFAULT NULL COMMENT '备注',
+  `isystem` tinyint(4) DEFAULT NULL COMMENT '是否系统自带 0==系统 1==非系统',
+  `type` varchar(20) DEFAULT NULL COMMENT '类型',
+  `enabled` bit(1) DEFAULT NULL COMMENT '启用',
+  `advance_in` decimal(24,6) DEFAULT '0.000000' COMMENT '预收款',
+  `begin_need_get` decimal(24,6) DEFAULT NULL COMMENT '期初应收',
+  `begin_need_pay` decimal(24,6) DEFAULT NULL COMMENT '期初应付',
+  `all_need_get` decimal(24,6) DEFAULT NULL COMMENT '累计应收',
+  `all_need_pay` decimal(24,6) DEFAULT NULL COMMENT '累计应付',
+  `fax` varchar(30) DEFAULT NULL COMMENT '传真',
+  `telephone` varchar(30) DEFAULT NULL COMMENT '手机',
+  `address` varchar(100) DEFAULT NULL COMMENT '地址',
+  `tax_num` varchar(50) DEFAULT NULL COMMENT '纳税人识别号',
+  `bank_name` varchar(50) DEFAULT NULL COMMENT '开户行',
+  `account_number` varchar(50) DEFAULT NULL COMMENT '账号',
+  `tax_rate` decimal(24,6) DEFAULT NULL COMMENT '税率',
+  `sort` varchar(10) DEFAULT NULL COMMENT '排序',
+  `creator` bigint(20) DEFAULT NULL COMMENT '操作员',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=90 DEFAULT CHARSET=utf8 COMMENT='供应商/客户信息表';
+
+-- ----------------------------
+-- Records of jsh_supplier
+-- ----------------------------
+INSERT INTO `jsh_supplier` VALUES ('57', '供应商1', '小军', '12345678', '', '', null, '供应商', '', '0.000000', '0.000000', '0.000000', '0.000000', '4.000000', '', '15000000000', '地址1', '', '', '', '12.000000', null, '63', '63', '0');
+INSERT INTO `jsh_supplier` VALUES ('58', '客户1', '小李', '12345678', '', '', null, '客户', '', '0.000000', '0.000000', '0.000000', '-100.000000', null, '', '', '', '', '', '', '12.000000', null, '63', '63', '0');
+INSERT INTO `jsh_supplier` VALUES ('59', '客户2', '小陈', '', '', '', null, '客户', '', '0.000000', '0.000000', '0.000000', '0.000000', null, '', '', '', '', '', '', null, null, '63', '63', '0');
+INSERT INTO `jsh_supplier` VALUES ('60', '12312666', '小曹', '', '', '', null, '会员', '', '970.000000', '0.000000', '0.000000', null, null, '', '13000000000', '', '', '', '', null, null, '63', '63', '0');
+INSERT INTO `jsh_supplier` VALUES ('68', '供应商3', '晓丽', '12345678', '', 'fasdfadf', null, '供应商', '', '0.000000', '0.000000', '0.000000', '0.000000', '-35.000000', '', '13000000000', 'aaaa', '1341324', '', '', '13.000000', null, '63', '63', '0');
+INSERT INTO `jsh_supplier` VALUES ('71', '客户3', '小周', '', '', '', null, '客户', '', '0.000000', '0.000000', '0.000000', '0.000000', null, '', '', '', '', '', '', null, null, '63', '63', '0');
+INSERT INTO `jsh_supplier` VALUES ('74', '供应商5', '小季', '77779999', '', '', null, '供应商', '', '0.000000', '0.000000', '5.000000', '0.000000', '5.000000', '', '15806283912', '', '', '', '', '3.000000', null, '63', '63', '0');
+
+-- ----------------------------
+-- Table structure for jsh_system_config
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_system_config`;
+CREATE TABLE `jsh_system_config` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `company_name` varchar(50) DEFAULT NULL COMMENT '公司名称',
+  `company_contacts` varchar(20) DEFAULT NULL COMMENT '公司联系人',
+  `company_address` varchar(50) DEFAULT NULL COMMENT '公司地址',
+  `company_tel` varchar(20) DEFAULT NULL COMMENT '公司电话',
+  `company_fax` varchar(20) DEFAULT NULL COMMENT '公司传真',
+  `company_post_code` varchar(20) DEFAULT NULL COMMENT '公司邮编',
+  `sale_agreement` varchar(500) DEFAULT NULL COMMENT '销售协议',
+  `depot_flag` varchar(1) DEFAULT '0' COMMENT '仓库启用标记,0未启用,1启用',
+  `customer_flag` varchar(1) DEFAULT '0' COMMENT '客户启用标记,0未启用,1启用',
+  `minus_stock_flag` varchar(1) DEFAULT '0' COMMENT '负库存启用标记,0未启用,1启用',
+  `purchase_by_sale_flag` varchar(1) DEFAULT '0' COMMENT '以销定购启用标记,0未启用,1启用',
+  `multi_level_approval_flag` varchar(1) DEFAULT '0' COMMENT '多级审核启用标记,0未启用,1启用',
+  `multi_bill_type` varchar(200) DEFAULT NULL COMMENT '流程类型,可多选',
+  `force_approval_flag` varchar(1) DEFAULT '0' COMMENT '强审核启用标记,0未启用,1启用',
+  `update_unit_price_flag` varchar(1) DEFAULT '1' COMMENT '更新单价启用标记,0未启用,1启用',
+  `over_link_bill_flag` varchar(1) DEFAULT '0' COMMENT '超出关联单据启用标记,0未启用,1启用',
+  `in_out_manage_flag` varchar(1) DEFAULT '0' COMMENT '出入库管理启用标记,0未启用,1启用',
+  `multi_account_flag` varchar(1) DEFAULT '0' COMMENT '多账户启用标记,0未启用,1启用',
+  `move_avg_price_flag` varchar(1) DEFAULT '0' COMMENT '移动平均价启用标记,0未启用,1启用',
+  `audit_print_flag` varchar(1) DEFAULT '0' COMMENT '先审核后打印启用标记,0未启用,1启用',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='系统参数';
+
+-- ----------------------------
+-- Records of jsh_system_config
+-- ----------------------------
+INSERT INTO `jsh_system_config` VALUES ('11', '公司test', '小李', '地址1', '12345678', null, null, '注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。', '0', '0', '1', '0', '0', '', '0', '1', '0', '0', '0', '0', '0', '63', '0');
+
+-- ----------------------------
+-- Table structure for jsh_tenant
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_tenant`;
+CREATE TABLE `jsh_tenant` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '用户id',
+  `login_name` varchar(255) DEFAULT NULL COMMENT '登录名',
+  `user_num_limit` int(11) DEFAULT NULL COMMENT '用户数量限制',
+  `type` varchar(1) DEFAULT '0' COMMENT '租户类型,0免费租户,1付费租户',
+  `enabled` bit(1) DEFAULT b'1' COMMENT '启用 0-禁用  1-启用',
+  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+  `expire_time` datetime DEFAULT NULL COMMENT '到期时间',
+  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COMMENT='租户';
+
+-- ----------------------------
+-- Records of jsh_tenant
+-- ----------------------------
+INSERT INTO `jsh_tenant` VALUES ('13', '63', 'jsh', '2000', '1', '', '2021-02-17 23:19:17', '2099-02-17 23:19:17', null, '0');
+
+-- ----------------------------
+-- Table structure for jsh_unit
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_unit`;
+CREATE TABLE `jsh_unit` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `name` varchar(50) DEFAULT NULL COMMENT '名称,支持多单位',
+  `basic_unit` varchar(50) DEFAULT NULL COMMENT '基础单位',
+  `other_unit` varchar(50) DEFAULT NULL COMMENT '副单位',
+  `other_unit_two` varchar(50) DEFAULT NULL COMMENT '副单位2',
+  `other_unit_three` varchar(50) DEFAULT NULL COMMENT '副单位3',
+  `ratio` decimal(24,3) DEFAULT NULL COMMENT '比例',
+  `ratio_two` decimal(24,3) DEFAULT NULL COMMENT '比例2',
+  `ratio_three` decimal(24,3) DEFAULT NULL COMMENT '比例3',
+  `enabled` bit(1) DEFAULT NULL COMMENT '启用',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8 COMMENT='多单位表';
+
+-- ----------------------------
+-- Records of jsh_unit
+-- ----------------------------
+INSERT INTO `jsh_unit` VALUES ('15', '个/(箱=12个)', '个', '箱', null, null, '12.000', null, null, '', '63', '0');
+INSERT INTO `jsh_unit` VALUES ('19', '个/(盒=15个)', '个', '盒', null, null, '15.000', null, null, '', '63', '0');
+INSERT INTO `jsh_unit` VALUES ('20', '盒/(箱=8盒)', '盒', '箱', null, null, '8.000', null, null, '', '63', '0');
+INSERT INTO `jsh_unit` VALUES ('21', '瓶/(箱=12瓶)', '瓶', '箱', null, null, '12.000', null, null, '', '63', '0');
+
+-- ----------------------------
+-- Table structure for jsh_user
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_user`;
+CREATE TABLE `jsh_user` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `username` varchar(255) NOT NULL COMMENT '用户姓名--例如张三',
+  `login_name` varchar(255) NOT NULL COMMENT '登录用户名',
+  `password` varchar(50) DEFAULT NULL COMMENT '登陆密码',
+  `leader_flag` varchar(1) DEFAULT '0' COMMENT '是否经理,0否,1是',
+  `position` varchar(200) DEFAULT NULL COMMENT '职位',
+  `department` varchar(255) DEFAULT NULL COMMENT '所属部门',
+  `email` varchar(100) DEFAULT NULL COMMENT '电子邮箱',
+  `phonenum` varchar(100) DEFAULT NULL COMMENT '手机号码',
+  `ismanager` tinyint(4) NOT NULL DEFAULT '1' COMMENT '是否为管理者 0==管理者 1==员工',
+  `isystem` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否系统自带数据 ',
+  `status` tinyint(4) DEFAULT '0' COMMENT '状态,0正常,2封禁',
+  `description` varchar(500) DEFAULT NULL COMMENT '用户描述信息',
+  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
+  `weixin_open_id` varchar(100) DEFAULT NULL COMMENT '微信绑定',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=146 DEFAULT CHARSET=utf8 COMMENT='用户表';
+
+-- ----------------------------
+-- Records of jsh_user
+-- ----------------------------
+INSERT INTO `jsh_user` VALUES ('63', '测试用户', 'jsh', 'e10adc3949ba59abbe56e057f20f883e', '0', '主管', null, '666666@qq.com', '1123123123132', '1', '1', '0', '', null, null, '63', '0');
+INSERT INTO `jsh_user` VALUES ('120', '管理员', 'admin', 'e10adc3949ba59abbe56e057f20f883e', '0', null, null, null, null, '1', '0', '0', null, null, null, '0', '0');
+INSERT INTO `jsh_user` VALUES ('131', 'test123', 'test123', 'e10adc3949ba59abbe56e057f20f883e', '0', '总监', null, '7777777@qq.com', '', '1', '0', '0', '', null, null, '63', '0');
+
+-- ----------------------------
+-- Table structure for jsh_user_business
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_user_business`;
+CREATE TABLE `jsh_user_business` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `type` varchar(50) DEFAULT NULL COMMENT '类别',
+  `key_id` varchar(50) DEFAULT NULL COMMENT '主id',
+  `value` varchar(10000) DEFAULT NULL COMMENT '值',
+  `btn_str` varchar(2000) DEFAULT NULL COMMENT '按钮权限',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=83 DEFAULT CHARSET=utf8 COMMENT='用户/角色/模块关系表';
+
+-- ----------------------------
+-- Records of jsh_user_business
+-- ----------------------------
+INSERT INTO `jsh_user_business` VALUES ('5', 'RoleFunctions', '4', '[210][225][211][241][33][199][242][38][41][200][201][239][202][40][232][233][197][44][203][204][205][206][212][246][198][207][259][208][209][226][227][248][228][229][59][235][237][244][22][21][23][220][247][25][24][217][218][26][194][195][31][13][1][14][243][15][234][16][18][236][245][258][261][32]', '[{\"funId\":13,\"btnStr\":\"1\"},{\"funId\":14,\"btnStr\":\"1\"},{\"funId\":243,\"btnStr\":\"1\"},{\"funId\":234,\"btnStr\":\"1\"},{\"funId\":16,\"btnStr\":\"1\"},{\"funId\":18,\"btnStr\":\"1\"},{\"funId\":236,\"btnStr\":\"1\"},{\"funId\":245,\"btnStr\":\"1\"},{\"funId\":22,\"btnStr\":\"1\"},{\"funId\":23,\"btnStr\":\"1,3\"},{\"funId\":220,\"btnStr\":\"1\"},{\"funId\":247,\"btnStr\":\"1\"},{\"funId\":25,\"btnStr\":\"1,3\"},{\"funId\":217,\"btnStr\":\"1,3\"},{\"funId\":218,\"btnStr\":\"1,3\"},{\"funId\":26,\"btnStr\":\"1\"},{\"funId\":194,\"btnStr\":\"1\"},{\"funId\":195,\"btnStr\":\"1\"},{\"funId\":31,\"btnStr\":\"1\"},{\"funId\":261,\"btnStr\":\"1,2,7,3\"},{\"funId\":241,\"btnStr\":\"1,2,7,3\"},{\"funId\":33,\"btnStr\":\"1,2,7,3\"},{\"funId\":199,\"btnStr\":\"1,2,7,3\"},{\"funId\":242,\"btnStr\":\"1,2,7,3\"},{\"funId\":41,\"btnStr\":\"1,2,7,3\"},{\"funId\":200,\"btnStr\":\"1,2,7,3\"},{\"funId\":210,\"btnStr\":\"1,2,7,3\"},{\"funId\":211,\"btnStr\":\"1,2,7,3\"},{\"funId\":197,\"btnStr\":\"1,7,2,3\"},{\"funId\":203,\"btnStr\":\"1,7,2,3\"},{\"funId\":204,\"btnStr\":\"1,7,2,3\"},{\"funId\":205,\"btnStr\":\"1,7,2,3\"},{\"funId\":206,\"btnStr\":\"1,2,7,3\"},{\"funId\":212,\"btnStr\":\"1,7,2,3\"},{\"funId\":201,\"btnStr\":\"1,2,7,3\"},{\"funId\":202,\"btnStr\":\"1,2,7,3\"},{\"funId\":40,\"btnStr\":\"1,2,7,3\"},{\"funId\":232,\"btnStr\":\"1,2,7,3\"},{\"funId\":233,\"btnStr\":\"1,2,7,3\"}]', null, '0');
+INSERT INTO `jsh_user_business` VALUES ('6', 'RoleFunctions', '5', '[22][23][25][26][194][195][31][33][200][201][41][199][202]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('7', 'RoleFunctions', '6', '[22][23][220][240][25][217][218][26][194][195][31][59][207][208][209][226][227][228][229][235][237][210][211][241][33][199][242][41][200][201][202][40][232][233][197][203][204][205][206][212]', '[{\"funId\":\"33\",\"btnStr\":\"4\"}]', null, '0');
+INSERT INTO `jsh_user_business` VALUES ('9', 'RoleFunctions', '7', '[168][13][12][16][14][15][189][18][19][132]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('10', 'RoleFunctions', '8', '[168][13][12][16][14][15][189][18][19][132][22][23][25][26][27][157][158][155][156][125][31][127][126][128][33][34][35][36][37][39][40][41][42][43][46][47][48][49][50][51][52][53][54][55][56][57][192][59][60][61][62][63][65][66][68][69][70][71][73][74][76][77][79][191][81][82][83][85][89][161][86][176][165][160][28][134][91][92][29][94][95][97][104][99][100][101][102][105][107][108][110][111][113][114][116][117][118][120][121][131][135][123][122][20][130][146][147][138][148][149][153][140][145][184][152][143][170][171][169][166][167][163][164][172][173][179][178][181][182][183][186][187][247]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('11', 'RoleFunctions', '9', '[168][13][12][16][14][15][189][18][19][132][22][23][25][26][27][157][158][155][156][125][31][127][126][128][33][34][35][36][37][39][40][41][42][43][46][47][48][49][50][51][52][53][54][55][56][57][192][59][60][61][62][63][65][66][68][69][70][71][73][74][76][77][79][191][81][82][83][85][89][161][86][176][165][160][28][134][91][92][29][94][95][97][104][99][100][101][102][105][107][108][110][111][113][114][116][117][118][120][121][131][135][123][122][20][130][146][147][138][148][149][153][140][145][184][152][143][170][171][169][166][167][163][164][172][173][179][178][181][182][183][186][187][188]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('12', 'UserRole', '1', '[5]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('13', 'UserRole', '2', '[6][7]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('14', 'UserDepot', '2', '[1][2][6][7]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('15', 'UserDepot', '1', '[1][2][5][6][7][10][12][14][15][17]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('16', 'UserRole', '63', '[10]', null, '63', '0');
+INSERT INTO `jsh_user_business` VALUES ('18', 'UserDepot', '63', '[14][15]', null, '63', '0');
+INSERT INTO `jsh_user_business` VALUES ('19', 'UserDepot', '5', '[6][45][46][50]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('20', 'UserRole', '5', '[5]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('21', 'UserRole', '64', '[13]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('22', 'UserDepot', '64', '[1]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('23', 'UserRole', '65', '[5]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('24', 'UserDepot', '65', '[1]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('25', 'UserCustomer', '64', '[5][2]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('26', 'UserCustomer', '65', '[6]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('27', 'UserCustomer', '63', '[58]', null, '63', '0');
+INSERT INTO `jsh_user_business` VALUES ('28', 'UserDepot', '96', '[7]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('29', 'UserRole', '96', '[6]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('30', 'UserRole', '113', '[10]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('32', 'RoleFunctions', '10', '[210][225][211][261][32][241][33][199][242][38][41][200][201][239][202][40][232][233][197][44][203][204][205][206][212][246][198][207][259][208][209][226][227][248][228][229][59][235][237][244][22][21][23][220][247][25][24][217][218][26][194][195][31][13][14][243][15][234][236]', '[{\"funId\":13,\"btnStr\":\"1\"},{\"funId\":14,\"btnStr\":\"1\"},{\"funId\":243,\"btnStr\":\"1\"},{\"funId\":234,\"btnStr\":\"1\"},{\"funId\":236,\"btnStr\":\"1\"},{\"funId\":22,\"btnStr\":\"1\"},{\"funId\":23,\"btnStr\":\"1,3\"},{\"funId\":220,\"btnStr\":\"1\"},{\"funId\":247,\"btnStr\":\"1\"},{\"funId\":25,\"btnStr\":\"1,3\"},{\"funId\":217,\"btnStr\":\"1,3\"},{\"funId\":218,\"btnStr\":\"1,3\"},{\"funId\":26,\"btnStr\":\"1\"},{\"funId\":194,\"btnStr\":\"1\"},{\"funId\":195,\"btnStr\":\"1\"},{\"funId\":31,\"btnStr\":\"1\"},{\"funId\":261,\"btnStr\":\"1,2,7,3\"},{\"funId\":241,\"btnStr\":\"1,2,7,3\"},{\"funId\":33,\"btnStr\":\"1,2,7,3\"},{\"funId\":199,\"btnStr\":\"1,7,2,3\"},{\"funId\":242,\"btnStr\":\"1,2,7,3\"},{\"funId\":41,\"btnStr\":\"1,2,7,3\"},{\"funId\":200,\"btnStr\":\"1,2,7,3\"},{\"funId\":210,\"btnStr\":\"1,2,7,3\"},{\"funId\":211,\"btnStr\":\"1,2,7,3\"},{\"funId\":197,\"btnStr\":\"1,2,7,3\"},{\"funId\":203,\"btnStr\":\"1,7,2,3\"},{\"funId\":204,\"btnStr\":\"1,7,2,3\"},{\"funId\":205,\"btnStr\":\"1,2,7,3\"},{\"funId\":206,\"btnStr\":\"1,7,2,3\"},{\"funId\":212,\"btnStr\":\"1,2,7,3\"},{\"funId\":201,\"btnStr\":\"1,2,7,3\"},{\"funId\":202,\"btnStr\":\"1,2,7,3\"},{\"funId\":40,\"btnStr\":\"1,2,7,3\"},{\"funId\":232,\"btnStr\":\"1,2,7,3\"},{\"funId\":233,\"btnStr\":\"1,2,7,3\"}]', null, '0');
+INSERT INTO `jsh_user_business` VALUES ('34', 'UserRole', '115', '[10]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('35', 'UserRole', '117', '[10]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('36', 'UserDepot', '117', '[8][9]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('37', 'UserCustomer', '117', '[52]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('38', 'UserRole', '120', '[4]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('41', 'RoleFunctions', '12', '', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('48', 'RoleFunctions', '13', '[59][207][208][209][226][227][228][229][235][237][210][211][241][33][199][242][41][200]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('51', 'UserRole', '74', '[10]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('52', 'UserDepot', '121', '[13]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('54', 'UserDepot', '115', '[13]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('56', 'UserCustomer', '115', '[56]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('57', 'UserCustomer', '121', '[56]', null, null, '0');
+INSERT INTO `jsh_user_business` VALUES ('67', 'UserRole', '131', '[17]', null, '63', '0');
+INSERT INTO `jsh_user_business` VALUES ('68', 'RoleFunctions', '16', '[210]', null, '63', '0');
+INSERT INTO `jsh_user_business` VALUES ('69', 'RoleFunctions', '17', '[210][225][211][241][32][33][199][242][38][41][200][201][239][202][40][232][233][197][44][203][204][205][206][212]', '[{\"funId\":\"241\",\"btnStr\":\"1,2\"},{\"funId\":\"33\",\"btnStr\":\"1,2\"},{\"funId\":\"199\",\"btnStr\":\"1,2\"},{\"funId\":\"242\",\"btnStr\":\"1,2\"},{\"funId\":\"41\",\"btnStr\":\"1,2\"},{\"funId\":\"200\",\"btnStr\":\"1,2\"},{\"funId\":\"210\",\"btnStr\":\"1,2\"},{\"funId\":\"211\",\"btnStr\":\"1,2\"},{\"funId\":\"197\",\"btnStr\":\"1\"},{\"funId\":\"203\",\"btnStr\":\"1\"},{\"funId\":\"204\",\"btnStr\":\"1\"},{\"funId\":\"205\",\"btnStr\":\"1\"},{\"funId\":\"206\",\"btnStr\":\"1\"},{\"funId\":\"212\",\"btnStr\":\"1\"},{\"funId\":\"201\",\"btnStr\":\"1,2\"},{\"funId\":\"202\",\"btnStr\":\"1,2\"},{\"funId\":\"40\",\"btnStr\":\"1,2\"},{\"funId\":\"232\",\"btnStr\":\"1,2\"},{\"funId\":\"233\",\"btnStr\":\"1,2\"}]', '63', '0');
diff --git a/jshERP-boot/dist/jshERP/docs/数据库更新记录-首次安装请勿使用.txt b/jshERP-boot/dist/jshERP/docs/数据库更新记录-首次安装请勿使用.txt
new file mode 100644
index 000000000..099f85501
--- /dev/null
+++ b/jshERP-boot/dist/jshERP/docs/数据库更新记录-首次安装请勿使用.txt
@@ -0,0 +1,1653 @@
+---------------------------------------------------------------------------------------------------
+****注意第一次初始化数据库不需要执行下面的内容,该文档会随着代码更新持续更新,方便大家手动升级数据库****
+****注意第一次初始化数据库不需要执行下面的内容,该文档会随着代码更新持续更新,方便大家手动升级数据库****
+****注意第一次初始化数据库不需要执行下面的内容,该文档会随着代码更新持续更新,方便大家手动升级数据库****
+---------------------------------------------------------------------------------------------------
+
+
+-- ----------------------------
+-- 时间:2019年1月21日
+-- version:1.0.0
+-- 此次更新添加序列号功能
+-- 特别提醒:之后的sql都是在之前基础上迭代,可以对已存在的系统进行数据保留更新
+-- ----------------------------
+
+-- ----------------------------
+-- 添加序列号表
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_serial_number`;
+CREATE TABLE `jsh_serial_number` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `material_Id` bigint(20) DEFAULT NULL COMMENT '产品表id',
+  `serial_Number` varchar(64) DEFAULT NULL COMMENT '序列号',
+  `is_Sell` bit(1) DEFAULT 0 COMMENT '是否卖出,0未卖出,1卖出',
+  `remark` varchar(1024) DEFAULT NULL COMMENT '备注',
+  `delete_Flag` bit(1) DEFAULT 0 COMMENT '删除标记,0未删除,1删除',
+  `create_Time` datetime DEFAULT NULL COMMENT '创建时间',
+  `creator` bigint(20) DEFAULT NULL COMMENT '创建人',
+  `update_Time` datetime DEFAULT NULL COMMENT '更新时间',
+  `updater` bigint(20) DEFAULT NULL COMMENT '更新人',
+  PRIMARY KEY (`Id`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='序列号表';
+
+-- ----------------------------
+-- 产品表新增字段是否启用序列号
+-- ----------------------------
+alter table jsh_material add enableSerialNumber bit(1) DEFAULT 0 COMMENT '是否开启序列号,0否,1是';
+-- ----------------------------
+-- 时间:2019年1月24日
+-- version:1.0.1
+-- 此次更新添加序列号菜单
+-- 特别提醒:之后的sql都是在之前基础上迭代,可以对已存在的系统进行数据保留更新
+-- ----------------------------
+-- ----------------------------
+-- 添加序列号菜单
+-- ----------------------------
+delete from `jsh_functions` where Name='序列号';
+INSERT INTO `jsh_functions`(`Number`, `Name`, `PNumber`, `URL`, `State`, `Sort`, `Enabled`, `Type`, `PushBtn`) VALUES ('010104', '序列号', '0101', '../manage/serialNumber.html', b'0', '0246', b'1', '电脑版', '');
+-- ----------------------------
+-- 删除单据主表供应商id字段对应外键约束
+-- ----------------------------
+ALTER TABLE jsh_depot_head DROP FOREIGN KEY jsh_depot_head_ibfk_3;
+-- ----------------------------
+-- 序列号表添加单据主表id字段,用于跟踪序列号流向
+-- ----------------------------
+alter table jsh_serial_number add depothead_Id bigint(20) DEFAULT null COMMENT '单据主表id,用于跟踪序列号流向';
+-- ----------------------------
+-- 修改商品表enableSerialNumber字段类型为varchar(1)
+-- ----------------------------
+alter table jsh_material change enableSerialNumber enableSerialNumber varchar(1) DEFAULT '0' COMMENT '是否开启序列号,0否,1是';
+-- ----------------------------
+-- 修改序列号表is_Sell字段类型为varchar(1)
+-- 修改序列号表delete_Flag字段类型为varchar(1)
+-- ----------------------------
+alter table jsh_serial_number change is_Sell is_Sell varchar(1) DEFAULT '0' COMMENT '是否卖出,0未卖出,1卖出';
+alter table jsh_serial_number change delete_Flag delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- ----------------------------
+-- 删除单据子表单据主表id字段对应外键约束
+-- ----------------------------
+ALTER TABLE jsh_depot_item DROP FOREIGN KEY jsh_depot_item_ibfk_1;
+-- ----------------------------
+-- 时间:2019年2月1日
+-- version:1.0.2
+-- 此次更新添加sequence表,用于获取一个唯一的数值
+-- 特别提醒:之后的sql都是在之前基础上迭代,可以对已存在的系统进行数据保留更新
+-- ----------------------------
+-- ----------------------------
+-- 添加表tbl_sequence
+-- ----------------------------
+DROP TABLE IF EXISTS `tbl_sequence`;
+CREATE TABLE tbl_sequence (
+  seq_name VARCHAR(50) NOT NULL COMMENT '序列名称',
+  min_value bigint(20) NOT NULL COMMENT '最小值',
+  max_value bigint(20) NOT NULL COMMENT '最大值',
+  current_val bigint(20) NOT NULL COMMENT '当前值',
+  increment_val INT DEFAULT '1' NOT NULL COMMENT '增长步数',
+  remark VARCHAR(500) DEFAULT null  COMMENT '备注',
+  PRIMARY KEY (seq_name)
+  )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='sequence表';
+
+-- ----------------------------
+-- 添加表单据编号sequence
+-- 插入数据前判断,防止数据重复插入
+-- ----------------------------
+insert into tbl_sequence (seq_name, min_value, max_value, current_val, increment_val,remark)
+select 'depot_number_seq', 1, 999999999999999999, 1, 1,'单据编号sequence' from dual where not exists
+(select * from tbl_sequence where  seq_name='depot_number_seq');
+-- ----------------------------
+-- 创建function _nextval() 用于获取当前序列号
+-- ----------------------------
+DROP FUNCTION IF EXISTS `_nextval`;
+DELIMITER ;;
+CREATE FUNCTION `_nextval`(name varchar(50)) RETURNS mediumtext CHARSET utf8
+begin
+declare _cur bigint;
+declare _maxvalue bigint;  -- 接收最大值
+declare _increment int; -- 接收增长步数
+set _increment = (select increment_val from tbl_sequence where seq_name = name);
+set _maxvalue = (select max_value from tbl_sequence where seq_name = name);
+set _cur = (select current_val from tbl_sequence where seq_name = name for update);
+update tbl_sequence                      -- 更新当前值
+ set current_val = _cur + increment_val
+ where seq_name = name ;
+if(_cur + _increment >= _maxvalue) then  -- 判断是都达到最大值
+      update tbl_sequence
+        set current_val = minvalue
+        where seq_name = name ;
+end if;
+return _cur;
+end
+;;
+DELIMITER ;
+
+-- ----------------------------
+-- 时间:2019年2月18日
+-- version:1.0.3
+-- 此次更新修改产品类型表jsh_materialcategory,添加一些字段
+-- 特别提醒:之后的sql都是在之前基础上迭代,可以对已存在的系统进行数据保留更新
+-- ----------------------------
+-- ----------------------------
+-- 产品类型表添加字段sort,显示顺序
+-- ----------------------------
+alter table jsh_materialcategory add sort varchar(10) DEFAULT null COMMENT '显示顺序';
+-- ----------------------------
+-- 产品类型表添加字段status,状态,0系统默认,1启用,2删除
+-- ----------------------------
+alter table jsh_materialcategory add status varchar(1) DEFAULT '0' COMMENT '状态,0系统默认,1启用,2删除';
+-- ----------------------------
+-- 产品类型表添加字段serial_no,编号
+-- ----------------------------
+alter table jsh_materialcategory add serial_no varchar(100) DEFAULT null COMMENT '编号';
+-- ----------------------------
+-- 产品类型表添加字段remark,备注
+-- ----------------------------
+alter table jsh_materialcategory add remark varchar(1024) DEFAULT null COMMENT '备注';
+-- ----------------------------
+-- 产品类型表添加字段create_time,创建时间
+-- ----------------------------
+alter table jsh_materialcategory add create_time datetime DEFAULT null COMMENT '创建时间';
+-- ----------------------------
+-- 产品类型表添加字段creator,创建人
+-- ----------------------------
+alter table jsh_materialcategory add creator bigint(20) DEFAULT null COMMENT '创建人';
+-- ----------------------------
+-- 产品类型表添加字段update_time,更新时间
+-- ----------------------------
+alter table jsh_materialcategory add update_time datetime DEFAULT null COMMENT '更新时间';
+-- ----------------------------
+-- 产品类型表添加字段updater,更新人
+-- ----------------------------
+alter table jsh_materialcategory add updater bigint(20) DEFAULT null COMMENT '更新人';
+
+-- ----------------------------
+-- 去掉jsh_materialcategory外键
+-- ----------------------------
+ALTER TABLE jsh_materialcategory DROP FOREIGN KEY FK3EE7F725237A77D8;
+
+-- ----------------------------
+-- 修改根目录父节点id为-1
+-- 设置根目录编号为1
+-- ----------------------------
+update jsh_materialcategory set ParentId='-1' where id='1';
+
+-- ----------------------------
+-- 删除礼品卡管理、礼品充值、礼品销售、礼品卡统计的功能数据
+-- ----------------------------
+delete from jsh_functions where id in (213,214,215,216);
+
+-- ----------------------------
+-- 新增采购订单、销售订单的功能数据
+-- 主键自增长,直接指定主键插入数据的方式可能会和本地数据冲突
+-- 插入数据前判断,防止数据重复插入
+-- ----------------------------
+insert into `jsh_functions`(`Number`, `Name`, `PNumber`, `URL`, `State`, `Sort`, `Enabled`, `Type`, `PushBtn`)
+select '050202', '采购订单', '0502', '../materials/purchase_orders_list.html', b'0', '0335',b'1', '电脑版', '' from dual where not exists
+(select * from jsh_functions where  Number='050202' and PNumber='0502');
+insert into `jsh_functions`(`Number`, `Name`, `PNumber`, `URL`, `State`, `Sort`, `Enabled`, `Type`, `PushBtn`)
+select '060301', '销售订单', '0603', '../materials/sale_orders_list.html', b'0', '0392', b'1', '电脑版', '' from dual where not exists
+(select * from jsh_functions where  Number='060301' and PNumber='0603');
+
+-- ----------------------------
+-- 改管理员的功能权限
+-- ----------------------------
+update jsh_userbusiness SET Type = 'RoleFunctions', KeyId = '4', 
+Value = '[13][12][16][14][15][234][236][22][23][220][240][25][217][218][26][194][195][31][59][207][208][209][226][227][228][229][235][237][210][211][242][33][199][243][41][200][201][202][40][232][233][197][203][204][205][206][212]' 
+where Id = 5;
+
+-- ----------------------------
+-- 时间:2019年2月25日
+-- version:1.0.4
+-- 此次更新仓库添加负责人信息,负责人信息从用户表获取
+-- 特别提醒:之后的sql都是在之前基础上迭代,可以对已存在的系统进行数据保留更新
+-- ----------------------------
+-- ----------------------------
+-- 仓库表添加字段principal,负责人
+-- ----------------------------
+alter table jsh_depot add principal bigint(20) DEFAULT null COMMENT '负责人';
+
+-- ----------------------------
+-- 时间:2019年3月6日
+-- version:1.0.5
+-- 此次更新
+-- 1、添加机构表
+-- 2、添加机构用户关系表
+-- 特别提醒:之后的sql都是在之前基础上迭代,可以对已存在的系统进行数据保留更新
+-- ----------------------------
+-- ----------------------------
+-- 添加机构表
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_organization`;
+CREATE TABLE `jsh_organization` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `org_no` varchar(20) DEFAULT NULL COMMENT '机构编号',
+  `org_full_name` varchar(500) DEFAULT NULL COMMENT '机构全称',
+  `org_abr` varchar(20) DEFAULT NULL COMMENT '机构简称',
+  `org_tpcd` varchar(9) DEFAULT NULL COMMENT '机构类型',
+  `org_stcd` char(1) DEFAULT NULL COMMENT '机构状态,1未营业、2正常营业、3暂停营业、4终止营业、5已除名',
+  `org_parent_no` varchar(20) DEFAULT NULL COMMENT '机构父节点编号',
+  `sort` varchar(20) DEFAULT NULL COMMENT '机构显示顺序',
+  remark VARCHAR(500) DEFAULT null  COMMENT '备注',
+  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+  `creator` bigint(20) DEFAULT NULL COMMENT '创建人',
+  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+  `updater` bigint(20) DEFAULT NULL COMMENT '更新人',
+  `org_create_time` datetime DEFAULT NULL COMMENT '机构创建时间',
+  `org_stop_time` datetime DEFAULT NULL COMMENT '机构停运时间',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='机构表';
+-- ----------------------------
+-- 添加机构用户关系表
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_orga_user_rel`;
+CREATE TABLE `jsh_orga_user_rel` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `orga_id` bigint(20) NOT NULL  COMMENT '机构id',
+  `user_id` bigint(20) NOT NULL COMMENT '用户id',
+  `user_blng_orga_dspl_seq` varchar(20) DEFAULT NULL COMMENT '用户在所属机构中显示顺序',
+  `delete_flag` char(1) DEFAULT 0 COMMENT '删除标记,0未删除,1删除',
+  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+  `creator` bigint(20) DEFAULT NULL COMMENT '创建人',
+  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+  `updater` bigint(20) DEFAULT NULL COMMENT '更新人',
+   PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='机构用户关系表';
+-- ----------------------------
+-- 添加机构管理菜单
+-- 插入数据前判断,防止数据重复插入
+-- ----------------------------
+INSERT INTO `jsh_functions`(`Number`, `Name`, `PNumber`, `URL`, `State`, `Sort`, `Enabled`, `Type`, `PushBtn`)
+select '000108', '机构管理', '0001', '../manage/organization.html', b'1', '0139', b'1', '电脑版', '' from dual where not exists
+(select * from jsh_functions where  Number='000108' and PNumber='0001');
+-- ----------------------------
+-- 添加根机构
+-- 插入时判断对应数据是否存在,防止多次执行产生重复数据
+-- ----------------------------
+INSERT INTO jsh_organization (org_no, org_full_name, org_abr, org_tpcd, org_stcd, org_parent_no, sort, remark, create_time, creator, update_time, updater, org_create_time, org_stop_time)
+select '01', '根机构', '根机构', NULL, '2', '-1', '1', '根机构,初始化存在', NULL, NULL, NULL, NULL, NULL, NULL from dual where not exists
+(select * from jsh_organization where org_no='01' and org_abr='根机构' and org_parent_no='-1'  );
+-- ----------------------------
+-- 时间:2019年3月9日
+-- version:1.0.6
+-- 此次更新
+-- 整改jsh_systemconfig表的字段
+-- ----------------------------
+alter table jsh_systemconfig drop type;
+alter table jsh_systemconfig drop name;
+alter table jsh_systemconfig drop value;
+alter table jsh_systemconfig drop description;
+alter table jsh_systemconfig add company_name varchar(50) DEFAULT null COMMENT '公司名称';
+alter table jsh_systemconfig add company_contacts varchar(20) DEFAULT null COMMENT '公司联系人';
+alter table jsh_systemconfig add company_address varchar(50) DEFAULT null COMMENT '公司地址';
+alter table jsh_systemconfig add company_tel varchar(20) DEFAULT null COMMENT '公司电话';
+alter table jsh_systemconfig add company_fax varchar(20) DEFAULT null COMMENT '公司传真';
+alter table jsh_systemconfig add company_post_code varchar(20) DEFAULT null COMMENT '公司邮编';
+delete from jsh_systemconfig;
+insert into jsh_systemconfig (`company_name`, `company_contacts`, `company_address`, `company_tel`, `company_fax`, `company_post_code`) values("南通jshERP公司","张三","南通市通州区某某路","0513-10101010","0513-18181818","226300");
+
+-- ----------------------------
+-- 时间:2019年3月9日
+-- version:1.0.7
+-- 改管理员的功能权限
+-- ----------------------------
+update jsh_userbusiness SET
+Value = '[13][12][16][243][14][15][234][236][22][23][220][240][25][217][218][26][194][195][31][59][207][208][209][226][227][228][229][235][237][210][211][241][33][199][242][41][200][201][202][40][232][233][197][203][204][205][206][212]'
+where Id = 5;
+-- ----------------------------
+-- 给订单功能加审核和反审核的功能按钮权限
+-- ----------------------------
+update jsh_functions SET PushBtn = '3' where Number = '050202' and PNumber = '0502';
+update jsh_functions SET PushBtn = '3' where Number = '060301' and PNumber = '0603';
+-- ----------------------------
+-- 改管理员的按钮权限
+-- ----------------------------
+update jsh_userbusiness SET
+BtnStr = '[{"funId":"25","btnStr":"1"},{"funId":"217","btnStr":"1"},{"funId":"218","btnStr":"1"},{"funId":"241","btnStr":"3"},{"funId":"242","btnStr":"3"}]'
+where Id = 5;
+
+-- ----------------------------
+-- 时间:2019年3月10日
+-- version:1.0.8
+-- 改状态字段的类型,增加关联单据字段
+-- ----------------------------
+alter table jsh_depot_head change Status Status varchar(1) DEFAULT '0' COMMENT '状态,0未审核、1已审核、2已转采购|销售';
+alter table jsh_depot_head add `LinkNumber` varchar(50) DEFAULT null COMMENT '关联订单号';
+-- ----------------------------
+-- 时间:2019年3月12日
+-- version:1.0.9
+-- 此次更新
+-- 1、根据本地用户表中现有部门生成机构表数据,同时重建机构和用户的关联关系
+-- 特别提醒:之后的sql都是在之前基础上迭代,可以对已存在的系统进行数据保留更新
+-- ----------------------------
+DROP FUNCTION IF EXISTS `_buildOrgAndOrgUserRel`;
+DELIMITER ;;
+CREATE FUNCTION `_buildOrgAndOrgUserRel` (name varchar(50)) RETURNS mediumtext CHARSET utf8
+begin
+
+declare _org_full_name varchar(500); -- 机构全称
+declare _org_abr varchar(20);  -- 机构简称
+declare _sort int default 0;
+declare _success_msg varchar(50) default '重建机构及机构用户关系成功'; -- 机构全称
+ -- 遍历数据结束标志
+declare done int DEFAULT 0;
+-- 获取用户表中唯一的部门信息列表
+declare orgCur cursor for select distinct department from jsh_user where department!='' and department is not null;
+
+ -- 将结束标志绑定到游标
+declare continue handler for not found set done = 1;
+  -- 循环部门信息列表在机构表插入数据
+  -- 打开游标
+  open orgCur;
+  -- 开始循环
+  read_loop: loop
+    -- 提取游标里的数据,这里只有一个,多个的话也一样;
+    fetch orgCur into _org_full_name;
+    -- 声明结束的时候
+    if done=1 then
+      leave read_loop;
+    end if;
+    -- 这里做你想做的循环的事件
+    if length(_org_full_name)<=20 then
+			set _org_abr=_org_full_name;
+		else
+			set _org_abr=left(_org_full_name,20);
+	end if;
+	set _sort=_sort+1;
+	insert into jsh_organization (org_full_name, org_abr,  org_stcd, org_parent_no, sort, remark)
+	values (_org_full_name,_org_abr, '1', '01', _sort, '机构表初始化');
+		begin
+			declare _userId bigint;
+			declare _orgId bigint;
+			 -- 遍历数据结束标志
+			declare ogrUserRelDone int DEFAULT 0;
+			-- 根据用户表和机构表部门关联关系,重建用户和机构关联关系
+			declare ogrUserRelCur cursor for select user.id as userId,org.id as orgId from jsh_user user,jsh_organization org
+			where 1=1  and user.department=org.org_full_name and user.department =_org_full_name;
+			 -- 将结束标志绑定到游标
+			declare continue handler for not found set ogrUserRelDone = 1;
+			-- 打开游标
+			  open ogrUserRelCur;
+			  -- 开始循环
+			  rel_read_loop: loop
+			    -- 提取游标里的数据,这里只有一个,多个的话也一样;
+			    fetch ogrUserRelCur into _userId,_orgId;
+			    -- 声明结束的时候
+			    if ogrUserRelDone=1 then
+			      leave rel_read_loop;
+			    end if;
+				insert into `jsh_orga_user_rel`(`orga_id`, `user_id`, `delete_flag`) VALUES (_orgId,_userId,'0');
+
+			  end loop rel_read_loop;
+		  -- 关闭游标
+		  close ogrUserRelCur;
+		end;
+
+  end loop read_loop;
+  -- 关闭游标
+  close orgCur;
+
+-- 清空用户表中的部门信息
+update jsh_user set department=null;
+
+return _success_msg;
+end
+;;
+DELIMITER ;
+-- ----------------------------
+-- 初始化机构数据,重建机构用户关系
+-- ----------------------------
+select _buildOrgAndOrgUserRel('初始化机构数据,重建机构用户关系') from dual;
+-- ----------------------------
+-- 删除一次性函数
+-- ----------------------------
+DROP FUNCTION _buildOrgAndOrgUserRel;
+
+-- ----------------------------
+-- 时间:2019年3月13日
+-- version:1.0.10
+-- 此次更新
+-- 1、设置用户表的用户状态status默认值为0
+-- 特别提醒:之后的sql都是在之前基础上迭代,可以对已存在的系统进行数据保留更新
+-- ----------------------------
+
+alter table jsh_user change Status Status tinyint(4) DEFAULT '0' COMMENT '状态,0:正常,1:删除,2封禁';
+update jsh_user set status='0' where status is null;
+-- ----------------------------
+-- 设置根目录编号为1
+-- ----------------------------
+update jsh_materialcategory set serial_no='1' where id='1';
+
+-- ----------------------------
+-- 时间:2019年3月18日
+-- version:1.0.11
+-- 此次更新
+-- 1、批量增加大部分表的tenant_id租户字段
+-- 特别提醒:之后的sql都是在之前基础上迭代,可以对已存在的系统进行数据保留更新
+-- ----------------------------
+alter table jsh_account add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_accounthead add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_accountitem add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_asset add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_assetcategory add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_assetname add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_depot add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_depot_head add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_depot_item add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_inoutitem add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_log add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_material add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_materialcategory add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_orga_user_rel add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_organization add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_person add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_role add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_serial_number add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_supplier add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_systemconfig add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_unit add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+alter table jsh_user add tenant_id bigint(20) DEFAULT null COMMENT '租户id';
+
+-- ----------------------------
+-- 时间:2019年3月27日
+-- version:1.0.12
+-- 此次更新
+-- 添加删除标记,将物理删除修改为逻辑删除
+-- 特别提醒:之后的sql都是在之前基础上迭代,可以对已存在的系统进行数据保留更新
+-- ----------------------------
+-- 角色表	jsh_role
+alter table jsh_role add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 用户 角色 模块关系表	jsh_userbusiness
+alter table jsh_userbusiness add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 功能模块表	jsh_functions
+alter table jsh_functions add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 应用表	jsh_app
+alter table jsh_app add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 产品表	jsh_material
+alter table jsh_material add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 产品扩展字段表	jsh_materialproperty
+alter table jsh_materialproperty add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 经手人表	jsh_person
+alter table jsh_person add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 供应商 客户信息表	jsh_supplier
+alter table jsh_supplier add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 系统参数表	jsh_systemconfig
+alter table jsh_systemconfig add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 多单位表	jsh_unit
+alter table jsh_unit add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 仓库表	jsh_depot
+alter table jsh_depot add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 账户信息表	jsh_account
+alter table jsh_account add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 财务主表	jsh_accounthead
+alter table jsh_accounthead add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 财务子表	jsh_accountitem
+alter table jsh_accountitem add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 资产记录表	jsh_asset
+alter table jsh_asset add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 资产类型表	jsh_assetcategory
+alter table jsh_assetcategory add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 资产信息表	jsh_assetname
+alter table jsh_assetname add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 单据主表	jsh_depot_head
+alter table jsh_depot_head add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 单据子表	jsh_depot_item
+alter table jsh_depot_item add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+-- 收支项目表	jsh_inoutitem
+alter table jsh_inoutitem add  delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+
+-- ----------------------------
+-- 时间:2019年4月11日
+-- version:1.0.13
+-- 此次更新
+-- 删除所有外键
+-- 特别提醒:之后的sql都是在之前基础上迭代,可以对已存在的系统进行数据保留更新
+-- ----------------------------
+
+-- ----------------------------
+-- 删除财务主表对应外键约束
+-- ----------------------------
+ALTER TABLE jsh_accounthead DROP FOREIGN KEY FK9F4C0D8DAAE50527;
+ALTER TABLE jsh_accounthead DROP FOREIGN KEY FK9F4C0D8DB610FC06;
+ALTER TABLE jsh_accounthead DROP FOREIGN KEY FK9F4C0D8DC4170B37;
+-- ----------------------------
+-- 删除财务子表对应外键约束
+-- ----------------------------
+ALTER TABLE jsh_accountitem DROP FOREIGN KEY FK9F4CBAC0AAE50527;
+ALTER TABLE jsh_accountitem DROP FOREIGN KEY FK9F4CBAC0C5FE6007;
+ALTER TABLE jsh_accountitem DROP FOREIGN KEY FK9F4CBAC0D203EDC5;
+-- ----------------------------
+-- 删除资产记录表对应外键约束
+-- ----------------------------
+ALTER TABLE jsh_asset DROP FOREIGN KEY FK353690ED27D23FE4;
+ALTER TABLE jsh_asset DROP FOREIGN KEY FK353690ED3E226853;
+ALTER TABLE jsh_asset DROP FOREIGN KEY FK353690ED61FE182C;
+ALTER TABLE jsh_asset DROP FOREIGN KEY FK353690ED9B6CB285;
+ALTER TABLE jsh_asset DROP FOREIGN KEY FK353690EDAD45B659;
+-- ----------------------------
+-- 删除资产信息表对应外键约束
+-- ----------------------------
+ALTER TABLE jsh_assetname DROP FOREIGN KEY FKA4ADCCF866BC8AD3;
+-- ----------------------------
+-- 删除单据主表对应外键约束
+-- ----------------------------
+ALTER TABLE jsh_depot_head DROP FOREIGN KEY FK2A80F214AAE50527;
+ALTER TABLE jsh_depot_head DROP FOREIGN KEY jsh_depot_head_ibfk_1;
+ALTER TABLE jsh_depot_head DROP FOREIGN KEY jsh_depot_head_ibfk_4;
+ALTER TABLE jsh_depot_head DROP FOREIGN KEY jsh_depot_head_ibfk_5;
+-- ----------------------------
+-- 删除单据子表对应外键约束
+-- ----------------------------
+ALTER TABLE jsh_depot_item DROP FOREIGN KEY FK2A819F47729F5392;
+ALTER TABLE jsh_depot_item DROP FOREIGN KEY FK2A819F479485B3F5;
+ALTER TABLE jsh_depot_item DROP FOREIGN KEY jsh_depot_item_ibfk_2;
+-- ----------------------------
+-- 删除操作日志表对应外键约束
+-- ----------------------------
+ALTER TABLE jsh_log DROP FOREIGN KEY FKF2696AA13E226853;
+-- ----------------------------
+-- 删除产品表对应外键约束
+-- ----------------------------
+ALTER TABLE jsh_material DROP FOREIGN KEY FK675951272AB6672C;
+ALTER TABLE jsh_material DROP FOREIGN KEY jsh_material_ibfk_1;
+
+-- ----------------------------
+-- 时间:2019年4月30日
+-- version:1.0.14
+-- 此次更新
+-- 增加仓库默认功能 增加库存预警功能
+-- 特别提醒:之后的sql都是在之前基础上迭代,可以对已存在的系统进行数据保留更新
+-- ----------------------------
+alter table jsh_depot add  is_default bit(1) DEFAULT NULL COMMENT '是否默认';
+insert into `jsh_functions`(`Number`, `Name`, `PNumber`, `URL`, `State`, `Sort`, `Enabled`, `Type`, `PushBtn`)
+select '030112', '库存预警', '0301', '../reports/stock_warning_report.html', b'0', '0670', b'1', '电脑版', '' from dual where not exists
+(select * from jsh_functions where  Number='030112' and PNumber='0301');
+
+-- ----------------------------
+-- 改管理员的功能权限
+-- ----------------------------
+update jsh_userbusiness SET Type = 'RoleFunctions', KeyId = '4',
+Value = '[13][12][16][243][14][15][234][236][22][23][220][240][25][217][218][26][194][195][31][59][207][208][209][226][227][228][229][235][237][244][210][211][241][33][199][242][41][200][201][202][40][232][233][197][203][204][205][206][212]'
+where Id = 5;
+
+-- ----------------------------
+-- 给app的功能增加代号 在功能表增加个人信息
+-- ----------------------------
+update jsh_app SET Number = '02' where name='个人信息';
+insert into `jsh_functions`(`Number`, `Name`, `PNumber`, `URL`, `State`, `Sort`, `Enabled`, `Type`, `PushBtn`)
+select '02', '个人信息', '0', '', b'1', '0005', b'1', '电脑版', '' from dual where not exists
+(select * from jsh_functions where  Number='02' and PNumber='0');
+
+-- ----------------------------
+-- 时间:2019年6月23日
+-- 增加新手引导模块
+-- ----------------------------
+INSERT INTO `jsh_app` VALUES ('28', '09', '新手引导', 'app', 'userHelp.png', '../user/userHelp.html', '1000', '500', '\0', '\0', '\0', 'dock', '210', '', '', '0');
+INSERT INTO `jsh_functions` VALUES ('246', '09', '新手引导', '0', '', '', '0115', '', '电脑版', '', '0');
+update jsh_userbusiness SET Value = '[3][6][7][22][23][24][25][26][27][28]'
+where Type = 'RoleAPP' and (KeyId = '4' or KeyId = '10');
+update jsh_userbusiness SET
+Value = '[245][13][12][16][243][14][15][234][236][22][23][220][240][25][217][218][26][194][195][31][59][207][208][209][226][227][228][229][235][237][244][210][211][241][33][199][242][41][200][201][202][40][232][233][197][203][204][205][206][212][246]'
+where Type = 'RoleFunctions' and KeyId = '4';
+update jsh_userbusiness SET
+Value = '[245][13][243][14][15][234][22][23][220][240][25][217][218][26][194][195][31][59][207][208][209][226][227][228][229][235][237][244][210][211][241][33][199][242][41][200][201][202][40][232][233][197][203][204][205][206][212][246]'
+where Type = 'RoleFunctions' and KeyId = '10';
+
+
+-- ----------------------------
+-- 时间:2019年6月26日
+-- 删除多余的资产相关表
+-- ----------------------------
+drop table jsh_asset;
+drop table jsh_assetcategory;
+drop table jsh_assetname;
+
+
+-- ----------------------------
+-- 时间:2019年6月27日
+-- 增加租户表
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_tenant`;
+CREATE TABLE `jsh_tenant` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '用户id',
+  `login_name` varchar(255) DEFAULT NULL COMMENT '登录名',
+  `user_num_limit` int(11) DEFAULT NULL COMMENT '用户数量限制',
+  `bills_num_limit` int(11) DEFAULT NULL COMMENT '单据数量限制',
+  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=81 DEFAULT CHARSET=utf8 COMMENT='租户';
+
+-- ----------------------------
+-- 时间:2019年6月27日
+-- 给租户表增加数据
+-- ----------------------------
+INSERT INTO `jsh_tenant` VALUES ('13', '63', 'jsh', '20', '2000', null);
+
+-- ----------------------------
+-- 时间:2019年7月10日
+-- 删除函数
+-- ----------------------------
+DROP FUNCTION IF EXISTS `_nextval`;
+
+-- ----------------------------
+-- 时间:2019年8月1日
+-- 增加仓库和客户的启用标记
+-- ----------------------------
+alter table jsh_systemconfig add  customer_flag varchar(1) DEFAULT '0' COMMENT '客户启用标记,0未启用,1启用' after company_post_code;
+alter table jsh_systemconfig add  depot_flag varchar(1) DEFAULT '0' COMMENT '仓库启用标记,0未启用,1启用' after company_post_code;
+
+-- ----------------------------
+-- 时间:2019年9月13日
+-- 给功能表增加icon字段
+-- ----------------------------
+alter table jsh_functions add  icon varchar(50) DEFAULT NULL COMMENT '图标' after PushBtn;
+
+-- ----------------------------
+-- 时间:2019年9月13日
+-- 创建消息表
+-- ----------------------------
+CREATE TABLE `jsh_msg` (
+`id`  bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键' ,
+`msg_title`  varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '消息标题' ,
+`msg_content`  varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '消息内容' ,
+`create_time`  datetime NULL DEFAULT NULL COMMENT '创建时间' ,
+`type`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '消息类型' ,
+`status`  varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '状态,1未读 2已读' ,
+`tenant_id`  bigint(20) NULL DEFAULT NULL COMMENT '租户id' ,
+`delete_Flag`  varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除' ,
+PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB
+DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
+COMMENT='消息表'
+AUTO_INCREMENT=2
+ROW_FORMAT=COMPACT
+;
+
+-- ----------------------------
+-- 时间:2019年9月13日
+-- 删除表 jsh_app  databasechangelog databasechangeloglock
+-- ----------------------------
+drop table databasechangelog;
+drop table databasechangeloglock;
+drop table jsh_app;
+
+-- ----------------------------
+-- 时间:2019年11月28日
+-- 单据编号表-改表名
+-- ----------------------------
+ALTER TABLE tbl_sequence RENAME TO jsh_sequence;
+
+-- ----------------------------
+-- 增加产品初始库存表
+-- 时间 2019-11-28
+-- by jishenghua
+-- ----------------------------
+CREATE TABLE `jsh_material_stock` (
+`id`  bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键' ,
+`material_id`  bigint(20) NULL DEFAULT NULL COMMENT '产品id' ,
+`depot_id`  bigint(20) NULL DEFAULT NULL COMMENT '仓库id' ,
+`number`  decimal(24,6) NULL DEFAULT NULL COMMENT '初始库存数量' ,
+`tenant_id`  bigint(20) NULL DEFAULT NULL COMMENT '租户id' ,
+`delete_fag`  varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除' ,
+PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB
+DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
+COMMENT='产品初始库存'
+AUTO_INCREMENT=48
+ROW_FORMAT=COMPACT
+;
+
+-- ----------------------------
+-- 增加商品扩展信息表
+-- 时间 2020-02-15
+-- by jishenghua
+-- ----------------------------
+CREATE TABLE `jsh_material_extend` (
+`id`  bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键' ,
+`material_id`  bigint(20) NULL DEFAULT NULL COMMENT '商品id' ,
+`bar_code`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商品条码' ,
+`commodity_unit`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商品单位' ,
+`purchase_decimal`  decimal(24,6) NULL DEFAULT NULL COMMENT '采购价格' ,
+`commodity_decimal`  decimal(24,6) NULL DEFAULT NULL COMMENT '零售价格' ,
+`wholesale_decimal`  decimal(24,6) NULL DEFAULT NULL COMMENT '销售价格' ,
+`low_decimal`  decimal(24,6) NULL DEFAULT NULL COMMENT '最低售价' ,
+`create_time`  datetime NULL DEFAULT NULL COMMENT '创建日期' ,
+`create_serial`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人编码' ,
+`update_serial`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人编码' ,
+`update_time`  bigint(20) NULL DEFAULT NULL COMMENT '更新时间戳' ,
+`tenant_id`  bigint(20) NULL DEFAULT NULL COMMENT '租户id' ,
+`delete_Flag`  varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除' ,
+PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB
+DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
+COMMENT='产品价格扩展'
+AUTO_INCREMENT=1
+ROW_FORMAT=COMPACT
+;
+
+-- ----------------------------
+-- 给单据明细表增加商品扩展id
+-- 时间 2020-02-16
+-- by jishenghua
+-- ----------------------------
+alter table jsh_depot_item add material_extend_id bigint(20) DEFAULT NULL COMMENT '商品扩展id' after MaterialId;
+
+-- ----------------------------
+-- 给单据主表删除字段ProjectId 和 AllocationProjectId
+-- 时间 2020-02-18
+-- by jishenghua
+-- ----------------------------
+alter table jsh_depot_head drop column ProjectId;
+alter table jsh_depot_head drop column AllocationProjectId;
+
+-- ----------------------------
+-- 给计量单位表增加基础单位、副单位、比例三个字段
+-- 时间 2020-03-24
+-- by jishenghua
+-- ----------------------------
+alter table jsh_unit add basic_unit varchar(50) DEFAULT NULL COMMENT '基础单位' after UName;
+alter table jsh_unit add other_unit varchar(50) DEFAULT NULL COMMENT '副单位' after basic_unit;
+alter table jsh_unit add ratio INT DEFAULT NULL COMMENT '比例' after other_unit;
+
+-- ----------------------------
+-- 时间:2020年03月31日
+-- by jishenghua
+-- 给用户表增加 登录用户名 字段
+-- ----------------------------
+alter table jsh_user change loginame login_name varchar(255) NOT NULL COMMENT '登录用户名';
+
+-- ----------------------------
+-- 时间:2020年04月12日
+-- by jishenghua
+-- 给功能表增加插件管理
+-- ----------------------------
+INSERT INTO `jsh_functions` VALUES (245,'000107', '插件管理', '0001', '/pages/manage/plugin.html', '\0', '0170', '', '电脑版', '', 'icon-notebook', '0');
+
+-- ----------------------------
+-- 时间:2020年04月25日
+-- by jishenghua
+-- 给商品扩展表增加 是否默认基础单位 字段
+-- ----------------------------
+alter table jsh_material_extend add default_flag VARCHAR(1) DEFAULT 1 COMMENT '是否为默认单位,1是,0否' after low_decimal;
+
+-- ----------------------------
+-- 时间:2020年05月04日
+-- by jishenghua
+-- 删除商品表的多价格相关的字段
+-- ----------------------------
+alter table jsh_material drop Packing;
+alter table jsh_material drop RetailPrice;
+alter table jsh_material drop LowPrice;
+alter table jsh_material drop PresetPriceOne;
+alter table jsh_material drop PresetPriceTwo;
+alter table jsh_material drop FirstOutUnit;
+alter table jsh_material drop FirstInUnit;
+alter table jsh_material drop PriceStrategy;
+
+-- ----------------------------
+-- 时间:2020年6月18日
+-- 增加负库存的启用标记
+-- ----------------------------
+alter table jsh_systemconfig add minus_stock_flag varchar(1) DEFAULT '0' COMMENT '负库存启用标记,0未启用,1启用' after customer_flag;
+
+-- ----------------------------
+-- 时间 2020年07月13日
+-- by jishenghua
+-- 增加产品当前库存表
+-- ----------------------------
+CREATE TABLE `jsh_material_current_stock` (
+`id`  bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键' ,
+`material_id`  bigint(20) NULL DEFAULT NULL COMMENT '产品id' ,
+`depot_id`  bigint(20) NULL DEFAULT NULL COMMENT '仓库id' ,
+`current_number`  decimal(24,6) NULL DEFAULT NULL COMMENT '当前库存数量' ,
+`tenant_id`  bigint(20) NULL DEFAULT NULL COMMENT '租户id' ,
+`delete_flag`  varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除' ,
+PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB
+DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
+COMMENT='产品当前库存'
+AUTO_INCREMENT=1
+ROW_FORMAT=COMPACT
+;
+
+-- --------------------------------------------------------
+-- 时间 2020年07月13日
+-- by jishenghua
+-- 修改jsh_material_stock的表名为jsh_material_initial_stock
+-- 修改jsh_material_initial_stock表的删除字段
+-- --------------------------------------------------------
+alter table jsh_material_stock rename to jsh_material_initial_stock;
+alter table jsh_material_initial_stock change delete_fag delete_flag varchar(1) NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+
+-- --------------------------------------------------------
+-- 时间 2020年07月20日
+-- by jishenghua
+-- 优化表和字段的格式
+-- --------------------------------------------------------
+alter table jsh_log change userID user_id bigint(20) DEFAULT NULL COMMENT '用户id';
+alter table jsh_log change clientIP client_ip varchar(50) DEFAULT NULL COMMENT '客户端IP';
+alter table jsh_log change createtime create_time datetime DEFAULT NULL COMMENT '创建时间';
+alter table jsh_log change contentdetails content varchar(1000) DEFAULT NULL COMMENT '详情';
+alter table jsh_log drop column remark;
+
+alter table jsh_materialcategory rename to jsh_material_category;
+alter table jsh_material_category change Id id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键';
+alter table jsh_material_category change Name name varchar(50) DEFAULT NULL COMMENT '名称';
+alter table jsh_material_category change CategoryLevel category_level smallint(6) DEFAULT NULL COMMENT '等级';
+alter table jsh_material_category change ParentId parent_id bigint(20) DEFAULT NULL COMMENT '上级id';
+
+alter table jsh_materialproperty rename to jsh_material_property;
+alter table jsh_material_property change nativeName native_name varchar(50) DEFAULT NULL COMMENT '原始名称';
+alter table jsh_material_property change anotherName another_name varchar(50) DEFAULT NULL COMMENT '别名';
+alter table jsh_material_property change delete_Flag delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+
+alter table jsh_role change Id id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键';
+alter table jsh_role change Name name varchar(50) DEFAULT NULL COMMENT '名称';
+alter table jsh_role change delete_Flag delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+
+alter table jsh_person change Id id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键';
+alter table jsh_person change Type type varchar(20) DEFAULT NULL COMMENT '类型';
+alter table jsh_person change Name name varchar(50) DEFAULT NULL COMMENT '姓名';
+alter table jsh_person change delete_Flag delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+
+alter table jsh_systemconfig rename to jsh_system_config;
+alter table jsh_system_config change delete_Flag delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+
+alter table jsh_account change Id id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键';
+alter table jsh_account change Name name varchar(50) DEFAULT NULL COMMENT '名称';
+alter table jsh_account change SerialNo serial_no varchar(50) DEFAULT NULL COMMENT '编号';
+alter table jsh_account change InitialAmount initial_amount decimal(24,6) DEFAULT NULL COMMENT '期初金额';
+alter table jsh_account change CurrentAmount current_amount decimal(24,6) DEFAULT NULL COMMENT '当前余额';
+alter table jsh_account change Remark remark varchar(100) DEFAULT NULL COMMENT '备注';
+alter table jsh_account change IsDefault is_default bit(1) DEFAULT NULL COMMENT '是否默认';
+alter table jsh_account change delete_Flag delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+
+alter table jsh_functions rename to jsh_function;
+alter table jsh_function change Id id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键';
+alter table jsh_function change Number number varchar(50) DEFAULT NULL COMMENT '编号';
+alter table jsh_function change Name name varchar(50) DEFAULT NULL COMMENT '名称';
+alter table jsh_function change PNumber parent_number varchar(50) DEFAULT NULL COMMENT '上级编号';
+alter table jsh_function change URL url varchar(100) DEFAULT NULL COMMENT '链接';
+alter table jsh_function change State state bit(1) DEFAULT NULL COMMENT '收缩';
+alter table jsh_function change Sort sort varchar(50) DEFAULT NULL COMMENT '排序';
+alter table jsh_function change Enabled enabled bit(1) DEFAULT NULL COMMENT '启用';
+alter table jsh_function change Type type varchar(50) DEFAULT NULL COMMENT '类型';
+alter table jsh_function change PushBtn push_btn varchar(50) DEFAULT NULL COMMENT '功能按钮';
+alter table jsh_function change delete_Flag delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+
+alter table jsh_userbusiness rename to jsh_user_business;
+alter table jsh_user_business change Id id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键';
+alter table jsh_user_business change Type type varchar(50) DEFAULT NULL COMMENT '类别';
+alter table jsh_user_business change KeyId key_id varchar(50) DEFAULT NULL COMMENT '主id';
+alter table jsh_user_business change Value value varchar(10000) DEFAULT NULL COMMENT '值';
+alter table jsh_user_business change BtnStr btn_str varchar(2000) DEFAULT NULL COMMENT '按钮权限';
+alter table jsh_user_business change delete_Flag delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+
+alter table jsh_unit change UName name varchar(50) DEFAULT NULL COMMENT '名称,支持多单位';
+alter table jsh_unit change delete_Flag delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+
+alter table jsh_inoutitem rename to jsh_in_out_item;
+alter table jsh_in_out_item change Id id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键';
+alter table jsh_in_out_item change Name name varchar(50) DEFAULT NULL COMMENT '名称';
+alter table jsh_in_out_item change Type type varchar(20) DEFAULT NULL COMMENT '类型';
+alter table jsh_in_out_item change Remark remark varchar(100) DEFAULT NULL COMMENT '备注';
+alter table jsh_in_out_item change delete_Flag delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+
+alter table jsh_serial_number change material_Id material_id bigint(20) DEFAULT NULL COMMENT '产品表id';
+alter table jsh_serial_number change serial_Number serial_number varchar(64) DEFAULT NULL COMMENT '序列号';
+alter table jsh_serial_number change is_Sell is_sell varchar(1) DEFAULT '0' COMMENT '是否卖出,0未卖出,1卖出';
+alter table jsh_serial_number change delete_Flag delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+alter table jsh_serial_number change create_Time create_time datetime DEFAULT NULL COMMENT '创建时间';
+alter table jsh_serial_number change update_Time update_time datetime DEFAULT NULL COMMENT '更新时间';
+alter table jsh_serial_number change depothead_Id depot_head_id bigint(20) DEFAULT NULL COMMENT '单据主表id,用于跟踪序列号流向';
+
+alter table jsh_supplier change phonenum phone_num varchar(30) DEFAULT NULL COMMENT '联系电话';
+alter table jsh_supplier change AdvanceIn advance_in decimal(24,6) DEFAULT '0.000000' COMMENT '预收款';
+alter table jsh_supplier change BeginNeedGet begin_need_get decimal(24,6) DEFAULT NULL COMMENT '期初应收';
+alter table jsh_supplier change BeginNeedPay begin_need_pay decimal(24,6) DEFAULT NULL COMMENT '期初应付';
+alter table jsh_supplier change AllNeedGet all_need_get decimal(24,6) DEFAULT NULL COMMENT '累计应收';
+alter table jsh_supplier change AllNeedPay all_need_pay decimal(24,6) DEFAULT NULL COMMENT '累计应付';
+alter table jsh_supplier change taxNum tax_num varchar(50) DEFAULT NULL COMMENT '纳税人识别号';
+alter table jsh_supplier change bankName bank_name varchar(50) DEFAULT NULL COMMENT '开户行';
+alter table jsh_supplier change accountNumber account_number varchar(50) DEFAULT NULL COMMENT '账号';
+alter table jsh_supplier change taxRate tax_rate decimal(24,6) DEFAULT NULL COMMENT '税率';
+alter table jsh_supplier change delete_Flag delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+
+alter table jsh_accounthead rename to jsh_account_head;
+alter table jsh_account_head change Id id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键';
+alter table jsh_account_head change Type type varchar(50) DEFAULT NULL COMMENT '类型(支出/收入/收款/付款/转账)';
+alter table jsh_account_head change OrganId organ_id bigint(20) DEFAULT NULL COMMENT '单位Id(收款/付款单位)';
+alter table jsh_account_head change HandsPersonId hands_person_id bigint(20) DEFAULT NULL COMMENT '经手人id';
+alter table jsh_account_head change ChangeAmount change_amount decimal(24,6) DEFAULT NULL COMMENT '变动金额(优惠/收款/付款/实付)';
+alter table jsh_account_head change TotalPrice total_price decimal(24,6) DEFAULT NULL COMMENT '合计金额';
+alter table jsh_account_head change AccountId account_id bigint(20) DEFAULT NULL COMMENT '账户(收款/付款)';
+alter table jsh_account_head change BillNo bill_no varchar(50) DEFAULT NULL COMMENT '单据编号';
+alter table jsh_account_head change BillTime bill_time datetime DEFAULT NULL COMMENT '单据日期';
+alter table jsh_account_head change Remark remark varchar(100) DEFAULT NULL COMMENT '备注';
+alter table jsh_account_head change delete_Flag delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+
+alter table jsh_accountitem rename to jsh_account_item;
+alter table jsh_account_item change Id id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键';
+alter table jsh_account_item change HeaderId header_id bigint(20) NOT NULL COMMENT '表头Id';
+alter table jsh_account_item change AccountId account_id bigint(20) DEFAULT NULL COMMENT '账户Id';
+alter table jsh_account_item change InOutItemId in_out_item_id bigint(20) DEFAULT NULL COMMENT '收支项目Id';
+alter table jsh_account_item change EachAmount each_amount decimal(24,6) DEFAULT NULL COMMENT '单项金额';
+alter table jsh_account_item change Remark remark varchar(100) DEFAULT NULL COMMENT '单据备注';
+alter table jsh_account_item change delete_Flag delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+
+alter table jsh_material change Id id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键';
+alter table jsh_material change CategoryId category_id bigint(20) DEFAULT NULL COMMENT '产品类型id';
+alter table jsh_material change Name name varchar(50) DEFAULT NULL COMMENT '名称';
+alter table jsh_material change Mfrs mfrs varchar(50) DEFAULT NULL COMMENT '制造商';
+alter table jsh_material change SafetyStock safety_stock decimal(24,6) DEFAULT NULL COMMENT '安全存量(KG)';
+alter table jsh_material change Model model varchar(50) DEFAULT NULL COMMENT '型号';
+alter table jsh_material change Standard standard varchar(50) DEFAULT NULL COMMENT '规格';
+alter table jsh_material change Color color varchar(50) DEFAULT NULL COMMENT '颜色';
+alter table jsh_material change Unit unit varchar(50) DEFAULT NULL COMMENT '单位-单个';
+alter table jsh_material change Remark remark varchar(100) DEFAULT NULL COMMENT '备注';
+alter table jsh_material change UnitId unit_id bigint(20) DEFAULT NULL COMMENT '计量单位Id';
+alter table jsh_material change Enabled enabled bit(1) DEFAULT NULL COMMENT '启用 0-禁用  1-启用';
+alter table jsh_material change OtherField1 other_field1 varchar(50) DEFAULT NULL COMMENT '自定义1';
+alter table jsh_material change OtherField2 other_field2 varchar(50) DEFAULT NULL COMMENT '自定义2';
+alter table jsh_material change OtherField3 other_field3 varchar(50) DEFAULT NULL COMMENT '自定义3';
+alter table jsh_material change enableSerialNumber enable_serial_number varchar(1) DEFAULT '0' COMMENT '是否开启序列号,0否,1是';
+alter table jsh_material change delete_Flag delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+
+alter table jsh_depothead rename to jsh_depot_head;
+alter table jsh_depot_head change Id id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键';
+alter table jsh_depot_head change Type type varchar(50) DEFAULT NULL COMMENT '类型(出库/入库)';
+alter table jsh_depot_head change SubType sub_type varchar(50) DEFAULT NULL COMMENT '出入库分类';
+alter table jsh_depot_head change DefaultNumber default_number varchar(50) DEFAULT NULL COMMENT '初始票据号';
+alter table jsh_depot_head change Number number varchar(50) DEFAULT NULL COMMENT '票据号';
+alter table jsh_depot_head change OperPersonName oper_person_name varchar(50) DEFAULT NULL COMMENT '操作员名字';
+alter table jsh_depot_head change CreateTime create_time datetime DEFAULT NULL COMMENT '创建时间';
+alter table jsh_depot_head change OperTime oper_time datetime DEFAULT NULL COMMENT '出入库时间';
+alter table jsh_depot_head change OrganId organ_id bigint(20) DEFAULT NULL COMMENT '供应商id';
+alter table jsh_depot_head change HandsPersonId hands_person_id bigint(20) DEFAULT NULL COMMENT '采购/领料-经手人id';
+alter table jsh_depot_head change AccountId account_id bigint(20) DEFAULT NULL COMMENT '账户id';
+alter table jsh_depot_head change ChangeAmount change_amount decimal(24,6) DEFAULT NULL COMMENT '变动金额(收款/付款)';
+alter table jsh_depot_head change TotalPrice total_price decimal(24,6) DEFAULT NULL COMMENT '合计金额';
+alter table jsh_depot_head change PayType pay_type varchar(50) DEFAULT NULL COMMENT '付款类型(现金、记账等)';
+alter table jsh_depot_head change Remark remark varchar(1000) DEFAULT NULL COMMENT '备注';
+alter table jsh_depot_head change Salesman sales_man varchar(50) DEFAULT NULL COMMENT '销售员(可以多个)';
+alter table jsh_depot_head change AccountIdList account_id_list varchar(50) DEFAULT NULL COMMENT '多账户ID列表';
+alter table jsh_depot_head change AccountMoneyList account_money_list varchar(200) DEFAULT NULL COMMENT '多账户金额列表';
+alter table jsh_depot_head change Discount discount decimal(24,6) DEFAULT NULL COMMENT '优惠率';
+alter table jsh_depot_head change DiscountMoney discount_money decimal(24,6) DEFAULT NULL COMMENT '优惠金额';
+alter table jsh_depot_head change DiscountLastMoney discount_last_money decimal(24,6) DEFAULT NULL COMMENT '优惠后金额';
+alter table jsh_depot_head change OtherMoney other_money decimal(24,6) DEFAULT NULL COMMENT '销售或采购费用合计';
+alter table jsh_depot_head change OtherMoneyList other_money_list varchar(200) DEFAULT NULL COMMENT '销售或采购费用涉及项目Id数组(包括快递、招待等)';
+alter table jsh_depot_head change OtherMoneyItem other_money_item varchar(200) DEFAULT NULL COMMENT '销售或采购费用涉及项目(包括快递、招待等)';
+alter table jsh_depot_head change AccountDay account_day int(10) DEFAULT NULL COMMENT '结算天数';
+alter table jsh_depot_head change Status status varchar(1) DEFAULT NULL COMMENT '状态,0未审核、1已审核、2已转采购|销售';
+alter table jsh_depot_head change LinkNumber link_number varchar(50) DEFAULT NULL COMMENT '关联订单号';
+alter table jsh_depot_head change delete_Flag delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+
+alter table jsh_depotitem rename to jsh_depot_item;
+alter table jsh_depot_item change Id id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键';
+alter table jsh_depot_item change HeaderId header_id bigint(20) NOT NULL COMMENT '表头Id';
+alter table jsh_depot_item change MaterialId material_id bigint(20) NOT NULL COMMENT '商品Id';
+alter table jsh_depot_item change MUnit material_unit varchar(20) DEFAULT NULL COMMENT '商品计量单位';
+alter table jsh_depot_item change OperNumber oper_number decimal(24,6) DEFAULT NULL COMMENT '数量';
+alter table jsh_depot_item change BasicNumber basic_number decimal(24,6) DEFAULT NULL COMMENT '基础数量,如kg、瓶';
+alter table jsh_depot_item change UnitPrice unit_price decimal(24,6) DEFAULT NULL COMMENT '单价';
+alter table jsh_depot_item change TaxUnitPrice tax_unit_price decimal(24,6) DEFAULT NULL COMMENT '含税单价';
+alter table jsh_depot_item change AllPrice all_price decimal(24,6) DEFAULT NULL COMMENT '金额';
+alter table jsh_depot_item change Remark remark varchar(200) DEFAULT NULL COMMENT '备注';
+alter table jsh_depot_item change Img img varchar(50) DEFAULT NULL COMMENT '图片';
+alter table jsh_depot_item change Incidentals incidentals decimal(24,6) DEFAULT NULL COMMENT '运杂费';
+alter table jsh_depot_item change DepotId depot_id bigint(20) DEFAULT NULL COMMENT '仓库ID';
+alter table jsh_depot_item change AnotherDepotId another_depot_id bigint(20) DEFAULT NULL COMMENT '调拨时,对方仓库Id';
+alter table jsh_depot_item change TaxRate tax_rate decimal(24,6) DEFAULT NULL COMMENT '税率';
+alter table jsh_depot_item change TaxMoney tax_money decimal(24,6) DEFAULT NULL COMMENT '税额';
+alter table jsh_depot_item change TaxLastMoney tax_last_money decimal(24,6) DEFAULT NULL COMMENT '价税合计';
+alter table jsh_depot_item change OtherField1 other_field1 varchar(50) DEFAULT NULL COMMENT '自定义字段1-名称';
+alter table jsh_depot_item change OtherField2 other_field2 varchar(50) DEFAULT NULL COMMENT '自定义字段2-型号';
+alter table jsh_depot_item change OtherField3 other_field3 varchar(50) DEFAULT NULL COMMENT '自定义字段3-制造商';
+alter table jsh_depot_item change OtherField4 other_field4 varchar(50) DEFAULT NULL COMMENT '自定义字段4-名称';
+alter table jsh_depot_item change OtherField5 other_field5 varchar(50) DEFAULT NULL COMMENT '自定义字段5-名称';
+alter table jsh_depot_item change MType material_type varchar(20) DEFAULT NULL COMMENT '商品类型';
+alter table jsh_depot_item change delete_Flag delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+
+-- --------------------------------------------------------
+-- 时间 2020年09月13日
+-- by jishenghua
+-- 给单据表增加操作员字段,去掉经手头姓名字段
+-- --------------------------------------------------------
+alter table jsh_depot_head add creator bigint(20) DEFAULT NULL COMMENT '操作员' after hands_person_id;
+alter table jsh_account_head add creator bigint(20) DEFAULT NULL COMMENT '操作员' after hands_person_id;
+alter table jsh_depot_head drop column oper_person_name;
+update jsh_depot_head set creator=hands_person_id;
+
+
+-- --------------------------------------------------------
+-- 时间 2020年10月17日
+-- by jishenghua
+-- 增加平台表
+-- --------------------------------------------------------
+DROP TABLE IF EXISTS `jsh_platform_config`;
+CREATE TABLE `jsh_platform_config` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT,
+  `platform_key` varchar(100) DEFAULT NULL COMMENT '关键词',
+  `platform_key_info` varchar(100) DEFAULT NULL COMMENT '关键词名称',
+  `platform_value` varchar(200) DEFAULT NULL COMMENT '值',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='平台参数';
+
+INSERT INTO `jsh_platform_config` VALUES ('1', 'platform_name', '平台名称', '管伊佳ERP');
+INSERT INTO `jsh_platform_config` VALUES ('2', 'activation_code', '激活码', null);
+
+-- --------------------------------------------------------
+-- 时间 2020年11月24日
+-- by jishenghua
+-- 给单据主表增加单据类型字段bill_type
+-- --------------------------------------------------------
+alter table jsh_depot_head add bill_type varchar(50) DEFAULT NULL COMMENT '单据类型' after pay_type;
+
+-- --------------------------------------------------------
+-- 时间 2021年1月19日
+-- by jishenghua
+-- 给功能表增加组件字段component
+-- --------------------------------------------------------
+alter table jsh_function add component varchar(100) DEFAULT NULL COMMENT '组件' after url;
+
+-- --------------------------------------------------------
+-- 时间 2021年2月13日
+-- by jishenghua
+-- 优化机构和商品类型表的字段
+-- --------------------------------------------------------
+alter table jsh_organization change org_parent_no parent_id bigint(20) DEFAULT NULL COMMENT '父机构id';
+alter table jsh_organization change org_stcd delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+alter table jsh_organization drop column org_tpcd;
+alter table jsh_organization drop column org_create_time;
+alter table jsh_organization drop column org_stop_time;
+alter table jsh_organization drop column creator;
+alter table jsh_organization drop column updater;
+alter table jsh_material_category drop column creator;
+alter table jsh_material_category drop column updater;
+alter table jsh_material_category change status delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+update jsh_material_category set delete_flag='0';
+
+-- --------------------------------------------------------
+-- 时间 2021年6月1日
+-- by jishenghua
+-- 增加租户管理菜单
+-- --------------------------------------------------------
+INSERT INTO `jsh_function` (`id`, `number`, `name`, `parent_number`, `url`, `component`, `state`, `sort`, `enabled`, `type`, `push_btn`, `icon`, `delete_flag`) VALUES ('18', '000109', '租户管理', '0001', '/system/tenant', '/system/TenantList', b'0', '0167', b'1', '电脑版', '1', 'profile', '0');
+
+-- --------------------------------------------------------
+-- 时间 2021年6月19日
+-- by jishenghua
+-- 更新jsh_platform_config数据
+-- --------------------------------------------------------
+INSERT INTO `jsh_platform_config` (`id`, `platform_key`, `platform_key_info`, `platform_value`) VALUES ('3', 'platform_url', '官方网站', 'http://www.huaxiaerp.com/');
+
+-- --------------------------------------------------------
+-- 时间 2021年6月20日
+-- by jishenghua
+-- 将库存状态报表改为进销存统计报表
+-- --------------------------------------------------------
+update jsh_function set name='进销存统计', sort='0658' where id=59;
+
+-- --------------------------------------------------------
+-- 时间 2021年6月20日
+-- by jishenghua
+-- 增加商品库存报表
+-- --------------------------------------------------------
+INSERT INTO `jsh_function` (`number`, `name`, `parent_number`, `url`, `component`, `state`, `sort`, `enabled`, `type`, `push_btn`, `icon`, `delete_flag`) VALUES ('030113', '商品库存', '0301', '/report/material_stock', '/report/MaterialStock', b'0', '0605', b'1', '电脑版', '', 'profile', '0');
+
+-- --------------------------------------------------------
+-- 时间 2021年6月29日
+-- by jishenghua
+-- 给jsh_account_item增加字段进销存单据id 应收欠款 已收欠款
+-- 给jsh_depot_head增加附件字段附件名称
+-- 给jsh_account_head增加附件字段附件名称 优惠金额
+-- --------------------------------------------------------
+alter table jsh_account_item add bill_id bigint(20) DEFAULT NULL COMMENT '进销存单据id' after in_out_item_id;
+alter table jsh_account_item add need_debt decimal(24,6) DEFAULT NULL COMMENT '应收欠款' after bill_id;
+alter table jsh_account_item add finish_debt decimal(24,6) DEFAULT NULL COMMENT '已收欠款' after need_debt;
+alter table jsh_depot_head add file_name varchar(1000) DEFAULT NULL COMMENT '附件名称' after remark;
+alter table jsh_account_head add file_name varchar(500) DEFAULT NULL COMMENT '附件名称' after remark;
+alter table jsh_account_head add discount_money decimal(24,6) DEFAULT NULL COMMENT '优惠金额' after change_amount;
+
+-- --------------------------------------------------------
+-- 时间 2021年7月1日
+-- by jishenghua
+-- 给商品表增加附件名称字段
+-- --------------------------------------------------------
+alter table jsh_material add img_name varchar(1000) DEFAULT NULL COMMENT '图片名称' after remark;
+
+-- --------------------------------------------------------
+-- 时间 2021年7月6日
+-- by jishenghua
+-- 给租户表增加字段enabled
+-- --------------------------------------------------------
+alter table jsh_tenant add enabled bit(1) DEFAULT 1 COMMENT '启用 0-禁用  1-启用' after bills_num_limit;
+
+-- --------------------------------------------------------
+-- 时间 2021年7月21日
+-- by jishenghua
+-- 增加商品属性表
+-- --------------------------------------------------------
+DROP TABLE IF EXISTS `jsh_material_attribute`;
+CREATE TABLE `jsh_material_attribute` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT,
+  `attribute_field` varchar(50) DEFAULT NULL COMMENT '属性字段',
+  `attribute_name` varchar(50) DEFAULT NULL COMMENT '属性名',
+  `attribute_value` varchar(500) DEFAULT NULL COMMENT '属性值',
+  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
+  `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='产品属性表';
+
+INSERT INTO `jsh_material_attribute` VALUES ('1', 'manyColor', '多颜色', '红色|橙色|黄色|绿色|蓝色|紫色', '63', '0');
+INSERT INTO `jsh_material_attribute` VALUES ('2', 'manySize', '多尺寸', 'S|M|L|XL|XXL|XXXL', '63', '0');
+INSERT INTO `jsh_material_attribute` VALUES ('3', 'other1', '自定义1', '小米|华为', '63', '0');
+INSERT INTO `jsh_material_attribute` VALUES ('4', 'other2', '自定义2', null, '63', '0');
+INSERT INTO `jsh_material_attribute` VALUES ('5', 'other3', '自定义3', null, '63', '0');
+
+-- --------------------------------------------------------
+-- 时间 2021年7月22日
+-- by jishenghua
+-- 增加多属性设置菜单
+-- --------------------------------------------------------
+INSERT INTO `jsh_function` (`id`, `number`, `name`, `parent_number`, `url`, `component`, `state`, `sort`, `enabled`, `type`, `push_btn`, `icon`, `delete_flag`) VALUES ('247', '010105', '多属性', '0101', '/material/material_attribute', '/material/MaterialAttributeList', '\0', '0250', '', '电脑版', '1', 'profile', '0');
+
+-- --------------------------------------------------------
+-- 时间 2021年7月22日
+-- by jishenghua
+-- 移除机构表的全名字段
+-- 给商品扩展表加sku字段
+-- 给单据主表移除多余字段
+-- 给单据子表移除多余字段
+-- --------------------------------------------------------
+alter table jsh_organization drop column org_full_name;
+alter table jsh_material_extend add sku varchar(50) DEFAULT NULL COMMENT '多属性' after commodity_unit;
+alter table jsh_depot_head drop column hands_person_id;
+alter table jsh_depot_head drop column other_money_list;
+alter table jsh_depot_head drop column other_money_item;
+alter table jsh_depot_head drop column account_day;
+alter table jsh_depot_item drop column img;
+alter table jsh_depot_item drop column incidentals;
+alter table jsh_depot_item drop column other_field1;
+alter table jsh_depot_item drop column other_field2;
+alter table jsh_depot_item drop column other_field3;
+alter table jsh_depot_item drop column other_field4;
+alter table jsh_depot_item drop column other_field5;
+
+-- --------------------------------------------------------
+-- 时间 2021年7月27日
+-- by jishenghua
+-- 给单据子表加sku字段
+-- --------------------------------------------------------
+alter table jsh_depot_item add sku varchar(50) DEFAULT NULL COMMENT '多属性' after material_unit;
+
+-- --------------------------------------------------------
+-- 时间 2021年7月29日
+-- by jishenghua
+-- 增加调拨明细菜单
+-- --------------------------------------------------------
+INSERT INTO `jsh_function` VALUES ('248', '030150', '调拨明细', '0301', '/report/allocation_detail', '/report/AllocationDetail', '\0', '0646', '', '电脑版', '', 'profile', '0');
+
+-- --------------------------------------------------------
+-- 时间 2021年8月24日
+-- by jishenghua
+-- 给租户表加sku字段
+-- 给租户表移除单据数量限制字段
+-- --------------------------------------------------------
+alter table jsh_tenant add type varchar(1) DEFAULT '0' COMMENT '租户类型,0免费租户,1付费租户' after bills_num_limit;
+alter table jsh_tenant drop column bills_num_limit;
+alter table jsh_tenant add expire_time datetime DEFAULT NULL COMMENT '到期时间' after create_time;
+
+-- --------------------------------------------------------
+-- 时间 2021年8月29日
+-- by jishenghua
+-- 给日志表的ip字段改长度
+-- --------------------------------------------------------
+alter table jsh_log change client_ip client_ip varchar(200) DEFAULT NULL COMMENT '客户端IP';
+
+-- --------------------------------------------------------
+-- 时间 2021年9月5日
+-- by jishenghua
+-- 给财务表增加状态字段,给历史数据赋值为0
+-- --------------------------------------------------------
+alter table jsh_account_head add status varchar(1) DEFAULT NULL COMMENT '状态,0未审核、1已审核' after file_name;
+update jsh_account_head set status=0;
+
+-- --------------------------------------------------------
+-- 时间 2021年9月12日
+-- by jishenghua
+-- 插入jsh_platform_config数据,控制是否显示三联打印
+-- --------------------------------------------------------
+INSERT INTO `jsh_platform_config` (`id`, `platform_key`, `platform_key_info`, `platform_value`) VALUES ('4', 'bill_print_flag', '三联打印启用标记', '0');
+INSERT INTO `jsh_platform_config` (`id`, `platform_key`, `platform_key_info`, `platform_value`) VALUES ('5', 'bill_print_url', '三联打印地址', '');
+
+-- --------------------------------------------------------
+-- 时间 2021年9月24日
+-- by jishenghua
+-- 修改单据主表的状态字段描述
+-- --------------------------------------------------------
+alter table jsh_depot_head change status status varchar(1) DEFAULT NULL COMMENT '状态,0未审核、1已审核、2完成采购|销售、3部分采购|销售';
+
+-- --------------------------------------------------------
+-- 时间 2021年9月27日
+-- by jishenghua
+-- 给商品表和单据字表增加字段
+-- --------------------------------------------------------
+alter table jsh_material add enable_batch_number varchar(1) DEFAULT 0 COMMENT '是否开启批号,0否,1是' after enable_serial_number;
+alter table jsh_material add expiry_num int(10) DEFAULT NULL COMMENT '保质期天数' after unit_id;
+alter table jsh_depot_item add sn_list varchar(2000) DEFAULT NULL COMMENT '序列号列表' after material_type;
+alter table jsh_depot_item add batch_number varchar(100) DEFAULT NULL COMMENT '批号' after sn_list;
+alter table jsh_depot_item add expiration_date datetime DEFAULT NULL COMMENT '有效日期' after batch_number;
+
+-- --------------------------------------------------------
+-- 时间 2021年9月27日
+-- by jishenghua
+-- 插入jsh_platform_config数据,配置租户续费地址
+-- --------------------------------------------------------
+INSERT INTO `jsh_platform_config` (`platform_key`, `platform_key_info`, `platform_value`) VALUES ('pay_fee_url', '租户续费地址', '');
+
+-- --------------------------------------------------------
+-- 时间 2021年9月28日
+-- by jishenghua
+-- 给序列号表增加仓库id
+-- --------------------------------------------------------
+alter table jsh_serial_number add depot_id bigint(20) DEFAULT NULL COMMENT '仓库id' after material_Id;
+
+-- --------------------------------------------------------
+-- 时间 2021年10月4日
+-- by jishenghua
+-- 给序列号表增加入库单号和出库单号字段,另外去掉单据id字段
+-- 移除序列号菜单
+-- --------------------------------------------------------
+alter table jsh_serial_number add in_bill_no varchar(50) DEFAULT NULL COMMENT '入库单号' after updater;
+alter table jsh_serial_number add out_bill_no varchar(50) DEFAULT NULL COMMENT '出库单号' after in_bill_no;
+alter table jsh_serial_number drop column depot_head_id;
+delete from jsh_function where number='010104';
+
+-- --------------------------------------------------------
+-- 时间 2021年10月12日
+-- by jishenghua
+-- 给租户表增加备注字段
+-- --------------------------------------------------------
+alter table jsh_tenant add remark varchar(500) DEFAULT NULL COMMENT '备注' after expire_time;
+
+-- --------------------------------------------------------
+-- 时间 2021年10月29日
+-- by jishenghua
+-- 给商品初始库存表增加最低库存数量、最高库存数量字段
+-- 给商品表增加基础重量字段
+-- 给商品表移除安全库存字段
+-- --------------------------------------------------------
+alter table jsh_material_initial_stock add low_safe_stock decimal(24,6) DEFAULT NULL COMMENT '最低库存数量' after number;
+alter table jsh_material_initial_stock add high_safe_stock decimal(24,6) DEFAULT NULL COMMENT '最高库存数量' after low_safe_stock;
+alter table jsh_material add weight decimal(24,6) DEFAULT NULL COMMENT '基础重量(kg)' after expiry_num;
+alter table jsh_material drop column safety_stock;
+
+-- --------------------------------------------------------
+-- 时间 2021年11月5日
+-- by jishenghua
+-- 给用户/角色/模块关系表增加租户字段
+-- 给用户/角色/模块关系表的租户字段赋值
+-- --------------------------------------------------------
+alter table jsh_user_business add tenant_id bigint(20) DEFAULT null COMMENT '租户id' after btn_str;
+update jsh_user_business ub left join jsh_user u on ub.key_id=u.id set ub.tenant_id=u.tenant_id
+where (ub.type='UserRole' or ub.type='UserDepot' or ub.type='UserCustomer') and u.tenant_id!=0;
+update jsh_user_business ub left join jsh_role r on ub.key_id=r.id set ub.tenant_id=r.tenant_id
+where (ub.type='RoleFunctions') and r.tenant_id is not null;
+
+-- --------------------------------------------------------
+-- 时间 2021年11月30日
+-- by jishenghua
+-- 给计量单位表增加副单位2、副单位3、比例2、比例3 四个字段
+-- --------------------------------------------------------
+alter table jsh_unit add other_unit_two varchar(50) DEFAULT NULL COMMENT '副单位2' after other_unit;
+alter table jsh_unit add other_unit_three varchar(50) DEFAULT NULL COMMENT '副单位3' after other_unit_two;
+alter table jsh_unit add ratio_two int(11) DEFAULT NULL COMMENT '比例2' after ratio;
+alter table jsh_unit add ratio_three int(11) DEFAULT NULL COMMENT '比例3' after ratio_two;
+
+-- --------------------------------------------------------
+-- 时间 2021年12月07日
+-- by jishenghua
+-- 更新菜单名称-进货统计改为采购统计
+-- 增加平台配置菜单
+-- 给平台配置增加注册启用标记
+-- 更新消息表中已有信息的状态
+-- --------------------------------------------------------
+update jsh_function set name='采购统计' where name='进货统计';
+insert into `jsh_function`(`number`, `name`, `parent_number`, `url`, `component`, `state`, `sort`, `enabled`, `type`, `push_btn`, `icon`, `delete_flag`)
+ values ('000112', '平台配置', '0001', '/system/platform_config', '/system/PlatformConfigList', '\0', '0175', '', '电脑版', '', 'profile', '0');
+insert into `jsh_platform_config`(`platform_key`, `platform_key_info`, `platform_value`)
+ values ('register_flag', '注册启用标记', '1');
+update jsh_msg set status='2' where id=2;
+
+-- --------------------------------------------------------
+-- 时间 2021年12月12日
+-- by jishenghua
+-- 给单据表增加找零字段backAmount
+-- --------------------------------------------------------
+alter table jsh_depot_head add back_amount decimal(24,6) DEFAULT NULL COMMENT '找零金额' after change_amount;
+
+-- --------------------------------------------------------
+-- 时间 2022年04月21日
+-- by jishenghua
+-- 修改商品表的名称字段的长度
+-- --------------------------------------------------------
+alter table jsh_material change name name varchar(100) DEFAULT NULL COMMENT '名称';
+
+-- --------------------------------------------------------
+-- 时间 2022年05月03日
+-- by jishenghua
+-- 给系统参数表增加销售协议字段
+-- --------------------------------------------------------
+alter table jsh_system_config add sale_agreement varchar(500) DEFAULT NULL COMMENT '销售协议' after company_post_code;
+
+-- --------------------------------------------------------
+-- 时间 2022年05月17日
+-- by jishenghua
+-- 给单据主表增加采购状态字段
+-- 给系统参数表增加以销定购开关字段
+-- --------------------------------------------------------
+alter table jsh_depot_head add purchase_status varchar(1) DEFAULT NULL COMMENT '采购状态,0未采购、2完成采购、3部分采购' after status;
+alter table jsh_system_config add purchase_by_sale_flag varchar(1) DEFAULT '0' COMMENT '以销定购启用标记,0未启用,1启用' after minus_stock_flag;
+update jsh_depot_head set purchase_status='0';
+
+-- --------------------------------------------------------
+-- 时间 2022年05月28日
+-- by jishenghua
+-- 给单据子表增加关联明细id
+-- 给单据主表增加订金字段
+-- --------------------------------------------------------
+alter table jsh_depot_item add link_id bigint(20) DEFAULT NULL COMMENT '关联明细id' after expiration_date;
+alter table jsh_depot_head add deposit decimal(24,6) DEFAULT NULL COMMENT '订金' after other_money;
+
+-- --------------------------------------------------------
+-- 时间 2022年07月25日
+-- by jishenghua
+-- 给平台参数表添加手机端激活码
+-- --------------------------------------------------------
+INSERT INTO `jsh_platform_config` VALUES ('8', 'app_activation_code', '手机端激活码', '');
+
+-- --------------------------------------------------------
+-- 时间 2022年08月25日
+-- by jishenghua
+-- 给部分表增加启用状态和排序字段
+-- --------------------------------------------------------
+alter table jsh_unit add enabled bit(1) DEFAULT NULL COMMENT '启用' after ratio_three;
+update jsh_unit set enabled=1;
+alter table jsh_supplier add sort varchar(10) DEFAULT NULL COMMENT '排序' after tax_rate;
+alter table jsh_depot add enabled bit(1) DEFAULT NULL COMMENT '启用' after principal;
+update jsh_depot set enabled=1;
+alter table jsh_in_out_item add enabled bit(1) DEFAULT NULL COMMENT '启用' after remark;
+alter table jsh_in_out_item add sort varchar(10) DEFAULT NULL COMMENT '排序' after enabled;
+update jsh_in_out_item set enabled=1;
+alter table jsh_account add enabled bit(1) DEFAULT NULL COMMENT '启用' after remark;
+alter table jsh_account add sort varchar(10) DEFAULT NULL COMMENT '排序' after enabled;
+update jsh_account set enabled=1;
+alter table jsh_person add enabled bit(1) DEFAULT NULL COMMENT '启用' after name;
+alter table jsh_person add sort varchar(10) DEFAULT NULL COMMENT '排序' after enabled;
+update jsh_person set enabled=1;
+alter table jsh_role add enabled bit(1) DEFAULT NULL COMMENT '启用' after description;
+alter table jsh_role add sort varchar(10) DEFAULT NULL COMMENT '排序' after enabled;
+update jsh_role set enabled=1;
+
+-- --------------------------------------------------------
+-- 时间 2022年08月30日
+-- by jishenghua
+-- 给产品属性表移除属性字段
+-- --------------------------------------------------------
+alter table jsh_material_attribute drop column attribute_field;
+
+-- --------------------------------------------------------
+-- 时间 2022年09月13日
+-- by jishenghua
+-- 给商品和财务单据的备注修改字段长度
+-- --------------------------------------------------------
+alter table jsh_material change remark remark varchar(500) DEFAULT NULL COMMENT '备注';
+alter table jsh_account_head change remark remark varchar(1000) DEFAULT NULL COMMENT '备注';
+
+-- --------------------------------------------------------
+-- 时间 2022年10月2日
+-- by jishenghua
+-- 给单据明细增加采购单价字段
+-- --------------------------------------------------------
+alter table jsh_depot_item add purchase_unit_price decimal(24,6) DEFAULT NULL COMMENT '采购单价' after unit_price;
+
+-- --------------------------------------------------------
+-- 时间 2022年10月23日
+-- by jishenghua
+-- 给角色表增加价格屏蔽字段
+-- --------------------------------------------------------
+alter table jsh_role add price_limit varchar(50) DEFAULT NULL COMMENT '价格屏蔽 1-屏蔽采购价 2-屏蔽零售价 3-屏蔽销售价' after type;
+
+-- --------------------------------------------------------
+-- 时间 2023年02月19日
+-- by jishenghua
+-- 给系统参数表增加多级审核开关字段
+-- 给用户表增加是否经理字段,默认为否
+-- 给平台配置表增加发起流程地址
+-- --------------------------------------------------------
+alter table jsh_system_config add multi_level_approval_flag varchar(1) DEFAULT '0' COMMENT '多级审核启用标记,0未启用,1启用' after purchase_by_sale_flag;
+alter table jsh_user add leader_flag varchar(1) DEFAULT '0' COMMENT '是否经理,0否,1是' after password;
+INSERT INTO `jsh_platform_config` (`platform_key`, `platform_key_info`, `platform_value`) VALUES ('send_workflow_url', '发起流程地址', '');
+
+-- --------------------------------------------------------
+-- 时间 2023年02月25日
+-- by jishenghua
+-- 给消息表增加接收人字段
+-- 更新接收人id字段的值
+-- 给系统参数表增加流程类型
+-- --------------------------------------------------------
+alter table jsh_msg add user_id bigint(20) DEFAULT NULL COMMENT '接收人id' after type;
+update jsh_msg set user_id=tenant_id where user_id is null;
+alter table jsh_system_config add multi_bill_type varchar(200) DEFAULT NULL COMMENT '流程类型,可多选' after multi_level_approval_flag;
+
+-- --------------------------------------------------------
+-- 时间 2023年03月08日
+-- by jishenghua
+-- 给计量单位表修改比例的字段类型
+-- 给系统参数表增加金额审核启用标记
+-- 给单据增加来源字段
+-- --------------------------------------------------------
+alter table jsh_unit change ratio ratio decimal(24,3) DEFAULT NULL COMMENT '比例';
+alter table jsh_unit change ratio_two ratio_two decimal(24,3) DEFAULT NULL COMMENT '比例2';
+alter table jsh_unit change ratio_three ratio_three decimal(24,3) DEFAULT NULL COMMENT '比例3';
+alter table jsh_system_config add amount_approval_flag varchar(1) DEFAULT '0' COMMENT '金额审核启用标记,0未启用,1启用' after multi_bill_type;
+alter table jsh_depot_head add source varchar(1) DEFAULT '0' COMMENT '单据来源,0-pc,1-手机' after purchase_status;
+alter table jsh_account_head add source varchar(1) DEFAULT '0' COMMENT '单据来源,0-pc,1-手机' after status;
+
+-- --------------------------------------------------------
+-- 时间 2023年03月16日
+-- by jishenghua
+-- 将系统参数表的金额审核启用标记改为强审核标记
+-- 增加零售统计菜单
+-- --------------------------------------------------------
+alter table jsh_system_config change amount_approval_flag force_approval_flag varchar(1) DEFAULT '0' COMMENT '强审核启用标记,0未启用,1启用';
+insert into `jsh_function` (`number`, `name`, `parent_number`, `url`, `component`, `state`, `sort`, `enabled`, `type`, `push_btn`, `icon`, `delete_flag`) VALUES ('030105', '零售统计', '0301', '/report/retail_out_report', '/report/RetailOutReport', b'0', '0615', b'1', '电脑版', '', 'profile', '0');
+
+-- --------------------------------------------------------
+-- 时间 2023年03月08日
+-- by jishenghua
+-- 给系统参数表增加更新单价启用标记
+-- --------------------------------------------------------
+alter table jsh_system_config add update_unit_price_flag varchar(1) DEFAULT '1' COMMENT '更新单价启用标记,0未启用,1启用' after force_approval_flag;
+
+-- --------------------------------------------------------
+-- 时间 2023年05月10日
+-- by jishenghua
+-- 给系统参数表增加超出关联单据启用标记
+-- --------------------------------------------------------
+alter table jsh_system_config add over_link_bill_flag varchar(1) DEFAULT '0' COMMENT '超出关联单据启用标记,0未启用,1启用' after update_unit_price_flag;
+
+-- --------------------------------------------------------
+-- 时间 2023年05月19日
+-- by jishenghua
+-- 给商品主表增加仓位货架
+-- --------------------------------------------------------
+alter table jsh_material add position varchar(100) DEFAULT NULL COMMENT '仓位货架' after enable_batch_number;
+
+-- --------------------------------------------------------
+-- 时间 2023年05月28日
+-- by jishenghua
+-- 给用户表增加微信绑定字段
+-- 给平台表增加微信登录的相关信息
+-- --------------------------------------------------------
+alter table jsh_user add weixin_open_id varchar(100) DEFAULT NULL COMMENT '微信绑定' after remark;
+INSERT INTO `jsh_platform_config` (`platform_key`, `platform_key_info`, `platform_value`) VALUES ('weixinUrl', '微信url', '');
+INSERT INTO `jsh_platform_config` (`platform_key`, `platform_key_info`, `platform_value`) VALUES ('weixinAppid', '微信appid', '');
+INSERT INTO `jsh_platform_config` (`platform_key`, `platform_key_info`, `platform_value`) VALUES ('weixinSecret', '微信secret', '');
+
+-- --------------------------------------------------------
+-- 时间 2023年06月05日
+-- by jishenghua
+-- 给平台表增加阿里云OSS的相关信息
+-- --------------------------------------------------------
+INSERT INTO `jsh_platform_config` (`platform_key`, `platform_key_info`, `platform_value`) VALUES ('aliOss_endpoint', '阿里OSS-endpoint', '');
+INSERT INTO `jsh_platform_config` (`platform_key`, `platform_key_info`, `platform_value`) VALUES ('aliOss_accessKeyId', '阿里OSS-accessKeyId', '');
+INSERT INTO `jsh_platform_config` (`platform_key`, `platform_key_info`, `platform_value`) VALUES ('aliOss_accessKeySecret', '阿里OSS-accessKeySecret', '');
+INSERT INTO `jsh_platform_config` (`platform_key`, `platform_key_info`, `platform_value`) VALUES ('aliOss_bucketName', '阿里OSS-bucketName', '');
+INSERT INTO `jsh_platform_config` (`platform_key`, `platform_key_info`, `platform_value`) VALUES ('aliOss_linkUrl', '阿里OSS-linkUrl', '');
+
+-- --------------------------------------------------------
+-- 时间 2023年06月21日
+-- by jishenghua
+-- 给商家表增加操作员字段,并给该字段赋默认值
+-- --------------------------------------------------------
+alter table jsh_supplier add creator bigint(20) DEFAULT NULL COMMENT '操作员' after sort;
+update jsh_supplier set creator=tenant_id;
+
+-- --------------------------------------------------------
+-- 时间 2023年08月15日
+-- by jishenghua
+-- 给平台配置表增加单据Excel地址
+-- --------------------------------------------------------
+INSERT INTO `jsh_platform_config` (`platform_key`, `platform_key_info`, `platform_value`) VALUES ('bill_excel_url', '单据Excel地址', '');
+
+-- --------------------------------------------------------
+-- 时间 2023年10月10日
+-- by jishenghua
+-- 更新功能菜单里面的按钮参数(执行完之后记得要给'租户'角色重新勾选按钮)
+-- --------------------------------------------------------
+update jsh_function set push_btn='1,2,3,7' where push_btn='1,2,7';
+update jsh_function set push_btn='1,3' where number in ('01020101','01020102','01020103','010102');
+
+-- --------------------------------------------------------
+-- 时间 2023年11月1日
+-- by jishenghua
+-- 将经手人里面的业务员改为销售员
+-- --------------------------------------------------------
+update jsh_person set type='销售员' where type='业务员';
+
+-- --------------------------------------------------------
+-- 时间 2023年12月01日
+-- by jishenghua
+-- 给系统参数表增加出入库管理启用标记,开启后,采购入库、采购退货、销售出库、销售退货单据都会经过出入库流程,适合有独立仓库的场景。
+-- --------------------------------------------------------
+alter table jsh_system_config add in_out_manage_flag varchar(1) DEFAULT '0' COMMENT '出入库管理启用标记,0未启用,1启用' after over_link_bill_flag;
+
+-- --------------------------------------------------------
+-- 时间 2024年4月8日
+-- by jishenghua
+-- 给序列号表里面增加入库单价字段
+-- --------------------------------------------------------
+alter table jsh_serial_number add in_price decimal(24,6) DEFAULT NULL COMMENT '入库单价' after is_sell;
+
+-- --------------------------------------------------------
+-- 时间 2024年4月19日
+-- by jishenghua
+-- 给功能表增加请购单的菜单
+-- 给角色勾选请购单的菜单
+-- --------------------------------------------------------
+INSERT INTO jsh_function
+(`number`, `name`, `parent_number`, `url`, `component`, `state`, `sort`, `enabled`, `type`, `push_btn`, `icon`, `delete_flag`)
+VALUES ('050203', '请购单', '0502', '/bill/purchase_apply', '/bill/PurchaseApplyList', b'0', '0330', b'1', '电脑版', '1,2,3,7', 'profile', '0');
+
+-- --------------------------------------------------------
+-- 时间 2024年4月22日
+-- by jishenghua
+-- 给单据主表里面增加关联请购单字段
+-- --------------------------------------------------------
+alter table jsh_depot_head add link_apply varchar(50) DEFAULT NULL COMMENT '关联请购单' after link_number;
+
+-- --------------------------------------------------------
+-- 时间 2024年5月4日
+-- by jishenghua
+-- 给明细表的备注修改长度
+-- --------------------------------------------------------
+alter table jsh_depot_item change remark remark varchar(500) DEFAULT NULL COMMENT '备注';
+alter table jsh_account_item change remark remark varchar(500) DEFAULT NULL COMMENT '备注';
+
+-- --------------------------------------------------------
+-- 时间 2024年5月5日
+-- by jishenghua
+-- 给系统参数表增加多账户启用标记,开启后,采购订单、采购入库等单据可以进行多账户选择,升级的时候最好给老的租户进行批量设置为启用
+-- --------------------------------------------------------
+alter table jsh_system_config add multi_account_flag varchar(1) DEFAULT '0' COMMENT '多账户启用标记,0未启用,1启用' after in_out_manage_flag;
+update jsh_system_config set multi_account_flag='1' where multi_account_flag='0';
+
+-- --------------------------------------------------------
+-- 时间 2024年5月21日
+-- by jishenghua
+-- 给系统参数表增加移动平均价标记,默认关闭,开启之后将通过移动平均来计算成本价
+-- 给实时库存表增加当前单价字段
+-- --------------------------------------------------------
+alter table jsh_system_config add move_avg_price_flag varchar(1) DEFAULT '0' COMMENT '移动平均价启用标记,0未启用,1启用' after multi_account_flag;
+alter table jsh_material_current_stock add current_unit_price decimal(24,6) DEFAULT NULL COMMENT '当前单价' after current_number;
+
+-- --------------------------------------------------------
+-- 时间 2024年8月21日
+-- by jishenghua
+-- 给系统参数表增加先审核后打印启用标记,启用后,零售、采购、销售等单据,都需要先审核之后才能进行打印
+-- --------------------------------------------------------
+alter table jsh_system_config add audit_print_flag varchar(1) DEFAULT '0' COMMENT '先审核后打印启用标记,0未启用,1启用' after move_avg_price_flag;
+
+-- --------------------------------------------------------
+-- 时间 2024年9月27日
+-- by jishenghua
+-- 给商品表增加品牌、助记码字段
+-- --------------------------------------------------------
+alter table jsh_material add brand varchar(100) DEFAULT NULL COMMENT '品牌' after standard;
+alter table jsh_material add mnemonic varchar(100) DEFAULT NULL COMMENT '助记码' after brand;
+
+-- --------------------------------------------------------
+-- 时间 2024年12月08日
+-- by jishenghua
+-- 给用户表增加删除字段、修改状态表的备注
+-- 给租户表增加删除字段
+-- --------------------------------------------------------
+alter table jsh_user add delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除' after tenant_id;
+alter table jsh_user change Status status tinyint(4) DEFAULT '0' COMMENT '状态,0正常,2封禁';
+update jsh_user set delete_flag='1' where status=1;
+alter table jsh_tenant add delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除' after remark;
+
+-- --------------------------------------------------------
+-- 时间 2024年12月17日
+-- by jishenghua
+-- 更新菜单:把计量单位更新为多单位
+-- --------------------------------------------------------
+update jsh_function set name='多单位' where number='010103';
+
+-- --------------------------------------------------------
+-- 时间 2025年2月25日
+-- by jishenghua
+-- 给地址字段调整长度
+-- --------------------------------------------------------
+alter table jsh_supplier change address address varchar(100) DEFAULT NULL COMMENT '地址';
+
+-- --------------------------------------------------------
+-- 时间 2025年3月25日
+-- by jishenghua
+-- 给产品扩展字段表增加租户id字段
+-- 另外注意:需要手动把商品属性菜单分配给租户角色
+-- --------------------------------------------------------
+alter table jsh_material_property add tenant_id bigint(20) DEFAULT NULL COMMENT '租户id' after another_name;
+
+-- --------------------------------------------------------
+-- 时间 2025年3月30日
+-- by jishenghua
+-- 给jsh_account_head表的文件字段增加长度
+-- --------------------------------------------------------
+alter table jsh_account_head change file_name file_name varchar(1000) DEFAULT NULL COMMENT '附件名称';
\ No newline at end of file
diff --git a/jshERP-boot/dist/jshERP/docs/管伊佳ERP数据库设计汇总.xlsx b/jshERP-boot/dist/jshERP/docs/管伊佳ERP数据库设计汇总.xlsx
new file mode 100644
index 000000000..f4d85af79
Binary files /dev/null and b/jshERP-boot/dist/jshERP/docs/管伊佳ERP数据库设计汇总.xlsx differ
diff --git a/jshERP-boot/dist/jshERP/restart.sh b/jshERP-boot/dist/jshERP/restart.sh
new file mode 100644
index 000000000..70c0be158
--- /dev/null
+++ b/jshERP-boot/dist/jshERP/restart.sh
@@ -0,0 +1 @@
+./bin/run-manage.sh restart
\ No newline at end of file
diff --git a/jshERP-boot/dist/jshERP/start.bat b/jshERP-boot/dist/jshERP/start.bat
new file mode 100644
index 000000000..37b8bb515
--- /dev/null
+++ b/jshERP-boot/dist/jshERP/start.bat
@@ -0,0 +1,6 @@
+@echo off
+
+title jshERP
+
+java -Xms1000m -Xmx2000m -jar .\lib\jshERP.jar
+pause over
\ No newline at end of file
diff --git a/jshERP-boot/dist/jshERP/start.sh b/jshERP-boot/dist/jshERP/start.sh
new file mode 100644
index 000000000..d0bf0677c
--- /dev/null
+++ b/jshERP-boot/dist/jshERP/start.sh
@@ -0,0 +1 @@
+./bin/run-manage.sh start
\ No newline at end of file
diff --git a/jshERP-boot/dist/jshERP/status.sh b/jshERP-boot/dist/jshERP/status.sh
new file mode 100644
index 000000000..46d65372b
--- /dev/null
+++ b/jshERP-boot/dist/jshERP/status.sh
@@ -0,0 +1 @@
+./bin/run-manage.sh status
\ No newline at end of file
diff --git a/jshERP-boot/dist/jshERP/stop.sh b/jshERP-boot/dist/jshERP/stop.sh
new file mode 100644
index 000000000..8f3414e79
--- /dev/null
+++ b/jshERP-boot/dist/jshERP/stop.sh
@@ -0,0 +1 @@
+./bin/run-manage.sh stop
\ No newline at end of file
diff --git a/jshERP-boot/pom.xml b/jshERP-boot/pom.xml
index 68cdf4ea1..124fb52d1 100644
--- a/jshERP-boot/pom.xml
+++ b/jshERP-boot/pom.xml
@@ -50,7 +50,7 @@
 		
 			mysql
 			mysql-connector-java
-			5.1.30
+			8.0.21
 		
 		
 		
@@ -63,6 +63,19 @@
 			jxl
 			2.6.12
 		
+
+
+		
+		
+			com.squareup.okhttp3
+			okhttp
+			4.12.0
+		
+		
+			org.jetbrains.kotlin
+			kotlin-stdlib
+			1.8.21 
+		
 		
 		
 			org.projectlombok
diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountController.java
index 064239622..1f89a6765 100644
--- a/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountController.java
+++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountController.java
@@ -293,6 +293,10 @@ public class AccountController extends BaseController {
                                  HttpServletRequest request)throws Exception {
         Boolean status = jsonObject.getBoolean("status");
         String ids = jsonObject.getString("ids");
+
+
+
+
         Map objectMap = new HashMap<>();
         int res = accountService.batchSetStatus(status, ids);
         if(res > 0) {
diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotHeadController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotHeadController.java
index 63cd23cef..36bf015d2 100644
--- a/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotHeadController.java
+++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotHeadController.java
@@ -12,21 +12,21 @@ import com.jsh.erp.datasource.vo.DepotHeadVo4InDetail;
 import com.jsh.erp.datasource.vo.DepotHeadVo4InOutMCount;
 import com.jsh.erp.datasource.vo.DepotHeadVo4List;
 import com.jsh.erp.datasource.vo.DepotHeadVo4StatementAccount;
-import com.jsh.erp.service.DepotService;
-import com.jsh.erp.service.DepotHeadService;
-import com.jsh.erp.service.MaterialService;
-import com.jsh.erp.service.SystemConfigService;
-import com.jsh.erp.service.UserService;
+import com.jsh.erp.service.*;
 import com.jsh.erp.utils.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import okhttp3.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -60,13 +60,16 @@ public class DepotHeadController extends BaseController {
     @Resource
     private UserService userService;
 
+    @Autowired
+    private  DepotHeadServiceAws depotHeadServiceAws;
+
     @GetMapping(value = "/info")
     @ApiOperation(value = "根据id获取信息")
     public String getList(@RequestParam("id") Long id,
                           HttpServletRequest request) throws Exception {
         DepotHead depotHead = depotHeadService.getDepotHead(id);
         Map objectMap = new HashMap<>();
-        if(depotHead != null) {
+        if (depotHead != null) {
             objectMap.put("info", depotHead);
             return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code);
         } else {
@@ -77,7 +80,7 @@ public class DepotHeadController extends BaseController {
     @GetMapping(value = "/list")
     @ApiOperation(value = "获取信息列表")
     public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search,
-                                 HttpServletRequest request)throws Exception {
+                                 HttpServletRequest request) throws Exception {
         String type = StringUtil.getInfo(search, "type");
         String subType = StringUtil.getInfo(search, "subType");
         String hasDebt = StringUtil.getInfo(search, "hasDebt");
@@ -101,7 +104,7 @@ public class DepotHeadController extends BaseController {
 
     @DeleteMapping(value = "/delete")
     @ApiOperation(value = "删除")
-    public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception {
+    public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request) throws Exception {
         Map objectMap = new HashMap<>();
         int delete = depotHeadService.deleteDepotHead(id, request);
         return returnStr(objectMap, delete);
@@ -109,7 +112,7 @@ public class DepotHeadController extends BaseController {
 
     @DeleteMapping(value = "/deleteBatch")
     @ApiOperation(value = "批量删除")
-    public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception {
+    public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request) throws Exception {
         Map objectMap = new HashMap<>();
         int delete = depotHeadService.batchDeleteDepotHead(ids, request);
         return returnStr(objectMap, delete);
@@ -117,6 +120,7 @@ public class DepotHeadController extends BaseController {
 
     /**
      * 批量设置状态-审核或者反审核
+     *
      * @param jsonObject
      * @param request
      * @return
@@ -124,20 +128,53 @@ public class DepotHeadController extends BaseController {
     @PostMapping(value = "/batchSetStatus")
     @ApiOperation(value = "批量设置状态-审核或者反审核")
     public String batchSetStatus(@RequestBody JSONObject jsonObject,
-                                 HttpServletRequest request) throws Exception{
+                                 HttpServletRequest request) throws Exception {
+        boolean isnumber = jsonObject.containsKey("number");
         Map objectMap = new HashMap<>();
         String status = jsonObject.getString("status");
-        String ids = jsonObject.getString("ids");
+        String ids;
+        if(isnumber){
+            String number = jsonObject.getString("number");
+              ids=depotHeadServiceAws.findIdByNumber(number)+",";
+        }else {
+              ids = jsonObject.getString("ids");
+        //查询是否等于其他入库,如果是责调用BPM发起流程接口
+        String typeById = depotHeadServiceAws.findTypeById(jsonObject.getString("ids").replace(",", ""));
+        if ("入库".equals(typeById)&&"1".equals(status)){
+            String bpmUrl = systemConfigService.getBpmUrl();
+            String gdefaultNumber = depotHeadServiceAws.getdefaultNumberbyId(jsonObject.getString("ids").replace(",", ""));
+            //构建获取任务实例ID
+            String endpointform = "/eai/v1/querytask"; //
+            HttpUrl.Builder processurlbuilder = HttpUrl.parse(bpmUrl + endpointform).newBuilder();
+            JSONObject processjson =new JSONObject();
+            processjson.put("ProcessInstId",gdefaultNumber);
+            String bpmjson = sendPostRequest(processurlbuilder, processjson, "post");
+            String   taskinstid = JSONObject.parseObject(bpmjson).getString("id");
+            //
+            String taskComplete = "/task/v1/taskComplete/"+taskinstid; // 假设目标接口路径
+            HttpUrl.Builder taskCompletebulider = HttpUrl.parse(bpmUrl + taskComplete).newBuilder();
+            taskCompletebulider.addQueryParameter("taskInstId",taskinstid);
+            taskCompletebulider.addQueryParameter("uid","admin");
+            taskCompletebulider.addQueryParameter("isBranch","true");
+            sendPostRequest(taskCompletebulider, "", "put");
+        }
+
+        }
         int res = depotHeadService.batchSetStatus(status, ids);
-        if(res > 0) {
+        if (res > 0) {
             return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code);
         } else {
             return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code);
         }
+
+
+
+
     }
 
     /**
      * 入库出库明细接口
+     *
      * @param currentPage
      * @param pageSize
      * @param oId
@@ -167,39 +204,39 @@ public class DepotHeadController extends BaseController {
                                             @RequestParam("remark") String remark,
                                             @RequestParam(value = "column", required = false, defaultValue = "createTime") String column,
                                             @RequestParam(value = "order", required = false, defaultValue = "desc") String order,
-                                            HttpServletRequest request)throws Exception {
+                                            HttpServletRequest request) throws Exception {
         BaseResponseInfo res = new BaseResponseInfo();
         Map map = new HashMap();
         try {
             List depotList = new ArrayList<>();
-            if(depotId != null) {
+            if (depotId != null) {
                 depotList.add(depotId);
             } else {
                 //未选择仓库时默认为当前用户有权限的仓库
                 JSONArray depotArr = depotService.findDepotByCurrentUser();
-                for(Object obj: depotArr) {
+                for (Object obj : depotArr) {
                     JSONObject object = JSONObject.parseObject(obj.toString());
                     depotList.add(object.getLong("id"));
                 }
             }
             List resList = new ArrayList();
-            String [] creatorArray = depotHeadService.getCreatorArray();
-            if(creatorArray == null && organizationId != null) {
+            String[] creatorArray = depotHeadService.getCreatorArray();
+            if (creatorArray == null && organizationId != null) {
                 creatorArray = depotHeadService.getCreatorArrayByOrg(organizationId);
             }
-            String subType = "出库".equals(type)? "销售" : "";
-            String [] organArray = depotHeadService.getOrganArray(subType, "");
+            String subType = "出库".equals(type) ? "销售" : "";
+            String[] organArray = depotHeadService.getOrganArray(subType, "");
             List categoryList = new ArrayList<>();
-            if(categoryId != null){
+            if (categoryId != null) {
                 categoryList = materialService.getListByParentId(categoryId);
             }
             beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME);
-            endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME);
+            endTime = Tools.parseDayToTime(endTime, BusinessConstants.DAY_LAST_TIME);
             Boolean forceFlag = systemConfigService.getForceApprovalFlag();
             Boolean inOutManageFlag = systemConfigService.getInOutManageFlag();
             List list = depotHeadService.findInOutDetail(beginTime, endTime, type, creatorArray, organArray, categoryList, forceFlag, inOutManageFlag,
                     StringUtil.toNull(materialParam), depotList, oId, StringUtil.toNull(number), creator, remark,
-                    StringUtil.safeSqlParse(column), StringUtil.safeSqlParse(order), (currentPage-1)*pageSize, pageSize);
+                    StringUtil.safeSqlParse(column), StringUtil.safeSqlParse(order), (currentPage - 1) * pageSize, pageSize);
             int total = depotHeadService.findInOutDetailCount(beginTime, endTime, type, creatorArray, organArray, categoryList, forceFlag, inOutManageFlag,
                     StringUtil.toNull(materialParam), depotList, oId, StringUtil.toNull(number), creator, remark);
             map.put("total", total);
@@ -214,7 +251,7 @@ public class DepotHeadController extends BaseController {
             map.put("allPriceTotal", statistic.getAllPrice());
             res.code = 200;
             res.data = map;
-        } catch(Exception e){
+        } catch (Exception e) {
             logger.error(e.getMessage(), e);
             res.code = 500;
             res.data = "获取数据失败";
@@ -224,6 +261,7 @@ public class DepotHeadController extends BaseController {
 
     /**
      * 入库出库汇总接口
+     *
      * @param currentPage
      * @param pageSize
      * @param oId
@@ -249,32 +287,32 @@ public class DepotHeadController extends BaseController {
                                                    @RequestParam("type") String type,
                                                    @RequestParam(value = "column", required = false, defaultValue = "createTime") String column,
                                                    @RequestParam(value = "order", required = false, defaultValue = "desc") String order,
-                                                   HttpServletRequest request)throws Exception {
+                                                   HttpServletRequest request) throws Exception {
         BaseResponseInfo res = new BaseResponseInfo();
         Map map = new HashMap();
         try {
             List depotList = new ArrayList<>();
-            if(depotId != null) {
+            if (depotId != null) {
                 depotList.add(depotId);
             } else {
                 //未选择仓库时默认为当前用户有权限的仓库
                 JSONArray depotArr = depotService.findDepotByCurrentUser();
-                for(Object obj: depotArr) {
+                for (Object obj : depotArr) {
                     JSONObject object = JSONObject.parseObject(obj.toString());
                     depotList.add(object.getLong("id"));
                 }
             }
             List categoryList = new ArrayList<>();
-            if(categoryId != null){
+            if (categoryId != null) {
                 categoryList = materialService.getListByParentId(categoryId);
             }
-            beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME);
-            endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME);
+            beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME);
+            endTime = Tools.parseDayToTime(endTime, BusinessConstants.DAY_LAST_TIME);
             Boolean forceFlag = systemConfigService.getForceApprovalFlag();
             Boolean inOutManageFlag = systemConfigService.getInOutManageFlag();
             List list = depotHeadService.findInOutMaterialCount(beginTime, endTime, type, categoryList, forceFlag, inOutManageFlag,
                     StringUtil.toNull(materialParam), depotList, organizationId, oId, StringUtil.safeSqlParse(column), StringUtil.safeSqlParse(order),
-                    (currentPage-1)*pageSize, pageSize);
+                    (currentPage - 1) * pageSize, pageSize);
             int total = depotHeadService.findInOutMaterialCountTotal(beginTime, endTime, type, categoryList, forceFlag, inOutManageFlag,
                     StringUtil.toNull(materialParam), depotList, organizationId, oId);
             map.put("total", total);
@@ -285,7 +323,7 @@ public class DepotHeadController extends BaseController {
             map.put("priceSumTotal", statistic.getPriceSum());
             res.code = 200;
             res.data = map;
-        } catch(Exception e){
+        } catch (Exception e) {
             logger.error(e.getMessage(), e);
             res.code = 500;
             res.data = "获取数据失败";
@@ -295,12 +333,13 @@ public class DepotHeadController extends BaseController {
 
     /**
      * 调拨明细统计
+     *
      * @param currentPage
      * @param pageSize
      * @param number
      * @param materialParam
-     * @param depotIdF  调出仓库
-     * @param depotId  调入仓库
+     * @param depotIdF      调出仓库
+     * @param depotId       调入仓库
      * @param beginTime
      * @param endTime
      * @param subType
@@ -323,46 +362,46 @@ public class DepotHeadController extends BaseController {
                                                  @RequestParam("remark") String remark,
                                                  @RequestParam(value = "column", required = false, defaultValue = "createTime") String column,
                                                  @RequestParam(value = "order", required = false, defaultValue = "desc") String order,
-                                                 HttpServletRequest request)throws Exception {
+                                                 HttpServletRequest request) throws Exception {
         BaseResponseInfo res = new BaseResponseInfo();
         Map map = new HashMap();
         try {
             List depotList = new ArrayList<>();
             List depotFList = new ArrayList<>();
-            if(depotId != null) {
+            if (depotId != null) {
                 depotList.add(depotId);
             } else {
                 //未选择仓库时默认为当前用户有权限的仓库
                 JSONArray depotArr = depotService.findDepotByCurrentUser();
-                for(Object obj: depotArr) {
+                for (Object obj : depotArr) {
                     JSONObject object = JSONObject.parseObject(obj.toString());
                     depotList.add(object.getLong("id"));
                 }
             }
-            if(depotIdF != null) {
+            if (depotIdF != null) {
                 depotFList.add(depotIdF);
             } else {
                 //未选择仓库时默认为当前用户有权限的仓库
                 JSONArray depotArr = depotService.findDepotByCurrentUser();
-                for(Object obj: depotArr) {
+                for (Object obj : depotArr) {
                     JSONObject object = JSONObject.parseObject(obj.toString());
                     depotFList.add(object.getLong("id"));
                 }
             }
-            String [] creatorArray = depotHeadService.getCreatorArray();
-            if(creatorArray == null && organizationId != null) {
+            String[] creatorArray = depotHeadService.getCreatorArray();
+            if (creatorArray == null && organizationId != null) {
                 creatorArray = depotHeadService.getCreatorArrayByOrg(organizationId);
             }
             List categoryList = new ArrayList<>();
-            if(categoryId != null){
+            if (categoryId != null) {
                 categoryList = materialService.getListByParentId(categoryId);
             }
             beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME);
-            endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME);
+            endTime = Tools.parseDayToTime(endTime, BusinessConstants.DAY_LAST_TIME);
             Boolean forceFlag = systemConfigService.getForceApprovalFlag();
             List list = depotHeadService.findAllocationDetail(beginTime, endTime, subType, StringUtil.toNull(number),
                     creatorArray, categoryList, forceFlag, StringUtil.toNull(materialParam), depotList, depotFList, remark,
-                    StringUtil.safeSqlParse(column), StringUtil.safeSqlParse(order), (currentPage-1)*pageSize, pageSize);
+                    StringUtil.safeSqlParse(column), StringUtil.safeSqlParse(order), (currentPage - 1) * pageSize, pageSize);
             int total = depotHeadService.findAllocationDetailCount(beginTime, endTime, subType, StringUtil.toNull(number),
                     creatorArray, categoryList, forceFlag, StringUtil.toNull(materialParam), depotList, depotFList, remark);
             map.put("rows", list);
@@ -373,7 +412,7 @@ public class DepotHeadController extends BaseController {
             map.put("allPriceTotal", statistic.getAllPrice());
             res.code = 200;
             res.data = map;
-        } catch(Exception e){
+        } catch (Exception e) {
             logger.error(e.getMessage(), e);
             res.code = 500;
             res.data = "获取数据失败";
@@ -383,12 +422,13 @@ public class DepotHeadController extends BaseController {
 
     /**
      * 对账单接口
+     *
      * @param currentPage
      * @param pageSize
      * @param beginTime
      * @param endTime
      * @param organId
-     * @param hasDebt 1-有欠款 0-无欠款
+     * @param hasDebt      1-有欠款 0-无欠款
      * @param supplierType
      * @param request
      * @return
@@ -396,13 +436,13 @@ public class DepotHeadController extends BaseController {
     @GetMapping(value = "/getStatementAccount")
     @ApiOperation(value = "对账单接口")
     public BaseResponseInfo getStatementAccount(@RequestParam("currentPage") Integer currentPage,
-                                                 @RequestParam("pageSize") Integer pageSize,
-                                                 @RequestParam("beginTime") String beginTime,
-                                                 @RequestParam("endTime") String endTime,
-                                                 @RequestParam(value = "organId", required = false) Integer organId,
-                                                 @RequestParam(value = "hasDebt", required = false) Integer hasDebt,
-                                                 @RequestParam("supplierType") String supplierType,
-                                                 HttpServletRequest request) throws Exception{
+                                                @RequestParam("pageSize") Integer pageSize,
+                                                @RequestParam("beginTime") String beginTime,
+                                                @RequestParam("endTime") String endTime,
+                                                @RequestParam(value = "organId", required = false) Integer organId,
+                                                @RequestParam(value = "hasDebt", required = false) Integer hasDebt,
+                                                @RequestParam("supplierType") String supplierType,
+                                                HttpServletRequest request) throws Exception {
         BaseResponseInfo res = new BaseResponseInfo();
         Map map = new HashMap();
         try {
@@ -424,14 +464,14 @@ public class DepotHeadController extends BaseController {
                 subTypeBack = "销售退货";
                 billType = "收款";
             }
-            String [] organArray = depotHeadService.getOrganArray(subType, "");
-            beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME);
-            endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME);
+            String[] organArray = depotHeadService.getOrganArray(subType, "");
+            beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME);
+            endTime = Tools.parseDayToTime(endTime, BusinessConstants.DAY_LAST_TIME);
             List list = depotHeadService.getStatementAccount(beginTime, endTime, organId, organArray,
-                    hasDebt, supplierType, type, subType,typeBack, subTypeBack, billType, (currentPage-1)*pageSize, pageSize);
+                    hasDebt, supplierType, type, subType, typeBack, subTypeBack, billType, (currentPage - 1) * pageSize, pageSize);
             int total = depotHeadService.getStatementAccountCount(beginTime, endTime, organId, organArray,
-                    hasDebt, supplierType, type, subType,typeBack, subTypeBack, billType);
-            for(DepotHeadVo4StatementAccount item: list) {
+                    hasDebt, supplierType, type, subType, typeBack, subTypeBack, billType);
+            for (DepotHeadVo4StatementAccount item : list) {
                 //期初 = 起始期初金额+上期欠款金额-上期退货的欠款金额-上期收付款
                 BigDecimal preNeed = item.getBeginNeed().add(item.getPreDebtMoney()).subtract(item.getPreReturnDebtMoney()).subtract(item.getPreBackMoney());
                 item.setPreNeed(preNeed);
@@ -446,11 +486,11 @@ public class DepotHeadController extends BaseController {
             map.put("total", total);
             List totalPayList = depotHeadService.getStatementAccountTotalPay(beginTime, endTime, organId, organArray,
                     hasDebt, supplierType, type, subType, typeBack, subTypeBack, billType);
-            if(totalPayList.size()>0) {
+            if (totalPayList.size() > 0) {
                 DepotHeadVo4StatementAccount totalPayItem = totalPayList.get(0);
                 BigDecimal firstMoney = BigDecimal.ZERO;
                 BigDecimal lastMoney = BigDecimal.ZERO;
-                if(totalPayItem!=null) {
+                if (totalPayItem != null) {
                     //期初 = 起始期初金额+上期欠款金额-上期退货的欠款金额-上期收付款
                     firstMoney = totalPayItem.getBeginNeed().add(totalPayItem.getPreDebtMoney()).subtract(totalPayItem.getPreReturnDebtMoney()).subtract(totalPayItem.getPreBackMoney());
                     //期末 = 期初+本期欠款-本期退货的欠款金额-本期收款
@@ -461,7 +501,7 @@ public class DepotHeadController extends BaseController {
             }
             res.code = 200;
             res.data = map;
-        } catch(Exception e){
+        } catch (Exception e) {
             logger.error(e.getMessage(), e);
             res.code = 500;
             res.data = "获取数据失败";
@@ -471,6 +511,7 @@ public class DepotHeadController extends BaseController {
 
     /**
      * 根据编号查询单据信息
+     *
      * @param number
      * @param request
      * @return
@@ -478,17 +519,17 @@ public class DepotHeadController extends BaseController {
     @GetMapping(value = "/getDetailByNumber")
     @ApiOperation(value = "根据编号查询单据信息")
     public BaseResponseInfo getDetailByNumber(@RequestParam("number") String number,
-                                         HttpServletRequest request)throws Exception {
+                                              HttpServletRequest request) throws Exception {
         BaseResponseInfo res = new BaseResponseInfo();
         DepotHeadVo4List dhl = new DepotHeadVo4List();
         try {
             List list = depotHeadService.getDetailByNumber(number, request);
-            if(list.size()>0) {
+            if (list.size() > 0) {
                 dhl = list.get(0);
             }
             res.code = 200;
             res.data = dhl;
-        } catch(Exception e){
+        } catch (Exception e) {
             logger.error(e.getMessage(), e);
             res.code = 500;
             res.data = "获取数据失败";
@@ -498,6 +539,7 @@ public class DepotHeadController extends BaseController {
 
     /**
      * 根据原单号查询关联的单据列表
+     *
      * @param number
      * @param request
      * @return
@@ -505,14 +547,14 @@ public class DepotHeadController extends BaseController {
     @GetMapping(value = "/getBillListByLinkNumber")
     @ApiOperation(value = "根据原单号查询关联的单据列表")
     public BaseResponseInfo getBillListByLinkNumber(@RequestParam("number") String number,
-                                              HttpServletRequest request)throws Exception {
+                                                    HttpServletRequest request) throws Exception {
         BaseResponseInfo res = new BaseResponseInfo();
         DepotHead dh = new DepotHead();
         try {
             List list = depotHeadService.getBillListByLinkNumber(number);
             res.code = 200;
             res.data = list;
-        } catch(Exception e){
+        } catch (Exception e) {
             logger.error(e.getMessage(), e);
             res.code = 500;
             res.data = "获取数据失败";
@@ -522,6 +564,7 @@ public class DepotHeadController extends BaseController {
 
     /**
      * 新增单据主表及单据子表信息
+     *
      * @param body
      * @param request
      * @return
@@ -529,16 +572,219 @@ public class DepotHeadController extends BaseController {
      */
     @PostMapping(value = "/addDepotHeadAndDetail")
     @ApiOperation(value = "新增单据主表及单据子表信息")
-    public Object addDepotHeadAndDetail(@RequestBody DepotHeadVo4Body body, HttpServletRequest request) throws  Exception{
+    public Object addDepotHeadAndDetail(@RequestBody DepotHeadVo4Body body, HttpServletRequest request) throws Exception {
         JSONObject result = ExceptionConstants.standardSuccess();
         String beanJson = body.getInfo();
         String rows = body.getRows();
-        depotHeadService.addDepotHeadAndDetail(beanJson, rows, request);
+         depotHeadService.addDepotHeadAndDetail(beanJson, rows, request);
+        //获取application.properties中的值awspaas.bpm.url
+        String bpmUrl = systemConfigService.getBpmUrl();
+        JSONObject beanjsonObject = JSONObject.parseObject(beanJson);
+        JSONArray rowsObject = JSONObject.parseArray(rows);
+
+        String subType = beanjsonObject.getString("subType");
+        //只有采购订单调用bpm流程引擎
+        if ("采购订单".equals(subType)){
+        //调用bpm服务
+        // 获取 BPM 服务地址
+        String endpoint = "/process/v1/process/obj_a0211b6dec654be69c7fa48bcc6ec2bc"; // 假设目标接口路径
+        // 构建请求URL(包含查询参数)
+        HttpUrl.Builder urlBuilder = HttpUrl.parse(bpmUrl + endpoint).newBuilder();
+        urlBuilder.addQueryParameter("processDefId", "obj_a0211b6dec654be69c7fa48bcc6ec2bc");
+        urlBuilder.addQueryParameter("title", "单据编号:" + beanjsonObject.getString("defaultNumber") + ",采购订单流程");
+        urlBuilder.addQueryParameter("uid", "admin");
+        // 创建请求体
+        JSONObject requestBodyJson = new JSONObject();
+        //requestBodyJson.put("beanJson", beanJson);
+        // requestBodyJson.put("rows", rows);
+        okhttp3.RequestBody requestBody = okhttp3.RequestBody.create(
+                MediaType.get("application/json; charset=utf-8"),
+                requestBodyJson.toJSONString()
+        );
+        // 构建完整POST请求
+        Request requestBpm = new Request.Builder().url(urlBuilder.build().toString()).post(requestBody).build();
+        OkHttpClient client = new OkHttpClient();
+        // 发送请求
+        try {
+
+            Response response = client.newCall(requestBpm).execute();
+            if (!response.isSuccessful()) {
+                throw new IOException("BPM接口调用失败: " + response.code());
+            }
+         //   System.out.println("BPM响应: " + response.body().string());
+            JSONObject jsonObject = JSONObject.parseObject(response.body().string());
+            //获取流程实例ID
+            String processinstid = jsonObject.getString("id");
+
+            //构建主表请求数据
+            String endpointform = "/bo/v1/BO_EU_DEPOTHEAD/record"; // 假设目标接口路径
+            HttpUrl.Builder urlBuilderform = HttpUrl.parse(bpmUrl + endpointform).newBuilder();
+            urlBuilderform.addQueryParameter("boName", "BO_EU_DEPOTHEAD");
+            urlBuilderform.addQueryParameter("bindId", processinstid);
+            urlBuilderform.addQueryParameter("uid", "admin");
+            JSONObject formObeject = JSONObject.parseObject(convertKeysToUpperCase(beanjsonObject).toString());
+            sendPostRequest(urlBuilderform, formObeject, "post");
+            //构建主表请求结束
+
+            //构建子表请求数据开始
+            String endpointformdata = "/bo/v1/BO_EU_DEPOTDATA/record/batch"; // 假设目标接口路径
+            HttpUrl.Builder urlendpointformdata = HttpUrl.parse(bpmUrl + endpointformdata).newBuilder();
+            urlendpointformdata.addQueryParameter("boName", "BO_EU_DEPOTDATA");
+            urlendpointformdata.addQueryParameter("bindId", processinstid);
+            urlendpointformdata.addQueryParameter("uid", "admin");
+            JSONArray formObejectdara = removeUppercaseIdKeys(JSONArray.parseArray(convertKeysToUpperCase(rowsObject).toString()));
+            System.out.println(formObejectdara);
+            sendPostRequest(urlendpointformdata, formObejectdara, "post");
+
+            //流程启动请求开始
+            String processStart = "/process/v1/start/" + processinstid; // 假设目标接口路径
+            HttpUrl.Builder processStartendpoint = HttpUrl.parse(bpmUrl + processStart).newBuilder();
+            sendPostRequest(processStartendpoint, "", "put");
+            //流程启动请求结束
+        } catch (IOException e) {
+            logger.error("调用BPM服务失败", e);
+        }
+        }else if("采购".equals(subType)){
+            //构建主表请求数据 原来等于其他
+            String endpointform = "/process/v1/process/obj_560a684f02804660add41902dbac67d5"; // 假设目标接口路径
+            HttpUrl.Builder processurlbuilder = HttpUrl.parse(bpmUrl + endpointform).newBuilder();
+            processurlbuilder.addQueryParameter("processDefId", "obj_560a684f02804660add41902dbac67d5");
+            processurlbuilder.addQueryParameter("title", "单号为:"+beanjsonObject.getString("defaultNumber")+"采购入库流程");
+            processurlbuilder.addQueryParameter("uid", "admin");
+            JSONObject processjson =new JSONObject();
+            processjson.put("defaultNumber",beanjsonObject.getString("defaultNumber"));
+            String bpmjson = sendPostRequest(processurlbuilder, processjson, "post");
+            String   processid = JSONObject.parseObject(bpmjson).getString("id");
+            //流程启动请求开始
+            String processStart = "/process/v1/start/" + processid; // 假设目标接口路径
+            HttpUrl.Builder processStartendpoint = HttpUrl.parse(bpmUrl + processStart).newBuilder();
+            sendPostRequest(processStartendpoint, "", "put");
+            //将bpmid传入erp中
+            depotHeadServiceAws.updateDefaultNumber(processid, beanjsonObject.getString("defaultNumber"));
+
+            String querytask = "/eai/v1/querytask";
+            HttpUrl.Builder querytaskbuilder = HttpUrl.parse(bpmUrl + querytask).newBuilder();
+            JSONObject querytaskjson =new JSONObject();
+            querytaskjson.put("ProcessInstId",processid);
+            String bpmtaskjson = sendPostRequest(querytaskbuilder, querytaskjson, "post");
+            String   taskinstid = JSONObject.parseObject(bpmtaskjson).getString("id");
+
+
+
+
+            String taskComplete = "/task/v1/taskComplete/"+taskinstid; // 假设目标接口路径
+            HttpUrl.Builder taskCompletebulider = HttpUrl.parse(bpmUrl + taskComplete).newBuilder();
+            taskCompletebulider.addQueryParameter("taskInstId",taskinstid);
+            taskCompletebulider.addQueryParameter("uid","admin");
+            taskCompletebulider.addQueryParameter("isBranch","true");
+            taskCompletebulider.addQueryParameter("isBreakUserTask","false");
+            sendPostRequest(taskCompletebulider, "", "put");
+
+        }
         return result;
     }
 
+
+    /**
+     * 处理新增单据主表及子表信息的API请求。
+     *
+     * @param body        请求体,包含info(主表数据)和rows(子表数据)的JSON字符串
+     * @param request     HTTP请求对象,用于获取请求相关信息
+     * @return 返回标准的成功结果对象,包含操作状态和消息
+     * @throws Exception 可能抛出的异常,如数据验证失败或服务层异常
+     */
+    @PostMapping(value = "/addDepotHeadAndDetailforAPI")
+    @ApiOperation(value = "新增单据主表及单据子表信息")
+    public Object addDepotHeadAndDetailApi(@RequestBody String  body, HttpServletRequest request) throws Exception {
+        System.out.println(body.toString());
+
+        /* 将请求体解析为JSON对象 */
+        JSONObject beanjsonObject = JSONObject.parseObject(body);
+
+        /* 提取JSON中的rows和info字段,分别对应子表和主表数据 */
+        String rows = beanjsonObject.getString("rows");
+        String beanJson = beanjsonObject.getString("info");
+
+        /* 调用服务层方法保存主表及子表信息 */
+        depotHeadService.addDepotHeadAndDetail(beanJson, rows, request);
+
+        /* 创建标准的成功返回结果 */
+        JSONObject result = ExceptionConstants.standardSuccess();
+
+        return result;
+
+    }
+
+    /**
+     * 将JSON对象或数组中的所有键转换为大写形式,支持嵌套结构的递归处理。
+     *
+     * @param json 需要转换键的JSON对象或数组
+     * @return 处理后的JSON对象或数组,保持原有结构但所有键转为大写
+     */
+    public static Object convertKeysToUpperCase(Object json) {
+        if (json instanceof JSONObject) {
+            JSONObject jsonObject = (JSONObject) json;
+            JSONObject newObj = new JSONObject(true);
+            for (Map.Entry entry : jsonObject.entrySet()) {
+                String upperKey = entry.getKey().toUpperCase();
+                Object value = entry.getValue();
+                newObj.put(upperKey, convertKeysToUpperCase(value));
+            }
+            return newObj;
+        } else if (json instanceof JSONArray) {
+            JSONArray jsonArray = (JSONArray) json;
+            JSONArray newArr = new JSONArray();
+            for (Object item : jsonArray) {
+                newArr.add(convertKeysToUpperCase(item));
+            }
+            return newArr;
+        } else {
+            return json;
+        }
+    }
+
+    public static JSONArray removeUppercaseIdKeys(JSONArray jsonArray) {
+        for (Object obj : jsonArray) {
+            if (obj instanceof JSONObject) {
+                JSONObject jsonObject = (JSONObject) obj;
+                jsonObject.remove("ID"); // 只删大写 ID
+            }
+        }
+        return jsonArray;
+    }
+
+
+    public String sendPostRequest(HttpUrl.Builder urlBuilder, Object requestBodyJson, String requestType) {
+        OkHttpClient client = new OkHttpClient();
+        okhttp3.RequestBody requestBody = okhttp3.RequestBody.create(
+                MediaType.get("application/json; charset=utf-8"),
+                requestBodyJson.toString()
+        );
+        // 构建完整POST请求
+        Request requestBpm;
+        if (requestType.equals("post")) {
+            requestBpm = new Request.Builder().url(urlBuilder.build().toString()).post(requestBody).build();
+        } else {
+            requestBpm = new Request.Builder().url(urlBuilder.build().toString()).put(requestBody).build();
+        }
+        try {
+            Response response = client.newCall(requestBpm).execute();
+            if (!response.isSuccessful()) {
+                throw new IOException("BPM接口调用失败: " + response.code());
+            }
+            return response.body().string();
+
+            //  JSONObject jsonObject = JSONObject.parseObject(response.body().string());
+
+        } catch (IOException e) {
+            logger.error("调用BPM服务失败", e);
+        }
+        return "";
+    }
+
     /**
      * 更新单据主表及单据子表信息
+     *
      * @param body
      * @param request
      * @return
@@ -546,16 +792,17 @@ public class DepotHeadController extends BaseController {
      */
     @PutMapping(value = "/updateDepotHeadAndDetail")
     @ApiOperation(value = "更新单据主表及单据子表信息")
-    public Object updateDepotHeadAndDetail(@RequestBody DepotHeadVo4Body body, HttpServletRequest request) throws Exception{
+    public Object updateDepotHeadAndDetail(@RequestBody DepotHeadVo4Body body, HttpServletRequest request) throws Exception {
         JSONObject result = ExceptionConstants.standardSuccess();
         String beanJson = body.getInfo();
         String rows = body.getRows();
-        depotHeadService.updateDepotHeadAndDetail(beanJson,rows,request);
+        depotHeadService.updateDepotHeadAndDetail(beanJson, rows, request);
         return result;
     }
 
     /**
      * 统计今日采购额、昨日采购额、本月采购额、今年采购额|销售额|零售额
+     *
      * @param request
      * @return
      */
@@ -566,7 +813,7 @@ public class DepotHeadController extends BaseController {
         try {
             Map map = new HashMap<>();
             String loginName = userService.getCurrentUser().getLoginName();
-            if(!"admin".equals(loginName)) {
+            if (!"admin".equals(loginName)) {
                 String today = Tools.getNow() + BusinessConstants.DAY_FIRST_TIME;
                 String monthFirstDay = Tools.firstDayOfMonth(Tools.getCurrentMonth()) + BusinessConstants.DAY_FIRST_TIME;
                 String yesterdayBegin = Tools.getYesterday() + BusinessConstants.DAY_FIRST_TIME;
@@ -577,7 +824,7 @@ public class DepotHeadController extends BaseController {
             }
             res.code = 200;
             res.data = map;
-        } catch(Exception e){
+        } catch (Exception e) {
             logger.error(e.getMessage(), e);
             res.code = 500;
             res.data = "获取数据失败";
@@ -588,6 +835,7 @@ public class DepotHeadController extends BaseController {
     /**
      * 根据当前用户获取操作员数组,用于控制当前用户的数据权限,限制可以看到的单据范围
      * 注意:该接口提供给部分插件使用,勿删
+     *
      * @param request
      * @return
      */
@@ -609,6 +857,7 @@ public class DepotHeadController extends BaseController {
 
     /**
      * 查询存在欠款的单据
+     *
      * @param search
      * @param request
      * @return
@@ -619,7 +868,7 @@ public class DepotHeadController extends BaseController {
     public String debtList(@RequestParam(value = Constants.SEARCH, required = false) String search,
                            @RequestParam("currentPage") Integer currentPage,
                            @RequestParam("pageSize") Integer pageSize,
-                           HttpServletRequest request)throws Exception {
+                           HttpServletRequest request) throws Exception {
         Map objectMap = new HashMap<>();
         String organIdStr = StringUtil.getInfo(search, "organId");
         Long organId = Long.parseLong(organIdStr);
@@ -629,7 +878,7 @@ public class DepotHeadController extends BaseController {
         String endTime = StringUtil.getInfo(search, "endTime");
         String status = StringUtil.getInfo(search, "status");
         List list = depotHeadService.debtList(organId, materialParam, number, beginTime, endTime,
-                status, (currentPage-1)*pageSize, pageSize);
+                status, (currentPage - 1) * pageSize, pageSize);
         int total = depotHeadService.debtListCount(organId, materialParam, number, beginTime, endTime, status);
         if (list != null) {
             objectMap.put("rows", list);
@@ -644,6 +893,7 @@ public class DepotHeadController extends BaseController {
 
     /**
      * 导出存在欠款的单据
+     *
      * @param organId
      * @param materialParam
      * @param number
@@ -668,7 +918,7 @@ public class DepotHeadController extends BaseController {
                            @RequestParam(value = "endTime", required = false) String endTime,
                            @RequestParam(value = "status", required = false) String status,
                            @RequestParam(value = "mpList", required = false) String mpList,
-                           HttpServletRequest request, HttpServletResponse response)throws Exception {
+                           HttpServletRequest request, HttpServletResponse response) throws Exception {
         try {
             depotHeadService.debtExport(organId, materialParam, number, type, subType, beginTime, endTime,
                     status, mpList, request, response);
@@ -679,6 +929,7 @@ public class DepotHeadController extends BaseController {
 
     /**
      * 查询等待入库或出库的单据
+     *
      * @param search
      * @param request
      * @return
@@ -687,9 +938,9 @@ public class DepotHeadController extends BaseController {
     @GetMapping(value = "/waitBillList")
     @ApiOperation(value = "查询等待入库或出库的单据")
     public String waitBillList(@RequestParam(value = Constants.SEARCH, required = false) String search,
-                           @RequestParam("currentPage") Integer currentPage,
-                           @RequestParam("pageSize") Integer pageSize,
-                           HttpServletRequest request)throws Exception {
+                               @RequestParam("currentPage") Integer currentPage,
+                               @RequestParam("pageSize") Integer pageSize,
+                               HttpServletRequest request) throws Exception {
         Map objectMap = new HashMap<>();
         String number = StringUtil.getInfo(search, "number");
         String materialParam = StringUtil.getInfo(search, "materialParam");
@@ -699,7 +950,7 @@ public class DepotHeadController extends BaseController {
         String endTime = StringUtil.getInfo(search, "endTime");
         String status = StringUtil.getInfo(search, "status");
         List list = depotHeadService.waitBillList(number, materialParam, type, subType, beginTime, endTime,
-                status, (currentPage-1)*pageSize, pageSize);
+                status, (currentPage - 1) * pageSize, pageSize);
         long total = depotHeadService.waitBillCount(number, materialParam, type, subType, beginTime, endTime, status);
         if (list != null) {
             objectMap.put("rows", list);
@@ -714,6 +965,7 @@ public class DepotHeadController extends BaseController {
 
     /**
      * 查询等待入库或出库的单据数量
+     *
      * @param search
      * @param request
      * @return
@@ -722,7 +974,7 @@ public class DepotHeadController extends BaseController {
     @GetMapping(value = "/waitBillCount")
     @ApiOperation(value = "查询等待入库或出库的单据数量")
     public String waitBillCount(@RequestParam(value = Constants.SEARCH, required = false) String search,
-                               HttpServletRequest request)throws Exception {
+                                HttpServletRequest request) throws Exception {
         Map objectMap = new HashMap<>();
         String number = StringUtil.getInfo(search, "number");
         String materialParam = StringUtil.getInfo(search, "materialParam");
@@ -738,6 +990,7 @@ public class DepotHeadController extends BaseController {
 
     /**
      * 批量新增入库或出库单据
+     *
      * @param jsonObject
      * @param request
      * @return
@@ -746,7 +999,7 @@ public class DepotHeadController extends BaseController {
     @PostMapping(value = "/batchAddDepotHeadAndDetail")
     @ApiOperation(value = "批量新增入库或出库单据")
     public Object batchAddDepotHeadAndDetail(@RequestBody JSONObject jsonObject,
-                                             HttpServletRequest request) throws  Exception{
+                                             HttpServletRequest request) throws Exception {
         JSONObject result = ExceptionConstants.standardSuccess();
         String ids = jsonObject.getString("ids");
         depotHeadService.batchAddDepotHeadAndDetail(ids, request);
diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/UserController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/UserController.java
index a2f248331..9e39dab1a 100644
--- a/jshERP-boot/src/main/java/com/jsh/erp/controller/UserController.java
+++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/UserController.java
@@ -135,7 +135,8 @@ public class UserController extends BaseController {
     public BaseResponseInfo login(@RequestBody UserEx userParam, HttpServletRequest request)throws Exception {
         BaseResponseInfo res = new BaseResponseInfo();
         try {
-            userService.validateCaptcha(userParam.getCode(), userParam.getUuid());
+            //特殊处理,不校验验证码
+            //userService.validateCaptcha(userParam.getCode(), userParam.getUuid());
             Map data = userService.login(userParam.getLoginName().trim(), userParam.getPassword().trim(), request);
             res.code = 200;
             res.data = data;
diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperAws.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperAws.java
new file mode 100644
index 000000000..e2671e7bc
--- /dev/null
+++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperAws.java
@@ -0,0 +1,22 @@
+package com.jsh.erp.datasource.mappers;
+
+
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface DepotHeadMapperAws {
+    @Select("SELECT id FROM jsh_depot_head WHERE number = #{number}")
+    String getIdByNumber(String number);
+
+    @Select("SELECT type FROM jsh_depot_head WHERE id = #{id}")
+    String getIdBytype(String id);
+
+    @Insert("UPDATE jsh_depot_head SET  default_number =#{processid}  WHERE  number = #{number}  ")
+    int updateDefaultNumber(String processid, String number);
+
+    @Select("SELECT default_number FROM jsh_depot_head WHERE id = #{id}")
+    String getDefaultNumberbyId(String id);
+
+}
diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadService.java
index fd3a386e9..72a395a75 100644
--- a/jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadService.java
+++ b/jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadService.java
@@ -1713,4 +1713,7 @@ public class DepotHeadService {
                 new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_BATCH_ADD).append(sb).toString(),
                 ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest());
     }
+
+
+
 }
diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadServiceAws.java b/jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadServiceAws.java
new file mode 100644
index 000000000..cd624d359
--- /dev/null
+++ b/jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadServiceAws.java
@@ -0,0 +1,26 @@
+package com.jsh.erp.service;
+
+import com.jsh.erp.datasource.mappers.DepotHeadMapperAws;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class DepotHeadServiceAws {
+    @Autowired
+    private DepotHeadMapperAws depotHeadMapperAws;
+    public String findIdByNumber(String number) {
+        return depotHeadMapperAws.getIdByNumber(number);
+    }
+
+    public String findTypeById(String id) {
+        return depotHeadMapperAws.getIdBytype(id);
+    }
+
+    public int updateDefaultNumber(String processid, String number) {
+        return depotHeadMapperAws.updateDefaultNumber(processid, number);
+    }
+
+    public String getdefaultNumberbyId(String id) {
+        return depotHeadMapperAws.getDefaultNumberbyId(id);
+    }
+}
diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java
index a1aebdd8d..ea8ea6221 100644
--- a/jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java
+++ b/jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java
@@ -86,16 +86,29 @@ public class DepotItemService {
         return list;
     }
 
+    /**
+     * 根据条件查询并分页获取仓库物品列表
+     * @param name 要查询的仓库物品名称
+     * @param type 仓库物品类型(可选)
+     * @param remark 备注信息(可选)
+     * @param offset 分页起始位置
+     * @param rows 分页每页大小
+     * @return 符合条件的仓库物品列表
+     * @throws Exception 数据访问异常
+     */
     public List select(String name, Integer type, String remark, int offset, int rows)throws Exception {
         List list=null;
         try{
+            // 尝试根据条件查询并分页获取仓库物品列表
             list=depotItemMapperEx.selectByConditionDepotItem(name, type, remark, offset, rows);
         }catch(Exception e){
+            // 处理查询过程中发生的异常
             JshException.readFail(logger, e);
         }
         return list;
     }
 
+
     public Long countDepotItem(String name, Integer type, String remark) throws Exception{
         Long result =null;
         try{
diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/SystemConfigService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/SystemConfigService.java
index 6c2ff99de..05fd21381 100644
--- a/jshERP-boot/src/main/java/com/jsh/erp/service/SystemConfigService.java
+++ b/jshERP-boot/src/main/java/com/jsh/erp/service/SystemConfigService.java
@@ -56,123 +56,125 @@ public class SystemConfigService {
     @Resource
     private LogService logService;
 
-    @Value(value="${file.uploadType}")
+    @Value(value = "${file.uploadType}")
     private Long fileUploadType;
 
-    @Value(value="${file.path}")
+    @Value(value = "${file.path}")
     private String filePath;
 
     private static String DELETED = "deleted";
 
-    public SystemConfig getSystemConfig(long id)throws Exception {
-        SystemConfig result=null;
-        try{
-            result=systemConfigMapper.selectByPrimaryKey(id);
-        }catch(Exception e){
+    public SystemConfig getSystemConfig(long id) throws Exception {
+        SystemConfig result = null;
+        try {
+            result = systemConfigMapper.selectByPrimaryKey(id);
+        } catch (Exception e) {
             JshException.readFail(logger, e);
         }
         return result;
     }
 
-    public List getSystemConfig()throws Exception {
+    public List getSystemConfig() throws Exception {
         SystemConfigExample example = new SystemConfigExample();
         example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
-        List list=null;
-        try{
-            list=systemConfigMapper.selectByExample(example);
-        }catch(Exception e){
+        List list = null;
+        try {
+            list = systemConfigMapper.selectByExample(example);
+        } catch (Exception e) {
             JshException.readFail(logger, e);
         }
         return list;
     }
-    public List select(String companyName)throws Exception {
-        List list=null;
-        try{
+
+    public List select(String companyName) throws Exception {
+        List list = null;
+        try {
             PageUtils.startPage();
-            list=systemConfigMapperEx.selectByConditionSystemConfig(companyName);
-        }catch(Exception e){
+            list = systemConfigMapperEx.selectByConditionSystemConfig(companyName);
+        } catch (Exception e) {
             JshException.readFail(logger, e);
         }
         return list;
     }
 
     @Transactional(value = "transactionManager", rollbackFor = Exception.class)
-    public int insertSystemConfig(JSONObject obj, HttpServletRequest request) throws Exception{
+    public int insertSystemConfig(JSONObject obj, HttpServletRequest request) throws Exception {
         SystemConfig systemConfig = JSONObject.parseObject(obj.toJSONString(), SystemConfig.class);
-        int result=0;
-        try{
-            result=systemConfigMapper.insertSelective(systemConfig);
-            String logInfo = StringUtil.isNotEmpty(systemConfig.getCompanyName())?systemConfig.getCompanyName():"配置信息";
+        int result = 0;
+        try {
+            result = systemConfigMapper.insertSelective(systemConfig);
+            String logInfo = StringUtil.isNotEmpty(systemConfig.getCompanyName()) ? systemConfig.getCompanyName() : "配置信息";
             logService.insertLogWithUserId(userService.getCurrentUser().getId(), userService.getCurrentUser().getTenantId(), "系统配置",
                     new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(logInfo).toString(), request);
-        }catch(Exception e){
+        } catch (Exception e) {
             JshException.writeFail(logger, e);
         }
         return result;
     }
 
     @Transactional(value = "transactionManager", rollbackFor = Exception.class)
-    public int updateSystemConfig(JSONObject obj, HttpServletRequest request) throws Exception{
+    public int updateSystemConfig(JSONObject obj, HttpServletRequest request) throws Exception {
         SystemConfig systemConfig = JSONObject.parseObject(obj.toJSONString(), SystemConfig.class);
-        int result=0;
-        try{
+        int result = 0;
+        try {
             result = systemConfigMapper.updateByPrimaryKeySelective(systemConfig);
-            String logInfo = StringUtil.isNotEmpty(systemConfig.getCompanyName())?systemConfig.getCompanyName():"配置信息";
+            String logInfo = StringUtil.isNotEmpty(systemConfig.getCompanyName()) ? systemConfig.getCompanyName() : "配置信息";
             logService.insertLogWithUserId(userService.getCurrentUser().getId(), userService.getCurrentUser().getTenantId(), "系统配置",
                     new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(logInfo).toString(), request);
-        }catch(Exception e){
+        } catch (Exception e) {
             JshException.writeFail(logger, e);
         }
         return result;
     }
 
     @Transactional(value = "transactionManager", rollbackFor = Exception.class)
-    public int deleteSystemConfig(Long id, HttpServletRequest request)throws Exception {
+    public int deleteSystemConfig(Long id, HttpServletRequest request) throws Exception {
         return batchDeleteSystemConfigByIds(id.toString());
     }
 
     @Transactional(value = "transactionManager", rollbackFor = Exception.class)
-    public int batchDeleteSystemConfig(String ids, HttpServletRequest request)throws Exception {
+    public int batchDeleteSystemConfig(String ids, HttpServletRequest request) throws Exception {
         return batchDeleteSystemConfigByIds(ids);
     }
 
     @Transactional(value = "transactionManager", rollbackFor = Exception.class)
-    public int batchDeleteSystemConfigByIds(String ids)throws Exception {
+    public int batchDeleteSystemConfigByIds(String ids) throws Exception {
         logService.insertLog("系统配置",
                 new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_DELETE).append(ids).toString(),
                 ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest());
-        User userInfo=userService.getCurrentUser();
-        String [] idArray=ids.split(",");
-        int result=0;
-        try{
+        User userInfo = userService.getCurrentUser();
+        String[] idArray = ids.split(",");
+        int result = 0;
+        try {
             result = systemConfigMapperEx.batchDeleteSystemConfigByIds(new Date(), userInfo == null ? null : userInfo.getId(), idArray);
-        }catch(Exception e){
+        } catch (Exception e) {
             JshException.writeFail(logger, e);
         }
         return result;
     }
 
-    public int checkIsNameExist(Long id, String name) throws Exception{
+    public int checkIsNameExist(Long id, String name) throws Exception {
         SystemConfigExample example = new SystemConfigExample();
         example.createCriteria().andIdNotEqualTo(id).andCompanyNameEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
-        List list =null;
-        try{
-            list=systemConfigMapper.selectByExample(example);
-        }catch(Exception e){
+        List list = null;
+        try {
+            list = systemConfigMapper.selectByExample(example);
+        } catch (Exception e) {
             JshException.readFail(logger, e);
         }
-        return list==null?0:list.size();
+        return list == null ? 0 : list.size();
     }
 
     /**
      * 本地文件上传
-     * @param mf 文件
-     * @param bizPath  自定义路径
+     *
+     * @param mf      文件
+     * @param bizPath 自定义路径
      * @return
      */
     public String uploadLocal(MultipartFile mf, String bizPath, HttpServletRequest request) throws Exception {
         try {
-            if(StringUtil.isEmpty(bizPath)){
+            if (StringUtil.isEmpty(bizPath)) {
                 bizPath = "";
             }
             // Validate bizPath to prevent directory traversal
@@ -184,7 +186,7 @@ public class SystemConfigService {
             bizPath = bizPath + File.separator + tenantId;
             String ctxPath = filePath;
             String fileName = null;
-            File file = new File(ctxPath + File.separator + bizPath + File.separator );
+            File file = new File(ctxPath + File.separator + bizPath + File.separator);
             if (!file.exists()) {
                 file.mkdirs();// 创建文件根目录
             }
@@ -192,8 +194,8 @@ public class SystemConfigService {
             orgName = FileUtils.getFileName(orgName);
 
             // Validate file extension to allow only specific types
-            String[] allowedExtensions = {".gif", ".jpg", ".jpeg", ".png", ".pdf", ".txt",".doc",".docx",".xls",".xlsx",
-                    ".ppt",".pptx",".zip",".rar",".mp3",".mp4",".avi"};
+            String[] allowedExtensions = {".gif", ".jpg", ".jpeg", ".png", ".pdf", ".txt", ".doc", ".docx", ".xls", ".xlsx",
+                    ".ppt", ".pptx", ".zip", ".rar", ".mp3", ".mp4", ".avi"};
             boolean isValidExtension = false;
             for (String ext : allowedExtensions) {
                 if (orgName.toLowerCase().endsWith(ext)) {
@@ -205,10 +207,10 @@ public class SystemConfigService {
                 throw new IllegalArgumentException("Invalid file type");
             }
 
-            if(orgName.contains(".")){
+            if (orgName.contains(".")) {
                 fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.indexOf("."));
-            }else{
-                fileName = orgName+ "_" + System.currentTimeMillis();
+            } else {
+                fileName = orgName + "_" + System.currentTimeMillis();
             }
             String savePath = file.getPath() + File.separator + fileName;
             File savefile = new File(savePath);
@@ -216,9 +218,9 @@ public class SystemConfigService {
 
             // 返回路径
             String dbpath = null;
-            if(StringUtil.isNotEmpty(bizPath)){
+            if (StringUtil.isNotEmpty(bizPath)) {
                 dbpath = bizPath + File.separator + fileName;
-            }else{
+            } else {
                 dbpath = fileName;
             }
             if (dbpath.contains("\\")) {
@@ -233,12 +235,13 @@ public class SystemConfigService {
 
     /**
      * 阿里Oss文件上传
-     * @param mf 文件
-     * @param bizPath  自定义路径
+     *
+     * @param mf      文件
+     * @param bizPath 自定义路径
      * @return
      */
     public String uploadAliOss(MultipartFile mf, String bizPath, HttpServletRequest request) throws Exception {
-        if(StringUtil.isEmpty(bizPath)){
+        if (StringUtil.isEmpty(bizPath)) {
             bizPath = "";
         }
         // Validate bizPath to prevent directory traversal
@@ -258,8 +261,8 @@ public class SystemConfigService {
         orgName = FileUtils.getFileName(orgName);
 
         // Validate file extension to allow only specific types
-        String[] allowedExtensions = {".gif", ".jpg", ".jpeg", ".png", ".pdf", ".txt",".doc",".docx",".xls",".xlsx",
-                ".ppt",".pptx",".zip",".rar",".mp3",".mp4",".avi"};
+        String[] allowedExtensions = {".gif", ".jpg", ".jpeg", ".png", ".pdf", ".txt", ".doc", ".docx", ".xls", ".xlsx",
+                ".ppt", ".pptx", ".zip", ".rar", ".mp3", ".mp4", ".avi"};
         boolean isValidExtension = false;
         for (String ext : allowedExtensions) {
             if (orgName.toLowerCase().endsWith(ext)) {
@@ -271,16 +274,16 @@ public class SystemConfigService {
             throw new IllegalArgumentException("Invalid file type");
         }
 
-        if(orgName.contains(".")){
+        if (orgName.contains(".")) {
             fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.indexOf("."));
-        }else{
-            fileName = orgName+ "_" + System.currentTimeMillis();
+        } else {
+            fileName = orgName + "_" + System.currentTimeMillis();
         }
-        String filePathStr = StringUtil.isNotEmpty(filePath)? filePath.substring(1):"";
+        String filePathStr = StringUtil.isNotEmpty(filePath) ? filePath.substring(1) : "";
         String objectName = filePathStr + "/" + bizPath + "/" + fileName;
         String smallObjectName = filePathStr + "-small/" + bizPath + "/" + fileName;
         // 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
-        byte [] byteArr = mf.getBytes();
+        byte[] byteArr = mf.getBytes();
 
         // 创建OSSClient实例。
         OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
@@ -293,7 +296,7 @@ public class SystemConfigService {
             // 如果是图片-保存缩略图
             int index = fileName.lastIndexOf(".");
             String ext = fileName.substring(index + 1);
-            if(ext.contains("gif") || ext.contains("jpg") || ext.contains("jpeg") || ext.contains("png")
+            if (ext.contains("gif") || ext.contains("jpg") || ext.contains("jpeg") || ext.contains("png")
                     || ext.contains("GIF") || ext.contains("JPG") || ext.contains("JPEG") || ext.contains("PNG")) {
                 String fileUrl = getFileUrlAliOss(bizPath + "/" + fileName);
                 URL url = new URL(fileUrl);
@@ -342,13 +345,14 @@ public class SystemConfigService {
 
     /**
      * 逻辑删除文件
+     *
      * @param pathList
      */
     public void deleteFileByPathList(List pathList) throws Exception {
-        if(fileUploadType == 1) {
+        if (fileUploadType == 1) {
             //本地
-            for(String pathStr: pathList) {
-                if(StringUtil.isNotEmpty(pathStr)) {
+            for (String pathStr : pathList) {
+                if (StringUtil.isNotEmpty(pathStr)) {
                     String[] pathArr = pathStr.split(",");
                     for (String path : pathArr) {
                         // 提取文件的路径
@@ -379,17 +383,17 @@ public class SystemConfigService {
                     }
                 }
             }
-        } else if(fileUploadType == 2) {
+        } else if (fileUploadType == 2) {
             //oss
             String endpoint = platformConfigService.getPlatformConfigByKey("aliOss_endpoint").getPlatformValue();
             String accessKeyId = platformConfigService.getPlatformConfigByKey("aliOss_accessKeyId").getPlatformValue();
             String accessKeySecret = platformConfigService.getPlatformConfigByKey("aliOss_accessKeySecret").getPlatformValue();
             String bucketName = platformConfigService.getPlatformConfigByKey("aliOss_bucketName").getPlatformValue();
-            for(String pathStr: pathList) {
-                if(StringUtil.isNotEmpty(pathStr)) {
+            for (String pathStr : pathList) {
+                if (StringUtil.isNotEmpty(pathStr)) {
                     String[] pathArr = pathStr.split(",");
                     for (String path : pathArr) {
-                        if(StringUtil.isNotEmpty(path)) {
+                        if (StringUtil.isNotEmpty(path)) {
                             // 创建OSSClient实例。
                             OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
                             try {
@@ -416,10 +420,9 @@ public class SystemConfigService {
     }
 
     /**
-     *
      * @param ossClient
      * @param bucketName
-     * @param sourceObjectKey 源文件路径,包括目录和文件名
+     * @param sourceObjectKey      源文件路径,包括目录和文件名
      * @param destinationObjectKey 目标文件路径,包括新目录和文件名
      */
     public void copySourceToDest(OSS ossClient, String bucketName, String sourceObjectKey, String destinationObjectKey) {
@@ -437,7 +440,7 @@ public class SystemConfigService {
     }
 
     public String getDirByPath(String path) {
-        if(path.lastIndexOf("/")>-1) {
+        if (path.lastIndexOf("/") > -1) {
             return path.substring(0, path.lastIndexOf("/"));
         } else {
             return null;
@@ -451,11 +454,11 @@ public class SystemConfigService {
         int height = img.getHeight();
         int tempw = 0;
         int temph = 0;
-        if(width>height){
+        if (width > height) {
             tempw = w;
-            temph = height* w/width;
-        }else{
-            tempw = w*width/height;
+            temph = height * w / width;
+        } else {
+            tempw = w * width / height;
             temph = w;
         }
         Image _img = img.getScaledInstance(tempw, temph, Image.SCALE_DEFAULT);
@@ -468,15 +471,16 @@ public class SystemConfigService {
 
     /**
      * 获取仓库开关
+     *
      * @return
      * @throws Exception
      */
     public boolean getDepotFlag() throws Exception {
         boolean depotFlag = false;
         List list = getSystemConfig();
-        if(list.size()>0) {
+        if (list.size() > 0) {
             String flag = list.get(0).getDepotFlag();
-            if(("1").equals(flag)) {
+            if (("1").equals(flag)) {
                 depotFlag = true;
             }
         }
@@ -485,15 +489,16 @@ public class SystemConfigService {
 
     /**
      * 获取客户开关
+     *
      * @return
      * @throws Exception
      */
     public boolean getCustomerFlag() throws Exception {
         boolean customerFlag = false;
         List list = getSystemConfig();
-        if(list.size()>0) {
+        if (list.size() > 0) {
             String flag = list.get(0).getCustomerFlag();
-            if(("1").equals(flag)) {
+            if (("1").equals(flag)) {
                 customerFlag = true;
             }
         }
@@ -502,15 +507,16 @@ public class SystemConfigService {
 
     /**
      * 获取负库存开关
+     *
      * @return
      * @throws Exception
      */
     public boolean getMinusStockFlag() throws Exception {
         boolean minusStockFlag = false;
         List list = getSystemConfig();
-        if(list.size()>0) {
+        if (list.size() > 0) {
             String flag = list.get(0).getMinusStockFlag();
-            if(("1").equals(flag)) {
+            if (("1").equals(flag)) {
                 minusStockFlag = true;
             }
         }
@@ -519,15 +525,16 @@ public class SystemConfigService {
 
     /**
      * 获取更新单价开关
+     *
      * @return
      * @throws Exception
      */
     public boolean getUpdateUnitPriceFlag() throws Exception {
         boolean updateUnitPriceFlag = true;
         List list = getSystemConfig();
-        if(list.size()>0) {
+        if (list.size() > 0) {
             String flag = list.get(0).getUpdateUnitPriceFlag();
-            if(("0").equals(flag)) {
+            if (("0").equals(flag)) {
                 updateUnitPriceFlag = false;
             }
         }
@@ -536,15 +543,16 @@ public class SystemConfigService {
 
     /**
      * 获取超出关联单据开关
+     *
      * @return
      * @throws Exception
      */
     public boolean getOverLinkBillFlag() throws Exception {
         boolean overLinkBillFlag = false;
         List list = getSystemConfig();
-        if(list.size()>0) {
+        if (list.size() > 0) {
             String flag = list.get(0).getOverLinkBillFlag();
-            if(("1").equals(flag)) {
+            if (("1").equals(flag)) {
                 overLinkBillFlag = true;
             }
         }
@@ -553,15 +561,16 @@ public class SystemConfigService {
 
     /**
      * 获取强审核开关
+     *
      * @return
      * @throws Exception
      */
     public boolean getForceApprovalFlag() throws Exception {
         boolean forceApprovalFlag = false;
         List list = getSystemConfig();
-        if(list.size()>0) {
+        if (list.size() > 0) {
             String flag = list.get(0).getForceApprovalFlag();
-            if(("1").equals(flag)) {
+            if (("1").equals(flag)) {
                 forceApprovalFlag = true;
             }
         }
@@ -570,15 +579,16 @@ public class SystemConfigService {
 
     /**
      * 获取多级审核开关
+     *
      * @return
      * @throws Exception
      */
     public boolean getMultiLevelApprovalFlag() throws Exception {
         boolean multiLevelApprovalFlag = false;
         List list = getSystemConfig();
-        if(list.size()>0) {
+        if (list.size() > 0) {
             String flag = list.get(0).getMultiLevelApprovalFlag();
-            if(("1").equals(flag)) {
+            if (("1").equals(flag)) {
                 multiLevelApprovalFlag = true;
             }
         }
@@ -587,15 +597,16 @@ public class SystemConfigService {
 
     /**
      * 获取出入库管理开关
+     *
      * @return
      * @throws Exception
      */
     public boolean getInOutManageFlag() throws Exception {
         boolean inOutManageFlag = false;
         List list = getSystemConfig();
-        if(list.size()>0) {
+        if (list.size() > 0) {
             String flag = list.get(0).getInOutManageFlag();
-            if(("1").equals(flag)) {
+            if (("1").equals(flag)) {
                 inOutManageFlag = true;
             }
         }
@@ -604,15 +615,16 @@ public class SystemConfigService {
 
     /**
      * 获取移动平均价开关
+     *
      * @return
      * @throws Exception
      */
     public boolean getMoveAvgPriceFlag() throws Exception {
         boolean moveAvgPriceFlag = false;
         List list = getSystemConfig();
-        if(list.size()>0) {
+        if (list.size() > 0) {
             String flag = list.get(0).getMoveAvgPriceFlag();
-            if(("1").equals(flag)) {
+            if (("1").equals(flag)) {
                 moveAvgPriceFlag = true;
             }
         }
@@ -621,6 +633,7 @@ public class SystemConfigService {
 
     /**
      * Excel导出统一方法
+     *
      * @param title
      * @param head
      * @param tip
@@ -633,11 +646,11 @@ public class SystemConfigService {
         String[] names = StringUtil.listToStringArray(nameList);
         List objects = new ArrayList<>();
         if (null != arr) {
-            for (Object object: arr) {
+            for (Object object : arr) {
                 List