UIEvent event = UIEvent.build(context) {}
log.info(context.data)
String is = context.data.field_kg7mF__c
String date = context.data.field_44c1g__c as String
log.info("==================== "+date)
String id = context.data._id as String
String type = context.data.field_191mC__c as String
String course = context.data.field_tP1kG__c as String
String teacher = context.data.field_0jhWj__c
String classroom = context.data.field_McOk7__c
String campus = context.data.field_cAn5H__c
String rule = context.data.field_2d5dZ__c as String
String school_name = null
def (Boolean errorSC,Map dataSC,String errorMessageSC) = Fx.object.findById("object_2bwgw__c",campus)
if( errorSC ){
log.info("查找校区失败:"+errorMessageSC)
}else{
school_name = dataSC.name as String
}
log.info("是否生成排课明细:"+is+" 上课类型:"+type+" 课程: "+course+" 讲师:"+teacher+" 教室:"+classroom+" 校区:"+campus)
event = UIEvent.build(context) {
removeDetail "object_3s7hD__c"
log.info("删除")
}
String flag = '0'
String making_people = context.userId as String
def(boolean errorP, List dataP, String messageP) = Fx.auth.user.getRolesByUsers(1, [making_people])
if (errorP) {
log.info("error: " + messageP)
} else {
log.info(dataP)
dataP.find{i ->
Map tmp_people = i as Map
if(tmp_people.containsValue("61302c0bbc2704167c5e2628")||tmp_people.containsValue("61302c370c2ec51a396f1f2c")||tmp_people.containsValue("61302c43a6b9516fc5930d79" )){
flag = '2'
log.info("教务员/大项目专员/大项目经理在操作该页面!")
return true
}else{
flag = '1'
log.info("校长在操作该页面")
}
if(tmp_people.containsValue("627db5503e048974906fd874")){
flag = '1'
log.info("受控的角色操作了页面")
return true
}
}
}
if( course != null ){
def (Boolean error1,QueryResult data1,String errorMessage1) =
Fx.object.find("object_4u6m4__c",[["field_Xi96P__c":school_name],["field_24gLB__c":course],["field_52Chj__c": Operator.NIN(["已交付"])]],100,0);
if( error1 ){
log.info("查找符合条件的课程交付列表失败:"+errorMessage1)
}else{
log.info((course)+" 课程的待交付人数为:"+(data1.total))
event = UIEvent.build(context) {
editMaster("field_wfLR2__c": data1.total)
}
}
}else{
log.info("找课程")
event = UIEvent.build(context) {
editMaster("field_0jhWj__c": null,"field_058VX__c": null)
}
if(campus != null){
List productWithMin = []
String productIds = null
Map productWithMin_map = [:]
def dataMinQR = Fx.object.find("object_D9Ioy__c",
FQLAttribute.builder()
.columns(["_id", "name","field_i26a4__c","field_ny6Jk__c"])
.queryTemplate(QueryTemplate.AND(["field_83tbo__c": QueryOperator.EQ(rule)]))
.limit(100)
.build(),
SelectAttribute.builder().needCount(true).build()).result() as QueryResult
log.info("查询排课规则的课程最低库存人数列表结果:"+dataMinQR.total)
if( dataMinQR.size > 0 ){
List dataMin_list = dataMinQR.dataList as List
dataMin_list.each{i ->
Map tmp = i as Map
Map productWithMin_map1 = [
"product":tmp.field_i26a4__c as String,
"min":tmp.field_ny6Jk__c as BigDecimal
]
productWithMin.add(productWithMin_map1)
}
log.info("整合后的课程最低库存人数列表:"+productWithMin)
}else{
log.info("没有找到排课规则的课程最低库存人数列表")
}
List productIdList = []
Map groupMap = [:]
if(productWithMin.size()>0){
productWithMin.each{ i ->
Map min_map = i as Map
String productId = min_map.product
productIdList.add(productId)
}
log.info("productIdList==>"+productIdList)
List all = []
def closure = {
List list ->
all.addAll(list)
}
def ret = Fx.object.find("object_4u6m4__c",[["field_Xi96P__c":school_name],["field_24gLB__c":QueryOperator.IN(productIdList)],["field_52Chj__c": Operator.NIN(["已交付"])]],closure);
if (ret.isError()) {
log.info(ret.message())
}
log.info("共计查询数据2:"+all.size())
groupMap = all.groupBy{it["field_24gLB__c"]}
}
log.info("groupMap==>"+groupMap.keySet())
if(productWithMin.size()>0){
productWithMin.each{ i ->
Map min_map = i as Map
String currProductId = min_map.product as String
log.info("currProductId==>"+currProductId)
List currDataList = groupMap[currProductId] as List
log.info("currDataList==>"+currDataList)
Integer currSize = currDataList == null ? 0 : currDataList.size()
log.info("currSize==>"+currSize)
if( currSize >=(min_map.min as BigDecimal) ){
if( productIds == null ){
productIds = min_map.product as String
}else{
productIds +=","+(min_map.product as String)
}
log.info("课程"+(min_map.product as String)+"符合最低库存数")
}
}
log.info("符合的课程列表:"+productIds)
event = UIEvent.build(context) {
editMaster("field_kf3fL__c": productIds)
}
}
}
}
if(campus==null){
event = UIEvent.build(context) {
editMaster("field_0jhWj__c": '',"field_McOk7__c":'',"field_058VX__c":'',"field_tP1kG__c":'')
}
}
if( classroom!=null ){
event = UIEvent.build(context) {
editMasterFields "field_tP1kG__c" readOnly(false) required(true)
}
}
if( is != null && is !='N' && course!=null && date !=null && date!= '' && type != null ){
List range = []
List mx = []
Map filed = [:]
if( type == 'option1' ){
filed.put( "field_7EvY1__c", "option1")
}else if( type == '41kF2bA90' ){
filed.put( "field_7EvY1__c", "74Jd02odv")
}else if( type == 'zUruzKt48' ){
filed.put( "field_7EvY1__c", "oBkvYr4n1")
}else if( type == 'v5je8Abp9' ){
filed.put( "field_7EvY1__c", "6jS5p63r2")
}else if( type == 'Z1merEEkq' ){
filed.put( "field_7EvY1__c", "Z1merEEkq")
}else if(type=='xrfji11Kj'){
filed.put( "field_7EvY1__c", "xrfji11Kj")
}
def ret = Fx.object.find("object_7V42U__c", [filed,["field_5bB1P__c":course]], 50, 0)
if( ret[0] ){
log.info("查找上课时间段失败:"+ret[2])
}else{
log.info("查找到上课时间段:"+ret[1])
if( (ret[1] as QueryResult).size>0 ){
range = (ret[1] as QueryResult).dataList
range = range.sort(true)
}else{
event = UIEvent.build(context) {
remind Remind.Alert("没有找到对应课程、上课类型的上课时间段!请重新选择")
}
return event
}
}
event = UIEvent.build(context) {
List data_list = date.split(',') as List
data_list=data_list.sort(true)
if( data_list!=null ){
log.info("排课天数:"+data_list.size())
editMaster("field_jjtcI__c":data_list.size())
data_list.each{i ->
String tmp = i as String
Date start =Date.of(tmp)
long startDate_long = start.toTimestamp()
range.each{i1 ->
Map tmp_map = i1 as Map
long rule_start_long = 0
long rule_end_long = 0
if((tmp_map.field_BZ0yh__c as Time)!=null&&(tmp_map.field_d4c6m__c as Time)!=null ){
rule_start_long = (tmp_map.field_BZ0yh__c as Time).toTimestamp() as long
rule_end_long = (tmp_map.field_d4c6m__c as Time).toTimestamp() as long
}
long start_long = rule_start_long+startDate_long+3600000*8
long end_long = rule_end_long+startDate_long+3600000*8
BigDecimal stay = (end_long-start_long)/3600000
addDetail "object_3s7hD__c" set(
"record_type":"default__c",
"field_57T2e__c": start_long,
"field_9o2QQ__c": end_long,
"field_dX12n__c":start,
"field_kGmGb__c":id,
"field_h2pR4__c":course,
"field_4sD21__c": campus ,
"field_2HQd3__c": classroom ,
"field_HLros__c": teacher,
"field_D4n22__c":stay
)
}
}
addDetail "object_3s7hD__c" set(
"record_type":"default__c",
"field_kGmGb__c":id,
"field_4sD21__c": campus ,
)
}else{
log.info("时间为空!")
}
}
}
return event