2023年7月28日 修改身份配置和导出
This commit is contained in:
parent
4927809cc5
commit
bd5c9503ec
|
@ -81,6 +81,21 @@ public class KcExportConfigTpkwcqkjzglxController extends JeecgController<KcExpo
|
|||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param kcExportConfigTpkwcqkjzglx
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "kc_export_config_tpkwcqkjzglx-编辑")
|
||||
@ApiOperation(value="kc_export_config_tpkwcqkjzglx-编辑", notes="kc_export_config_tpkwcqkjzglx-编辑")
|
||||
// @RequiresPermissions("config:kc_export_config_tpkwcqkjzglx:edit")
|
||||
@RequestMapping(value = "/editAll", method = {RequestMethod.PUT,RequestMethod.POST})
|
||||
public Result<String> editAll(@RequestBody KcExportConfigTpkwcqkjzglx kcExportConfigTpkwcqkjzglx) {
|
||||
kcExportConfigTpkwcqkjzglxService.editAll(kcExportConfigTpkwcqkjzglx);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
|
@ -95,7 +110,7 @@ public class KcExportConfigTpkwcqkjzglxController extends JeecgController<KcExpo
|
|||
kcExportConfigTpkwcqkjzglxService.updateById(kcExportConfigTpkwcqkjzglx);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
|
|
|
@ -3,6 +3,7 @@ package org.jeecg.modules.kc.config.export;
|
|||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import lombok.Data;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import org.jeecg.common.system.vo.DictModel;
|
||||
|
@ -52,6 +53,45 @@ public class Export extends BaseExport {
|
|||
|
||||
private ChangeTingKeTongJi changeTingKeTongJi = SpringContextHolder.getBean(ChangeTingKeTongJi.class);
|
||||
|
||||
@Data
|
||||
public class GroupConfig{
|
||||
private String key;//唯组合到这个键里
|
||||
private String name;//显示的名称
|
||||
private String dictKey;// 10,20,30字典的值
|
||||
}
|
||||
|
||||
private Map<String,List<GroupConfig>> groupConfigMap = Maps.newLinkedHashMap();
|
||||
|
||||
private GroupConfig genConfig(String key, String name, String dictKey){
|
||||
GroupConfig config = new GroupConfig();
|
||||
config.setKey(key);
|
||||
config.setName(name);
|
||||
config.setDictKey(dictKey);
|
||||
return config;
|
||||
}
|
||||
|
||||
private void putGroupConfigMap(String key, GroupConfig config){
|
||||
if(groupConfigMap.containsKey(key)){
|
||||
List<GroupConfig> list = groupConfigMap.get(key);
|
||||
list.add(config);
|
||||
}else{
|
||||
List<GroupConfig> list = Lists.newArrayList();
|
||||
list.add(config);
|
||||
groupConfigMap.put(key,list);
|
||||
}
|
||||
}
|
||||
|
||||
private void initGroupConfigMap(){
|
||||
groupConfigMap = Maps.newLinkedHashMap();
|
||||
GroupConfig config;
|
||||
config = genConfig("oneList","学院(部)教务委员会委员","340");putGroupConfigMap(config.getKey(),config);
|
||||
config = genConfig("twoList","行政负责人、教学副院(部)长及系(专业)负责人","220");putGroupConfigMap(config.getKey(),config);
|
||||
config = genConfig("threeListSize","其他党政领导及辅导员","110");putGroupConfigMap(config.getKey(),config);
|
||||
config = genConfig("threeListSize","其他党政领导及辅导员","210");putGroupConfigMap(config.getKey(),config);
|
||||
config = genConfig("threeListSize","其他党政领导及辅导员","270");putGroupConfigMap(config.getKey(),config);
|
||||
config = genConfig("threeListSize","其他党政领导及辅导员","280");putGroupConfigMap(config.getKey(),config);
|
||||
config = genConfig("fourListSize","其他专任教师","1");putGroupConfigMap(config.getKey(),config);
|
||||
}
|
||||
// /**
|
||||
// *
|
||||
// * 功能说明 : 将导出的文档片段按照list返回
|
||||
|
@ -86,16 +126,15 @@ public class Export extends BaseExport {
|
|||
public WordOperator export(KcExportConfigTpkwcqkjzglx kcExportConfigTpkwcqkjzglx, String xqxnParam) throws Exception{
|
||||
String templateName = "exp1\\tpkqk.docx";
|
||||
|
||||
|
||||
Map<String, List<List<String>>> mainMapList = Maps.newHashMap();
|
||||
initGroupConfigMap();
|
||||
|
||||
WordOperator wo = ExportWord.getWordOperator(templateName);
|
||||
//********************************@A.单个内容替换***************************************************/
|
||||
//********************************取数据***********************************************************/
|
||||
Map<String, Object> result = Maps.newHashMap();
|
||||
//取配置表中的用户
|
||||
QueryWrapper<KcExportConfigTpkwcqkjzglx> queryWrapper = QueryGenerator.initQueryWrapper("a", kcExportConfigTpkwcqkjzglx,null);
|
||||
queryWrapper.eq(StringUtils.isNotBlank(kcExportConfigTpkwcqkjzglx.getDwmc()),"b.dwmc",kcExportConfigTpkwcqkjzglx.getDwmc());
|
||||
QueryWrapper<KcExportConfigTpkwcqkjzglx> queryWrapper = QueryGenerator.initQueryWrapper(kcExportConfigTpkwcqkjzglx,null);
|
||||
// queryWrapper.eq(StringUtils.isNotBlank(kcExportConfigTpkwcqkjzglx.getDwmc()),"b.dwmc",kcExportConfigTpkwcqkjzglx.getDwmc());
|
||||
List<KcExportConfigTpkwcqkjzglx> KcExportConfigTpkwcqkjzglxList = kcExportConfigTpkwcqkjzglxService.list(queryWrapper);
|
||||
Map<String, List<KcExportConfigTpkwcqkjzglx>> ghMap = KcExportConfigTpkwcqkjzglxList.stream().collect(Collectors.groupingBy(KcExportConfigTpkwcqkjzglx::getGh));
|
||||
Map<String, List<KcExportConfigTpkwcqkjzglx>> typeMap = KcExportConfigTpkwcqkjzglxList.stream().collect(Collectors.groupingBy(KcExportConfigTpkwcqkjzglx::getTklx));
|
||||
|
@ -127,97 +166,143 @@ public class Export extends BaseExport {
|
|||
// uqw.in("gh",typeMap.keySet());
|
||||
// List<Xxhbuser> xxhbuserList = xxhbuserService.list(uqw);
|
||||
|
||||
List<KcExportConfigTpkwcqkjzglx> oneList = typeMap.get("1");
|
||||
if(oneList == null || oneList.isEmpty()) oneList = Lists.newArrayList();
|
||||
Map<String,List<KcExportConfigTpkwcqkjzglx>> allListMap = Maps.newLinkedHashMap();
|
||||
|
||||
List<KcExportConfigTpkwcqkjzglx> twoList = Lists.newArrayList();
|
||||
List<KcExportConfigTpkwcqkjzglx> twoList1 = typeMap.get("2");
|
||||
List<KcExportConfigTpkwcqkjzglx> twoList2 = typeMap.get("3");
|
||||
List<KcExportConfigTpkwcqkjzglx> twoList3 = typeMap.get("4");
|
||||
groupConfigMap.forEach((k,v) -> {
|
||||
v.forEach(x -> {
|
||||
if(typeMap.containsKey(x.getDictKey())){
|
||||
// allListMap.put(k,typeMap.get(x.getDictKey()));
|
||||
if(allListMap.containsKey(k)){
|
||||
List<KcExportConfigTpkwcqkjzglx> list = allListMap.get(k);
|
||||
list.addAll(typeMap.get(x.getDictKey()));
|
||||
}else{
|
||||
List<KcExportConfigTpkwcqkjzglx> list = Lists.newArrayList();
|
||||
list.addAll(typeMap.get(x.getDictKey()));
|
||||
allListMap.put(k,list);
|
||||
}
|
||||
}else{
|
||||
allListMap.put(k,Lists.newArrayList());
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
if(twoList1 != null && !twoList1.isEmpty()) {
|
||||
twoList.addAll(twoList1);
|
||||
}
|
||||
if(twoList2 != null && !twoList2.isEmpty()) {
|
||||
twoList.addAll(twoList2);
|
||||
}
|
||||
if(twoList3 != null && !twoList3.isEmpty()) {
|
||||
twoList.addAll(twoList3);
|
||||
}
|
||||
|
||||
List<KcExportConfigTpkwcqkjzglx> threeList = Lists.newArrayList();
|
||||
List<KcExportConfigTpkwcqkjzglx> threeList1 = typeMap.get("5");
|
||||
List<KcExportConfigTpkwcqkjzglx> threeList2 = typeMap.get("6");
|
||||
// List<KcExportConfigTpkwcqkjzglx> oneList = typeMap.get("1");
|
||||
// if(oneList == null || oneList.isEmpty()) oneList = Lists.newArrayList();
|
||||
|
||||
if(threeList1 != null && !threeList1.isEmpty()) {
|
||||
threeList.addAll(threeList1);
|
||||
}
|
||||
if(threeList2 != null && !threeList2.isEmpty()) {
|
||||
threeList.addAll(threeList2);
|
||||
}
|
||||
// List<KcExportConfigTpkwcqkjzglx> twoList = Lists.newArrayList();
|
||||
// List<KcExportConfigTpkwcqkjzglx> twoList1 = typeMap.get("2");
|
||||
// List<KcExportConfigTpkwcqkjzglx> twoList2 = typeMap.get("3");
|
||||
// List<KcExportConfigTpkwcqkjzglx> twoList3 = typeMap.get("4");
|
||||
//
|
||||
// if(twoList1 != null && !twoList1.isEmpty()) {
|
||||
// twoList.addAll(twoList1);
|
||||
// }
|
||||
// if(twoList2 != null && !twoList2.isEmpty()) {
|
||||
// twoList.addAll(twoList2);
|
||||
// }
|
||||
// if(twoList3 != null && !twoList3.isEmpty()) {
|
||||
// twoList.addAll(twoList3);
|
||||
// }
|
||||
//
|
||||
// List<KcExportConfigTpkwcqkjzglx> threeList = Lists.newArrayList();
|
||||
// List<KcExportConfigTpkwcqkjzglx> threeList1 = typeMap.get("5");
|
||||
// List<KcExportConfigTpkwcqkjzglx> threeList2 = typeMap.get("6");
|
||||
//
|
||||
// if(threeList1 != null && !threeList1.isEmpty()) {
|
||||
// threeList.addAll(threeList1);
|
||||
// }
|
||||
// if(threeList2 != null && !threeList2.isEmpty()) {
|
||||
// threeList.addAll(threeList2);
|
||||
// }
|
||||
//********************************取数据END*********************************************************/
|
||||
//********************************通用*************************************************************/
|
||||
//xym 学院名称
|
||||
result.put("xqxn",xqxnParam);
|
||||
result.put("xym",kcExportConfigTpkwcqkjzglx.getDwmc());//学院名称
|
||||
result.put("xqxn",xqxnParam);//学期学年
|
||||
//填进去数量
|
||||
result.put("oneListSize", StringUtils.defaultString(String.valueOf(oneList.size()),"0"));
|
||||
result.put("twoListSize", StringUtils.defaultString(String.valueOf(twoList.size()),"0"));
|
||||
result.put("threeListSize", StringUtils.defaultString(String.valueOf(threeList.size()),"0"));
|
||||
//fourListSize
|
||||
allListMap.forEach((k,v) -> {
|
||||
result.put(k + "Size", StringUtils.defaultString(String.valueOf(v.size()),"0"));
|
||||
});
|
||||
// result.put("oneListSize", StringUtils.defaultString(String.valueOf(oneList.size()),"0"));
|
||||
// result.put("twoListSize", StringUtils.defaultString(String.valueOf(twoList.size()),"0"));
|
||||
// result.put("threeListSize", StringUtils.defaultString(String.valueOf(threeList.size()),"0"));
|
||||
// result.put("fourListSize", StringUtils.defaultString(String.valueOf(threeList.size()),"0"));
|
||||
|
||||
//********************************表头END**********************************************************/
|
||||
wo.replaceTextPlus(result);
|
||||
//********************************@A.单个内容替换END**************************************************/
|
||||
int index = 0;
|
||||
final int[] index = {4};
|
||||
List<List<String>> mainList = Lists.newArrayList();
|
||||
|
||||
oneList.forEach(x -> {
|
||||
if(tktjMap.containsKey(x.getGh())) {
|
||||
List<String> tmpList = new ArrayList<>();
|
||||
mainList.add(tmpList);
|
||||
KcTkcstj tkcstj = tktjMap.get(x.getGh());
|
||||
tmpList.add(null);
|
||||
tmpList.add(StringUtils.defaultString(tkcstj.getJsxm(),x.getXm()));
|
||||
tmpList.add(tkcstj.getTkxttj());
|
||||
}
|
||||
|
||||
allListMap.forEach((k,v) -> {
|
||||
v.forEach(x -> {
|
||||
if(tktjMap.containsKey(x.getGh())) {
|
||||
List<String> tmpList = new ArrayList<>();
|
||||
mainList.add(tmpList);
|
||||
KcTkcstj tkcstj = tktjMap.get(x.getGh());
|
||||
// tmpList.add(null);
|
||||
int ytkcs = Integer.parseInt(StringUtils.defaultString(x.getYtkcs(),"0"));
|
||||
if(ghMap.containsKey(x.getGh())){
|
||||
List<KcExportConfigTpkwcqkjzglx> list = ghMap.get(x.getGh());
|
||||
if(list != null && !list.isEmpty()){
|
||||
for(KcExportConfigTpkwcqkjzglx e : list){
|
||||
int c = Integer.parseInt(StringUtils.defaultString(e.getYtkcs(),"0"));
|
||||
if(c > ytkcs) {
|
||||
ytkcs = c;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
tmpList.add(x.getXm());
|
||||
tmpList.add(formatDictTxt(x.getTklx(),"tpkwcqkjzglx"));
|
||||
tmpList.add(String.valueOf(ytkcs));//取最大值
|
||||
|
||||
tmpList.add(tkcstj.getTkxttj());
|
||||
}
|
||||
});
|
||||
WordOperator.fillNullCall(mainList,v,2,3);
|
||||
//从固定位置开始添加(1为第二个表格,第二个1为固定位置)
|
||||
wo.insert2Table(0, index[0], true, mainList);
|
||||
index[0] += mainList.size() + 2;
|
||||
mainList.clear();
|
||||
});
|
||||
index = 4;
|
||||
WordOperator.fillNullCall(mainList,oneList,2,3);
|
||||
//从固定位置开始添加(1为第二个表格,第二个1为固定位置)
|
||||
wo.insert2Table(0, index, true, mainList);
|
||||
|
||||
|
||||
index += mainList.size() + 2;
|
||||
mainList.clear();
|
||||
twoList.forEach(x -> {
|
||||
if(tktjMap.containsKey(x.getGh())) {
|
||||
List<String> tmpList = new ArrayList<>();
|
||||
mainList.add(tmpList);
|
||||
KcTkcstj tkcstj = tktjMap.get(x.getGh());
|
||||
tmpList.add(null);
|
||||
tmpList.add(StringUtils.defaultString(tkcstj.getJsxm(),x.getXm()));
|
||||
tmpList.add(tkcstj.getTkxttj());
|
||||
}
|
||||
});
|
||||
//从固定位置开始添加(1为第二个表格,第二个1为固定位置)
|
||||
WordOperator.fillNullCall(mainList,twoList,2,3);
|
||||
wo.insert2Table(0, index, true, mainList);
|
||||
|
||||
index += mainList.size() + 2;
|
||||
mainList.clear();
|
||||
threeList.forEach(x -> {
|
||||
if(tktjMap.containsKey(x.getGh())) {
|
||||
List<String> tmpList = new ArrayList<>();
|
||||
mainList.add(tmpList);
|
||||
KcTkcstj tkcstj = tktjMap.get(x.getGh());
|
||||
tmpList.add(null);
|
||||
tmpList.add(StringUtils.defaultString(tkcstj.getJsxm(),x.getXm()));
|
||||
tmpList.add(tkcstj.getTkxttj());
|
||||
}
|
||||
});
|
||||
//从固定位置开始添加(1为第二个表格,第二个1为固定位置)
|
||||
WordOperator.fillNullCall(mainList,threeList,2,3);
|
||||
wo.insert2Table(0, index, true, mainList);
|
||||
|
||||
|
||||
|
||||
// mainList.clear();
|
||||
// twoList.forEach(x -> {
|
||||
// if(tktjMap.containsKey(x.getGh())) {
|
||||
// List<String> tmpList = new ArrayList<>();
|
||||
// mainList.add(tmpList);
|
||||
// KcTkcstj tkcstj = tktjMap.get(x.getGh());
|
||||
// tmpList.add(null);
|
||||
// tmpList.add(StringUtils.defaultString(tkcstj.getJsxm(),x.getXm()));
|
||||
// tmpList.add(tkcstj.getTkxttj());
|
||||
// }
|
||||
// });
|
||||
// //从固定位置开始添加(1为第二个表格,第二个1为固定位置)
|
||||
// WordOperator.fillNullCall(mainList,twoList,2,3);
|
||||
// wo.insert2Table(0, index[0], true, mainList);
|
||||
//
|
||||
// index[0] += mainList.size() + 2;
|
||||
// mainList.clear();
|
||||
// threeList.forEach(x -> {
|
||||
// if(tktjMap.containsKey(x.getGh())) {
|
||||
// List<String> tmpList = new ArrayList<>();
|
||||
// mainList.add(tmpList);
|
||||
// KcTkcstj tkcstj = tktjMap.get(x.getGh());
|
||||
// tmpList.add(null);
|
||||
// tmpList.add(StringUtils.defaultString(tkcstj.getJsxm(),x.getXm()));
|
||||
// tmpList.add(tkcstj.getTkxttj());
|
||||
// }
|
||||
// });
|
||||
// //从固定位置开始添加(1为第二个表格,第二个1为固定位置)
|
||||
// WordOperator.fillNullCall(mainList,threeList,2,3);
|
||||
// wo.insert2Table(0, index[0], true, mainList);
|
||||
return wo;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,4 +11,5 @@ import org.jeecg.modules.kc.config.entity.KcExportConfigTpkwcqkjzglx;
|
|||
*/
|
||||
public interface IKcExportConfigTpkwcqkjzglxService extends IService<KcExportConfigTpkwcqkjzglx> {
|
||||
|
||||
void editAll(KcExportConfigTpkwcqkjzglx kcExportConfigTpkwcqkjzglx);
|
||||
}
|
||||
|
|
|
@ -1,11 +1,20 @@
|
|||
package org.jeecg.modules.kc.config.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.jeecg.modules.kc.config.entity.KcExportConfigTpkwcqkjzglx;
|
||||
import org.jeecg.modules.kc.config.mapper.KcExportConfigTpkwcqkjzglxMapper;
|
||||
import org.jeecg.modules.kc.config.service.IKcExportConfigTpkwcqkjzglxService;
|
||||
import org.jeecg.modules.kc.tksf.kctksfyq.entity.KcTksfyq;
|
||||
import org.jeecg.modules.kc.tksf.kctksfyq.service.IKcTksfyqService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: kc_export_config_tpkwcqkjzglx
|
||||
* @Author: jeecg-boot
|
||||
|
@ -15,4 +24,40 @@ import org.springframework.stereotype.Service;
|
|||
@Service
|
||||
public class KcExportConfigTpkwcqkjzglxServiceImpl extends ServiceImpl<KcExportConfigTpkwcqkjzglxMapper, KcExportConfigTpkwcqkjzglx> implements IKcExportConfigTpkwcqkjzglxService {
|
||||
|
||||
@Autowired
|
||||
private IKcTksfyqService kcTksfyqService;
|
||||
|
||||
@Override
|
||||
public void editAll(KcExportConfigTpkwcqkjzglx kcExportConfigTpkwcqkjzglx) {
|
||||
//结构名称
|
||||
if(StringUtils.isNotBlank(kcExportConfigTpkwcqkjzglx.getTklx())){
|
||||
List<String> zwmcs = Arrays.asList(kcExportConfigTpkwcqkjzglx.getTklx().split(","));
|
||||
// QueryWrapper<KcExportConfigTpkwcqkjzglx> qw = new QueryWrapper<>();
|
||||
// qw.in("tklx",zwmcs);
|
||||
// remove(qw);
|
||||
zwmcs.forEach(x -> {
|
||||
kcExportConfigTpkwcqkjzglx.setTklx(x);
|
||||
kcExportConfigTpkwcqkjzglx.setId(null);
|
||||
UpdateWrapper uw = new UpdateWrapper();
|
||||
uw.set("ytkcs",kcExportConfigTpkwcqkjzglx.getYtkcs());
|
||||
uw.eq("tklx",x);
|
||||
update(uw);
|
||||
});
|
||||
}
|
||||
//结构名称
|
||||
if(StringUtils.isNotBlank(kcExportConfigTpkwcqkjzglx.getTklx())){
|
||||
List<String> zwmcs = Arrays.asList(kcExportConfigTpkwcqkjzglx.getTklx().split(","));
|
||||
QueryWrapper<KcTksfyq> qw = new QueryWrapper<>();
|
||||
qw.in("zwmc",zwmcs);
|
||||
kcTksfyqService.remove(qw);
|
||||
zwmcs.forEach(x -> {
|
||||
KcTksfyq kcTksfyq = new KcTksfyq();
|
||||
kcTksfyq.setZwmc(x);
|
||||
kcTksfyq.setId(null);
|
||||
kcTksfyqService.save(kcTksfyq);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,37 +1,41 @@
|
|||
{xqxn}学期听评课制度落实情况
|
||||
{xym}学院(部){xqxn}学期听评课制度落实情况
|
||||
|
||||
听课制度落实清空
|
||||
学院(部)党政领导、学院(部)教务委员会委员、专业负责人、基层教学组织负责人、辅导员、专任教师等人员的听评课情况,建议学院(部)党政领导关注思政课的课堂教学效果。具体要求详见《本科教育教学质量管理实施办法》(附件4)、《关于本科教学听课制度的规定》(附件5)。
|
||||
|
||||
{xqxn}学期听课情况:
|
||||
|
||||
学院(部)教务委员会委员人数:{oneListSize}人
|
||||
|
||||
姓名
|
||||
职务
|
||||
听课次数
|
||||
|
||||
应评课次数
|
||||
实际评课次数
|
||||
z
|
||||
z
|
||||
Z
|
||||
|
||||
z
|
||||
z
|
||||
行政负责人、教学副院(部)长及系(专业)负责人等人数:{twoListSize}人
|
||||
|
||||
姓名
|
||||
职务
|
||||
听课次数
|
||||
|
||||
应评课次数
|
||||
实际评课次数
|
||||
z
|
||||
z
|
||||
z
|
||||
|
||||
z
|
||||
其他党政领导及辅导员人数:{threeListSize}人
|
||||
|
||||
姓名
|
||||
职务
|
||||
听课次数
|
||||
|
||||
应评课次数
|
||||
实际评课次数
|
||||
z
|
||||
z
|
||||
z
|
||||
z
|
||||
其他专任教师:{fourListSize}人
|
||||
姓名
|
||||
职称
|
||||
应评课次数
|
||||
实际评课次数
|
||||
z
|
||||
z
|
||||
z
|
||||
z
|
||||
|
||||
|
|
Loading…
Reference in New Issue