进阶:类/定时类
1.CCService
1.1 在类中使用CCService
在类中使用CCService类中的方法,需要先实例化CCService对象。实例化方法如下:
CCService cs = new CCService((UserInfo)userInfo);1.2 新增记录:insert
新增记录时,使用CCObject对象,CCObject有两个构造方法:
- 传入对象API名称,构造一个数据对象:
CCObject opp = new CCObject("Opportunity");- 传入对象API名称和共享标志,构造一个对象的共享表对象:
CCObject oppshare = new CCObject("Opportunity", CCObject.IS_SHARED);给CCObject赋值时,可以直接使用中文字段名称,无需转换为API名称。要将CCobject保存到数据库,调用方法 cs.insert(opp)。注意:ID,自动编号,创建人,创建时间等系统字段不需要赋值!
1.3 查询记录:cquery
查询记录时,使用cs.cquery方法。cs.cquery方法有三个重载方法:
- 返回所有记录:
List<CCObject> opps = cs.cquery("Opportunity");- 按条件返回记录,支持常用的where条件:
List<CCObject> opps = cs.cquery("Opportunity", "khmc__c = '" + record_new.get("id") + "'");- 按条件返回并排序:
List<CCObject> opps = cs.cquery("Opportunity", "khmc__c = '" + record_new.get("id") + "'", "jine__c desc");注意:exp和ordering条件中的字段API名称后一定要加"__c"。
1.4 修改记录:update
修改记录时,使用cs.update方法。cs.update方法需要传入一个CCObject对象。
CCObject opp = cs.query("Opportunity", "id = '" + record_id + "'").get(0);
opp.put("name", "修改后的机会名称");
cs.update(opp);1.5 删除记录:delete
删除记录时,使用cs.delete方法。cs.delete方法需要传入一个CCObject对象。
CCObject opp = cs.query("Opportunity", "id = '" + record_id + "'").get(0);
cs.delete(opp);1.6 操作共享表:
- 查询共享表
List<CCObject> cquery(String objectApiName,String expression,boolean isDataObject);isDataObject 需要传入 false;- 新增共享表记录:见新增记录。
- 删除共享表
deleteShareObjectBySql(String objectApiName,String expression)注意:共享表的表达式中字段不需要加"__c"!
1.8 使用自定义设置 customSetting
- 查询“列表”类型的自定义设置数据,返回对应apiName的全部数据
Map map = cs.getListCustomSetting(String apiName);- 查询“列表”类型的自定义设置数据,返回对应apiName和Name的单条数据
Map map = cs.getListCustomSetting(String apiName, String Name);- 查询“层次结构”类型的自定义设置数据,返回对应apiName和权限(id为简档id或用户id)的单条数据
Map map = cs.getCustomSetting(String apiName, String id);2.SendEmail
SendEmail sendEmail = new SendEmail(userInfo);
sendEmail.sendMailFromSystem(
String []toAddress,
String []ccAddress,
String []bccAddress,
String subject,
String content,
boolean isText);3.DevLogger
- 使用自定义log日志 DevLogger
// 初始化日志类
DevLogger cclogger = new DevLogger(userInfo);
// 打印info级别日志
cclogger.devLogInfo(String log);
// 打印error级别日志
cclogger.devLogError(String log);
// 打印error级别异常日志
cclogger.devLogError(String log, Throwable throwable);4.TimeUtil
- 日期时间类型数据多时区支持。
由于java.util.Date和Calendar是基于本地时区的,因此在涉及到跨时区的数据处理时,可能会出现错误。
为了解决这个问题,可以使用TimeUtil工具类中的getNowDate(userInfo)方法来获取当前时间。getNowDate(userInfo)方法会根据用户信息中的时区来获取当前时间,因此可以保证数据的准确性。
例如,在将日期保存到数据库时,可以将new Date()改为调用TimeUtil.getNowDate(userInfo):
TpSysTask task = new TpSysTask();
task.setBeginTime(TimeUtil.getNowDate(userInfo));- 使用SimpleDateFormat来对Date进行格式化时,应给SimpleDateFormat类实例设置时区,
例如:
SimpleDateFormat myDateFormat=new SimpleDateFormat("yyyy-MM-dd");
myDateFormat.setTimeZone(TimeUtil.getUserTimeZone(userInfo));
// 或者使用TimeUtil提供的工具方法获取实例
SimpleDateFormat myDateFormat=TimeUtil.getSimpleDateFormat("yyyy-MM-dd",userInfo);- 使用Calendar类处理日期时,应给Calendar实例设置时区,获取Calendar对象的方法可任选以下两种,
Calendar cal=Calendar.getInstance(TimeUtil.getUserTimeZone(userInfo))
Calendar cal=TimeUtil.getCalendar(userInfo);5.CCObject
- 构造函数
// 构造一个数据对象,需传入对象API名称:
CCObject opp = new CCObject("Opportunity");
// 构造一个对象的共享表对象,需传入对象API名称及共享标志:
CCObject oppshare = new CCObject("Opportunity",CCObject.IS_SHARED);
// 给CCObject赋值直接用put,name 为对象的字段API名称
opp.put("name","value");