起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6830|回复: 20

[分享] 利用流程维护基础信息

  [复制链接]

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
发表于 2016-10-12 11:14:21 | 显示全部楼层 |阅读模式
一般项目中客户信息是作为基本信息维护的,BeX5提供了非常好的模板,几个拖拽就搞定了。
碰到了一个金融项目,要求客户资料信息的新增更改删除都要走审核流程,流程步骤包括(客服申请-经理审核),经理审核完成之后,系统才能去更新客户基础信息。
看似很简单的需求,细思极恐。
1、  对于变更客户信息的操作,经理审核时要能看到变更前变更后的客户信息吧
2、  客户信息不能直接删除,只能关闭(有关闭就要有开启吧)
3、  流程信息查询需要按照客户名称进行分类吧,能让操作者看到客户资料从新增到更改到关闭的记录吧(可追溯性要好)
4、  客户信息的字段数量是有可能发生增加减少的,除了维护申请表中和业务相关的字段外,还要去维护代码(这个比较非常吓人)
5、  将来其他的基础信息也有可能采用这种模式,能不能做成个套路,直接复制粘贴过来,只修改和业务相关的部分(提高效率、质量,降低成本我喜欢)

评分

参与人数 3威望 +80 收起 理由
负暄 + 10 很给力!
X5联盟帮扶部 + 50 给力!
wgs7909 + 20 神马都是浮云

查看全部评分

长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)

191

主题

688

帖子

3323

积分

论坛元老

Rank: 8Rank: 8

积分
3323
QQ
发表于 2016-10-12 12:43:27 | 显示全部楼层
这个问题很典型啊,我也提个方案供参考。假设原表为customer,则再建一个customer_version表,如果新增或者变动则,把新增记录或者变动后的完整记录放在customer_version表里,当审核通过后,将customer_version表中的记录整体更新或者新增到customer表中。因为version表中存放了各个版本记录,所以想要回退到某个历史版本也是可行的。
轻量化ERP--企业邦  网址:meiprocess.cn
qq:8269301
手机:13801998595
回复 支持 1 反对 0

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2016-10-12 11:14:53 | 显示全部楼层
经过和技术团队的探讨,最终确定了个比较可行的技术方案,可以完美的解决上述问题:
关于库表结构做了3个库表(客户基础信息表、客户信息申请表和客户信息变更记录)

客户基础信息表用于存储客户信息,其他页面和模块引用客户信息时需要使用本表
主要的数据字段(其中fState取值范围为“有效”、“无效”,无效的客户信息不能被其他模块引用)

  1. <has-relation relation="fNO" data-type="String"></has-relation>
  2. <has-relation relation="fName" data-type="String"></has-relation>
  3. <has-relation relation="fContact" data-type="String"></has-relation>
  4. <has-relation relation="fContactID" data-type="String"></has-relation>
  5. <has-relation relation="fContactCellphone" data-type="String"></has-relation>
  6. <has-relation relation="fBankAccount" data-type="String"></has-relation>
  7. <has-relation relation="fBank" data-type="String"></has-relation>
  8. <has-relation relation="fCreatTime" data-type="DateTime"></has-relation>
  9. <has-relation relation="fCreatePerson" data-type="String"></has-relation>
  10. <has-relation relation="fCreatePersonID" data-type="String"></has-relation>
  11. <has-relation relation="fState" data-type="String"></has-relation>
