|
|
@@ -6,6 +6,7 @@ import cn.hutool.core.lang.Validator;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import com.zhongzheng.common.annotation.DataScope;
|
|
|
@@ -242,40 +243,92 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
|
|
|
Goods goods = iGoodsService.getById(goodsId);
|
|
|
CourseBusiness business = iCourseBusinessService.getById(goods.getBusinessId());
|
|
|
if (ObjectUtils.isNotNull(business) && ObjectUtils.isNotNull(business.getTemplateStatus()) && business.getTemplateStatus() == 1){
|
|
|
- List<CourseSubject> courseSubjectList = iCourseSubjectService.listByIds(Arrays.asList(goods.getSubjectIds().split(",")));
|
|
|
- List<String> subNames = courseSubjectList.stream().map(CourseSubject::getSubjectName).collect(Collectors.toList());
|
|
|
- List<Long> subIds = iCourseSubjectService.getIdsByTenant(subNames);
|
|
|
- //获取业务层次下所有班级
|
|
|
- ClassGradeListBo bgListBo = new ClassGradeListBo();
|
|
|
- bgListBo.setAliasName(business.getAliasName());
|
|
|
- bgListBo.setSubIds(subIds);
|
|
|
- List<ClassGrade> classGrades = baseMapper.getGradeListByTenant(bgListBo);
|
|
|
- if (CollectionUtils.isEmpty(classGrades)){
|
|
|
- //生成预报名官方编号
|
|
|
- add.setOfficialName(ServletUtils.getEncoded("PIY"));
|
|
|
- add.setClassStatus(0);
|
|
|
- }else {
|
|
|
- //获取班级创建最多的机构
|
|
|
- Map<Long, List<ClassGrade>> map = classGrades.stream().collect(Collectors.groupingBy(ClassGrade::getTenantId));
|
|
|
- List<ClassGradeSortBo> sortList = new ArrayList<>();
|
|
|
- map.forEach((k,v) -> {
|
|
|
- ClassGradeSortBo sortBo = new ClassGradeSortBo();
|
|
|
- sortBo.setKey(k);
|
|
|
- sortBo.setSize(v.size());
|
|
|
- sortList.add(sortBo);
|
|
|
- });
|
|
|
- ClassGradeSortBo sortBo = sortList.stream().sorted(Comparator.comparing(ClassGradeSortBo::getSize).reversed()).findFirst().orElse(null);
|
|
|
- List<ClassGrade> classGradesMax = map.get(sortBo.getKey()).stream().sorted(Comparator.comparing(ClassGrade::getCreateTime)).collect(Collectors.toList());
|
|
|
- //获取当前机构商品下的班级
|
|
|
- List<ClassGradeGoods> gradeGoods = iClassGradeGoodsService.getGradeGoodsList(goodsId);
|
|
|
- if(gradeGoods.size() < classGradesMax.size()){
|
|
|
- ClassGrade classGrade = classGradesMax.get(gradeGoods.size());
|
|
|
- add.setOfficialName(classGrade.getRegisterCode());
|
|
|
- add.setClassStatus(0);
|
|
|
- }else {
|
|
|
+ if (net.polyv.common.v1.util.StringUtils.isNotBlank(business.getAliasName()) &&
|
|
|
+ (business.getAliasName().equals("二级建造师") || business.getAliasName().equals("二级造价工程师"))){
|
|
|
+ List<Goods> goodsList = iGoodsService.list(new LambdaQueryWrapper<Goods>()
|
|
|
+ .eq(Goods::getEducationTypeId, goods.getEducationTypeId())
|
|
|
+ .eq(Goods::getBusinessId, goods.getBusinessId())
|
|
|
+ .eq(Goods::getProjectId, goods.getProjectId())
|
|
|
+ .eq(Goods::getSubjectIds, goods.getSubjectIds()));
|
|
|
+ if (goodsList.size() > 1){
|
|
|
+ //该业务层次下有多个商品
|
|
|
+ List<Long> goodsIds = goodsList.stream().filter(item -> !item.getGoodsId().equals(goodsId)).map(Goods::getGoodsId).collect(Collectors.toList());
|
|
|
+ List<ClassGradeGoods> goodsGradeList = iClassGradeGoodsService
|
|
|
+ .list(new LambdaQueryWrapper<ClassGradeGoods>()
|
|
|
+ .in(ClassGradeGoods::getGoodsId, goodsIds));
|
|
|
+ if (CollectionUtils.isNotEmpty(goodsGradeList)){
|
|
|
+ Map<Long, List<ClassGradeGoods>> map = goodsGradeList.stream().collect(Collectors.groupingBy(ClassGradeGoods::getGoodsId));
|
|
|
+ List<ClassGradeSortBo> sortList = new ArrayList<>();
|
|
|
+ map.forEach((k, v) -> {
|
|
|
+ ClassGradeSortBo sortBo = new ClassGradeSortBo();
|
|
|
+ sortBo.setKey(k);
|
|
|
+ sortBo.setSize(v.size());
|
|
|
+ sortList.add(sortBo);
|
|
|
+ });
|
|
|
+ ClassGradeSortBo sortBo = sortList.stream().sorted(Comparator.comparing(ClassGradeSortBo::getSize).reversed()).findFirst().orElse(null);
|
|
|
+ List<ClassGradeGoods> classGradesMax = map.get(sortBo.getKey()).stream().sorted(Comparator.comparing(ClassGradeGoods::getCreateTime)).collect(Collectors.toList());
|
|
|
+ //班级信息
|
|
|
+ List<ClassGrade> listGrade = listByIds(classGradesMax.stream().map(ClassGradeGoods::getGradeId).collect(Collectors.toList()));
|
|
|
+ //获取当前机构商品下的班级
|
|
|
+ List<ClassGradeGoods> gradeGoods = iClassGradeGoodsService.getGradeGoodsList(goods.getGoodsId());
|
|
|
+ if (gradeGoods.size() < listGrade.size()) {
|
|
|
+ ClassGrade grade = list.get(gradeGoods.size());
|
|
|
+ if (checkEjjjPeopleNumLimit(business.getId(),grade.getGradeId())){
|
|
|
+ add.setOfficialName(list.get(gradeGoods.size()).getOfficialName());
|
|
|
+ add.setClassStatus(0);
|
|
|
+ }else {
|
|
|
+ add.setOfficialName(ServletUtils.getEncoded("PIY"));
|
|
|
+ add.setClassStatus(0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(add.getOfficialName())){
|
|
|
+ List<CourseSubject> courseSubjectList = iCourseSubjectService.listByIds(Arrays.asList(goods.getSubjectIds().split(",")));
|
|
|
+ List<String> subNames = courseSubjectList.stream().map(CourseSubject::getSubjectName).collect(Collectors.toList());
|
|
|
+ List<Long> subIds = iCourseSubjectService.getIdsByTenant(subNames);
|
|
|
+ //获取业务层次下所有班级
|
|
|
+ ClassGradeListBo bgListBo = new ClassGradeListBo();
|
|
|
+ bgListBo.setAliasName(business.getAliasName());
|
|
|
+ bgListBo.setSubIds(subIds);
|
|
|
+ List<ClassGrade> classGrades = baseMapper.getGradeListByTenant(bgListBo);
|
|
|
+ if (CollectionUtils.isEmpty(classGrades)){
|
|
|
//生成预报名官方编号
|
|
|
add.setOfficialName(ServletUtils.getEncoded("PIY"));
|
|
|
add.setClassStatus(0);
|
|
|
+ }else {
|
|
|
+ //获取班级创建最多的机构
|
|
|
+ Map<Long, List<ClassGrade>> map = classGrades.stream().collect(Collectors.groupingBy(ClassGrade::getTenantId));
|
|
|
+ List<ClassGradeSortBo> sortList = new ArrayList<>();
|
|
|
+ map.forEach((k,v) -> {
|
|
|
+ ClassGradeSortBo sortBo = new ClassGradeSortBo();
|
|
|
+ sortBo.setKey(k);
|
|
|
+ Map<String, List<ClassGrade>> collect = v.stream().collect(Collectors.groupingBy(ClassGrade::getOfficialName));
|
|
|
+ sortBo.setSize(collect.keySet().size());
|
|
|
+ sortList.add(sortBo);
|
|
|
+ });
|
|
|
+ ClassGradeSortBo sortBo = sortList.stream().sorted(Comparator.comparing(ClassGradeSortBo::getSize).reversed()).findFirst().orElse(null);
|
|
|
+ List<ClassGrade> classGradesMax = map.get(sortBo.getKey()).stream().sorted(Comparator.comparing(ClassGrade::getCreateTime)).collect(Collectors.toList());
|
|
|
+ //去重
|
|
|
+ List<String> codeStrs = new ArrayList<>();
|
|
|
+ for (ClassGrade gradesMax : classGradesMax) {
|
|
|
+ if (codeStrs.contains(gradesMax.getOfficialName())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ codeStrs.add(gradesMax.getOfficialName());
|
|
|
+ }
|
|
|
+ //获取当前机构商品下的班级
|
|
|
+ List<ClassGradeGoods> gradeGoods = iClassGradeGoodsService.getGradeGoodsList(goodsId);
|
|
|
+ if(gradeGoods.size() < codeStrs.size()){
|
|
|
+ add.setOfficialName(codeStrs.get(gradeGoods.size()));
|
|
|
+ add.setClassStatus(0);
|
|
|
+ }else {
|
|
|
+ //生成预报名官方编号
|
|
|
+ add.setOfficialName(ServletUtils.getEncoded("PIY"));
|
|
|
+ add.setClassStatus(0);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -325,7 +378,7 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
|
|
|
throw new RuntimeException("班级商品信息查询失败");
|
|
|
}
|
|
|
Goods goods = iGoodsService.getById(gradeGoods.getGoodsId());
|
|
|
- if (!checkEjjjPeopleNumLimit(goods.getBusinessId(),update.getGradeId())){
|
|
|
+ if (!checkClassUserNum(goods.getBusinessId(),update.getGradeId())){
|
|
|
throw new RuntimeException("班级人数超过上限,不能开班,请检查!");
|
|
|
}
|
|
|
|
|
|
@@ -416,6 +469,18 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
|
|
|
ClassGrade grade = getById(update.getGradeId());
|
|
|
if (ObjectUtils.isNotNull(grade) && ObjectUtils.isNotNull(grade.getClassStatus())
|
|
|
&& StringUtils.isNotBlank(grade.getOfficialName()) && grade.getClassStatus() == 1){
|
|
|
+ //开班修改预报名班级下 所有班级
|
|
|
+ List<ClassGrade> list = list(new LambdaQueryWrapper<ClassGrade>().eq(ClassGrade::getOfficialName, update.getRegisterCode()));
|
|
|
+ if (CollectionUtils.isNotEmpty(list)){
|
|
|
+ update(new LambdaUpdateWrapper<ClassGrade>()
|
|
|
+ .set(ClassGrade::getOfficialName,update.getOfficialName())
|
|
|
+ .set(ClassGrade::getRegisterCode,update.getRegisterCode())
|
|
|
+ .set(ClassGrade::getClassStartTime,update.getClassStartTime())
|
|
|
+ .set(ClassGrade::getClassEndTime,update.getClassEndTime())
|
|
|
+ .set(ClassGrade::getClassStatus,update.getClassStatus())
|
|
|
+ .set(ClassGrade::getLearningStatus,update.getLearningStatus())
|
|
|
+ .in(ClassGrade::getGradeId,list.stream().map(ClassGrade::getGradeId).collect(Collectors.toList())));
|
|
|
+ }
|
|
|
//官方班级开班通知旧系统
|
|
|
ClassGradeOpenBo openBo = new ClassGradeOpenBo();
|
|
|
openBo.setOfficialName(grade.getOfficialName());
|
|
|
@@ -921,6 +986,50 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean checkClassUserNum(Long businessId, Long gradeId) {
|
|
|
+ CourseBusinessQueryBo businessQueryBo = new CourseBusinessQueryBo();
|
|
|
+ businessQueryBo.setId(businessId);
|
|
|
+ String fullName = iCourseBusinessService.queryFullName(businessQueryBo);
|
|
|
+ if (("继续教育二级建造师".equals(fullName)) || ("继续教育二级造价师".equals(fullName))) {
|
|
|
+ //继教二建或者继教二造班级
|
|
|
+ ClassGradeVo gradeVo = queryById(gradeId);
|
|
|
+ if (Validator.isNotEmpty(gradeVo) && Validator.isNotEmpty(gradeVo.getOfficialName())) {
|
|
|
+ ClassGradeQueryBo queryBo = new ClassGradeQueryBo();
|
|
|
+ queryBo.setOfficialName(gradeVo.getOfficialName());
|
|
|
+ Integer peopleNum = queryOfficialGradeCount(queryBo);
|
|
|
+ //查询旧系统
|
|
|
+ Map<String, String> params = new HashMap<>();
|
|
|
+ Long nowTime = DateUtils.getNowTime();
|
|
|
+ String sign = ToolsUtils.EncoderByMd5(nowTime.toString() + "pubilc2022");
|
|
|
+ params.put("stamp", nowTime.toString());
|
|
|
+ params.put("sign", sign);
|
|
|
+ params.put("jsonstr", gradeVo.getOfficialName());
|
|
|
+ String respone = "";
|
|
|
+ Integer oldGradeNum = 0;
|
|
|
+ try {
|
|
|
+ respone = HttpUtils.postFormBody(GRADE_COUNT_PATH, params);
|
|
|
+ log.info("查询业务系统班级人数结果" + respone, "");
|
|
|
+ if (!respone.contains("\"Status\":true")) {
|
|
|
+ throw new CustomException("同步请求错误" + respone);
|
|
|
+ }
|
|
|
+ JSONObject jsonObject = (JSONObject) JSONObject.parse(respone);
|
|
|
+ JSONArray dataArray = jsonObject.getJSONArray("Data");
|
|
|
+ JSONObject fObject = dataArray.getJSONObject(0);
|
|
|
+ oldGradeNum = (Integer) fObject.get("num");
|
|
|
+ } catch (IOException e) {
|
|
|
+ log.info("查询业务系统班级人数失败参数" + params, "");
|
|
|
+ throw new CustomException("同步查询班级人数请求错误" + e.getMessage());
|
|
|
+ }
|
|
|
+ if ((peopleNum + oldGradeNum) > 300) { //全系统平台二建班级人数不能超300
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
return true;
|
|
|
@@ -1038,7 +1147,7 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
|
|
|
result.forEach(item -> {
|
|
|
String date = "yyyy-MM-dd HH:mm:ss";
|
|
|
item.setOrderTime(DateUtils.timestampToDateFormat(item.getOrderTimeLong(),date));
|
|
|
- item.setCreateTime(DateUtils.timestampToDateFormat(item.getCreateTimeLong(),date));
|
|
|
+ item.setCreateTime(DateUtils.timestampToDateFormat(item.getOrderTimeLong(),date));
|
|
|
item.setDoTime(DateUtils.timestampToDateFormat(item.getDoTimeLong(),date));
|
|
|
//机构名称
|
|
|
SysTenant tenant = sysTenantService.getById(item.getTenantId());
|
|
|
@@ -1054,7 +1163,7 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
|
|
|
}
|
|
|
//科目名称
|
|
|
if(StringUtils.isNotBlank(item.getSubjectIds())){
|
|
|
- List<CourseSubject> courseSubjectList = iCourseSubjectService.listByIds(Arrays.asList(item.getSubjectIds().split(",")));
|
|
|
+ List<CourseSubject> courseSubjectList = iCourseSubjectService.getListByIDs(Arrays.asList(item.getSubjectIds().split(",")).stream().map(x -> Long.valueOf(x)).collect(Collectors.toList()));
|
|
|
item.setMajorName(courseSubjectList.stream().filter(x -> StringUtils.isNotBlank(x.getSubjectName())).map(CourseSubject::getSubjectName).collect(Collectors.joining(",")));
|
|
|
}
|
|
|
});
|
|
|
@@ -1062,7 +1171,7 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public String getOfficialGradeNum(ClassOfficialNumBo bo) {
|
|
|
+ public ClassUserNumBo getOfficialGradeNum(ClassOfficialNumBo bo) {
|
|
|
List<Long> subIds = iCourseSubjectService.getIdsByTenant(Arrays.asList(bo.getSubName()));
|
|
|
//获取业务层次下所有班级
|
|
|
ClassGradeListBo bgListBo = new ClassGradeListBo();
|
|
|
@@ -1088,20 +1197,34 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
|
|
|
map.forEach((k,v) -> {
|
|
|
ClassGradeSortBo sortBo = new ClassGradeSortBo();
|
|
|
sortBo.setKey(k);
|
|
|
- sortBo.setSize(v.size());
|
|
|
+ Map<String, List<ClassGrade>> collect = v.stream().collect(Collectors.groupingBy(ClassGrade::getOfficialName));
|
|
|
+ sortBo.setSize(collect.keySet().size());
|
|
|
sortList.add(sortBo);
|
|
|
});
|
|
|
ClassGradeSortBo sortBo = sortList.stream().sorted(Comparator.comparing(ClassGradeSortBo::getSize).reversed()).findFirst().orElse(null);
|
|
|
List<ClassGrade> classGradesMax = map.get(sortBo.getKey()).stream().sorted(Comparator.comparing(ClassGrade::getCreateTime)).collect(Collectors.toList());
|
|
|
if(bo.getSortNum() < classGradesMax.size()){
|
|
|
ClassGrade classGrade = classGradesMax.get(bo.getSortNum());
|
|
|
- return classGrade.getOfficialName();
|
|
|
+ ClassUserNumBo classUserNumBo = new ClassUserNumBo();
|
|
|
+ classUserNumBo.setOfficialName(classGrade.getOfficialName());
|
|
|
+ ClassGradeQueryBo classGradeQueryBo = new ClassGradeQueryBo();
|
|
|
+ classGradeQueryBo.setOfficialName(classGrade.getOfficialName());
|
|
|
+ Integer count = baseMapper.queryOfficialGradeCount(classGradeQueryBo);
|
|
|
+ classUserNumBo.setNum(ObjectUtils.isNotNull(count)?count:0);
|
|
|
+ return classUserNumBo;
|
|
|
}else {
|
|
|
//创建新预报名班级
|
|
|
creatClass(goodsIds.get(0),tenantId,encoded);
|
|
|
}
|
|
|
}
|
|
|
- return encoded;
|
|
|
+
|
|
|
+ ClassUserNumBo classUserNumBo = new ClassUserNumBo();
|
|
|
+ classUserNumBo.setOfficialName(encoded);
|
|
|
+ ClassGradeQueryBo classGradeQueryBo = new ClassGradeQueryBo();
|
|
|
+ classGradeQueryBo.setOfficialName(encoded);
|
|
|
+ Integer count = baseMapper.queryOfficialGradeCount(classGradeQueryBo);
|
|
|
+ classUserNumBo.setNum(ObjectUtils.isNotNull(count)?count:0);
|
|
|
+ return classUserNumBo;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -1121,7 +1244,7 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
|
|
|
|
|
|
ClassGradeOpenUpBo openUpBo = new ClassGradeOpenUpBo();
|
|
|
openUpBo.setGradeIds(ids);
|
|
|
- openUpBo.setClassStatus(bo.getClassStatus());
|
|
|
+ openUpBo.setClassStatus(1);//开班
|
|
|
openUpBo.setOfficialName(bo.getOfficialName());
|
|
|
openUpBo.setClassName(bo.getClassName());
|
|
|
openUpBo.setClassStartTime(bo.getClassStartTime());
|
|
|
@@ -1154,7 +1277,7 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
|
|
|
result.forEach(item -> {
|
|
|
String date = "yyyy-MM-dd HH:mm:ss";
|
|
|
item.setOrderTime(DateUtils.timestampToDateFormat(item.getOrderTimeLong(),date));
|
|
|
- item.setCreateTime(DateUtils.timestampToDateFormat(item.getCreateTimeLong(),date));
|
|
|
+ item.setCreateTime(DateUtils.timestampToDateFormat(item.getOrderTimeLong(),date));
|
|
|
item.setDoTime(DateUtils.timestampToDateFormat(item.getDoTimeLong(),date));
|
|
|
//机构名称
|
|
|
SysTenant tenant = sysTenantService.getById(item.getTenantId());
|
|
|
@@ -1165,24 +1288,25 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
|
|
|
UserStudyRecord startRecord = iUserStudyRecordService.getStudyRecord(item.getUserId(),item.getGradeId(),"ASC");
|
|
|
if (ObjectUtils.isNotNull(startRecord)){
|
|
|
item.setBeginTime(DateUtils.timestampToDateFormat(startRecord.getCreateTime(),date));
|
|
|
- UserStudyRecord endRecord = iUserStudyRecordService.getStudyRecord(item.getUserId(),item.getGradeId(),"DESC");
|
|
|
- item.setApplyTime(DateUtils.timestampToDateFormat(endRecord.getCreateTime(),date));
|
|
|
+ item.setApplyTime(DateUtils.timestampToDateFormat(item.getApplyTimeLong(),date));
|
|
|
}
|
|
|
//科目名称
|
|
|
if(StringUtils.isNotBlank(item.getSubjectIds())){
|
|
|
List<CourseSubject> courseSubjectList = iCourseSubjectService.listByIds(Arrays.asList(item.getSubjectIds().split(",")));
|
|
|
item.setMajorName(courseSubjectList.stream().filter(x -> StringUtils.isNotBlank(x.getSubjectName())).map(CourseSubject::getSubjectName).collect(Collectors.joining(",")));
|
|
|
}
|
|
|
+ if (ObjectUtils.isNull(item.getReportStatu())){
|
|
|
+ item.setReportStatu(0);
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNull(item.getStudyQueueStatus())){
|
|
|
+ item.setStudyQueueStatus(0);
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
//旧系统二建/二造班级学员信息
|
|
|
bo.setClassNo(bo.getOfficialName());
|
|
|
-// Map<String, String> params = new HashMap<>();
|
|
|
Long nowTime = DateUtils.getNowTime();
|
|
|
String sign = ToolsUtils.EncoderByMd5(nowTime.toString()+"pubilc2022");
|
|
|
-// params.put("stamp", nowTime.toString());
|
|
|
-// params.put("sign", sign);
|
|
|
-// params.put("jsonstr", JSONObject.toJSONString(bo));
|
|
|
bo.setSign(sign);
|
|
|
bo.setStamp(nowTime);
|
|
|
JSONObject param = JSONObject.parseObject(JSONObject.toJSONString(bo));
|