﻿
drop table if exists S_AREA_T;

drop index INDEX_CITY_PARENT on S_CITY_T;

drop table if exists S_CITY_T;

drop table if exists S_COMMONTWORD_T;

drop table if exists S_FTPERROR_T;

drop index INDEX_NATION on S_NATION_T;

drop table if exists S_NATION_T;

drop index INDEX_PROVINCE_NAME on S_PROVINCE_T;

drop table if exists S_PROVINCE_T;

drop index INDEX_REGION_PARENT on S_REGION_T;

drop table if exists S_REGION_T;

drop table if exists S_TOWN_T;

drop table if exists S_SEQMANAGE_T;

/*==============================================================*/
/* Table: S_SEQMANAGE_T                                         */
/*==============================================================*/
create table S_SEQMANAGE_T
(
    SEQ_NAME             varchar(50) not null comment '编号关键字，不能重复',
    CURRENT_VALUE        int not null comment '当前使用的序号',
    INCREMENT            int not null default 1 comment '步长，每次序号增加的值',
    YEAR                 int(4) not null comment '年份',
    primary key (SEQ_NAME)
);


/*==============================================================*/
/* Table: S_AREA_T                                              */
/*==============================================================*/
create table S_AREA_T
(
   AREAID               bigint(20) not null comment '辖区流水号',
   CITYID               bigint(20) comment '城市流水号',
   AREA                 varchar(100) comment '区县名称',
   LAT                  varchar(20) comment '地理纬度',
   LNG                  varchar(20) comment '地理经度',
   PICON                varchar(190) comment '个性化图标',
   SUMCOUNT             int comment '统计数量',
   primary key (AREAID)
);

/*==============================================================*/
/* Table: S_CITY_T                                              */
/*==============================================================*/
create table S_CITY_T
(
   CITYID               bigint(20) not null comment '城市流水号',
   FATHER               bigint(20) comment '对应的省份ID',
   CITY                 varchar(100) comment '城市名称',
   LAT                  varchar(20) comment '地理纬度',
   LNG                  varchar(20) comment '地理经度',
   PICON                varchar(190) comment '个性化图标',
   SUMCOUNT             int comment '统计数量',
   primary key (CITYID)
);

/*==============================================================*/
/* Index: INDEX_CITY_PARENT                                     */
/*==============================================================*/
create index INDEX_CITY_PARENT on S_CITY_T
(
   FATHER
);

/*==============================================================*/
/* Table: S_COMMONTWORD_T                                       */
/*==============================================================*/
create table S_COMMONTWORD_T
(
   ID                   bigint(20) not null comment '主键',
   WORD                 varchar(190) comment '敏感词',
   primary key (ID)
);

/*==============================================================*/
/* Table: S_FTPERROR_T                                          */
/*==============================================================*/
create table S_FTPERROR_T
(
   ID                   varchar(32) not null comment '流水号',
   IP                   varchar(190) comment '失败的服务器地址',
   PORT                 varchar(20) comment '失败服务器端口',
   FILEPATH             varchar(190) comment '失败文件的物理路径',
   FTPFILEPATH          varchar(190) comment 'ftp服务保存地址，相对路径',
   FTPFILENAME          varchar(100) comment '上传到ftp的文件名',
   CREATEDATE           bigint(15) comment '创建时间',
   primary key (ID)
);

/*==============================================================*/
/* Table: S_NATION_T                                            */
/*==============================================================*/
create table S_NATION_T
(
   ID                   bigint(30) not null comment '民族流水号',
   NATION               varchar(150) comment '民族名称',
   primary key (ID)
);

/*==============================================================*/
/* Index: INDEX_NATION                                          */
/*==============================================================*/
create index INDEX_NATION on S_NATION_T
(
   NATION
);

/*==============================================================*/
/* Table: S_PROVINCE_T                                          */
/*==============================================================*/
create table S_PROVINCE_T
(
   PROVINCEID           bigint(20) not null comment '省份流水号',
   PROVINCE             varchar(100) comment '省份名称',
   LAT                  varchar(20) comment '地理纬度',
   LNG                  varchar(20) comment '地理经度',
   PICON                varchar(190) comment '个性化图标',
   SUMCOUNT             int comment '统计数量',
   primary key (PROVINCEID)
);

