xpc
2024-01-30 cc9ebffc57e6343745cb1eadc47360d6107936bc
product-server-web/doc/ϵͳÉè¼Æ
@@ -1,8 +1,5 @@
版本控制:
    å½“前产品版本1.0.0
    è¡ç”Ÿé¡¹ç›®ç‰ˆæœ¬
        1.1.0       picc(绵阳人保)
        1.2.0       xn
    è¯¦ç»†è§£é‡Š
        ï¼ˆ1)目前的版本号共有3级,标准版按照1.0.0
        ï¼ˆ2)第一位作为产品大版本
@@ -16,7 +13,7 @@
   å¿…须配置默认的数据源,名称必须为default,见application.properties
   sourceName=default
2.表设计
   id字段: ç±»åž‹=bigint ï¼Œé•¿åº¦11
   id字段: ç±»åž‹=bigint ï¼Œé•¿åº¦11
   uuid字段、uuid引用字段:,长度都是80
   å­—段类型除了通用String...外,还有一个类型:parentuuid,用此字段表示主子表的关系,
   åŒæ—¶è¿˜å¿…须配关联的父表名称,同一个关联父表,只能配一个parentuuid类型的字段,如果是普通主外键关联,就不用parentuuid
@@ -27,13 +24,13 @@
   ......
   function_uuid      parentuuid     mrbase_sys_datamodel_table(保存表的uuid,显示表的名称,默认关联主表的uuid)
   å­—段的长度为下拉选择,根据不同的数据类型,定义不同的长度选项,如:10、20、50、100等
   å­—段类型:
   é™¤æ ‡å‡†çš„string datetime int double ,还有特殊:parentuuid(主子表关系,记录父表uuid)、code(编码字段 000-000-002)、serialNumber(GXD201209020001)
   å­—段类型=parentuuid时,必须field_relation_table字段填写父表的uuid否则也不能作为主子表保存
   æ‰€æœ‰ç±»åž‹ï¼šstring、int、number(小数)、datetime、parentuuid、code、serialNumber、idcard、url、ip、mac、email、userid、orgUuid、file、flowStatus、table_name
3.缓存数据
 *    ç¼“存配置表:SYS_CACHE_CONFIG
 *    å­—段:ID、uuid、cache_name、TABLENAME(S200)、CACHEFIELD(分级缓存字段,逗号分隔),FIELDS(S4000,字段名,逗号分隔)、filter(S4000)、备注说明....
@@ -50,10 +47,10 @@
   table_name=mrbase_sys_datamodel_field |  cache_fields=*  |  group_field=table_uuid
   table_name=mrbase_sys_datamodel_field        |  cache_fields=*  |  filter=field_type='parentUuid'
   table_name=mrbase_function_permission |  cache_fields=role_uuid,function_uuid,button_uuid | group_field=role_uuid
