Maybe something like
SELECT recep.id AS rID,
recep.NUM, recep.remark,
recep.name, recep.year
from recep
where typeid in (
select id from receptype)
and exists( select * from Calrecep
where recep.year = Calrecep.year
AND recep.NUM = Calrecep.NUM )
union all
SELECT recep.id AS rID,
recep.NUM, recep.remark,
recep.name, recep.year
from recep
where typeid in (
select id from receptype)
and not exists( select * from Calrecep
where recep.year = Calrecep.year
AND recep.NUM = Calrecep.NUM )
The outer join makes it more complex.