编辑代码

/**
 * 创建人:吴东欣
 * 时间:2021-11-18
 * 需求描述:根据排课列表的信息生成相关日程 
 * 
 * 2022-7-1 修改
 * 沈汉斌
 * 日程内容增加校区名称和教室地址
 * 
 * 2022-7-5 修改
 * 魏聪
 * 使用create创建日程,每次触发该函数都先删除所有的日程,再根据明细一条条生成 
 **/
 
 
 //创建小课约课列表

String cpdl = context.data.field_Gsdg5__c
String kcfl = context.data.field_t7mKy__c
String fbzt = context.data.field_42yA1__c
String ids = context.data._id
String kcmc = context.data.field_Td2GD__c

def retxkyk = Fx.object.find("object_2OaQ8__c",[["field_49C1N__c":ids]],10, 0)
if(retxkyk[0]){
  log.info("查询失败,原因:"+ retxkyk[2])
}else{
//  log.info("查询到的列表数据:"+ retxkyk[1])
}


if( cpdl == "小课" && kcfl == "常规小课" && fbzt == "option1" && retxkyk[1]["size"] == 0){
  ActionAttribute attribute2 = ActionAttribute.build{
    triggerApprovalFlow = true
    triggerWorkflow = false
    skipFunctionAction = true
  }
  
  Map xkyk = [
    "field_49C1N__c":ids,
    "record_type":"default__c",
    "field_L1ms2__c":kcmc
    ]
    
     def ret3 = Fx.object.create("object_2OaQ8__c",  xkyk, null, attribute2);
      if(ret3[0]){
      log.info("创建失败ret3,原因:" + ret3)
      }else{
      log.info("小课创建成功")
      }
  
}

 
String teacherId = context.data.field_0jhWj__c;   //讲师
List detailed = context.details["object_3s7hD__c"] as List;   //排课明细
log.info("讲师id"+teacherId)
log.info("排课明细"+detailed.size()+"条")