*缓存刷新,数据新增、修改、删除时都会刷新对应的该表的所有缓存配置,还可以调自定义的代码进行刷新(bean_name、bean_method(String uuid) å‚数是操作数据的uuid ,bean_method() å¯åŠ¨æ—¶ä¼šè°ƒæ­¤æ–¹æ³•ï¼Œå¿…é¡»å®šä¹‰ä¸¤ä¸ªæ–¹æ³•       ï¼‰
*缓存的使用查询方法:
   æœ‰åˆ†ç»„,分组字段,对应值
   æœ‰åˆ†ç»„,分组字段,对应值
    å¯¹åº”缓存中对应的分组字段,整个参数为这,表示没有分组,只能后面不为空,不能前面为空,例如:
   ç¼“存的分组字段:field1、field2、field3 ,获取时参数值,只能三种情况:{value1,null,null}、{value1,value2,null}、{value1,value2,value2},
   ä¸èƒ½å‡ºçް {value1,null,value3} ã€{null,null,value3}  ã€{null,value2,value3} ç­‰æƒ…况
@@ -87,7 +84,7 @@
   åªæœ‰åˆ é™¤æ—¶ç”¨è¿™ä¸ªå­—段来区分,即~type~=del
   ä¿®æ”¹ä¸»å­è¡¨æ•°æ® ä¸»è¡¨å¿…须有uuid字段,子表数据中三个种情况:新增 ~type~="",uuid="",修改:~type~="",uuid="不为空",删除:~type~="del",uuid="不为空"
   å­è¡¨åˆ—数要一致
5.所有实体类型,都必须有个字段 table_name,存表名称 ,可以实体类中定义成常量
6.API请求参数
@@ -95,7 +92,7 @@
   RequestParameterEntity å°è£…所有参数请求,详细见该类
   Object bean=request.getAttribute("requestPara");
   String accessToken = null;
   if(bean !=null)   {
   if(bean !=null)   {
      RequestParameterEntity reqp=(RequestParameterEntity)bean;
      accessToken=reqp.getToken();
   }
@@ -114,7 +111,7 @@
   æŸ¥è¯¢è¿”回
   OK_List(FieldSetEntity fs)
   OK_List(DataTableEntity dt)
   é€šç”¨é”™è¯¯è¿”回, æ–°å¢žã€ä¿®æ”¹ã€åˆ é™¤ã€æŸ¥è¯¢å¤±è´¥
   public String error(String code,String msg )
@@ -124,8 +121,8 @@
    */
   @Autowired
   public BaseDao baseDao = null;
10.~table~ å‚数在新增、修改接口时必须放到数据的前面,以此来首先获取到
10.~table~ å‚数在新增、修改接口时必须放到数据的前面,以此来首先获取到
13.高级参照下拉框接口数据
{
@@ -158,16 +155,16 @@
   å…¶ä¸­filter字段,是配置人员手写的sql条件,字符串中可能配置动态参数,格式为:~参数名称~,前端调用此参照时,也必须传对应的参数值 ï¼Œä¾‹å¦‚:
   é…ç½®filter: uuid=~cust_uuid~ and name like '%~cust_name~%'
   å‰ç«¯å‚数:{cust_uuid="sdgeasge",cust_name="中国"}
   filter字段中还可以配置系统变量,如:is_used=1 and uuid in (select  language_uuid from mrbase_sys_company_language where org_level_uuid='{{COMPANY_UUID}}')
   filter字段中还可以配置系统变量,如:is_used=1 and uuid in (select  language_uuid from mrbase_sys_company_language where org_level_uuid='{{COMPANY_UUID}}')
   {{COMPANY_UUID}}:当前登录人员的公司UUID.
   display_type: 1:列表  2:树结构,当等于2表示此参照数据显示树型,同时  code_field、parent_code_field ã€delay_load要必填,
   code_field:上下级关系表中的 ç¼–码字段:001,此字段也处理后放到select_fields字段中去:生成   xxxxx  code,此前端在点击一个节点时,取code的值传给接口,接返回其下面的子数据
   parent_code_field:父编码字段:001
   org_filter_field:根据表中的公司字段进行数据过滤,多个以逗号分隔
   usr_filter_field:人员数据过滤条件字段,必须是数据源表中的人员字段,可以多个,逗号分隔,
14.1 ä¸‹æ‹‰å‚ç…§(高级参照、数据字典)在列表中显示:
   é…ç½®mrbase_sys_datamodel_field.field_reference字段,配参照名称或数据字典名称,如果是数据字典名称加书名号括起来,如:《gender》
   åœ¨åˆ—表的查询方法,对列表数据进行封装一次:baseDao.loadPromptData(dt);
@@ -198,8 +195,8 @@
   SystemUser user = SpringMVCContextHolder.getCurrentUser();
25.获取当前request、reponse、session等
   SpringMVCContextHolder.getHttpxxxx()
26.对数据的操作,可以参考代码:JsonUtil,如何生成的 FieldSetEnttiy,如何在fs中获取子表(DataTableEntity),如何获取fs中的字段值,如何在DataTableEntity中获取一条记录,和一条记录中的字段值
26.对数据的操作,可以参考代码:JsonUtil,如何生成的 FieldSetEnttiy,如何在fs中获取子表(DataTableEntity),如何获取fs中的字段值,如何在DataTableEntity中获取一条记录,和一条记录中的字段值
27.对一条记录的读写操作
@@ -242,18 +239,18 @@
      -----------------------------------------------------------------
      controller中的具体调用:
      æŠŠ systemClientsService.addClient(fse); æ”¹æˆä»¥ä¸‹ä»£ç 
       /**事务处理实现**/
        ISystemClientsService service=(ISystemClientsService)getProxyInstance(systemClientsService);
        String uuid = service.addClient(fse);
      ISystemClientsService ï¼šservice类的接口类
      systemClientsService:spring注入的serviceç±»
    -------------------------------------------------------------------
    -------------------------------------------------------------------
30.查询列表中包含子表数据
   /**
    *
    *
    * @param tableName
    * @param filter
    * @param para
@@ -269,7 +266,7 @@
   /**
    * @ æŸ¥è¯¢åˆ—表数据的所有子表数据 String 1=每条记录uuid,String 2= å­è¡¨åç§°
    * @ æŸ¥è¯¢åˆ—表数据的所有子表数据 String 1=每条记录uuid,String 2= å­è¡¨åç§°
    * @param uuids é€—号分隔 çˆ¶åˆ—表uuids
    * @param table_name
    * @return
@@ -278,18 +275,18 @@
31.关于附件获取操作
   RequestParameterEntity.getFormData().getString(附件字段);//上传的原始文件名,多个以逗号分隔
   RequestParameterEntity.getFiles().get(原始文件名); //对应的文件,文件名:uuid+"_"+文件的原始名称  ï¼Œä¸€æ¬¡åªèƒ½èŽ·å–ä¸€ä¸ª
32.关于手写sql语句查询和分页的要求
    select TIMESTAMPDIFF(YEAR,aciwe.start_datetime,aciwe.end_datetime) AS start_datetime from a,b where f1=f2 æˆ– a left join b on f1=f2
         å­—段别名必须是表中的字段,否则无法获取到对应字段的表名和字段信息定义,如:
   start_datetime å¿…须是 a表或b表中的一个字段
         å¤šè¡¨å…³è”查询,表定义:a,b æˆ– a left join b on f1=f2 æ•´ä¸ªåšä¸ºè¡¨
                                    æ¡ä»¶å®šä¹‰ï¼Œwhere åŽé¢ ï¼š f1=f2
 33.如查sql语句中没有uuid字段,无法查询出子表
                                    æ¡ä»¶å®šä¹‰ï¼Œwhere åŽé¢ ï¼š f1=f2
 33.如查sql语句中没有uuid字段,无法查询出子表
 34.系统错误说明
      ç³»ç»Ÿé”™è¯¯åˆ†ä¸ºä¸¤ç§ï¼šä¸»åŠ¨æŠ›å‡ºé”™è¯¯ã€æ•èŽ·é”™è¯¯
      ä¸»åŠ¨æŠ›å‡ºï¼š
      /**
@@ -300,7 +297,7 @@
    * @param method é”™è¯¯å‘生方法
    */
   public  BaseException(String code,String error,Class c,String method);
      æ•获错误:
      /**
    * æž„造函数,记录错误到库---捕获的错误
@@ -308,7 +305,7 @@
    * @param exc   æ•获的错误
    */
   public  BaseException(String code,String error,Class c,String method,Exception sysExc)
35.licese支持
     ç¡¬ä»¶ä¿¡æ¯è¯»å–库文件,下载地址:http://sigar.hyperic.com/
        windows版                                                                  mac版                                                            linux版
@@ -323,7 +320,7 @@
   String code=codeService.createCode(fse.getString("table_name"), fse.getString("field_name"), fse.getString("parentCode")==null?"":fse.getString("parentCode"));
   åœ¨æ–°å¢žçš„controller中调用,在底层Dao中的保存方法中获取获取的临时编码去验证是否被占用,占用则重新生成,保证唯一性
   è¿”回json值中code的值即为生成的编码值
37.通用参数验证、数据保存验证
   å‚数验证:com.lx..module.sys.config.RegistValidateç±»
   åœ¨registValidateParameter方法中添加验证代码,如:
@@ -334,7 +331,7 @@
   æ•°æ®ä¿å­˜éªŒè¯ï¼Œåœ¨core包中的dao中自动根据数据表字段的配置验证,通常不用配,但如果有其它验证,也可以在保存和修改接口中配置,否则保存和修改接口不用配
   æ ¹æ®å­—段类型进行验证,如:字段是mail,mrbase_sys_datamodel_field.field_type=email,现只支持:
   int、number(小数)、idcard、url、ip、mac、datetime、length、email
38.properties配置文件参数获取
   è°ƒç”¨ï¼š
   Global.getPropertyToBoolean("druid.datasource.testOnBorrow", "false")
@@ -365,7 +362,7 @@
   /**
    * èŽ·å–äººå‘˜çš„æ•°æ®æƒé™ï¼Œæ€»å…¥å£ ï¼Œè¿‡æ»¤æŒ‡å®šäººå‘˜å­—段,使用默认公司字段进行过滤-org_level_uuid
    * @tableName äººå‘˜è¿‡æ»¤çš„表
    * @param staff_fields
    * @param staff_fields
    * @return
    */
   public  String getDataFilter(String tableName,String staff_fields)
@@ -377,8 +374,8 @@
    * @return
    */
   public  String getDataFilter(String tableName,String staff_fields,String org_fields)
 40.关于流水号
 40.关于流水号
    åªéœ€è¦åœ¨é…ç½®ä¸­é…ç½®æµæ°´å·,见表mrbase_sys_swift_config
   è¡¨ä¸­å­˜æ”¾æµæ°´å·çš„字段,必须在mrbase_sys_datamodel_field表中该字段的field_type=serialNumber ï¼Œç¤ºä¾‹è§test表
   ç•Œé¢è°ƒç”¨æŽ¥å£èŽ·å–ç¼–ç ï¼š/api/common/createSerialNumber,见测试类CodeTest,必传参数:serialNumberName,对应表流水号配置表中的swift_config_name字段值
@@ -426,7 +423,7 @@
      /api/language/load-international-info/{version}
      åŠ è½½æŒ‡å®šå®¢æˆ·ç«¯ã€ç‰ˆæœ¬å·ã€é»˜è®¤è¯­è¨€çš„æ‰€æœ‰å›½é™…åŒ–æ•°æ®
      å®¢æˆ·ç«¯ã€ç‰ˆæœ¬å·ã€é»˜è®¤è¯­è¨€æŽ¥å£å‚数上传
   value:
      1、首先配置表、字段为国际化字段
      2、前端调接口获取哪些表有哪些国际化字段,在界面的中对应元素后面添加地球图标,点图标弹出国际化录入
@@ -486,17 +483,17 @@
      /**
       * ä¸šåŠ¡ä»£ç å±‚è°ƒç”¨
       * èŽ·å–ä¸šåŠ¡å¯¹åº”å­—æ®µçš„å›½é™…åŒ–æ•°æ®,如果language_code不为空,表明是手机端
       * @param dt ä¸šåŠ¡è¡¨æ•°æ®
       * @param dt ä¸šåŠ¡è¡¨æ•°æ®
       * @param language_code ä¸ä¸ºç©ºåˆ™ä¸ºæ‰‹æœºç«¯
       * @return
       */
      DataTableEntity baseDao.listInternationDataTable(DataTableEntity dt,String language_code ) å°è£…国际化数据到每条记录的每个国际化字段。
      FieldSetEntity  baseDao.listInternationDataTable(FieldSetEntity fs,String language_code )  å°è£…国际化数据到单条记录的每个国际化字段。
      //baseDao.processInternationDataTable(DataTableEntity dt,String language_code ),国际化字段不是数组格式
      //baseDao.processInternationDataTable(FieldSetEntity fs,String language_code ) å›½é™…化字段不是数组格式
      è¿”回json格式:
      {
      Â Â Â Â "code":"200",
      Â Â Â Â "data":[
@@ -528,7 +525,7 @@
      Â Â Â Â "msg":"成功",
      Â Â Â Â "status":"success"
      }
      5、修改保存数据json格式:
      {
      Â Â Â Â "token":"11111-新增提交数据",
@@ -562,7 +559,7 @@
      Â Â Â Â ],
      Â Â Â Â "phone":"18123938722"
      }
      6.不能国际化的表:
      mrbase_sys_cache_config ç¼“存配置
      mrbase_sys_data_sources æ•°æ®åº“连接配置
@@ -649,7 +646,7 @@
    æ ¸å¿ƒï¼šéœ€è¦sigar-amd64-winnt.dll或者sigar-x86-winnt.dll文件置于jdk的bin中或者c盘windows/system32
   ä¸Šä¼ ç›®å½•配置,见properties文件中的upload.file。xxxx å‡ ä¸ªç›¸å…³å‚æ•°
   ä¸Šä¼ æ–‡ä»¶è‡ªåŠ¨å­˜åˆ°ç›®å½•ä¸‹ï¼Œåœ¨controller或service层中读取操作。
46.消息服务
    1.新建队列
     public static void createQueue(String queue_name)
@@ -694,9 +691,9 @@
    language:value    //国际化语言
    }
    è¿”回值:list<String> uuids
    å½“查询语名,使用多表联合查询,并使用了别名时,需要添加表别名、字段别名设置,并把sql语句使用select * from (查询语句+数据权限条件+高级查询条件)  b æ‹¬èµ·æ¥ï¼Œæ³¨æ„
 48.以下内容变更
 48.以下内容变更
 1.core包引入变更
<dependency>
   <groupId>com.lx</groupId>
@@ -728,13 +725,13 @@
   public String DataTableEntity.getUuids()  åŽŸ ï¼Œæ”¹ä¸ºä»¥ä¸‹
   æŒ‡å®šè¡¨çš„æ‰€æœ‰uuid,返回数组
   -> public Object[] getUuids(Object tableName)
   -> public Object[] getUuids(Object tableName)
   æŒ‡å®šè¡¨çš„æ‰€æœ‰uuid,返回逗号分隔的字符串
   -> public String getUuidsToString(Object tableName)
   -> public String getUuidsToString(Object tableName)
   è¿”回默认表的所有uuid,返回数组
   -> public Object[] getUuids()
   è¿”回默认表的所有uuid,返回逗号分隔的字符串
   -> public String getUuidsToString()
   -> public String getUuidsToString()
8.登录上传固定参数
   system_language_code è¯­è¨€ç¼–码 zh en
   system_client_type   å®¢æˆ·ç±»åž‹
@@ -781,7 +778,7 @@
       baseDao.update(DataTableEntity fs,String language_code)
       æ•°æ®æŸ¥è¯¢ï¼š
          FieldSetEntity listInternationDataTable(FieldSetEntity fs,String language_code )
          DataTableEntity listInternationDataTable(DataTableEntity dt,String language_code )
          DataTableEntity listInternationDataTable(DataTableEntity dt,String language_code )
49.后端错误信息国际化
   1)错误信息枚举类注入,启动类中添加注入代码:
   DataPoolCacheImpl.getInstance()
@@ -790,11 +787,11 @@
         .appendErrorEnumClass("com.lx.base.module.sys.config.SystemErrorCode");
   2)特殊情况调用(AbstractBaseController.error()、BaseException.getMessage()、getMessageInfo()已实现)
   String message=DataPoolCacheImpl.getInstance().getErrorLanguageInternation(code, language_code);