/*==============================================================*/
/* Index: INDEX_PROVINCE_NAME                                   */
/*==============================================================*/
create index INDEX_PROVINCE_NAME on S_PROVINCE_T
(
   PROVINCE
);

/*==============================================================*/
/* Table: S_REGION_T                                            */
/*==============================================================*/
create table S_REGION_T
(
   REGIONID             bigint(20) not null comment '流水号',
   FATHER               bigint(20) comment '父级信息主键',
   REGION               varchar(100) comment '区域名称',
   LAT                  varchar(20) comment '地理纬度',
   LNG                  varchar(20) comment '地理经度',
   PICON                varchar(190) comment '个性化图标',
   SUMCOUNT             int comment '统计数量',
   primary key (REGIONID)
);

/*==============================================================*/
/* Index: INDEX_REGION_PARENT                                   */
/*==============================================================*/
create index INDEX_REGION_PARENT on S_REGION_T
(
   FATHER
);

/*==============================================================*/
/* Table: S_TOWN_T                                              */
/*==============================================================*/
create table S_TOWN_T
(
   TOWNID               bigint(20) not null comment '流水号',
   AREAID               bigint(20) comment '辖区流水号',
   TOWN                 varchar(100) comment '名称',
   LAT                  varchar(20) comment '地理纬度',
   LNG                  varchar(20) comment '地理经度',
   PICON                varchar(190) comment '个性化图标',
   SUMCOUNT             int comment '统计数量',
   primary key (TOWNID)
);

/*==============================================================*/
/* 取当前值   对应表S_SEQMANAGE_T                                 */
/*==============================================================*/
DROP FUNCTION IF EXISTS currval;
DELIMITER $
CREATE FUNCTION currval (name VARCHAR(50))
    RETURNS INTEGER
    LANGUAGE SQL
    DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
	DECLARE value INTEGER;
	SET value = 0;
SELECT current_value INTO value
FROM S_SEQMANAGE_T
WHERE seq_name = name;
RETURN value;
END
$
DELIMITER ;
/*==============================================================*/
/* 取下一个值  对应表S_SEQMANAGE_T                                 */
/*==============================================================*/
DROP FUNCTION IF EXISTS nextval;
DELIMITER $
CREATE FUNCTION nextval (name VARCHAR(50))
    RETURNS INTEGER
    LANGUAGE SQL
    DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
UPDATE S_SEQMANAGE_T
SET current_value = current_value + increment
WHERE seq_name = name;
RETURN currval(name);
END
$
DELIMITER ;
/*==============================================================*/
/* 取下一个值 ，按年份每年自动重置value    对应表S_SEQMANAGE_T        */
/*==============================================================*/
DROP FUNCTION IF EXISTS nextvalForYear;
DELIMITER $
CREATE FUNCTION nextvalForYear (name VARCHAR(50))
    RETURNS INTEGER
    LANGUAGE SQL
    DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
    set @year = (select year from S_SEQMANAGE_T WHERE seq_name = name);
	IF YEAR(NOW()) > @year THEN
UPDATE S_SEQMANAGE_T
SET current_value = 1, year = YEAR(NOW())
WHERE seq_name = name;
RETURN currval(name);
ELSE
UPDATE S_SEQMANAGE_T
SET current_value = current_value + increment
WHERE seq_name = name;
RETURN currval(name);

END IF;
END
$
DELIMITER ;
/*==============================================================*/
/* 更新当前值  对应表S_SEQMANAGE_T                                 */
/*==============================================================*/
DROP FUNCTION IF EXISTS setval;
DELIMITER $
CREATE FUNCTION setval (name VARCHAR(50), value INTEGER)
    RETURNS INTEGER
    LANGUAGE SQL
    DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
UPDATE S_SEQMANAGE_T
SET current_value = value
WHERE seq_name = name;
RETURN currval(name);
END
$
DELIMITER ;