coursewaredetail.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520
  1. package restcontroller.webmanage.saletool.courseware;
  2. import beans.datatag.DataTag;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import common.Controller;
  6. import common.YosException;
  7. import common.annotation.API;
  8. import common.data.*;
  9. import restcontroller.R;
  10. import java.util.ArrayList;
  11. import java.util.logging.LoggingPermission;
  12. /**
  13. * 课件
  14. */
  15. public class coursewaredetail extends Controller {
  16. String sat_coursewaredetail = "sat_coursewaredetail";
  17. /**
  18. * 构造函数
  19. *
  20. * @param content
  21. */
  22. public coursewaredetail(JSONObject content) throws YosException {
  23. super(content);
  24. }
  25. //新增或更新
  26. @API(title = "课件新增或更新", apiversion = R.ID20240315110202.v1.class)
  27. public String insertOrUpdate() throws YosException {
  28. Long sat_coursewareid = content.getLongValue("sat_coursewareid");
  29. Long sat_coursewaredetailid = content.getLongValue("sat_coursewaredetailid");
  30. if (sat_coursewaredetailid <= 0) {
  31. sat_coursewaredetailid = createTableID(sat_coursewaredetail);
  32. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, sat_coursewaredetail);
  33. insertSQL.setSiteid(siteid);
  34. insertSQL.setUniqueid(sat_coursewaredetailid);
  35. insertSQL.setValue("sat_coursewareid", sat_coursewareid);
  36. insertSQL.setValue("title", content.getStringValue("title"));
  37. insertSQL.setValue("description", content.getStringValue("description"));
  38. insertSQL.setValue("sequence", content.getLongValue("sequence"));
  39. insertSQL.setValue("teacher", content.getStringValue("teacher"));
  40. insertSQL.setValue("content", content.getString("content", true));
  41. insertSQL.setValue("status", "下架");
  42. insertSQL.setValue("filetype", content.getStringValue("filetype"));//图片、视频、pdf
  43. insertSQL.insert();
  44. content.put("sat_coursewaredetailid", sat_coursewaredetailid);
  45. }
  46. if (sat_coursewaredetailid > 0) {
  47. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, sat_coursewaredetail);
  48. updateSQL.setSiteid(siteid);
  49. updateSQL.setUniqueid(sat_coursewaredetailid);
  50. updateSQL.setValue("title", content.getStringValue("title"));
  51. updateSQL.setValue("description", content.getStringValue("description"));
  52. updateSQL.setValue("sequence", content.getLongValue("sequence"));
  53. updateSQL.setValue("teacher", content.getStringValue("teacher"));
  54. updateSQL.setValue("content", content.getString("content", true));
  55. updateSQL.setValue("filetype", content.getStringValue("filetype"));//图片、视频、pdf
  56. updateSQL.update();
  57. }
  58. return detail();
  59. }
  60. //
  61. @API(title = "上架,下架", apiversion = R.ID20240315131302.v1.class)
  62. public String UpOrDown() throws YosException {
  63. JSONArray sat_coursewaredetailids = content.getJSONArray("sat_coursewaredetailids");
  64. int type = content.getIntValue("type");
  65. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sat_coursewaredetail");
  66. updateSQL.setSiteid(siteid);
  67. updateSQL.setValue("status", type == 0 ? "下架" : "上架");
  68. updateSQL.setValue("sendby", type == 0 ? "null" : username);
  69. updateSQL.setValue("senddate", type == 0 ? "null" : getDateTime_Str());
  70. updateSQL.setWhere("sat_coursewaredetailid", sat_coursewaredetailids.toArray());
  71. updateSQL.update();
  72. return getSucReturnObject().toString();
  73. }
  74. //课件删除
  75. @API(title = "课件删除", apiversion = R.ID20240315131402.v1.class)
  76. public String delete() throws YosException {
  77. JSONArray sat_coursewaredetailids = content.getJSONArray("sat_coursewaredetailids");
  78. for (Object obj : sat_coursewaredetailids) {
  79. Rows rows = dbConnect.runSqlQuery("SELECT * from sat_coursewaredetail WHERE sat_coursewaredetailid=" + obj + " and siteid='" + siteid + "'");
  80. if (rows.isEmpty()) {
  81. return getErrReturnObject().setErrMsg("课件不存在").toString();
  82. }
  83. if (!rows.get(0).getString("status").equals("下架")) {
  84. return getErrReturnObject().setErrMsg("非下架状态不可删除").toString();
  85. }
  86. }
  87. DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, "sat_coursewaredetail");
  88. deleteSQL.setSiteid(siteid);
  89. deleteSQL.setWhere("sat_coursewaredetailid", sat_coursewaredetailids.toArray());
  90. deleteSQL.delete();
  91. return getSucReturnObject().toString();
  92. }
  93. //课件详细
  94. @API(title = "课件详细", apiversion = R.ID20240315131502.v1.class)
  95. public String detail() throws YosException {
  96. Long sat_coursewaredetailid = content.getLongValue("sat_coursewaredetailid");
  97. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sat_coursewaredetail");
  98. querySQL.setSiteid(siteid);
  99. querySQL.setUniqueid(sat_coursewaredetailid);
  100. Rows rows = querySQL.query();
  101. ArrayList<Long> ids = rows.toArrayList("sat_coursewaredetailid", new ArrayList<>());
  102. //附件
  103. RowsMap attRowsMap = getAttachmentUrl("sat_coursewaredetail", ids);
  104. Row detailRow = new Row();
  105. if (rows.isNotEmpty()) {
  106. detailRow = rows.get(0);
  107. detailRow.put("attinfos", attRowsMap.getOrDefault(detailRow.getString("sat_coursewaredetailid"), new Rows()));
  108. }
  109. Long sat_coursewareid = detailRow.getLong("sat_coursewareid");
  110. addReadLog(sat_coursewareid, sat_coursewaredetailid);
  111. return getSucReturnObject().setData(detailRow).toString();
  112. }
  113. //课件列表
  114. @API(title = "课件列表", apiversion = R.ID20240315131602.v1.class)
  115. public String list() throws YosException {
  116. /*
  117. 过滤条件设置
  118. */
  119. StringBuffer where = new StringBuffer(" 1=1 ");
  120. if (content.containsKey("where")) {
  121. JSONObject whereObject = content.getJSONObject("where");
  122. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  123. where.append(" and (");
  124. where.append("t1.title like'%").append(whereObject.getString("condition")).append("%' ");
  125. where.append(")");
  126. }
  127. if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) {
  128. where.append(" and (");
  129. where.append("t1.status ='").append(whereObject.getString("status")).append("' ");
  130. where.append(")");
  131. }
  132. }
  133. if (pageSorting.equals("''")) {
  134. pageSorting = "t1.status DESC,t1.sequence";
  135. }
  136. Long sat_coursewareid = content.getLongValue("sat_coursewareid");
  137. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sat_coursewaredetail");
  138. querySQL.setTableAlias("t1").setPage(pageSize, pageNumber).setOrderBy(pageSorting);
  139. querySQL.setWhere("sat_coursewareid", sat_coursewareid);
  140. querySQL.setWhere(where.toString());
  141. Rows rows = querySQL.query();
  142. ArrayList<Long> ids = rows.toArrayList("sat_coursewaredetailid", new ArrayList<>());
  143. QuerySQL readSql = SQLFactory.createQuerySQL(this, "sat_courseware_read",
  144. "sat_coursewaredetailid");
  145. readSql.addQueryFields("user_count", "count(1)");
  146. readSql.setSiteid(siteid);
  147. readSql.setWhere("sat_coursewaredetailid", ids);
  148. readSql.addGroupBy("sat_coursewaredetailid");
  149. RowsMap coursewareRowsMap = readSql.query().toRowsMap("sat_coursewaredetailid");
  150. //附件
  151. RowsMap attRowsMap = getAttachmentUrl("sat_coursewaredetail", ids);
  152. for (Row row : rows) {
  153. Rows coursewareRows = coursewareRowsMap.get(row.getString("sat_coursewaredetailid"));
  154. if (coursewareRows.isEmpty()) {
  155. row.put("user_count", 0);
  156. } else {
  157. row.put("user_count", coursewareRows.get(0).getString("user_count"));
  158. }
  159. row.put("attinfos", attRowsMap.getOrDefault(row.getString("sat_coursewaredetailid"), new Rows()));
  160. }
  161. return getSucReturnObject().setData(rows).toString();
  162. }
  163. //添加阅读记录
  164. public void addReadLog(Long sat_coursewareid, Long sat_coursewaredetailid) throws YosException {
  165. //查询当前用户的阅读次数是否存在
  166. String sql = "SELECT * FROM sat_courseware_read WHERE siteid = '" + siteid + "' AND sat_coursewaredetailid = '" + sat_coursewaredetailid + "' AND userid = '" + userid + "'";
  167. Rows rows = dbConnect.runSqlQuery(sql);
  168. if (rows.isEmpty()) {
  169. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sat_courseware_read");
  170. insertSQL.setUniqueid(createTableID("sat_courseware_read"));
  171. insertSQL.setSiteid(siteid);
  172. insertSQL.setValue("sat_coursewareid", sat_coursewareid);
  173. insertSQL.setValue("sat_coursewaredetailid", sat_coursewaredetailid);
  174. insertSQL.setValue("userid", userid);
  175. insertSQL.setValue("sys_enterpriseid", sys_enterpriseid);
  176. insertSQL.setValue("hrid", hrid);
  177. insertSQL.setValue("firstreadtime", getDateTime_Str());
  178. insertSQL.setValue("lastreadtime", getDateTime_Str());
  179. insertSQL.setValue("studycount", 1);
  180. insertSQL.insert();
  181. } else {
  182. Long sat_courseware_readid = rows.get(0).getLong("sat_courseware_readid");
  183. Long studycount = rows.get(0).getLong("studycount");
  184. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sat_courseware_read");
  185. updateSQL.setUniqueid(sat_courseware_readid);
  186. updateSQL.setSiteid(siteid);
  187. updateSQL.setValue("sys_enterpriseid", sys_enterpriseid);
  188. updateSQL.setValue("hrid", hrid);
  189. updateSQL.setValue("lastreadtime", getDateTime_Str());
  190. updateSQL.setValue("studycount", studycount + 1);
  191. System.err.println(updateSQL.getSQL());
  192. updateSQL.update();
  193. }
  194. }
  195. @API(title = "转移课件", apiversion = R.ID20240321091902.v1.class)
  196. public String changeCoursewareDetail() throws YosException {
  197. Long sat_coursewaredetailid = content.getLongValue("sat_coursewaredetailid");
  198. Long sat_coursewareid = content.getLongValue("sat_coursewareid");
  199. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sat_coursewaredetail");
  200. updateSQL.setSiteid(siteid);
  201. updateSQL.setUniqueid(sat_coursewaredetailid);
  202. updateSQL.setValue("sat_coursewareid", sat_coursewareid);
  203. updateSQL.update();
  204. return getSucReturnObject().toString();
  205. }
  206. //课件列表
  207. @API(title = "转移课程列表", apiversion = R.ID20240321093102.v1.class)
  208. public String changeCoursewarelist() throws YosException {
  209. /*
  210. 过滤条件设置
  211. */
  212. StringBuffer where = new StringBuffer(" 1=1 ");
  213. if (content.containsKey("where")) {
  214. JSONObject whereObject = content.getJSONObject("where");
  215. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  216. where.append(" and (");
  217. where.append("t1.title like'%").append(whereObject.getString("condition")).append("%' ");
  218. where.append(")");
  219. }
  220. }
  221. if (pageSorting.equals("''")) {
  222. pageSorting = "t1.sequence";
  223. }
  224. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sat_courseware"
  225. , "sat_coursewareid", "title", "status");
  226. querySQL.setTableAlias("t1").setPage(pageSize, pageNumber).setOrderBy(pageSorting);
  227. querySQL.setWhere("status", "发布");
  228. querySQL.setWhere(where.toString());
  229. Rows rows = querySQL.query();
  230. return getSucReturnObject().setData(rows).toString();
  231. }
  232. @API(title = "绑定题库",apiversion = R.ID20240322110502.v1.class)
  233. public String bindTestLibraryLink() throws YosException {
  234. Long sat_coursewaredetailid = content.getLongValue("sat_coursewaredetailid");
  235. JSONArray sat_courseware_testlibraryids = content.getJSONArray("sat_courseware_testlibraryids");
  236. ArrayList<String> sqlList = new ArrayList<>();
  237. for (Object object : sat_courseware_testlibraryids) {
  238. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sat_courseware_testlibrarylink");
  239. insertSQL.setSiteid(siteid);
  240. insertSQL.setUniqueid(createTableID("sat_courseware_testlibrarylink"));
  241. insertSQL.setValue("sat_coursewaredetailid", sat_coursewaredetailid);
  242. insertSQL.setValue("sat_courseware_testlibraryid", object);
  243. sqlList.add(insertSQL.getSQL());
  244. }
  245. dbConnect.runSqlUpdate(sqlList);
  246. return getSucReturnObject().toString();
  247. }
  248. @API(title = "解绑题库",apiversion = R.ID20240322110602.v1.class)
  249. public String unBindTestLibraryLink() throws YosException {
  250. Long sat_coursewaredetailid = content.getLongValue("sat_coursewaredetailid");
  251. JSONArray sat_courseware_testlibraryids = content.getJSONArray("sat_courseware_testlibraryids");
  252. DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, "sat_courseware_testlibrarylink");
  253. deleteSQL.setSiteid(siteid);
  254. deleteSQL.setWhere("sat_coursewaredetailid", sat_coursewaredetailid);
  255. deleteSQL.setWhere("sat_courseware_testlibraryid", sat_courseware_testlibraryids.toArray());
  256. System.err.println(deleteSQL.getSQL());
  257. deleteSQL.delete();
  258. return getSucReturnObject().toString();
  259. }
  260. String sat_courseware_testlibrary = "sat_courseware_testlibrary";
  261. @API(title = "选择题库",apiversion = R.ID20240322110702.v1.class)
  262. public String chooseTestLibrary() throws YosException {
  263. StringBuffer where = new StringBuffer(" 1=1 ");
  264. if (content.containsKey("where")) {
  265. JSONObject whereObject = content.getJSONObject("where");
  266. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  267. where.append(" and (");
  268. where.append("t1.question like'%").append(whereObject.getString("condition")).append("%' ");
  269. // where.append("or t1.notes like'%").append(whereObject.getString("condition")).append("%' ");
  270. where.append(")");
  271. }
  272. if (whereObject.containsKey("sat_courseware_classids") && !"".equals(whereObject.getString("sat_courseware_classids"))) {
  273. JSONArray sat_courseware_classids = whereObject.getJSONArray("sat_courseware_classids");
  274. if(sat_courseware_classids.size()>0) {
  275. where.append(" and (1=2");
  276. for (Object obj : sat_courseware_classids) {
  277. JSONArray array = (JSONArray) obj;
  278. for (Object obj2 : array) {
  279. where.append(" or (");
  280. where.append("JSON_CONTAINS(t1.sat_courseware_classids,'" + obj2 + "')");
  281. where.append(")");
  282. }
  283. }
  284. where.append(")");
  285. }
  286. }
  287. }
  288. Long sat_coursewaredetailid = content.getLongValue("sat_coursewaredetailid");
  289. QuerySQL querySQL = SQLFactory.createQuerySQL(this, sat_courseware_testlibrary,
  290. "sat_courseware_testlibraryid","question","type","typemx","createdate")
  291. .setTableAlias("t1");
  292. querySQL.setSiteid(siteid);
  293. querySQL.setWhere("not exists(select 1 from sat_courseware_testlibrarylink where sat_courseware_testlibraryid=t1.sat_courseware_testlibraryid and sat_coursewaredetailid=" + sat_coursewaredetailid + " and siteid='" + siteid + "' )");
  294. querySQL.setWhere(where.toString());
  295. querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting);
  296. Rows rows = querySQL.query();
  297. for (Row row : rows) {
  298. if (row.getLong("type") == 1) {
  299. row.put("typestr", "选择题");
  300. }
  301. if (row.getLong("type") == 2) {
  302. row.put("typestr", "简答题");
  303. }
  304. if (row.getLong("typemx") == 0) {
  305. row.put("typemxstr", "简答");
  306. }
  307. if (row.getLong("typemx") == 1) {
  308. row.put("typemxstr", "单选");
  309. }
  310. if (row.getLong("typemx") == 2) {
  311. row.put("typemxstr", "多选");
  312. }
  313. }
  314. return getSucReturnObject().setData(rows).toString();
  315. }
  316. @API(title = "关联题库列表",apiversion = R.ID20240322110802.v1.class)
  317. public String testLibraryList() throws YosException {
  318. StringBuffer where = new StringBuffer(" 1=1 ");
  319. if (content.containsKey("where")) {
  320. JSONObject whereObject = content.getJSONObject("where");
  321. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  322. where.append(" and (");
  323. where.append("t1.question like'%").append(whereObject.getString("condition")).append("%' ");
  324. where.append(")");
  325. }
  326. if (whereObject.containsKey("sat_courseware_classids") && !"".equals(whereObject.getString("sat_courseware_classids"))) {
  327. JSONArray sat_courseware_classids = whereObject.getJSONArray("sat_courseware_classids");
  328. if(sat_courseware_classids.size()>0) {
  329. where.append(" and (1=2");
  330. for (Object obj : sat_courseware_classids) {
  331. JSONArray array = (JSONArray) obj;
  332. for (Object obj2 : array) {
  333. where.append(" or (");
  334. where.append("JSON_CONTAINS(t1.sat_courseware_classids,'" + obj2 + "')");
  335. where.append(")");
  336. }
  337. }
  338. where.append(")");
  339. }
  340. }
  341. }
  342. Long sat_coursewaredetailid = content.getLongValue("sat_coursewaredetailid");
  343. QuerySQL querySQL = SQLFactory.createQuerySQL(this, sat_courseware_testlibrary,
  344. "sat_courseware_testlibraryid","question","type","typemx","createdate")
  345. .setTableAlias("t1");
  346. querySQL.addJoinTable(JOINTYPE.inner,"sat_courseware_testlibrarylink","t2","t2.sat_courseware_testlibraryid=t1.sat_courseware_testlibraryid and t2.siteid=t1.siteid");
  347. querySQL.setSiteid(siteid);
  348. querySQL.setWhere("t2.sat_coursewaredetailid",sat_coursewaredetailid);
  349. querySQL.setWhere(where.toString());
  350. querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting);
  351. Rows rows = querySQL.query();
  352. for (Row row : rows) {
  353. if (row.getLong("type") == 1) {
  354. row.put("typestr", "选择题");
  355. }
  356. if (row.getLong("type") == 2) {
  357. row.put("typestr", "简答题");
  358. }
  359. if (row.getLong("typemx") == 0) {
  360. row.put("typemxstr", "简答");
  361. }
  362. if (row.getLong("typemx") == 1) {
  363. row.put("typemxstr", "单选");
  364. }
  365. if (row.getLong("typemx") == 2) {
  366. row.put("typemxstr", "多选");
  367. }
  368. }
  369. return getSucReturnObject().setData(rows).toString();
  370. }
  371. //课件列表
  372. @API(title = "收藏课件列表", apiversion = R.ID20240506100502.v1.class)
  373. public String collectlist() throws YosException {
  374. /*
  375. 过滤条件设置
  376. */
  377. StringBuffer where = new StringBuffer(" 1=1 ");
  378. if (content.containsKey("where")) {
  379. JSONObject whereObject = content.getJSONObject("where");
  380. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  381. where.append(" and (");
  382. where.append("t1.title like'%").append(whereObject.getString("condition")).append("%' ");
  383. where.append(")");
  384. }
  385. if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) {
  386. where.append(" and (");
  387. where.append("t1.status ='").append(whereObject.getString("status")).append("' ");
  388. where.append(")");
  389. }
  390. if (whereObject.containsKey("iscollect") && !"".equals(whereObject.getString("iscollect"))) {
  391. if (whereObject.getString("iscollect").equals("1")) {
  392. where.append(" and (");
  393. where.append(" t1.sat_coursewaredetailid in (SELECT ownerid from sys_datacollect WHERE ownertable='sat_coursewaredetail' and type=1 and siteid='" + siteid + "' and userid=" + userid + ")");
  394. where.append(")");
  395. }
  396. }
  397. }
  398. if (pageSorting.equals("''")) {
  399. pageSorting = "t1.status DESC,t1.sequence";
  400. }
  401. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sat_coursewaredetail");
  402. querySQL.setTableAlias("t1").setPage(pageSize, pageNumber).setOrderBy(pageSorting);
  403. querySQL.setWhere(where.toString());
  404. Rows rows = querySQL.query();
  405. ArrayList<Long> ids = rows.toArrayList("sat_coursewaredetailid", new ArrayList<>());
  406. QuerySQL readSql = SQLFactory.createQuerySQL(this, "sat_courseware_read",
  407. "sat_coursewaredetailid");
  408. readSql.addQueryFields("user_count", "count(1)");
  409. readSql.setSiteid(siteid);
  410. readSql.setWhere("sat_coursewaredetailid", ids);
  411. readSql.addGroupBy("sat_coursewaredetailid");
  412. RowsMap coursewareRowsMap = readSql.query().toRowsMap("sat_coursewaredetailid");
  413. //附件
  414. RowsMap attRowsMap = getAttachmentUrl("sat_coursewaredetail", ids);
  415. for (Row row : rows) {
  416. Rows coursewareRows = coursewareRowsMap.get(row.getString("sat_coursewaredetailid"));
  417. if (coursewareRows.isEmpty()) {
  418. row.put("user_count", 0);
  419. } else {
  420. row.put("user_count", coursewareRows.get(0).getString("user_count"));
  421. }
  422. row.put("attinfos", attRowsMap.getOrDefault(row.getString("sat_coursewaredetailid"), new Rows()));
  423. }
  424. return getSucReturnObject().setData(rows).toString();
  425. }
  426. }