50.高级参照数据返回规则
    1)所有单位高级参照数据 f1 å…¨ç§° f2 çŸ­ç¼–码
    2)所有部门高级参照数据 f1 å…¨ç§° f2 çŸ­ç¼–码
    3)所有岗位高级参照数据 f1 å…¨ç§°
    3)所有岗位高级参照数据 f1 å…¨ç§°
    4)所有岗位等级高级参照数据 f1 ç­‰çº§çº§åˆ« f2 ç»„名
    5)所有模块高级参照数据 f1 çŸ­ç¼–码
    6)所有功能高级参照数据 f1 çŸ­ç¼–码
@@ -820,7 +817,7 @@
52.功能权限验证
   å¿…须配置mrbase_sys_function_buttons.api_url配置按钮对应后端接口地址,多个逗号分隔,不能含版本号,如:
   æŽ¥å£åœ°å€ï¼š/api/management/delete-user/v1 é…ç½®åœ°å€ï¼š/api/management/delete-user
53.数据操作权限验证
   ä¸»è¦é’ˆå¯¹å•条数据的删 ã€æ”¹ ã€æŸ¥æ“ä½œï¼Œåœ¨åˆ  ã€æ”¹ ã€æŸ¥çš„相应接口调用
   å¿…须设置mrbase_sys_datamodel_field.field_type,userid:存放人员的字段类型,orgUuid:存放组织机构的字段类型
