WmTaskSupervisionMapper.xml 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.qunzhixinxi.hnqz.admin.mapper.WmTaskSupervisionMapper">
  5. <resultMap id="wmTaskSupervisionMap"
  6. type="com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSupervision">
  7. <result property="supervisionId" column="sup_id"/>
  8. <result property="taskId" column="task_id"/>
  9. <result property="packageId" column="pkg_id"/>
  10. <result property="supervisionResult" column="sup_res"/>
  11. <result property="supervisionState" column="sup_state"/>
  12. <result property="modifiable" column="modifiable"/>
  13. <result property="roleId" column="role_id"/>
  14. <result property="remarks" column="remarks"/>
  15. <result property="createBy" column="create_by"/>
  16. <result property="updateBy" column="update_by"/>
  17. <result property="createTime" column="create_time"/>
  18. <result property="updateTime" column="update_time"/>
  19. </resultMap>
  20. <select id="selectByPkgIds" resultMap="wmTaskSupervisionMap">
  21. SELECT
  22. sup_id,
  23. t.id task_id,
  24. t.score_package_id pkg_id,
  25. sup.sup_res,
  26. sup.sup_state,
  27. sup.modifiable,
  28. sup.role_id,
  29. sup.remarks,
  30. sup.create_by,
  31. sup.update_by,
  32. sup.create_time,
  33. sup.update_time
  34. FROM wm_task AS t
  35. JOIN (SELECT DISTINCT h.target_id
  36. FROM sys_chain_node_check_his h
  37. WHERE h.node_id = 6
  38. AND h.check_result = 1
  39. <if test="taskBeginTime != null">
  40. AND h.create_time1 &gt;= #{taskBeginTime}
  41. </if>
  42. ) c ON c.target_id = t.id
  43. LEFT JOIN wm_task_sup AS sup ON sup.task_id = t.id
  44. LEFT JOIN ops_freeze_task f2099 ON f2099.target_id = t.id
  45. <where>
  46. t.del_flag = '0'
  47. AND t.task_status = '3'
  48. AND f2099.target_id is null
  49. <if test="pkgIds != null and pkgIds.size > 0">
  50. AND t.score_package_id IN
  51. <foreach collection="pkgIds" item="pid" open="(" close=")" separator=",">#{pid}</foreach>
  52. </if>
  53. <if test="taskBeginTime != null and taskEndTime != null">
  54. AND (t.create_time BETWEEN #{taskBeginTime} AND #{taskEndTime})
  55. </if>
  56. </where>
  57. </select>
  58. <resultMap id="wmTaskSupProcessMap" type="com.qunzhixinxi.hnqz.admin.api.model.excel.TaskCheckHistoryExcelModel">
  59. <result property="taskId" column="id"/>
  60. <result property="divisionName" column="division_name"/>
  61. <result property="provAbbr" column="prov_abbr"/>
  62. <result property="csoName" column="cso_name"/>
  63. <result property="scorePackageName" column="score_package_name"/>
  64. <result property="scorePackageId" column="score_package_id"/>
  65. <result property="packageYear" column="package_year"/>
  66. <result property="packageStartTime" column="package_start_time"/>
  67. <result property="packageEndTime" column="package_end_time"/>
  68. <result property="taskNumber" column="task_number"/>
  69. <result property="taskType_name" column="task_type_name"/>
  70. <result property="taskScore" column="task_score"/>
  71. <result property="drugnameTy" column="drugname_ty"/>
  72. <result property="drugEntName" column="drug_ent_name"/>
  73. <result property="workerRealname" column="worker_realname"/>
  74. <result property="taskCreateTime" column="task_create_time"/>
  75. <result property="vendorRealname" column="vendor_realname"/>
  76. <result property="vendorUpdateTime" column="vendor_update_time"/>
  77. <result property="vendorCheckResult" column="vendor_check_result"/>
  78. <result property="vendorCheckMsg" column="vendor_check_msg"/>
  79. <result property="cityRealname" column="city_realname"/>
  80. <result property="cityUpdateTime" column="city_update_time"/>
  81. <result property="cityCheckResult" column="city_check_result"/>
  82. <result property="cityCheckMsg" column="city_check_msg"/>
  83. <result property="divisionRealname" column="division_realname"/>
  84. <result property="divisionUpdateTime" column="division_update_time"/>
  85. <result property="divisionCheckResult" column="division_check_result"/>
  86. <result property="divisionCheckMsg" column="division_check_msg"/>
  87. <result property="marketingRealname" column="marketing_realname"/>
  88. <result property="marketingUpdateTime" column="marketing_update_time"/>
  89. <result property="marketingCheckResult" column="marketing_check_result"/>
  90. <result property="marketingCheckMsg" column="marketing_check_msg"/>
  91. <result property="bizRealname" column="biz_realname"/>
  92. <result property="bizUpdateTime" column="biz_update_time"/>
  93. <result property="bizCheckResult" column="biz_check_result"/>
  94. <result property="bizCheckMsg" column="biz_check_msg"/>
  95. <result property="submgrRealname" column="submgr_realname"/>
  96. <result property="submgrUpdateTime" column="submgr_update_time"/>
  97. <result property="submgrCheckResult" column="submgr_check_result"/>
  98. <result property="submgrCheckMsg" column="submgr_check_msg"/>
  99. <result property="mgrRealname" column="mgr_realname"/>
  100. <result property="mgrUpdateTime" column="mgr_update_time"/>
  101. <result property="mgrCheckResult" column="mgr_check_result"/>
  102. <result property="mgrCheckMsg" column="mgr_check_msg"/>
  103. <result property="factoryFinanceRealname" column="factory_finance_realname"/>
  104. <result property="factoryFinanceCreateTime" column="factory_finance_create_time"/>
  105. <result property="factoryFinanceSupRes" column="factory_finance_sup_res"/>
  106. <result property="factoryFinanceRemarks" column="factory_finance_remarks"/>
  107. <result property="factoryFinanceLeaderRealname" column="factory_finance_leader_realname"/>
  108. <result property="factoryFinanceLeaderCreateTime" column="factory_finance_leader_create_time"/>
  109. <result property="factoryFinanceLeaderAdviceResult" column="factory_finance_leader_advice_result"/>
  110. <result property="factoryFinanceLeaderRemarks" column="factory_finance_leader_remarks"/>
  111. <result property="factoryFinanceSubmgrRealname" column="factory_finance_submgr_realname"/>
  112. <result property="factoryFinanceSubmgrCreateTime" column="factory_finance_submgr_create_time"/>
  113. <result property="factoryFinanceSubmgrAdviceResult" column="factory_finance_submgr_advice_result"/>
  114. <result property="factoryFinanceSubmgrRemarks" column="factory_finance_submgr_remarks"/>
  115. <result property="factoryBizRealname" column="factory_biz_realname"/>
  116. <result property="factoryBizCreateTime" column="factory_biz_create_time"/>
  117. <result property="factoryBizSupRes" column="factory_biz_sup_res"/>
  118. <result property="factoryBizRemarks" column="factory_biz_remarks"/>
  119. <result property="factoryBizLeaderRealname" column="factory_biz_leader_realname"/>
  120. <result property="factoryBizLeaderCreateTime" column="factory_biz_leader_create_time"/>
  121. <result property="factoryBizLeaderAdviceResult" column="factory_biz_leader_advice_result"/>
  122. <result property="factoryBizLeaderRemarks" column="factory_biz_leader_remarks"/>
  123. <result property="factoryBizSubmgrRealname" column="factory_biz_submgr_realname"/>
  124. <result property="factoryBizSubmgrCreateTime" column="factory_biz_submgr_create_time"/>
  125. <result property="factoryBizSubmgrAdviceResult" column="factory_biz_submgr_advice_result"/>
  126. <result property="factoryBizSubmgrRemarks" column="factory_biz_submgr_remarks"/>
  127. <result property="lawyerRealname" column="lawyer_realname"/>
  128. <result property="lawyerCreateTime" column="lawyer_create_time"/>
  129. <result property="lawyerSupRes" column="lawyer_sup_res"/>
  130. <result property="lawyerRemarks" column="lawyer_remarks"/>
  131. <result property="lawyerLeaderRealname" column="lawyer_leader_realname"/>
  132. <result property="lawyerLeaderCreateTime" column="lawyer_leader_create_time"/>
  133. <result property="lawyerLeaderAdviceResult" column="lawyer_leader_advice_result"/>
  134. <result property="lawyerLeaderRemarks" column="lawyer_leader_remarks"/>
  135. <result property="lawyerSubmgrRealname" column="lawyer_submgr_realname"/>
  136. <result property="lawyerSubmgrCreateTime" column="lawyer_submgr_create_time"/>
  137. <result property="lawyerSubmgrAdviceResult" column="lawyer_submgr_advice_result"/>
  138. <result property="lawyerSubmgrRemarks" column="lawyer_submgr_remarks"/>
  139. <result property="financeRealname" column="finance_realname"/>
  140. <result property="financeCreateTime" column="finance_create_time"/>
  141. <result property="financeSupRes" column="finance_sup_res"/>
  142. <result property="financeRemarks" column="finance_remarks"/>
  143. <result property="financeLeaderRealname" column="finance_leader_realname"/>
  144. <result property="financeLeaderCreateTime" column="finance_leader_create_time"/>
  145. <result property="financeLeaderAdviceResult" column="finance_leader_advice_result"/>
  146. <result property="financeLeaderRemarks" column="finance_leader_remarks"/>
  147. <result property="financeSubmgrRealname" column="finance_submgr_realname"/>
  148. <result property="financeSubmgrCreateTime" column="finance_submgr_create_time"/>
  149. <result property="financeSubmgrAdviceResult" column="finance_submgr_advice_result"/>
  150. <result property="financeSubmgrRemarks" column="finance_submgr_remarks"/>
  151. </resultMap>
  152. <select id="selectTaskSupProcess" resultMap="wmTaskSupProcessMap">
  153. select
  154. t.id,
  155. division.name division_name,
  156. pp."prov_abbr",
  157. cso.name cso_name,
  158. pp.score_package_name,
  159. pp.id score_package_id,
  160. year(pp.start_time) package_year,
  161. pp.start_time package_start_time,
  162. pp.end_time package_end_time,
  163. t."task_number",
  164. ttype.task_type_name,
  165. t.score task_score,
  166. drug.drugname_ty,
  167. drug.drug_ent_name,
  168. task_user.realname worker_realname,
  169. t.create_time task_create_time,
  170. t1.realname vendor_realname,
  171. t1.update_time vendor_update_time,
  172. t1.check_result vendor_check_result,
  173. t1.check_msg vendor_check_msg,
  174. t2.realname city_realname,
  175. t2.update_time city_update_time,
  176. t2.check_result city_check_result,
  177. t2.check_msg city_check_msg,
  178. t3.realname division_realname,
  179. t3.update_time division_update_time,
  180. t3.check_result division_check_result,
  181. t3.check_msg division_check_msg,
  182. t8.realname marketing_realname,
  183. t8.update_time marketing_update_time,
  184. t8.check_result marketing_check_result,
  185. t8.check_msg marketing_check_msg,
  186. t9.realname biz_realname,
  187. t9.update_time biz_update_time,
  188. t9.check_result biz_check_result,
  189. t9.check_msg biz_check_msg,
  190. t5.realname submgr_realname,
  191. t5.update_time submgr_update_time,
  192. t5.check_result submgr_check_result,
  193. t5.check_msg submgr_check_msg,
  194. t6.realname mgr_realname,
  195. t6.update_time mgr_update_time,
  196. t6.check_result mgr_check_result,
  197. t6.check_msg mgr_check_msg,
  198. sup1."realname" factory_finance_realname,
  199. sup1."create_time" factory_finance_create_time,
  200. sup1."sup_res" factory_finance_sup_res,
  201. sup1.remarks factory_finance_remarks,
  202. sup11."realname" factory_finance_leader_realname,
  203. sup11."create_time" factory_finance_leader_create_time,
  204. sup11."advice_result" factory_finance_leader_advice_result,
  205. sup11.remarks factory_finance_leader_remarks,
  206. sup12."realname" factory_finance_submgr_realname,
  207. sup12."create_time" factory_finance_submgr_create_time,
  208. sup12."advice_result" factory_finance_submgr_advice_result,
  209. sup12.remarks factory_finance_submgr_remarks,
  210. sup2."realname" factory_biz_realname,
  211. sup2."create_time" factory_biz_create_time,
  212. sup2."sup_res" factory_biz_sup_res,
  213. sup2.remarks factory_biz_remarks,
  214. sup21."realname" factory_biz_leader_realname,
  215. sup21."create_time" factory_biz_leader_create_time,
  216. sup21."advice_result" factory_biz_leader_advice_result,
  217. sup21.remarks factory_biz_leader_remarks,
  218. sup22."realname" factory_biz_submgr_realname,
  219. sup22."create_time" factory_biz_submgr_create_time,
  220. sup22."advice_result" factory_biz_submgr_advice_result,
  221. sup22.remarks factory_biz_submgr_remarks,
  222. sup3."realname" lawyer_realname,
  223. sup3."create_time" lawyer_create_time,
  224. sup3."sup_res" lawyer_sup_res,
  225. sup3.remarks lawyer_remarks,
  226. sup31."realname" lawyer_leader_realname,
  227. sup31."create_time" lawyer_leader_create_time,
  228. sup31."advice_result" lawyer_leader_advice_result,
  229. sup31.remarks lawyer_leader_remarks,
  230. sup32."realname" lawyer_submgr_realname,
  231. sup32."create_time" lawyer_submgr_create_time,
  232. sup32."advice_result" lawyer_submgr_advice_result,
  233. sup32.remarks lawyer_submgr_remarks,
  234. sup4."realname" finance_realname,
  235. sup4."create_time" finance_create_time,
  236. sup4."sup_res" finance_sup_res,
  237. sup4.remarks finance_remarks,
  238. sup41."realname" finance_leader_realname,
  239. sup41."create_time" finance_leader_create_time,
  240. sup41."advice_result" finance_leader_advice_result,
  241. sup41.remarks finance_leader_remarks,
  242. sup42."realname" finance_submgr_realname,
  243. sup42."create_time" finance_submgr_create_time,
  244. sup42."advice_result" finance_submgr_advice_result,
  245. sup42.remarks finance_submgr_remarks
  246. from wm_task t
  247. join wm_task_type ttype
  248. on t.task_type_id = ttype.id
  249. join "wm_score_package" p
  250. on t."score_package_id" = p."id"
  251. left join "wm_score_package" pp
  252. on p.relation_score_id = pp.id
  253. left join sys_dept cso
  254. on p.dept_id = cso.dept_id
  255. left join sys_dept division
  256. on pp.send_package_dept_id = division.dept_id
  257. left join sys_user task_user
  258. on t.task_user_id = task_user.user_id
  259. left join wm_da_drug_ent_drugtable drug
  260. on p.drugtable = drug.id
  261. left join
  262. (
  263. select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
  264. from "sys_chain_node_check_his" his
  265. join sys_user u
  266. on u."username" = his."create_by1"
  267. where "node_id" = 1 and create_time1 > '2025-07-01' -- 服务商
  268. ) t1
  269. on t1.target_id = t.id
  270. left join
  271. (
  272. select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
  273. from "sys_chain_node_check_his" his
  274. join sys_user u
  275. on u."username" = his."create_by1"
  276. where "node_id" = 2 and create_time1 > '2025-07-01' -- 地市
  277. ) t2
  278. on t2.target_id = t.id
  279. left join
  280. (
  281. select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
  282. from "sys_chain_node_check_his" his join sys_user u
  283. on u."username" = his."create_by1"
  284. where "node_id" = 3 and create_time1 > '2025-07-01' -- 区域
  285. ) t3
  286. on t3.target_id = t.id
  287. left join
  288. (
  289. select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
  290. from "sys_chain_node_check_his" his join sys_user u
  291. on u."username" = his."create_by1"
  292. where "node_id" = 8 and create_time1 > '2025-07-01' -- 市场
  293. ) t8
  294. on t8.target_id = t.id
  295. left join
  296. (
  297. select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
  298. from "sys_chain_node_check_his" his join sys_user u
  299. on u."username" = his."create_by1"
  300. where "node_id" = 9 and create_time1 > '2025-07-01' -- 商务
  301. ) t9
  302. on t9.target_id = t.id
  303. left join
  304. (
  305. select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
  306. from "sys_chain_node_check_his" his join sys_user u
  307. on u."username" = his."create_by1"
  308. where "node_id" = 5 and create_time1 > '2025-07-01' -- 分管领导
  309. ) t5
  310. on t5.target_id = t.id
  311. left join
  312. (
  313. select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
  314. from "sys_chain_node_check_his" his join sys_user u
  315. on u."username" = his."create_by1"
  316. where "node_id" = 6 and create_time1 > '2025-07-01' -- 总经理
  317. ) t6
  318. on t6.target_id = t.id
  319. left join
  320. (
  321. select sup."task_id", u.realname, adv.create_time, adv.advice_result, adv.remarks from wm_task_sup sup
  322. join wm_task_sup_adv adv on adv.task_supervision_id = sup.sup_id
  323. join sys_user u on u."username" = sup."create_by"
  324. join "sys_user_role" ur on u.user_id = ur."user_id"
  325. where ur."role_id" = 49 and sup."create_time" > '2025-07-01' -- 厂家财务
  326. ) sup1
  327. on sup1."task_id" = t.id
  328. left join
  329. (
  330. select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup
  331. join wm_task_sup_adv adv on adv.task_supervision_id = sup.sup_id
  332. join sys_user u on u."username" = adv."create_by"
  333. join "sys_user_role" ur on u.user_id = ur."user_id"
  334. where ur."role_id" = 57 and sup."create_time" > '2025-07-01' and adv.del_flag = '0' -- 厂家财务负责人
  335. ) sup11
  336. on sup11."task_id" = t.id
  337. left join
  338. (
  339. select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup
  340. join wm_task_sup_adv adv on adv.task_supervision_id = sup.sup_id
  341. join sys_user u on u."username" = adv."create_by"
  342. join "sys_user_role" ur on u.user_id = ur."user_id"
  343. where ur."role_id" = 51 and sup."create_time" > '2025-07-01' and adv.del_flag = '0' -- 厂家财务分管领导
  344. ) sup12
  345. on sup12."task_id" = t.id
  346. left join
  347. (
  348. select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup
  349. join sys_user u on u."username" = sup."create_by"
  350. join "sys_user_role" ur on u.user_id = ur."user_id"
  351. where ur."role_id" = 52 and sup."create_time" > '2025-07-01' -- 厂家销售
  352. ) sup2
  353. on sup2."task_id" = t.id
  354. left join
  355. (
  356. select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup
  357. join wm_task_sup_adv adv on adv.task_supervision_id = sup.sup_id
  358. join sys_user u on u."username" = adv."create_by"
  359. join "sys_user_role" ur on u.user_id = ur."user_id"
  360. where ur."role_id" = 58 and sup."create_time" > '2025-07-01' and adv.del_flag = '0' -- 厂家销售负责人
  361. ) sup21
  362. on sup21."task_id" = t.id
  363. left join
  364. (
  365. select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup
  366. join wm_task_sup_adv adv on adv.task_supervision_id = sup.sup_id
  367. join sys_user u on u."username" = adv."create_by"
  368. join "sys_user_role" ur on u.user_id = ur."user_id"
  369. where ur."role_id" = 61 and sup."create_time" > '2025-07-01' and adv.del_flag = '0' -- 厂家销售分管领导
  370. ) sup22
  371. on sup22."task_id" = t.id
  372. left join
  373. (
  374. select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup
  375. join sys_user u on u."username" = sup."create_by"
  376. join "sys_user_role" ur on u.user_id = ur."user_id"
  377. where ur."role_id" = 53 and sup."create_time" > '2025-07-01' -- 营销合规
  378. ) sup3
  379. on sup3."task_id" = t.id
  380. left join
  381. (
  382. select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup
  383. join wm_task_sup_adv adv on adv.task_supervision_id = sup.sup_id
  384. join sys_user u on u."username" = adv."create_by"
  385. join "sys_user_role" ur on u.user_id = ur."user_id"
  386. where ur."role_id" = 60 and sup."create_time" > '2025-07-01' and adv.del_flag = '0' -- 营销合规负责人
  387. ) sup31
  388. on sup31."task_id" = t.id
  389. left join
  390. (
  391. select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup
  392. join wm_task_sup_adv adv on adv.task_supervision_id = sup.sup_id
  393. join sys_user u on u."username" = adv."create_by"
  394. join "sys_user_role" ur on u.user_id = ur."user_id"
  395. where ur."role_id" = 54 and sup."create_time" > '2025-07-01' and adv.del_flag = '0' -- 营销合规分管领导
  396. ) sup32
  397. on sup32."task_id" = t.id
  398. left join
  399. (
  400. select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup
  401. join sys_user u on u."username" = sup."create_by"
  402. join "sys_user_role" ur on u.user_id = ur."user_id"
  403. where ur."role_id" = 56 and sup."create_time" > '2025-07-01' -- 营销财务
  404. ) sup4
  405. on sup4."task_id" = t.id
  406. left join
  407. (
  408. select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup
  409. join wm_task_sup_adv adv on adv.task_supervision_id = sup.sup_id
  410. join sys_user u on u."username" = adv."create_by"
  411. join "sys_user_role" ur on u.user_id = ur."user_id"
  412. where ur."role_id" = 59 and sup."create_time" > '2025-07-01' and adv.del_flag = '0' -- 营销财务负责人
  413. ) sup41
  414. on sup41."task_id" = t.id
  415. left join
  416. (
  417. select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup
  418. join wm_task_sup_adv adv on adv.task_supervision_id = sup.sup_id
  419. join sys_user u on u."username" = adv."create_by"
  420. join "sys_user_role" ur on u.user_id = ur."user_id"
  421. where ur."role_id" = 55 and sup."create_time" > '2025-07-01' and adv.del_flag = '0' -- 营销财务分管领导
  422. ) sup42
  423. on sup42."task_id" = t.id
  424. where t.create_time >= '2025-07-01' and t.create_time <= '2025-08-30' and t.del_flag = '0'
  425. </select>
  426. </mapper>