复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 1 反对 0

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2016-10-12 11:15:19 | 显示全部楼层
客户信息申请表主要记录了和申请流程相关的信息,包括申请单编号,申请类型(新增,修改,禁用,启用),填报人信息(姓名,ID,部门,部门ID,时间),审核人信息(姓名,ID,部门,部门ID,时间),流程状态(进行中,已完成,已终止)和要修改的客户ID(将来查询也许用得到)

  1. <has-relation relation="fSheetNO" data-type="String"></has-relation>
  2.                 <has-relation relation="fApplyType" data-type="String"></has-relation>
  3.                 <has-relation relation="f1PsnName" data-type="String"></has-relation>
  4.                 <has-relation relation="f1PsnID" data-type="String"></has-relation>
  5.                 <has-relation relation="f1DeptName" data-type="String"
  6.                         default-value-expr="if(currentDeptName() = null, currentOgnName(), currentDeptName())"></has-relation>
  7.                 <has-relation relation="f1DeptID" data-type="String"></has-relation>
  8.                 <has-relation relation="f1PsnFName" data-type="String"></has-relation>
  9.                 <has-relation relation="f1psnFID" data-type="String"></has-relation>
  10.                 <has-relation relation="f1PsnTime" data-type="DateTime"></has-relation>
  11.                 <has-relation relation="f2PsnName" data-type="String"></has-relation>
  12.                 <has-relation relation="f2PsnID" data-type="String"></has-relation>
  13.                 <has-relation relation="f2PsnFID" data-type="String"></has-relation>
  14.                 <has-relation relation="f2PsnFName" data-type="String" size="255"></has-relation>
  15.                 <has-relation relation="f2PsnTime" data-type="DateTime"></has-relation>
  16.                 <has-relation relation="f3PsnName" data-type="String"></has-relation>
  17.                 <has-relation relation="f3PsnID" data-type="String"></has-relation>
  18.                 <has-relation relation="f3PsnFID" data-type="String"></has-relation>
  19.                 <has-relation relation="f3PsnFName" data-type="String"></has-relation>
  20.                 <has-relation relation="f3PsnTime" data-type="DateTime"></has-relation>
  21.                 <has-relation relation="fProcState" data-type="String"></has-relation>
  22.                 <has-relation relation="fFomerID"></has-relation>
复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2016-10-12 11:16:39 | 显示全部楼层
客户信息更改记录主要记录了走流程时需要记录的业务字段,关键字段包括原始客户信息ID(指向要修改的客户基础信息记录),主表ID(与客户信息申请表做主从关联),修改类型(新增,修改,禁用,启用和原有)

  1. <has-relation relation="fFomerID" data-type="String"></has-relation>
  2.                 <has-relation relation="fMainID" data-type="String"></has-relation>
  3.                 <has-relation relation="fType"></has-relation>
  4.                 <has-relation relation="fNO" data-type="String"></has-relation>
  5.                 <has-relation relation="fName" data-type="String"></has-relation>
  6.                 <has-relation relation="fContact" data-type="String"></has-relation>
  7.                 <has-relation relation="fContactID" data-type="String"></has-relation>
  8.                 <has-relation relation="fContactCellphone" data-type="String"></has-relation>
  9.                 <has-relation relation="fBankAccount" data-type="String"></has-relation>
  10.                 <has-relation relation="fBank" data-type="String"></has-relation>
  11.                 <has-relation relation="fCreatTime" data-type="DateTime"></has-relation>
  12.                 <has-relation relation="fCreatePerson" data-type="String"></has-relation>
  13.                 <has-relation relation="fCreatePersonID" data-type="String"></has-relation>

  14.                 <has-relation relation="fState"></has-relation>