@@ -837,7 +834,7 @@
      /**
       * å¯¹å•条数据进行操作的权限验证
       * @param fs  ä¸Šä¼ æ•°æ®ï¼Œå¿…须包含表名 uuid ,否一律通过
       * @param type éªŒè¯ç±»åž‹ 1=人员验证 2= çº§ç»‡æœºæž„验证 3 ä¸¤è€…都验证
       * @param type éªŒè¯ç±»åž‹ 1=人员验证 2= çº§ç»‡æœºæž„验证 3 ä¸¤è€…都验证
       * @return
       */
      public boolean validDataPermission(FieldSetEntity fs ,int type)
@@ -845,14 +842,14 @@
       * å¯¹å•条数据进行操作的权限验证 ,特殊权限条件 ï¼Œä¸æ ¹æ®äºº ç»„织机构过滤
       * @param tableName è¡¨å
       * @param uuid uuid
       * @param filter ç‰¹æ®Šæƒé™æ¡ä»¶
       * @param filter ç‰¹æ®Šæƒé™æ¡ä»¶
       * @return
       */
      public boolean validDataPermission(String tableName,String uuid,String filter)
      /**
       * å¯¹å•条数据进行操作的权限验证 ,特殊权限条件 ï¼Œä¸æ ¹æ®äºº ç»„织机构过滤
       * @param fs  ä¸Šä¼ æ•°æ®ï¼Œå¿…须包含表名 uuid ,否一律通过
       * @param filter ç‰¹æ®Šæƒé™æ¡ä»¶
       * @param filter ç‰¹æ®Šæƒé™æ¡ä»¶
       * @return
       */
      public boolean validDataPermission(FieldSetEntity fs ,String filter)
