编辑代码

/**
* 曾宪礼 
* 20220520
* 排课验证
* 
* */

List PK=context.details.object_4Twn0__c as List //讲师业绩拆分(学费)
DateTime field_56BM8__c=context.data.field_56BM8__c as DateTime//收款时间
//log.info(PK)
Boolean dd = false
Boolean CC = false
PK.find{
  item9 ->
  int a
  DateTime   time
  String field_cxI2H__c=item9["field_cxI2H__c"] //排课编号
  String FKT=item9["field_YbNd0__c"]  //成交场景
  //排课列表
  def ret9 = Fx.object.find("object_G2aY4__c", [["_id":field_cxI2H__c]], 10,0);
    if(ret9[0]){
      log.info("排课列表数据出错,原因:"+ret9[2])
    }else{
    // log.info("排课列表数据为:" + ret9[1])
    }
    
    List list=ret9[1]["dataList"] as List
    if(list.size()>0){
      log.info(list)
      //String FKT=list[0]["field_YbNd0__c"] 
      log.info(FKT)
      //课堂成交(含所有排课内课程)
      if(FKT=="option1"){
        log.info("bbbbb")
      }
      time  =list[0]["field_xLq2n__c"] as DateTime //开始时间
    if(time != null ){
    Date date = time.toDate()  //排课时间
    Date time1=field_56BM8__c.toDate() //收款时间
     
    a=date.daysBetween(time1)
    log.info(date)
    log.info(time1)
    log.info(a)
      }
      }
}
//开始时间跟收款时间相差31天
if(a>31){
  log.info("cccccc")
  dd =true
    return;  
    }
    //收款时间<开始时间
    if(field_56BM8__c<time){
  log.info("ZZZZ")
  CC =true
    return;  
    
    }
}
// if( CC ==true){
//   return ["error":true, "errorMessage":"收款时间不能早于排课的开始时间,请重新选择排课编号!!!", "block":true]
  
// }
if( dd==true ){
  return ["error":true, "errorMessage":"只能选择课程【结束时间】31天内的排课列表,请重新选择排课编号!!!且请确认已在系统排课!!!", "block":true]
}

String zffs = context.data.field_WyeTl__c //支付方式

//如果不等于专属码扫码收款和pos机收款
if( zffs != "006AsZVOF" && zffs != "option1" ){
  


DateTime date = DateTime.now() as DateTime //当前日期时间

log.info("当前时间:"+date)

DateTime date2022 = date.withYear(2021)
log.info("22年之前:"+date2022)

DateTime date5 = date.withDay(5) //当月5号

log.info("每月5号:"+date5)

DateTime sksj = context.data.field_56BM8__c as DateTime //收款时间
log.info("收款时间:"+sksj)

DateTime cjsj = context.data.create_time as DateTime //创建时间

DateTime date1 = date.withDay(1) //当月1号

// if( sksj>date2022 && sksj<date5  ){
//   return ["error":true, "errorMessage":"每月5日零点起,不允许录收款时间是当前月份之前的学费!", "block":true]
// }



List xfmx = context.details["object_2Qo5n__c"] as List //学费/定金明细


log.info(xfmx)



  List a = []
  xfmx.each{i ->   
    Map details_tmp = i as Map
    a.add(details_tmp.field_Zsf99__c) //流水号
  }

String field_WyeTl__c = context.data.field_WyeTl__c //支付方式

log.info("流水号:"+a)
        //专属码扫码收款,pos机收款,POS机生成码
        if( a != null && field_WyeTl__c != "option1" || field_WyeTl__c != "006AsZVOF" || field_WyeTl__c != "posqrcode" ){
            //查找学费和定金明细,field_Zsf99__c流水号=a
          def (err,data,msg)=Fx.object.find("object_2Qo5n__c",[["field_Zsf99__c":a]],100,0)
          if( err ){
            log.info(msg)
          }else{
           // log.info(data)
          }
        
        if( data != null){
        
          int x = data["size"] as int


          if( x >= 2 && x != null ){
            return ["error":true, "errorMessage":"流水号重复了,请检查流水号,或去学费未关联列表中找到此学员的学费关联,无需重新创建学费!", "block":true] 
          }else{
            log.info("OK")
          }
        }
        }
}


//讲师业绩拆分,课堂成交。需打卡后才可添加
//讲师业绩拆分(学费)
List jsyj = context.details["object_4Twn0__c"] as List
String name = context.data.field_Aq1fR__c //学员姓名
Boolean dk = false
String stuqd = context.data.field_Dna01__c //一级渠道
Boolean pklecturer = false
String ids = context.data._id