复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2016-10-12 11:17:23 | 显示全部楼层
重点来啦:当申请流程结束时,根据修改类型选择相应的sql语句去插入(insert blablabla)或更新(update blabalbal)客户基本信息表


  1.                 // 流程结束时,将流程状态设置为“已结束”
  2.                 java.sql.Connection conn = null;
  3.                 java.sql.PreparedStatement pstmt = null;
  4.                 try {
  5.                         String key = com.justep.system.process.ProcessUtils.getProcessData1();
  6.                         String kSql = "update RU_customerApply RU_customerApply set RU_customerApply.fProcState='已结束' " + "where RU_customerApply='" + key + "'";
  7.                         KSQL.executeUpdate(kSql, null, "/ruidao/masion/data", null);

  8.                         // 流程结束时,按照动作类型更新用户信息
  9.                         String ksql = "select RU_customerRecord.* from RU_customerRecord RU_customerRecord where RU_customerRecord.fMainID='" + key + "' and (RU_customerRecord.fType='新增' or RU_customerRecord.fType='更新' or RU_customerRecord.fType='停用'  or RU_customerRecord.fType='启用' )";
  10.                         com.justep.system.data.Table table = KSQL.select(ksql, null, "/ruidao/masion/data", null);

  11.                         // 在客户信息表中生成新的记录
  12.                         Iterator<Row> rows = table.iterator();
  13.                         Row row;
  14.                         row = rows.next();
  15.                        
  16.                         Collection<String> co = table.getColumnNames();
  17.                         Iterator<String> it = co.iterator();
  18.                         String colNames = "";
  19.                         String mySetString="";
  20.                         while (it.hasNext()) {
  21.                                 String colName = it.next();
  22.                                 if (colName.equals("RU_customerRecord") || colName.equals("fType") || colName.equals("fMainID")) {
  23.                                 }else if(colName.equals("fFomerID")){
  24.                                         colNames = colNames + "," + colName;
  25.                                 }else {
  26.                                         colNames = colNames + "," + colName;
  27.                                         mySetString=mySetString+", ru_customer."+colName+"=ru_customerrecord."+ colName;
  28.                                 }
  29.                                 }

  30.                        
  31.                         mySetString=mySetString.substring(1);
  32.                         colNames = colNames.substring(1);
  33.                         String updateSql = "";
  34.                         if(row.getString("fType").equals("新增")){
  35.                                
  36.                                 updateSql = "INSERT INTO ru_customer ( " + colNames.replaceAll("fFomerID", "fID") + ") select " + colNames + " from ru_customerrecord where RU_customerRecord.fMainID='" + key
  37.                                                 + "' and RU_customerRecord.fType='新增'";
  38.                         }else{

  39.                                 updateSql = "UPDATE ru_customer INNER join ru_customerrecord ON ru_customer.fID=ru_customerrecord.fFomerID "+
  40.                                                         "set " +mySetString+
  41.                                                         " where RU_customerRecord.fMainID='"+key+"'  and (RU_customerRecord.fType='更新' or RU_customerRecord.fType='停用'  or RU_customerRecord.fType='启用')";
  42.                         }
  43.                         System.out.println(updateSql);
  44.                         conn = com.justep.model.ModelUtils.getConnectionInTransaction("/ruidao/masion/data");
  45.                         pstmt = conn.prepareStatement(updateSql);
  46.                         pstmt.execute();

  47.                 } catch (Exception e) {
  48.                         if (pstmt != null) {
  49.                                 pstmt.close();
  50.                         }
  51.                         throw new RuntimeException(e.getMessage());
  52.                 }


复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2016-10-12 11:19:11 | 显示全部楼层
这个问题解决掉后,其他的比如说审核时查看原单,变更记录查询,客户基础信息下面带有从表的问题就是小菜了

相关附件放在这里

customerBIZ.zip

7.53 KB, 下载次数: 4

售价: 50 金币  [记录]  [购买]

customerUI.zip

170.05 KB, 下载次数: 2

售价: 50 金币  [记录]  [购买]

长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

851

主题

2560

帖子

5714

积分

论坛元老

Rank: 8Rank: 8

积分
5714
QQ
发表于 2016-10-12 11:20:52 | 显示全部楼层
Masion总是时不时的放个大招,真心佩服。厉害!厉害!
企业应用定制开发。X5开发者。
手机:15065117236
QQ:87356667
回复 支持 反对

使用道具 举报

41

主题

303

帖子

877

积分

高级会员

Rank: 4

积分
877
QQ
发表于 2016-10-12 11:28:26 | 显示全部楼层
实在贴子,收了
回复 支持 反对

使用道具 举报

19

主题

81

帖子

221

积分

中级会员

Rank: 3Rank: 3

积分
221
QQ
发表于 2016-10-12 11:31:52 | 显示全部楼层
本帖最后由 miky_yu 于 2016-10-12 11:33 编辑

一切业务皆表单,一切表单皆流程!Bex 觉得真不错,正努力说服公司以后用这个开发呢!!

回复 支持 反对

使用道具 举报

767

主题

1914

帖子

3829

积分

论坛元老

Rank: 8Rank: 8

积分
3829
QQ
发表于 2016-10-12 11:43:34 | 显示全部楼层
回滚机制有没有,万一审核错误了呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-18 04:49 , Processed in 0.063799 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表