@@ -863,7 +860,7 @@
            SystemErrorCode.SYSTEM_NOT_OPER_PERMISSION.getText());
      return this.error(SystemErrorCode.SYSTEM_NOT_OPER_PERMISSION.getValue(), SystemErrorCode.SYSTEM_NOT_OPER_PERMISSION.getText());
   }
   4)按人员、组织机构验证数据权限调用示例
      å¿…须设置mrbase_sys_datamodel_field.field_type,userid:存放人员的字段类型,orgUuid:存放组织机构的字段类型
      if(!permissionService.validDataPermission(fse,CoreConst.DATA_PERMISSION_VALID_TYPE_ALL)) {
@@ -879,7 +876,7 @@
    this.staffBusinessService.addBalance(fs);
    this.logger.info(" ");
  }
54.消息生成
   /**
    * æ‰€æœ‰åº”用服务生成消息调些方法去添加消息
@@ -890,30 +887,30 @@
    * @param content      æ¶ˆæ¯å†…容                 ä¸å¿…å¡«
    * @param title        æ¶ˆæ¯æ ‡é¢˜                 å¿…å¡«
    * @param send_user_id æ¶ˆæ¯å‘送人               å¿…å¡«
    * @param message_type æ¶ˆæ¯ç±»åž‹                 å¿…å¡«
    * @param message_type æ¶ˆæ¯ç±»åž‹                 å¿…å¡«
    * @param url         æ¶ˆæ¯é“¾æŽ¥åœ°å€             ä¸å¿…å¡«
    * @param source_table ä¸šåŠ¡æ•°æ®è¡¨               ä¸å¿…å¡«
    * @param source_uuid  ä¸šåŠ¡æ•°æ®è¡¨uuid           ä¸å¿…å¡«
    * @param create_by    åˆ›å»ºäºº       userid      å¿…å¡«
    * @param create_by    åˆ›å»ºäºº       userid      å¿…å¡«
    * @param is_send_mail æ˜¯å¦å‘送邮件 0:否 1:是   å¿…å¡«
    * @param is_send_sms  æ˜¯å¦å‘送短信 0:否 1:是   å¿…å¡«
    */
   WebsocketMesssageServiceThread.getInstance().appendMessage(String ....);
   WebsocketMesssageServiceThread.getInstance().appendMessage(String ....);
   //消息类型
   //表名常量定义
   public static final int MESSAGE_TOP_TYPE_SYSTEM =1; //"系统消息";
   public static final int MESSAGE_TOP_TYPE_SYSTEM =1; //"系统消息";
   public static final int MESSAGE_TYPE_ANNOUNCEMENT =11; //"公告消息";
   public static final int MESSAGE_TOP_TYPE_TASK =2; //"任务消息";
   public static final int MESSAGE_TYPE_APPROVE =21; //"待办消息";
   public static final int MESSAGE_TYPE_APPROVE =21; //"待办消息";
   public static final int MESSAGE_TYPE_COORDINATION =22; //"协同消息";
    public static final int MESSAGE_TYPE_TASK = 23;// "任务模块消息";
   public static final int MESSAGE_TOP_TYPE_WARNING =3; //"预警消息";
   public static final int MESSAGE_TYPE_WARNING =31; //"预警消息";