//查询讲师信息
def rgt = Fx.object.find("object_q4TS1__c",[["_id":teacherId]],10,0);
if(rgt[0]){
  log.info("查询出错,原因:"+ rgt[2])
}else{
  log.info("查询到的数据为:" +rgt[1])
}
List teacher = rgt[1]["dataList"]["field_p6NYg__c"] as List;
log.info("讲师人员:"+teacher)
if(teacher != [null]){
  log.info("人员表存在该讲师")
  
  List teacher1 = teacher[0] as List
  log.info("teacher1"+teacher1)
  String teacher2 = teacher1[0]//teacher1.substring(1,5)
  log.info("讲师id(teacher2):"+teacher2)
  
    // BigDecimal count = item["field_87ird__c"] as BigDecimal   //日程数量 

//查询日程ScheduleObj
    APIResult retFind = Fx.object.find("ScheduleObj", //查询客户对象
            FQLAttribute.builder()
                .columns(["_id"]) //返回的数据id
                .queryTemplate( QueryTemplate.AND(["field_IcbLr__c": QueryOperator.EQ(context.data._id as String)] ))
                .build(),
            SelectAttribute.builder()
                .needInvalid(true)
                .build());
    if(retFind.isError()){
        log.info("查找关联了该排课列表的日程失败:"+retFind.message());
    }else{
      log.info("查找关联了该排课列表的日程成功:"+retFind.data)
      if( (retFind.data as QueryResult).size>0 ){
        (retFind.data as QueryResult).dataList.each{i ->
          Map id_tmp = i as Map
          log.info(id_tmp)
          def retDel =  Fx.object.remove("ScheduleObj",id_tmp._id as String)
          if( retDel[0] ){
            log.info("删除日程失败:"+retDel[2])
          }else{
            log.info("删除日程成功")
          }
        }

      }else{
        log.info("还没有创建过日程")
      }

    }
      
  detailed.each{
    item ->
    String content = item["field_h2pR4__c"]  //课程名称
    log.info("课程名称:"+content)
    def ret =  Fx.object.find("ProductObj",[["_id":content]],10,0) 
    if(ret[0]){
      log.info("查询出错,原因:"+ ret[2])
    }else{
      log.info("查询到的数据为:" +ret[1])
    }
    List content1 = ret[1]["dataList"]["name"] as List
    String content2 = content1[0]
    log.info("课程名称:" + content2)
    
    DateTime beginTime = item["field_57T2e__c"] as DateTime  //开始时间
    long beginTime_long = beginTime.toTimestamp()
    DateTime endTime = item["field_9o2QQ__c"] as DateTime  //结束时间
    long endTime_long = endTime.toTimestamp()
    String field_Kx0e1__c = item["field_Kx0e1__c"] //校区名称
    String field_av9NA__c = item["field_av9NA__c"]//教室地址
    
    log.info("开始时间:" + beginTime)
    log.info("结束时间:" + endTime)
    
    //生成日程内容
    content2 = field_Kx0e1__c+"\n"+content2+"\n地址:"+field_av9NA__c
    log.info(content2)
    
    // def rft = Fx.work.createSchedule(content2, beginTime, endTime, false, false, [RemindTime.TWO_HOURS_AGO], [users: [teacher2]]);
    // if(rft[0]){
    //   log.info("生成日程出错,原因:" + rft[2])
    // }else{
    //   log.info("生成日程成功:" + rft[1])
    // }
 
    /**
    * ========= 新建日程对象 调用 Start =========
    */
    String objectApiName = 'ScheduleObj' //apiName,必填
    String createdById = teacher2 //创建人Id,必填
    String dataOwnDepartmentId = '1062' //所属部门Id,可选
    String dataOwnDepartmentName = '教研运营部' //所属部门名称,可选
    boolean isPrivate = false //是否是私有日程,必填
    boolean isAllDay = false //是否是全天日程,必填
    String objectDescribeId = context.data._id as String //对象描述id,必填
    
    //主对象要更新的字段
    Map masterData = [
      "object_describe_api_name": objectApiName,
      "record_type":"default__c",
      "created_by":[createdById],
      "data_own_department":[dataOwnDepartmentId],
      "data_own_department__r":dataOwnDepartmentName,
      "is_private":isPrivate,
      "is_all_day":isAllDay,
      "object_describe_id":objectDescribeId,
      "participants":["employees": [createdById]],
      "begin_time":beginTime_long,
      "end_time":endTime_long,
      "field_7skV0__c":item["_id"] as String,  //查找关联的排课明细字段
      "field_IcbLr__c":context.data._id as String,//查找关联的排课列表字段
      "content":[
        "text": content2,
        "attachments": [],
        "images": [],
        "replacedFeedIdByKey": [:]
      ],
      "remind_setting":[["time":0, "value":1], ["time":0, "value":6]],   //提醒
      "cc_range":[
        "departments": [1062],
        "employees": teacher[0],
        "partners": [:]
      ],
      "related_object_data":[  //关联排课
        [
          "describe_api_name":"object_G2aY4__c", 
          "name":context.data.name,
          "id":context.data._id
        ],
        [
          "describe_api_name":"object_3s7hD__c", 
          "name":item["name"] as String,
          "id":item["_id"] as String
        ]
        ]
    ]
    log.info(masterData)  
    def ret1 = Fx.object.create(objectApiName, masterData, [:], false)
    if( ret1[0] ){
      log.info("创建失败ret1!"+ret1)
      // List receiverIds = ['1005', '1001','1006','1007']
      // Notice objectNotify = Notice.objectNotice("object_3s7hD__c",item["_id"] as String)
      // def (Boolean errorN, String dataN, String errorMessageN) = Fx.message.sendNotice("排课日程创建失败","排课明细:"+(item["name"] as String)+"自动创建日程失败!",receiverIds, objectNotify)
      // if (errorN) {
      //   log.info(errorMessageN)
      // } else {
      //   log.info(dataN)
      // }
    }else{
      Fx.log.info("创建成功"+ret1[1])
    }
    
    /**
    * ========= 新建日程对象 调用 End =========
    */

  }
}else{
  log.info("人员表不存在该讲师")
}