jsyj.each{
  item ->
    String idd = item["_id"]
    String pkbh = item["field_cxI2H__c"] //排课编号
    String cjlx = item["field_PeZ8v__c"] //成交课堂类型
    String xflecturer = item ["field_1Aetu__c"] //讲师名称
      def retpk = Fx.object.find("object_G2aY4__c",[["_id":pkbh]],10, 0) //排课列表
        if(retpk[0]){
          log.info("查询失败,原因:"+ retpk[2])
        }else{
         // log.info("查询到的列表数据:"+ retpk[1])
        }
        List pkname1 = retpk[1]["dataList"]["name"] as List //ID
        String pkname = pkname1[0] as String
        
        List starttime1 = retpk[1]["dataList"]["field_xLq2n__c"] as List //开始时间
        DateTime starttime = starttime1[0] as DateTime
        
        log.info(starttime)
        
        List lecturer1 = retpk[1]["dataList"]["field_0jhWj__c"] as List //上课讲师(查找)
        String lecturer = lecturer1[0] as String
        
        log.info("排课列表讲师ID:"+lecturer)
        
            log.info("讲师业绩表讲师ID:"+xflecturer)
        
            if (xflecturer == lecturer){
              pklecturer = true
            }
            
            log.info("判断:"+pklecturer)
  
        
        
          if( pkbh != null && cjlx == "常规小课" || pkbh != null && cjlx == "常规大课"  ){
            //考勤列表
            def ret = Fx.object.find("object_kRP8F__c",[["field_CTg2x__c":name],["field_Oyly6__c":pkname]],["field_vtW1p__c":0],100, 0)
              if(ret[0]){
                log.info("查询失败,原因:"+ ret[2])
              }else{
              //  log.info("查询到的列表数据:"+ ret[1])
              }
              //打卡时间
              List dksj1 = ret[1]["dataList"]["field_vtW1p__c"] as List //ID
              String dksj = dksj1[0] as String
              log.info("打卡时间:"+dksj)
                if( dksj == null ){
                  dk = true
                }
          }
}


  List details_date = [] 
  jsyj.each{i ->   //从排课明细中取出日期
    Map details_tmp = i as Map
    details_date.add(details_tmp.field_KtDff__c)
  }
  log.info("从排课明细中取出日期:"+details_date)
  
  String details_date_str = ''
  details_date.eachWithIndex{ item,int index ->
    String tmp = item as String
    if( index == 0 ){
      details_date_str = tmp
    }else{
      details_date_str+=","+tmp
    }
   
  }
  log.info("排课明细里的日期提取为字符串:"+details_date_str)

String startdate = context.data.field_56BM8__c as String

log.info("收款时间:"+startdate)


DateTime startdatea = context.data.field_56BM8__c as DateTime
if(startdatea != null){
DateTime datetime = "2023-01-01 00:00"

String  startdate_int = startdatea.day

log.info(startdate_int)


if(details_date_str != null || details_date_str != ""){
boolean contie = false
if( details_date_str != null &&  details_date_str != "" && details_date_str != [] && startdate != null ){

if( details_date_str.substring(8,10) == startdate_int ){
  contie = true
}

log.info("比对:"+contie)
log.info("排课时间时间:"+details_date_str)
log.info("收款时间:"+startdate)
     
        if( details_date_str > startdate && contie == false ){
        // return ["error":true, "errorMessage":"您所选择的排课开始时间大于了收款时间,请检查是否录入错误!", "block":true] 
        }
    }
}
  

      if( details_date_str != "" &&  details_date_str != null){
            if( pklecturer == false ){
         //     return ["error":true, "errorMessage":"您所选择的讲师不是此课程的上课讲师,请检查是否录入错误!", "block":true] 
        }
    }



// if( dk == true && stuqd != "6164fc9e787bf90001bf7496"){
//   return ["error":true, "errorMessage":"该学员没有在本次排课上打过卡,请检查是否录入错误!", "block":true] 
// }

List performance = context.details.object_YX8uy__c as List //顾问业绩拆分(学费)
boolean Campusjudgment = false


performance.each{
  itema ->
   String id = itema ["_id"]
   String Campusid = itema  ["field_bt08o__c"] //所属LTC
   List consultant = itema  ["field_7bPL0__c"] as List //业绩归属顾问
 //  log.info(consultant)
    //LTC
     def retCampus = Fx.object.find("object_2bwgw__c",[["_id":Campusid]],10, 0)
      if(retCampus[0]){
        log.info("查询失败,原因:"+ retCampus[2])
      }else{
       //  log.info("查询到的列表数据:"+ retCampus[1])
      }
      List retCampusname1 = retCampus[1]["dataList"]["name"] as List //ID
      String retCampusname = retCampusname1[0] as String
      log.info("员工校区为:"+retCampusname)
      
      //人员
    def retpersonnel = Fx.object.find("PersonnelObj",[["user_id":consultant]],10, 0)
      if(retpersonnel[0]){
        log.info("查询失败,原因:"+ retpersonnel[2])
      }else{
       //  log.info("查询到的列表数据:"+ retpersonnel[1])
      }   
      List department1 = retpersonnel[1]["dataList"]["owner_department"] as List //ID
      String department = department1[0] as String
      log.info("员工部门为:"+department)
      

      
      if(retCampusname != department ){
        Campusjudgment = true
      }
}

  List details_owner = []
  performance.each{i ->   
    Map details_tmpowner = i as Map
    details_owner.add(details_tmpowner.field_7bPL0__c)
  }
  details_owner = Fx.utils.listUnique(details_owner)  //去重
  String details_date_strowner = ''
  details_owner.eachWithIndex{ item,int index ->
    List tmp = item as List
    if( index == 0 ){
      details_date_strowner = tmp
    }else{
      details_date_strowner+=","+tmp
    }
   
  }
  
log.info(details_date_strowner)



  boolean result = false
  result = details_date_strowner.contains("[1490]") 
  
  log.info(result)
  
  if(details_date_strowner != "[2773]" || details_date_strowner != "[2764]" || details_date_strowner != "[1203]"){
    if( startdatea >= datetime  ){
      if( Campusjudgment == true ){
        if( result != true && details_date_strowner != "[1203]"){
        return ["error":true, "errorMessage":"顾问业绩中有顾问的所属校区与主属部门不一致!请检查顾问业绩拆分!", "block":true] 
        }
      }
    }
  }
}