55.子表排序规则,中括号内表示子表排序 æ”¾åˆ°orderby参数中
55.子表排序规则,中括号内表示子表排序 æ”¾åˆ°orderby参数中
String s="main_field1,main_field2,{sub_table1:sub_table1_field1 desc,sub_table1_field2},{sub_table2:sub_table2_field1 desc,sub_table2_field2}"
56.错误信息中的动态变量替换
替则使用{}把变量名括起来,此变量名将在Exception中获取:DATA_VERIFY_UNIQUE_ERROR("数据不是唯一:{value}", ModuleEnum.CORE.getValue() + "097"),
@@ -924,7 +921,7 @@
56.反射引用bean :com.product.core.util.ReflectUtil
   /**
    *
    *
    * @param beanName è¢«ä»£ç†å¯¹åƒbean åç§°
    * @param methodName æ–¹æ³•名称
    * @param objects  å‚æ•°
@@ -961,7 +958,7 @@
   jar部署:打开工程的pom.mxl,右键->Run as -> Maven install->进入工程目录->target目录->copy æŠŠå®ŒåŒ…的工程jar,放到服务器的运行目录下的lib目录下(例如200上:D:\LXServer\product-server\lib)
   å‰ç«¯æ–‡ä»¶éƒ¨ç½²ï¼šè¿›å…¥lx-web并运行packed.bat,重新生成dist目录->进入dist目录copy除baseUrl.js以外的所有文件,放到服务器的运行目录下的web目录下。
   é‡å¯ï¼ˆè¿è¡Œæ¡Œé¢å¿«æ·é”®ï¼‰
60.分页查询sql
   select  '6973' as staff_uuid  è¿™ç§æ²¡æœ‰from的语句,要添加 from dual,否则分页查询会出错