54 KiB
54 KiB
In [ ]:
In [29]:
import os
def find_java_files(directory):
java_files = []
file_type=['java']
for root, dirs, files in os.walk(directory):
for file in files:
for item in file_type:
if file.endswith("."+item):
java_files.append(os.path.join(root, file))
return java_files
# 使用示例
directory_path = r'E:\project\java\new\serverschool\web\src\main\java\com\hongxing\web\maintenance'
java_files = find_java_files(directory_path)In [30]:
java_filesOut [30]:
['E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\constant\\MaintenanceConstant.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\controller\\MaintenanceAdminTypeController.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\controller\\MaintenanceController.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\controller\\MaintenancePositionController.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\controller\\MaintenanceReservationController.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\controller\\MaintenanceTypeController.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\dao\\MaintenanceAdminTypeDao.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\dto\\MaintenanceCheckDto.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\dto\\SubmitMaintenanceDto.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\entity\\Maintenance.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\entity\\MaintenanceAdminType.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\entity\\MaintenancePosition.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\entity\\MaintenanceReservation.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\entity\\MaintenanceType.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\repository\\MaintenancePositionRepository.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\repository\\MaintenanceRepository.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\repository\\MaintenanceReservationRepository.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\repository\\MaintenanceTypeRepository.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\service\\MaintenanceAdminTypeService.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\service\\MaintenancePositionService.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\service\\MaintenanceReservationService.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\service\\MaintenanceService.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\service\\MaintenanceTypeService.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\service\\impl\\MaintenanceAdminTypeServiceImpl.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\service\\impl\\MaintenancePositionServiceImpl.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\service\\impl\\MaintenanceReservationServiceImpl.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\service\\impl\\MaintenanceServiceImpl.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\service\\impl\\MaintenanceTypeServiceImpl.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\tools\\TimeTool.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\vo\\MaintenanceInfoVo.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\vo\\MaintenancePositionVo.java', 'E:\\project\\java\\new\\serverschool\\web\\src\\main\\java\\com\\hongxing\\web\\maintenance\\vo\\MRAddVo.java']
In [31]:
content = ""
for item in java_files:
with open(item, 'r', encoding='utf-8') as f:
content = content + f.read()+"\n"In [32]:
len(content)Out [32]:
67834
In [33]:
import re
pattern = r"\*\*(?:\s*\*.*?\n)*\s*\*"#匹配多行注释
pattern1 = r"\/\/.*"#匹配单行注释
pattern2 =r'^\n'
pattern3 =r'import .*'
pattern4 =r'package .*'
pattern5 = r"\/\*.*?\*\/"#匹配多行注释
pattern6 = r"<--.*?-->"#匹配单行注释
pattern7=r"^\s*$"
pattern6 = r"<!--.*?-->"#匹配单行注释
patterns = [pattern, pattern1,pattern2, pattern3,pattern4,pattern5,pattern6]
# 替换每一行的"rain"为"rainy"
# new_text = re.sub(pattern,content, "", flags=re.S|re.M)
new_text = contentIn [34]:
for item in patterns:
new_text = re.sub(item, "", new_text)In [35]:
lines = [line for line in new_text.splitlines() if line.strip() != '']
result = '\n'.join(lines)In [36]:
resultOut [36]:
'public class MaintenanceConstant {\n public static final Integer CREATE_STATUS = 1;\n public static final Integer COMPLETE_STATUS = 2;\n public static final Integer CANCEL_STATUS = 3;\n public static final String SUCCESS = "success";\n public static final Integer morning = 0;\n public static final Integer afternoon = 1;\n public static final Long dft_m_time1 = 1696726800000L;\n public static final Long dft_m_time2 = 1696734000000L;\n public static final Long dft_a_time1 = 1696744800000L;\n public static final Long dft_a_time2 = 1696752000000L;\n public static final String[] weekInfo = {"","周一","周二","周三","周四","周五","周六","周日"};\n public static final String[] statusInfos = {"","待学生将手环转交给教师","待厂商处理","处理完成","待教师与学生重新协商时间","学生取消"};\n public static final Map<String,Integer> weekValue = new HashMap<>();\n static {\n for (int i = 1; i < weekInfo.length; i++) {\n weekValue.put(weekInfo[i], i);\n }\n }\n}\n@RestController\n@RequestMapping("/maintenanceAdminType")\npublic class MaintenanceAdminTypeController extends BaseController {\n @Resource\n private MaintenanceAdminTypeService maintenanceAdminTypeService;\n @Autowired\n private MaintenancePositionService maintenancePositionService;\n @PostMapping("/saveInfo")\n public Result<?> saveInfo(@RequestBody MaintenanceAdminType maintenanceAdminType){\n QueryWrapper<MaintenanceAdminType> queryWrapper = new QueryWrapper<>();\n QueryWrapper<MaintenanceAdminType> processor_type_name = queryWrapper.eq("processor_type_name", maintenanceAdminType.getProcessorTypeName());\n MaintenanceAdminType one = maintenanceAdminTypeService.getOne(processor_type_name);\n if(maintenanceAdminType.getId() == null) {\n if (one != null){\n return failure("该类型已存在");\n }\n maintenanceAdminTypeService.save(maintenanceAdminType);\n }\n else{\n if(one != null && !one.getId().equals(maintenanceAdminType.getId())){\n return failure("该类型已存在");\n }\n maintenanceAdminTypeService.updateById(maintenanceAdminType);\n }\n return success();\n }\n @GetMapping("/listByTeamId")\n public Result<?> listByTeamId(Long teamId){\n QueryWrapper<MaintenanceAdminType> queryWrapper = new QueryWrapper<>();\n queryWrapper.eq("team_id", teamId);\n List<MaintenanceAdminType> list = maintenanceAdminTypeService.list(queryWrapper);\n return success(list);\n }\n @GetMapping("/listTypeInfos")\n public Result<?> listTypeInfos(Long teamId,Integer pageNum, Integer pageSize){\n Page<MaintenanceAdminType> page = new Page<>(pageNum, pageSize);\n QueryWrapper<MaintenanceAdminType> wrapper = new QueryWrapper<MaintenanceAdminType>().eq("team_id", teamId);\n Page<MaintenanceAdminType> page1 = maintenanceAdminTypeService.page(page, wrapper);\n return success(page1);\n }\n @GetMapping("/removeById")\n public Result<?> removeById(Integer id){\n MaintenanceAdminType maintenanceAdminType = maintenanceAdminTypeService.getById(id);\n Long teamId = maintenanceAdminType.getTeamId();\n List<MaintenancePosition> maintenancePositions = maintenancePositionService.list(new QueryWrapper<MaintenancePosition>().eq("team_id", teamId));\n if(maintenancePositions.size() > 0)\n for (MaintenancePosition maintenancePosition : maintenancePositions) {\n String adminTypeId = maintenancePosition.getAdminTypeId();\n if(adminTypeId == null || "".equals(adminTypeId)) continue;\n boolean contains = Arrays.asList(adminTypeId.split(",")).contains(maintenanceAdminType.getId().toString());\n if(contains){\n return failure("该类型下有人员,不能删除");\n }\n }\n maintenanceAdminTypeService.removeById(id);\n return success();\n }\n}\n@RestController\n@RequestMapping("/maintenance/apply")\npublic class MaintenanceController extends BaseController {\n @Autowired\n private MaintenanceService maintenanceService;\n @PostMapping("/submitMaintenance")\n public Result<?> submitMaintenance(@RequestBody SubmitMaintenanceDto submitMaintenanceDto){\n String result = maintenanceService.submit(submitMaintenanceDto);\n if(!SUCCESS.equals(result)) return failure(result);\n return success();\n }\n @PostMapping("/check")\n public Result<?> check(@RequestBody MaintenanceCheckDto maintenanceCheckDto){\n String result = maintenanceService.check(maintenanceCheckDto);\n if(!SUCCESS.equals(result)) return failure(result);\n return success();\n }\n @GetMapping("/userCancel")\n public Result<?> userCancel(Integer id,Long userId){\n String result = maintenanceService.userCancel(id,userId);\n if(!SUCCESS.equals(result)) return failure(result);\n return success();\n }\n @GetMapping("/type")\n public Result<?> selectNeedAppointmentByType(Integer type,Long teamId,Integer status){\n List<MaintenanceInfoVo> infos = maintenanceService.listByTypeAndStatus(type,status,teamId);\n return success(infos);\n }\n @GetMapping("/listMyInfos")\n public Result<?> listMyMaintenanceInfo(Long id,Long teamId) {\n List<MaintenanceInfoVo> infos = maintenanceService.listMyInfos(id, teamId);\n return success(infos);\n }\n @GetMapping("/listReservation")\n public Result<?> adminList(Long processorId){\n List<Maintenance> infos = maintenanceService.list(new QueryWrapper<Maintenance>().eq("processor_id", processorId));\n return success(infos);\n }\n @GetMapping("/listReservations")\n public Result<?> pageList(Long teamId,Integer type,Integer status,String name,String serialNo){\n PageRequest pagination = getPagination();\n org.springframework.data.domain.Page<MaintenanceInfoVo> infos = maintenanceService.teacherPageInfo(teamId,type,status,name,serialNo,pagination);\n return success(infos);\n }\n @GetMapping("/listAdminInfos")\n public Result<?> listAdminInfos(Long teaId,Integer typeId,Integer status,String name,Long teamId){\n PageRequest pagination = getPagination();\n Page<Map<String,Object>> page = new Page<Map<String,Object>>(pagination.getPageNumber(),pagination.getPageSize());\n Page<Map<String,Object>> pageInfos = maintenanceService.listAdminInfos(page,teaId,typeId,status,name,teamId);\n return success(pageInfos);\n }\n @GetMapping("/listAdminInfosTwo")\n public Result<?> listAdminInfosTwo(Long teaId,Integer typeId,Integer status,String name,Long teamId){\n List<Map<String,Object>> listInfos = maintenanceService.listAdminInfosTwo(teaId,typeId,status,name,teamId);\n return success(listInfos);\n }\n}\n@RestController\n@RequestMapping("/maintenance/admin")\npublic class MaintenancePositionController extends BaseController {\n @Autowired\n private MaintenancePositionService maintenancePositionService;\n @Autowired\n private MaintenanceAdminTypeService maintenanceAdminTypeService;\n @Autowired\n private MaintenanceTypeService maintenanceTypeService;\n @Autowired\n private MaintenanceService maintenanceService;\n @Autowired\n private MaintenanceReservationService maintenanceReservationService;\n @PostMapping("/add")\n public Result<?> addAdmin(@RequestBody MaintenancePosition maintenancePosition){\n String result = maintenancePositionService.addAdmin(maintenancePosition);\n if(!SUCCESS.equals(result)) return failure(result);\n return success();\n }\n @PostMapping("/update")\n public Result<?> updateInfo(@RequestBody MaintenancePosition maintenancePosition){\n maintenancePositionService.updateByTeaId(maintenancePosition);\n return success();\n }\n @GetMapping("/list")\n public Result<?> listAdminWithInfos(Long teamId,String param,Integer pageNum,Integer pageSize){\n Page<MaintenancePosition> page = new Page<>(pageNum,pageSize);\n Page<MaintenancePosition> list = maintenancePositionService.listInfosByTeamId(teamId,page,param);\n return success(list);\n }\n @PostMapping("/removeInfo")\n public Result<?> removeById(Integer id){\n maintenancePositionService.removeById(id);\n return success();\n }\n @GetMapping("/listAdminByType")\n public Result<?> listAdminByType(Integer typeId){\n MaintenanceType maintenanceType = maintenanceTypeService.getById(typeId);\n Long teamId = maintenanceType.getTeamId();\n if(maintenanceType == null) return failure("该类型不存在");\n List<MaintenancePosition> maintenancePositions = maintenancePositionService.list(new QueryWrapper<MaintenancePosition>().eq("team_id", teamId));\n Integer adminTypeId = maintenanceType.getAdminTypeId();\n MaintenanceAdminType byId = maintenanceAdminTypeService.getById(adminTypeId);\n List<MaintenancePosition> teacherInfos = new ArrayList<>();\n for (MaintenancePosition maintenancePosition : maintenancePositions) {\n String adminTypeId1 = maintenancePosition.getAdminTypeId();\n String[] split = adminTypeId1.split(",");\n boolean exists = Arrays.stream(split).anyMatch(x -> x == byId.getId().toString());\n if(exists) teacherInfos.add(maintenancePosition);\n }\n List<MaintenancePositionVo> collect = maintenancePositions.stream().map(e -> {\n MaintenancePositionVo maintenancePositionVo = new MaintenancePositionVo();\n BeanUtils.copyProperties(e, maintenancePositionVo);\n Long teaId = e.getTeaId();\n List<MaintenanceReservation> maintenanceReservations = maintenanceReservationService.listByTeaId(teaId);\n maintenancePositionVo.setInfos(maintenanceReservations);\n return maintenancePositionVo;\n }).collect(Collectors.toList());\n return success(collect);\n }\n @GetMapping("/typeList")\n public Result<?> typeList(@RequestParam String type){\n String[] split = type.split(",");\n List<MaintenanceType> listInfo = new ArrayList<>();\n if(split.length >= 1){\n listInfo = maintenanceTypeService.list(new QueryWrapper<MaintenanceType>().in("id", split));\n }\n return success(listInfo);\n }\n @GetMapping("/isAdmin")\n public Result<?> isAdmin(@RequestParam Long teaId){\n MaintenancePosition maintenancePosition = maintenancePositionService.getOne(new QueryWrapper<MaintenancePosition>().eq("tea_id", teaId));\n if(maintenancePosition == null) return failure("该教师不是管理员");\n return success();\n }\n}\n@RestController\n@RequestMapping("/maintenance/reservation")\npublic class MaintenanceReservationController extends BaseController {\n @Autowired\n private MaintenanceReservationService maintenanceReservationService;\n @PostMapping("/save")\n public Result<?> add(@RequestBody MRAddVo mrAddVo){\n String result = maintenanceReservationService.add(mrAddVo);\n if(!SUCCESS.equals(result)) return failure(result);\n return success();\n }\n @GetMapping("/listByTeaId")\n public Result<?> listReservationInfo(Long teaId){\n List<MaintenanceReservation> infos = maintenanceReservationService.listByTeaId(teaId);\n return success(infos);\n }\n}\n@RestController\n@RequestMapping("/maintenance/type")\npublic class MaintenanceTypeController extends BaseController {\n @Autowired\n private MaintenanceTypeService maintenanceTypeService;\n @Autowired\n private MaintenanceAdminTypeService maintenanceAdminTypeService;\n @GetMapping("/list")\n public Result<?> listType(){\n List<MaintenanceType> list = maintenanceTypeService.list();\n return success(list);\n }\n @GetMapping("/listByTeamId")\n public Result<?> listType(Long teamId,Integer adminTypeId,Integer flag){\n QueryWrapper<MaintenanceType> wrapper = new QueryWrapper<MaintenanceType>().eq("team_id", teamId);\n if(flag!=null){\n List<MaintenanceAdminType> type = maintenanceAdminTypeService.list(new QueryWrapper<MaintenanceAdminType>().eq("team_id",teamId).eq("type", flag).or(w-> w.eq("type",3)));\n List<Integer> collect = type.stream().map(e -> e.getId()).collect(Collectors.toList());\n collect.add(-1);\n wrapper = wrapper.in("admin_type_id", collect);\n }\n else {\n List<MaintenanceAdminType> type = maintenanceAdminTypeService.list(new QueryWrapper<MaintenanceAdminType>().eq("team_id",teamId));\n List<Integer> collect = type.stream().map(e -> e.getId()).collect(Collectors.toList());\n collect.add(-1);\n wrapper = wrapper.in("admin_type_id", collect);\n }\n if(adminTypeId!=null){\n wrapper = wrapper.eq("admin_type_id", adminTypeId);\n }\n List<MaintenanceType> list = maintenanceTypeService.list(wrapper);\n return success(list);\n }\n @PostMapping("/add")\n public Result<?> add(@RequestBody MaintenanceType maintenanceType){\n String result = maintenanceTypeService.add(maintenanceType);\n if(!SUCCESS.equals(result)) return failure(result);\n return success();\n }\n @PostMapping("/removeInfo")\n public Result<?> removeInfo( Integer id){\n maintenanceTypeService.removeById(id);\n return success();\n }\n @GetMapping("/pageInfos")\n public Result<?> pageInfos(Integer pageNum,Integer pageSize,String param,Long teamId,Integer adminTypeId){\n Page<MaintenanceType> maintenanceTypePage = new Page<>(pageNum, pageSize);\n QueryWrapper<MaintenanceType> maintenanceTypeQueryWrapper = new QueryWrapper<>();\n if(param!=null && !param.equals("")){\n String s = toLike(param);\n maintenanceTypeQueryWrapper.eq("info", s);\n }\n if(adminTypeId!=null){\n maintenanceTypeQueryWrapper.eq("admin_type_id", adminTypeId);\n }\n if(teamId!=null){\n maintenanceTypeQueryWrapper.eq("team_id", teamId);\n }\n Page<MaintenanceType> page = maintenanceTypeService.page(maintenanceTypePage, maintenanceTypeQueryWrapper);\n return success(page);\n }\n @GetMapping("/listByTeaId")\n public Result<?> listByTeaId(@RequestParam Long teaId){\n return success();\n }\n}\n@Mapper\npublic interface MaintenanceAdminTypeDao extends BaseMapper<MaintenanceAdminType> {\n}\n@Data\npublic class MaintenanceCheckDto {\n private Integer id;\n private Long teaId;\n private Integer status;\n private String reply;\n}\n@Data\npublic class SubmitMaintenanceDto {\n private String phone;\n private Long stuId;\n private Long teaId;\n private Integer typeId;\n private String desc;\n private String img;\n private String position;\n}\n@Data\n@TableName("maintenance")\npublic class Maintenance implements Serializable {\n private static final long serialVersionUID = 760944619247695383L;\n @TableId(type = IdType.AUTO)\n private Integer id;\n @TableField("`desc`")\n private String desc;\n private Long stuId;\n private Long teaId;\n private Integer status;\n private String reply;\n private String serialNo;\n private Long teamId;\n private Date createTime;\n private Date updateTime;\n private Integer typeId;\n private String phone;\n private String img;\n private Integer processorId;\n private String name;\n private String processorName;\n}\n@SuppressWarnings("serial")\n@Data\npublic class MaintenanceAdminType extends Model<MaintenanceAdminType> {\n @TableId(type = IdType.AUTO)\n private Integer id;\n private String processorTypeName;\n private Date createTime;\n private Long teamId;\n private Integer type;\n}\n@Data\n@TableName("maintenance_position")\npublic class MaintenancePosition {\n @TableId(type = IdType.AUTO)\n private Integer id;\n private Long teaId;\n private String position;\n private String phone;\n private Long teamId;\n private String teaName;\n private Date createTime;\n private String adminTypeId;\n @TableField(exist = false)\n private List<MaintenanceAdminType> adminTypeInfos;\n}\n@Data\n@TableName("maintenance_reservation")\npublic class MaintenanceReservation implements Serializable {\n private static final long serialVersionUID = 562175149587130704L;\n @TableId(type = IdType.AUTO)\n private Integer id;\n private String week;\n private Integer type;\n private String timeSlot;\n}\n@Data\n@TableName("maintenance_type")\npublic class MaintenanceType {\n @TableId(type = IdType.AUTO)\n private Integer id;\n @TableField(value = "`info`")\n private String info;\n private Long teamId;\n private Integer AdminTypeId;\n private Date createTime;\n}\n@Mapper\npublic interface MaintenancePositionRepository extends BaseMapper<MaintenancePosition> {\n Page<MaintenancePosition> listInfosByTeamId(Page<MaintenancePosition> page, @Param("param") String s,@Param("teamId") Long teamId);\n}\n@Mapper\npublic interface MaintenanceRepository extends BaseMapper<Maintenance> {\n List<Maintenance> pageInfos(@Param("teamId") Long teamId,@Param("type") Integer type,@Param("status") Integer status,@Param("name") String name,@Param("serialNo") String serialNo, @Param("offset") int offSet, @Param("size") int size);\n int countPage(@Param("teamId") Long teamId,@Param("type") Integer type,@Param("status") Integer status,@Param("name") String name,@Param("serialNo") String serialNo);\n int countAll(@Param("teamId") Long teamId);\n Page<Map<String,Object>> listAdminInfos(Page<Map<String,Object>> page, @Param("typeIds") List<Integer> types , @Param("typeId") Integer typeId, @Param("status") Integer status, @Param("teamId") Long teamId, @Param("name") String name);\n List<Map<String, Object>> listAdminInfosTwo(@Param("typeIds") List<Integer> typeIds,@Param("typeId") Integer typeId,@Param("status") Integer status,@Param("teamId") Long teamId,@Param("name") String nameLike);\n Integer teacherCounts(@Param("typeIds") List<Integer> typeIds,@Param("teamId") Long teamId);\n}\n@Mapper\npublic interface MaintenanceReservationRepository extends BaseMapper<MaintenanceReservation> {\n}\n@Mapper\npublic interface MaintenanceTypeRepository extends BaseMapper<MaintenanceType> {\n}\n@Service\npublic interface MaintenanceAdminTypeService extends IService<MaintenanceAdminType> {\n}\npublic interface MaintenancePositionService extends IService<MaintenancePosition> {\n String addAdmin(MaintenancePosition maintenancePosition);\n List<MaintenancePosition> listByTeamId(Long teamId);\n MaintenancePosition getByTeaId(Long teaId);\n void updateByTeaId(MaintenancePosition maintenancePosition);\n Page<MaintenancePosition> listInfosByTeamId(Long teamId, Page<MaintenancePosition> page, String param);\n}\npublic interface MaintenanceReservationService extends IService<MaintenanceReservation> {\n String add(MRAddVo mrAddVo);\n List<MaintenanceReservation> listByTeaId(Long teaId);\n}\npublic interface MaintenanceService extends IService<Maintenance> {\n String submit(SubmitMaintenanceDto submitMaintenanceDto);\n String check(MaintenanceCheckDto maintenanceCheckDto);\n String handle(Integer id);\n String userCancel(Integer id, Long userId);\n List<MaintenanceInfoVo> listByTypeAndStatus(Integer type, Integer status,Long teamId);\n List<MaintenanceInfoVo> listMyInfos(Long id,Long teamId);\n String payBackToLog(Integer id);\n Page<MaintenanceInfoVo> teacherPageInfo(Long teamId, Integer type, Integer status, String name, String serialNo, PageRequest pagination);\n int teacherCount(Long teamId);\n com.baomidou.mybatisplus.extension.plugins.pagination.Page<Map<String,Object>> listAdminInfos(com.baomidou.mybatisplus.extension.plugins.pagination.Page<Map<String,Object>> page, Long processorId, Integer typeId, Integer status, String name, Long teamId);\n List<Map<String, Object>> listAdminInfosTwo(Long teaId, Integer typeId, Integer status, String name, Long teamId);\n Integer teacherCounts(Long teamId);\n}\npublic interface MaintenanceTypeService extends IService<MaintenanceType> {\n String add(MaintenanceType maintenanceType);\n List<MaintenanceType> typeList(Integer adminTypeId, Long teamId);\n List<MaintenanceType> listInfosByTeamId(Long teamId);\n List<Integer> listTypeIdsByTeaId(Long teaId,Long teamId);\n}\n@Service("maintenanceAdminTypeService")\npublic class MaintenanceAdminTypeServiceImpl extends ServiceImpl<MaintenanceAdminTypeDao, MaintenanceAdminType> implements MaintenanceAdminTypeService {\n}\n@Service\npublic class MaintenancePositionServiceImpl extends ServiceImpl<MaintenancePositionRepository, MaintenancePosition> implements MaintenancePositionService {\n @Autowired\n private MaintenanceReservationService maintenanceReservationService;\n @Autowired\n private TeacherService teacherService;\n @Autowired\n private MaintenancePositionRepository maintenancePositionRepository;\n @Autowired\n private MaintenanceTypeService maintenanceTypeService;\n @Autowired\n private MaintenanceAdminTypeService maintenanceAdminTypeService;\n @Override\n public String addAdmin(MaintenancePosition maintenancePosition) {\n MaintenancePosition tea = getOne(new QueryWrapper<MaintenancePosition>().eq("tea_id", maintenancePosition.getTeaId()));\n if(tea!=null) return "管理员已存在,请刷新后再试";\n Teacher byId = teacherService.findById(maintenancePosition.getTeaId());\n if(byId==null) return "教师不存在,请刷新后再试";\n maintenancePosition.setTeamId(byId.getTeamId());\n maintenancePosition.setTeaName(byId.getTeaName());\n boolean save = save(maintenancePosition);\n if(!save) return "参数不完整";\n MRAddVo mrAddVo = new MRAddVo(maintenancePosition.getTeaId(), new Integer[]{1, 2, 3, 4, 5}, morning, dft_m_time1, dft_m_time2);\n MRAddVo mrAddVo1 = new MRAddVo(maintenancePosition.getTeaId(), new Integer[]{1, 2, 3, 4, 5}, afternoon, dft_a_time1, dft_a_time2);\n maintenanceReservationService.add(mrAddVo);\n maintenanceReservationService.add(mrAddVo1);\n return SUCCESS;\n }\n @Override\n public List<MaintenancePosition> listByTeamId(Long teamId) {\n List<MaintenancePosition> list = list(new QueryWrapper<MaintenancePosition>().eq("team_id", teamId));\n return list;\n }\n public MaintenancePosition getByTeaId(Long teaId){\n if(teaId == null || teaId.equals(0L)) return null;\n return getOne(new QueryWrapper<MaintenancePosition>().eq("tea_id",teaId));\n }\n @Override\n public void updateByTeaId(MaintenancePosition maintenancePosition) {\n MaintenancePosition infos = getByTeaId(maintenancePosition.getTeaId());\n maintenancePosition.setId(infos.getId());\n updateById(maintenancePosition);\n }\n @Override\n public Page<MaintenancePosition> listInfosByTeamId(Long teamId, Page<MaintenancePosition> page, String param) {\n String s = toLike(param);\n Page<MaintenancePosition> pageInfos = maintenancePositionRepository.listInfosByTeamId(page,s, teamId);\n List<MaintenanceAdminType> adminTypeList = maintenanceAdminTypeService.list(new QueryWrapper<MaintenanceAdminType>().eq("team_id", teamId));\n List<MaintenancePosition> records = pageInfos.getRecords();\n if(records != null && records.size() > 0){\n for (MaintenancePosition record : records) {\n String adminTypeId = record.getAdminTypeId();\n if(adminTypeId == null || adminTypeId.equalsIgnoreCase("")){\n continue;\n }\n List<String> list = Arrays.asList(record.getAdminTypeId().split(","));\n List<MaintenanceAdminType> collect = adminTypeList.stream().filter(e -> list.contains(e.getId().toString())).collect(Collectors.toList());\n record.setAdminTypeInfos(collect);\n }\n pageInfos.setRecords(records);\n }\n return pageInfos;\n }\n}\n@Service\npublic class MaintenanceReservationServiceImpl extends ServiceImpl<MaintenanceReservationRepository, MaintenanceReservation> implements MaintenanceReservationService {\n @Autowired\n private MaintenancePositionService maintenancePositionService;\n @Override\n public String add(MRAddVo mrAddVo) {\n boolean b = checkTimeType(mrAddVo.getType(), mrAddVo.getStartTime(), mrAddVo.getEndTime());\n if(!b) return "时间段不合法,请重选";\n MaintenancePosition byTeaId = maintenancePositionService.getByTeaId(mrAddVo.getTea());\n if(byTeaId == null) return "教师不存在";\n Integer processorId = byTeaId.getId();\n Integer[] weeks = mrAddVo.getWeeks();\n if(weeks!=null&&weeks.length>0){\n for (Integer week : weeks) {\n MaintenanceReservation info = getByWeekAndTypeAndTeaId(weekInfo[week], mrAddVo.getType(), mrAddVo.getTea());\n if(info!=null) removeById(info);\n MaintenanceReservation maintenanceReservation = new MaintenanceReservation();\n maintenanceReservation.setType(mrAddVo.getType());\n maintenanceReservation.setTimeSlot(getTimeSlot(mrAddVo.getStartTime(),mrAddVo.getEndTime()));\n maintenanceReservation.setWeek(weekInfo[week]);\n save(maintenanceReservation);\n }\n }\n return SUCCESS;\n }\n @Override\n public List<MaintenanceReservation> listByTeaId(Long teaId) {\n List<MaintenanceReservation> infos = list(new QueryWrapper<MaintenanceReservation>().eq("tea_id", teaId));\n List<MaintenanceReservation> collect = infos.stream().sorted((a, b) -> {\n return weekValue.get(a.getWeek()).compareTo(weekValue.get(b.getWeek()));\n }).sorted((a, b) -> {\n return a.getType().compareTo(b.getType());\n }).collect(Collectors.toList());\n return collect;\n }\n public MaintenanceReservation getByWeekAndTypeAndTeaId(String week,Integer type,Long teaId){\n MaintenanceReservation one = getOne(new QueryWrapper<MaintenanceReservation>().eq("week", week).eq("type", type).eq("tea_id", teaId));\n return one;\n }\n}\n@Service\npublic class MaintenanceServiceImpl extends ServiceImpl< MaintenanceRepository,Maintenance> implements MaintenanceService {\n @Autowired\n private TeacherService teacherService;\n @Autowired\n private StudentService studentService;\n @Autowired\n private MaintenanceTypeService maintenanceTypeService;\n @Autowired\n private MaintenancePositionService maintenancePositionService;\n @Autowired\n private MaintenanceReservationService maintenanceReservationService;\n @Autowired\n private MaintenanceRepository maintenanceRepository;\n @Autowired\n private MaintenanceAdminTypeService maintenanceAdminTypeService;\n @Autowired\n private AccountService accountService;\n @Override\n public String submit(SubmitMaintenanceDto submitMaintenanceDto) {\n MaintenanceType type = maintenanceTypeService.getById(submitMaintenanceDto.getTypeId());\n if(type == null) return "反馈异常,提交失败";\n Teacher teacher = null;\n Student student = null;\n String name = "";\n if(submitMaintenanceDto.getTeaId()!=null)\n teacher = teacherService.findById(submitMaintenanceDto.getTeaId());\n if(submitMaintenanceDto.getStuId()!=null)\n student = studentService.findById(submitMaintenanceDto.getStuId());\n if(teacher==null&&student==null) return "用户不存在";\n Maintenance maintenance = new Maintenance();\n BeanUtils.copyProperties(submitMaintenanceDto,maintenance);\n if (teacher != null) {\n maintenance.setName(teacher.getTeaName());\n maintenance.setTeamId(teacher.getTeamId());\n } else {\n maintenance.setName(student.getStuName());\n maintenance.setTeamId(student.getTeamId());\n maintenance.setSerialNo(student.getSeralNo());\n }\n maintenance.setCreateTime(new Date());\n maintenance.setUpdateTime(new Date());\n maintenance.setStatus(CREATE_STATUS);\n save(maintenance);\n return SUCCESS;\n }\n @Override\n public String check(MaintenanceCheckDto maintenanceCheckDto) {\n Teacher teacher = null;\n if(maintenanceCheckDto.getTeaId()!=null){\n teacher = teacherService.findById(maintenanceCheckDto.getTeaId());\n }\n Maintenance info = getById(maintenanceCheckDto.getId());\n MaintenancePosition admin = maintenancePositionService.getOne(new QueryWrapper<MaintenancePosition>().eq("tea_id", maintenanceCheckDto.getTeaId()));\n if(admin!=null) {\n info.setProcessorName(admin.getTeaName());\n info.setProcessorId(admin.getId());\n }\n else {\n Account byUserName = accountService.findByUserName(SecurityUtils.getUsername());\n if(byUserName==null) return "当前用户没有操作权限";\n String username = byUserName.getNickName() == null ? byUserName.getUserName() : byUserName.getNickName();\n info.setProcessorName(username);\n }\n info.setStatus(COMPLETE_STATUS);\n info.setReply(maintenanceCheckDto.getReply());\n info.setUpdateTime(new Date());\n updateById(info);\n return SUCCESS;\n }\n @Override\n public String handle(Integer id) {\n Maintenance info = getById(id);\n if(info==null) return "当前申请异常,请刷新后再试";\n info.setStatus(COMPLETE_STATUS);\n updateById(info);\n return SUCCESS;\n }\n @Override\n public String userCancel(Integer id, Long userId) {\n Maintenance maintenance = getById(id);\n if(maintenance==null) return "维修信息不存在";\n Teacher tea = teacherService.findById(userId);\n if(tea != null){\n boolean flag = tea.getId().equals(maintenance.getTeaId());\n if(!flag) return "没有权限操作";\n maintenance.setStatus(CANCEL_STATUS);\n maintenance.setUpdateTime(new Date());\n updateById(maintenance);\n return SUCCESS;\n }\n Student stu = studentService.findById(userId);\n if(stu == null) return "用户不存在";\n boolean flag = stu.getId().equals(maintenance.getStuId());\n if(!flag) return "没有权限操作";\n maintenance.setStatus(CANCEL_STATUS);\n maintenance.setUpdateTime(new Date());\n updateById(maintenance);\n return SUCCESS;\n }\n @Override\n public List<MaintenanceInfoVo> listByTypeAndStatus(Integer type,Integer status ,Long teamId) {\n List<Maintenance> list = list(new QueryWrapper<Maintenance>().eq("team_id", teamId).and(type != null, e -> e.eq("type_id", type))\n .and(status != null, e -> e.eq("status", status))\n );\n if(list!=null&&!list.isEmpty()){\n List<MaintenanceInfoVo> collect = list.stream().map(e -> {\n return toVo(e);\n }).collect(Collectors.toList());\n return collect;\n }\n return null;\n }\n @Override\n public List<MaintenanceInfoVo> listMyInfos(Long id,Long teamId) {\n List<Maintenance> list = list(new QueryWrapper<Maintenance>().eq("team_id", teamId).eq("stu_id", id).orderByDesc("create_time"));\n if(list==null || list.isEmpty()){\n list = list(new QueryWrapper<Maintenance>().eq("team_id", teamId).eq("tea_id", id));\n }\n if(list!=null&&!list.isEmpty()){\n List<MaintenanceInfoVo> collect = list.stream().map(e -> {\n return toVo(e);\n }).collect(Collectors.toList());\n return collect;\n }\n return null;\n }\n @Override\n public String payBackToLog(Integer id) {\n return SUCCESS;\n }\n @Override\n public Page<MaintenanceInfoVo> teacherPageInfo(Long teamId, Integer type, Integer status, String name, String serialNo, PageRequest pagination) {\n serialNo = fSelect(serialNo);\n name = fSelect(name);\n int pageNumber = pagination.getPageNumber();\n int size = pagination.getPageSize();\n int offSet = pageNumber*size;\n List<Maintenance> maintenances = maintenanceRepository.pageInfos(teamId,type,status,name,serialNo,offSet,size);\n int total = maintenanceRepository.countPage(teamId,type,status,name,serialNo);\n List<MaintenanceInfoVo> collect = maintenances.stream().map(e -> {\n return toVo(e);\n }).collect(Collectors.toList());\n Page<MaintenanceInfoVo> maintenanceInfoVos = new PageImpl<>(collect,pagination,total);\n return maintenanceInfoVos;\n }\n public String fSelect(String param){\n if(param!=null||!param.equals("")){\n return param = "%" + param + "%";\n }\n return null;\n }\n private MaintenanceInfoVo toVo(Maintenance maintenance){\n MaintenanceInfoVo maintenanceInfoVo = new MaintenanceInfoVo();\n BeanUtils.copyProperties(maintenance,maintenanceInfoVo);\n if(maintenance.getStuId()!=null){\n Student info = studentService.findById(maintenance.getStuId());\n if(info!=null)\n maintenanceInfoVo.setName(info.getStuName());\n }\n if(maintenance.getTypeId() != null){\n MaintenanceType byId = maintenanceTypeService.getById(maintenance.getTypeId());\n MaintenanceAdminType byId1 = maintenanceAdminTypeService.getById(byId.getAdminTypeId());\n maintenanceInfoVo.setProcessorName(maintenance.getProcessorName());\n maintenanceInfoVo.setAdminTypeName(byId1.getProcessorTypeName());\n }\n else if(maintenance.getTeaId()!=null){\n Teacher info = teacherService.findById(maintenance.getTeaId());\n if(info!=null)\n maintenanceInfoVo.setName(info.getTeaName());\n }\n Integer processorId = maintenance.getProcessorId();\n if (processorId != null) {\n MaintenancePosition teaInfo = maintenancePositionService.getById(processorId);\n if (teaInfo != null) {\n maintenanceInfoVo.setProcessorPhone(teaInfo.getPhone());\n }\n }\n return maintenanceInfoVo;\n }\n @Override\n public int teacherCount(Long teamId) {\n int total = maintenanceRepository.countAll(teamId);\n return total;\n }\n @Override\n public com.baomidou.mybatisplus.extension.plugins.pagination.Page<Map<String,Object>> listAdminInfos(com.baomidou.mybatisplus.extension.plugins.pagination.Page<Map<String,Object>> page, Long teaId, Integer typeId, Integer status, String name, Long teamId) {\n String nameLike = toLike(name);\n List<Integer> typeIds = getTypeIds(teaId, teamId);\n com.baomidou.mybatisplus.extension.plugins.pagination.Page<Map<String,Object>> maintenanceInfoVoPage = maintenanceRepository.listAdminInfos(page, typeIds, typeId, status,teamId,nameLike);\n return maintenanceInfoVoPage;\n }\n @Override\n public List<Map<String, Object>> listAdminInfosTwo(Long teaId, Integer typeId, Integer status, String name, Long teamId) {\n String nameLike = toLike(name);\n List<Integer> typeIds = getTypeIds(teaId, teamId);\n List<Map<String,Object>> listInfos = maintenanceRepository.listAdminInfosTwo( typeIds, typeId, status,teamId,nameLike);\n return listInfos;\n }\n @NotNull\n private List<Integer> getTypeIds(Long teaId, Long teamId) {\n List<Integer> typeIds = maintenanceTypeService.listTypeIdsByTeaId(teaId, teamId);\n if(typeIds == null || typeIds.isEmpty()){\n typeIds = new ArrayList<>();\n typeIds.add(-1);\n }\n return typeIds;\n }\n @Override\n public Integer teacherCounts(Long teamId) {\n AccountDetails account = SecurityUtils.getPrincipal();\n if(account==null) return 0;\n List<Integer> typeIds = new ArrayList<>();\n if(account.getTeamId().equals(0L)){\n typeIds = getTypeIds(null, teamId);\n }else {\n List<Teacher> teacherByUserName = teacherService.findTeacherByTeamIdAndTeaNameList(teamId,account.getUsername());\n if(teacherByUserName!=null && teacherByUserName.size()>0) {\n Long teaId = teacherByUserName.get(0).getId();\n typeIds = getTypeIds(teaId, teamId);\n }\n else {\n return 0;\n }\n }\n return maintenanceRepository.teacherCounts(typeIds,teamId);\n }\n}\n@Service\npublic class MaintenanceTypeServiceImpl extends ServiceImpl<MaintenanceTypeRepository, MaintenanceType> implements MaintenanceTypeService {\n @Autowired\n private MaintenancePositionService maintenancePositionService;\n @Autowired\n private MaintenanceAdminTypeService maintenanceAdminTypeService;\n @Autowired\n private TeacherService teacherService;\n @Autowired\n private AccountService accountService;\n @Override\n public String add(MaintenanceType maintenanceType) {\n MaintenanceType info = getOne(new QueryWrapper<MaintenanceType>().eq("info", maintenanceType.getInfo()).eq("admin_type_id",maintenanceType.getAdminTypeId()).eq("team_id", maintenanceType.getTeamId()));\n if(maintenanceType.getId() != null){\n if(info!= null && !info.getId().equals(maintenanceType.getId())){\n return "当前分组下该维修类型名称重复";\n }\n updateById(maintenanceType);\n }\n else {\n if(info!=null) return "当前分组下该维修类型名称重复";\n maintenanceType.setCreateTime(new Date());\n save(maintenanceType);\n }\n return SUCCESS;\n }\n @Override\n public List<MaintenanceType> typeList(Integer adminTypeId, Long teamId) {\n return null;\n }\n @Override\n public List<MaintenanceType> listInfosByTeamId(Long teamId) {\n return null;\n }\n public List<Integer> listTypeIdsByTeaId(Long teaId,Long teamId){\n if(teaId == null) {\n String username = SecurityUtils.getUsername();\n Account byUserName = accountService.findByUserName(username);\n if(byUserName == null) return null;\n else if(byUserName.getTeamId().equals(0) || byUserName.getTeamId() == 0){\n List<MaintenanceType> maintenanceTypes = list(new QueryWrapper<MaintenanceType>().eq("team_id", teamId));\n return maintenanceTypes.stream().map(e -> e.getId()).collect(Collectors.toList());\n }\n else {\n return null;\n }\n }\n Teacher teacher = teacherService.findById(teaId);\n if(teacher == null) return null;\n if(teacher.getPower()!=null)\n if(teacher.getPower().contains("管理员") || teacher.getPower().contains("校长")){\n List<MaintenanceType> maintenanceTypes = list(new QueryWrapper<MaintenanceType>().eq("team_id", teamId));\n return maintenanceTypes == null ? null : maintenanceTypes.stream().map(e -> e.getId()).collect(Collectors.toList());\n }\n MaintenancePosition maintenancePosition = maintenancePositionService.getByTeaId(teaId);\n if(maintenancePosition == null || maintenancePosition.getAdminTypeId()== null||maintenancePosition.getAdminTypeId().equals("")) return null;\n List<String> list = Arrays.asList(maintenancePosition.getAdminTypeId().split(","));\n List<MaintenanceAdminType> maintenanceAdminTypes = maintenanceAdminTypeService.listByIds(list);\n if(maintenancePosition == null) return null;\n List<Integer> adminTypes = maintenanceAdminTypes.stream().map(e -> e.getId()).collect(Collectors.toList());\n List<MaintenanceType> maintenanceTypes = list(new QueryWrapper<MaintenanceType>().in("admin_type_id", adminTypes));\n return maintenanceTypes == null ? null : maintenanceTypes.stream().map(e -> e.getId()).collect(Collectors.toList());\n }\n}\npublic class TimeTool {\n public static boolean checkTimeInTimeSlot(String timeSlot,Long time){\n Date date = new Date(time);\n String[] times = timeSlot.split("-");\n String[] start = times[0].split(":");\n String[] end = times[1].split(":");\n Integer h1 = Integer.valueOf(Integer.valueOf(start[0]));\n Integer h2 = Integer.valueOf(Integer.valueOf(end[0]));\n Integer m1 = Integer.valueOf(Integer.valueOf(start[1]));\n Integer m2 = Integer.valueOf(Integer.valueOf(end[1]));\n Integer h = date.getHours();\n Integer m = date.getMinutes();\n LocalDateTime in = LocalDateTime.of(2023, 1, 1, h, m);\n LocalDateTime s = LocalDateTime.of(2023, 1, 1, h1, m1);\n LocalDateTime e = LocalDateTime.of(2023, 1, 1, h2, m2);\n if(!in.isAfter(e)&&!in.isBefore(s))\n return true;\n return false;\n }\n public static String getTimeSlot(Long start, Long end){\n Instant instant = Instant.ofEpochMilli(start);\n LocalTime s = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()).toLocalTime();\n Instant instant2 = Instant.ofEpochMilli(end);\n LocalTime e = LocalDateTime.ofInstant(instant2, ZoneId.systemDefault()).toLocalTime();\n return s.getHour()+":"+initMin(s)+"-"+e.getHour()+":"+initMin(e);\n }\n public static String initMin(LocalTime s){\n boolean b = s.getMinute() < 10;\n if(b) return "0" + s.getMinute();\n int minute = s.getMinute();\n return String.valueOf(minute);\n }\n public static boolean checkTimeType(Integer type,Long startTime,Long endTime){\n if(morning.equals(type)&&startTime<endTime){\n int hours = new Date(endTime).getHours();\n int min = new Date(endTime).getMinutes();\n if(hours<=12){\n if(hours==12&&min==0) return true;\n if(hours<12) return true;\n }\n }\n else if(afternoon.equals(type)&&startTime<endTime){\n int hours = new Date(endTime).getHours();\n int s = new Date(startTime).getHours();\n if(s>=12&&hours<=23){\n return true;\n }\n }\n return false;\n }\n}\n@Data\npublic class MaintenanceInfoVo {\n private static final long serialVersionUID = 760944619247695383L;\n private Integer id;\n private String desc;\n private Long stuId;\n private Long teaId;\n private Integer status;\n private String reply;\n private String serialNo;\n private Long teamId;\n private Date createTime;\n private Date updateTime;\n private Integer typeId;\n private String phone;\n private String img;\n private String processorName;\n private String processorPhone;\n private Integer processorId;\n private String position;\n private String name;\n private String typeName;\n private String adminTypeName;\n}\n@Data\npublic class MaintenancePositionVo extends MaintenancePosition {\n private List<MaintenanceReservation> infos;\n}\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\npublic class MRAddVo implements Serializable {\n private Long tea;\n private Integer[] weeks;\n private Integer type;\n private Long startTime;\n private Long endTime;\n}'In [37]:
with open('finally.txt', 'w', encoding='utf-8') as file:
file.write(result)In [ ]:
[1;31m在当前单元格或上一个单元格中执行代码时 Kernel 崩溃。 [1;31m请查看单元格中的代码,以确定故障的可能原因。 [1;31m单击<a href='https://aka.ms/vscodeJupyterKernelCrash'>此处</a>了解详细信息。 [1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。
In [ ]: