package restcontroller.webmanage.saletool.courseware; import beans.datatag.DataTag; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import common.Controller; import common.YosException; import common.annotation.API; import common.data.*; import restcontroller.R; import java.util.ArrayList; import java.util.logging.LoggingPermission; /** * 课件 */ public class coursewaredetail extends Controller { String sat_coursewaredetail = "sat_coursewaredetail"; /** * 构造函数 * * @param content */ public coursewaredetail(JSONObject content) throws YosException { super(content); } //新增或更新 @API(title = "课件新增或更新", apiversion = R.ID20240315110202.v1.class) public String insertOrUpdate() throws YosException { Long sat_coursewareid = content.getLongValue("sat_coursewareid"); Long sat_coursewaredetailid = content.getLongValue("sat_coursewaredetailid"); if (sat_coursewaredetailid <= 0) { sat_coursewaredetailid = createTableID(sat_coursewaredetail); InsertSQL insertSQL = SQLFactory.createInsertSQL(this, sat_coursewaredetail); insertSQL.setSiteid(siteid); insertSQL.setUniqueid(sat_coursewaredetailid); insertSQL.setValue("sat_coursewareid", sat_coursewareid); insertSQL.setValue("title", content.getStringValue("title")); insertSQL.setValue("description", content.getStringValue("description")); insertSQL.setValue("sequence", content.getLongValue("sequence")); insertSQL.setValue("teacher", content.getStringValue("teacher")); insertSQL.setValue("content", content.getString("content", true)); insertSQL.setValue("status", "下架"); insertSQL.setValue("filetype", content.getStringValue("filetype"));//图片、视频、pdf insertSQL.insert(); content.put("sat_coursewaredetailid", sat_coursewaredetailid); } if (sat_coursewaredetailid > 0) { UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, sat_coursewaredetail); updateSQL.setSiteid(siteid); updateSQL.setUniqueid(sat_coursewaredetailid); updateSQL.setValue("title", content.getStringValue("title")); updateSQL.setValue("description", content.getStringValue("description")); updateSQL.setValue("sequence", content.getLongValue("sequence")); updateSQL.setValue("teacher", content.getStringValue("teacher")); updateSQL.setValue("content", content.getString("content", true)); updateSQL.setValue("filetype", content.getStringValue("filetype"));//图片、视频、pdf updateSQL.update(); } return detail(); } // @API(title = "上架,下架", apiversion = R.ID20240315131302.v1.class) public String UpOrDown() throws YosException { JSONArray sat_coursewaredetailids = content.getJSONArray("sat_coursewaredetailids"); int type = content.getIntValue("type"); UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sat_coursewaredetail"); updateSQL.setSiteid(siteid); updateSQL.setValue("status", type == 0 ? "下架" : "上架"); updateSQL.setValue("sendby", type == 0 ? "null" : username); updateSQL.setValue("senddate", type == 0 ? "null" : getDateTime_Str()); updateSQL.setWhere("sat_coursewaredetailid", sat_coursewaredetailids.toArray()); updateSQL.update(); return getSucReturnObject().toString(); } //课件删除 @API(title = "课件删除", apiversion = R.ID20240315131402.v1.class) public String delete() throws YosException { JSONArray sat_coursewaredetailids = content.getJSONArray("sat_coursewaredetailids"); for (Object obj : sat_coursewaredetailids) { Rows rows = dbConnect.runSqlQuery("SELECT * from sat_coursewaredetail WHERE sat_coursewaredetailid=" + obj + " and siteid='" + siteid + "'"); if (rows.isEmpty()) { return getErrReturnObject().setErrMsg("课件不存在").toString(); } if (!rows.get(0).getString("status").equals("下架")) { return getErrReturnObject().setErrMsg("非下架状态不可删除").toString(); } } DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, "sat_coursewaredetail"); deleteSQL.setSiteid(siteid); deleteSQL.setWhere("sat_coursewaredetailid", sat_coursewaredetailids.toArray()); deleteSQL.delete(); return getSucReturnObject().toString(); } //课件详细 @API(title = "课件详细", apiversion = R.ID20240315131502.v1.class) public String detail() throws YosException { Long sat_coursewaredetailid = content.getLongValue("sat_coursewaredetailid"); QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sat_coursewaredetail"); querySQL.setSiteid(siteid); querySQL.setUniqueid(sat_coursewaredetailid); Rows rows = querySQL.query(); ArrayList ids = rows.toArrayList("sat_coursewaredetailid", new ArrayList<>()); //附件 RowsMap attRowsMap = getAttachmentUrl("sat_coursewaredetail", ids); Row detailRow = new Row(); if (rows.isNotEmpty()) { detailRow = rows.get(0); detailRow.put("attinfos", attRowsMap.getOrDefault(detailRow.getString("sat_coursewaredetailid"), new Rows())); } Long sat_coursewareid = detailRow.getLong("sat_coursewareid"); addReadLog(sat_coursewareid, sat_coursewaredetailid); return getSucReturnObject().setData(detailRow).toString(); } //课件列表 @API(title = "课件列表", apiversion = R.ID20240315131602.v1.class) public String list() throws YosException { /* 过滤条件设置 */ StringBuffer where = new StringBuffer(" 1=1 "); if (content.containsKey("where")) { JSONObject whereObject = content.getJSONObject("where"); if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) { where.append(" and ("); where.append("t1.title like'%").append(whereObject.getString("condition")).append("%' "); where.append(")"); } if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) { where.append(" and ("); where.append("t1.status ='").append(whereObject.getString("status")).append("' "); where.append(")"); } } if (pageSorting.equals("''")) { pageSorting = "t1.status DESC,t1.sequence"; } Long sat_coursewareid = content.getLongValue("sat_coursewareid"); QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sat_coursewaredetail"); querySQL.setTableAlias("t1").setPage(pageSize, pageNumber).setOrderBy(pageSorting); querySQL.setWhere("sat_coursewareid", sat_coursewareid); querySQL.setWhere(where.toString()); Rows rows = querySQL.query(); ArrayList ids = rows.toArrayList("sat_coursewaredetailid", new ArrayList<>()); QuerySQL readSql = SQLFactory.createQuerySQL(this, "sat_courseware_read", "sat_coursewaredetailid"); readSql.addQueryFields("user_count", "count(1)"); readSql.setSiteid(siteid); readSql.setWhere("sat_coursewaredetailid", ids); readSql.addGroupBy("sat_coursewaredetailid"); RowsMap coursewareRowsMap = readSql.query().toRowsMap("sat_coursewaredetailid"); //附件 RowsMap attRowsMap = getAttachmentUrl("sat_coursewaredetail", ids); for (Row row : rows) { Rows coursewareRows = coursewareRowsMap.get(row.getString("sat_coursewaredetailid")); if (coursewareRows.isEmpty()) { row.put("user_count", 0); } else { row.put("user_count", coursewareRows.get(0).getString("user_count")); } row.put("attinfos", attRowsMap.getOrDefault(row.getString("sat_coursewaredetailid"), new Rows())); } return getSucReturnObject().setData(rows).toString(); } //添加阅读记录 public void addReadLog(Long sat_coursewareid, Long sat_coursewaredetailid) throws YosException { //查询当前用户的阅读次数是否存在 String sql = "SELECT * FROM sat_courseware_read WHERE siteid = '" + siteid + "' AND sat_coursewaredetailid = '" + sat_coursewaredetailid + "' AND userid = '" + userid + "'"; Rows rows = dbConnect.runSqlQuery(sql); if (rows.isEmpty()) { InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sat_courseware_read"); insertSQL.setUniqueid(createTableID("sat_courseware_read")); insertSQL.setSiteid(siteid); insertSQL.setValue("sat_coursewareid", sat_coursewareid); insertSQL.setValue("sat_coursewaredetailid", sat_coursewaredetailid); insertSQL.setValue("userid", userid); insertSQL.setValue("sys_enterpriseid", sys_enterpriseid); insertSQL.setValue("hrid", hrid); insertSQL.setValue("firstreadtime", getDateTime_Str()); insertSQL.setValue("lastreadtime", getDateTime_Str()); insertSQL.setValue("studycount", 1); insertSQL.insert(); } else { Long sat_courseware_readid = rows.get(0).getLong("sat_courseware_readid"); Long studycount = rows.get(0).getLong("studycount"); UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sat_courseware_read"); updateSQL.setUniqueid(sat_courseware_readid); updateSQL.setSiteid(siteid); updateSQL.setValue("sys_enterpriseid", sys_enterpriseid); updateSQL.setValue("hrid", hrid); updateSQL.setValue("lastreadtime", getDateTime_Str()); updateSQL.setValue("studycount", studycount + 1); System.err.println(updateSQL.getSQL()); updateSQL.update(); } } @API(title = "转移课件", apiversion = R.ID20240321091902.v1.class) public String changeCoursewareDetail() throws YosException { Long sat_coursewaredetailid = content.getLongValue("sat_coursewaredetailid"); Long sat_coursewareid = content.getLongValue("sat_coursewareid"); UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sat_coursewaredetail"); updateSQL.setSiteid(siteid); updateSQL.setUniqueid(sat_coursewaredetailid); updateSQL.setValue("sat_coursewareid", sat_coursewareid); updateSQL.update(); return getSucReturnObject().toString(); } //课件列表 @API(title = "转移课程列表", apiversion = R.ID20240321093102.v1.class) public String changeCoursewarelist() throws YosException { /* 过滤条件设置 */ StringBuffer where = new StringBuffer(" 1=1 "); if (content.containsKey("where")) { JSONObject whereObject = content.getJSONObject("where"); if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) { where.append(" and ("); where.append("t1.title like'%").append(whereObject.getString("condition")).append("%' "); where.append(")"); } } if (pageSorting.equals("''")) { pageSorting = "t1.sequence"; } QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sat_courseware" , "sat_coursewareid", "title", "status"); querySQL.setTableAlias("t1").setPage(pageSize, pageNumber).setOrderBy(pageSorting); querySQL.setWhere("status", "发布"); querySQL.setWhere(where.toString()); Rows rows = querySQL.query(); return getSucReturnObject().setData(rows).toString(); } @API(title = "绑定题库",apiversion = R.ID20240322110502.v1.class) public String bindTestLibraryLink() throws YosException { Long sat_coursewaredetailid = content.getLongValue("sat_coursewaredetailid"); JSONArray sat_courseware_testlibraryids = content.getJSONArray("sat_courseware_testlibraryids"); ArrayList sqlList = new ArrayList<>(); for (Object object : sat_courseware_testlibraryids) { InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sat_courseware_testlibrarylink"); insertSQL.setSiteid(siteid); insertSQL.setUniqueid(createTableID("sat_courseware_testlibrarylink")); insertSQL.setValue("sat_coursewaredetailid", sat_coursewaredetailid); insertSQL.setValue("sat_courseware_testlibraryid", object); sqlList.add(insertSQL.getSQL()); } dbConnect.runSqlUpdate(sqlList); return getSucReturnObject().toString(); } @API(title = "解绑题库",apiversion = R.ID20240322110602.v1.class) public String unBindTestLibraryLink() throws YosException { Long sat_coursewaredetailid = content.getLongValue("sat_coursewaredetailid"); JSONArray sat_courseware_testlibraryids = content.getJSONArray("sat_courseware_testlibraryids"); DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, "sat_courseware_testlibrarylink"); deleteSQL.setSiteid(siteid); deleteSQL.setWhere("sat_coursewaredetailid", sat_coursewaredetailid); deleteSQL.setWhere("sat_courseware_testlibraryid", sat_courseware_testlibraryids.toArray()); System.err.println(deleteSQL.getSQL()); deleteSQL.delete(); return getSucReturnObject().toString(); } String sat_courseware_testlibrary = "sat_courseware_testlibrary"; @API(title = "选择题库",apiversion = R.ID20240322110702.v1.class) public String chooseTestLibrary() throws YosException { StringBuffer where = new StringBuffer(" 1=1 "); if (content.containsKey("where")) { JSONObject whereObject = content.getJSONObject("where"); if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) { where.append(" and ("); where.append("t1.question like'%").append(whereObject.getString("condition")).append("%' "); // where.append("or t1.notes like'%").append(whereObject.getString("condition")).append("%' "); where.append(")"); } if (whereObject.containsKey("sat_courseware_classids") && !"".equals(whereObject.getString("sat_courseware_classids"))) { JSONArray sat_courseware_classids = whereObject.getJSONArray("sat_courseware_classids"); if(sat_courseware_classids.size()>0) { where.append(" and (1=2"); for (Object obj : sat_courseware_classids) { JSONArray array = (JSONArray) obj; for (Object obj2 : array) { where.append(" or ("); where.append("JSON_CONTAINS(t1.sat_courseware_classids,'" + obj2 + "')"); where.append(")"); } } where.append(")"); } } } Long sat_coursewaredetailid = content.getLongValue("sat_coursewaredetailid"); QuerySQL querySQL = SQLFactory.createQuerySQL(this, sat_courseware_testlibrary, "sat_courseware_testlibraryid","question","type","typemx","createdate") .setTableAlias("t1"); querySQL.setSiteid(siteid); 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 + "' )"); querySQL.setWhere(where.toString()); querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting); Rows rows = querySQL.query(); for (Row row : rows) { if (row.getLong("type") == 1) { row.put("typestr", "选择题"); } if (row.getLong("type") == 2) { row.put("typestr", "简答题"); } if (row.getLong("typemx") == 0) { row.put("typemxstr", "简答"); } if (row.getLong("typemx") == 1) { row.put("typemxstr", "单选"); } if (row.getLong("typemx") == 2) { row.put("typemxstr", "多选"); } } return getSucReturnObject().setData(rows).toString(); } @API(title = "关联题库列表",apiversion = R.ID20240322110802.v1.class) public String testLibraryList() throws YosException { StringBuffer where = new StringBuffer(" 1=1 "); if (content.containsKey("where")) { JSONObject whereObject = content.getJSONObject("where"); if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) { where.append(" and ("); where.append("t1.question like'%").append(whereObject.getString("condition")).append("%' "); where.append(")"); } if (whereObject.containsKey("sat_courseware_classids") && !"".equals(whereObject.getString("sat_courseware_classids"))) { JSONArray sat_courseware_classids = whereObject.getJSONArray("sat_courseware_classids"); if(sat_courseware_classids.size()>0) { where.append(" and (1=2"); for (Object obj : sat_courseware_classids) { JSONArray array = (JSONArray) obj; for (Object obj2 : array) { where.append(" or ("); where.append("JSON_CONTAINS(t1.sat_courseware_classids,'" + obj2 + "')"); where.append(")"); } } where.append(")"); } } } Long sat_coursewaredetailid = content.getLongValue("sat_coursewaredetailid"); QuerySQL querySQL = SQLFactory.createQuerySQL(this, sat_courseware_testlibrary, "sat_courseware_testlibraryid","question","type","typemx","createdate") .setTableAlias("t1"); querySQL.addJoinTable(JOINTYPE.inner,"sat_courseware_testlibrarylink","t2","t2.sat_courseware_testlibraryid=t1.sat_courseware_testlibraryid and t2.siteid=t1.siteid"); querySQL.setSiteid(siteid); querySQL.setWhere("t2.sat_coursewaredetailid",sat_coursewaredetailid); querySQL.setWhere(where.toString()); querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting); Rows rows = querySQL.query(); for (Row row : rows) { if (row.getLong("type") == 1) { row.put("typestr", "选择题"); } if (row.getLong("type") == 2) { row.put("typestr", "简答题"); } if (row.getLong("typemx") == 0) { row.put("typemxstr", "简答"); } if (row.getLong("typemx") == 1) { row.put("typemxstr", "单选"); } if (row.getLong("typemx") == 2) { row.put("typemxstr", "多选"); } } return getSucReturnObject().setData(rows).toString(); } //课件列表 @API(title = "收藏课件列表", apiversion = R.ID20240506100502.v1.class) public String collectlist() throws YosException { /* 过滤条件设置 */ StringBuffer where = new StringBuffer(" 1=1 "); if (content.containsKey("where")) { JSONObject whereObject = content.getJSONObject("where"); if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) { where.append(" and ("); where.append("t1.title like'%").append(whereObject.getString("condition")).append("%' "); where.append(")"); } if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) { where.append(" and ("); where.append("t1.status ='").append(whereObject.getString("status")).append("' "); where.append(")"); } if (whereObject.containsKey("iscollect") && !"".equals(whereObject.getString("iscollect"))) { if (whereObject.getString("iscollect").equals("1")) { where.append(" and ("); where.append(" t1.sat_coursewaredetailid in (SELECT ownerid from sys_datacollect WHERE ownertable='sat_coursewaredetail' and type=1 and siteid='" + siteid + "' and userid=" + userid + ")"); where.append(")"); } } } if (pageSorting.equals("''")) { pageSorting = "t1.status DESC,t1.sequence"; } QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sat_coursewaredetail"); querySQL.setTableAlias("t1").setPage(pageSize, pageNumber).setOrderBy(pageSorting); querySQL.setWhere(where.toString()); Rows rows = querySQL.query(); ArrayList ids = rows.toArrayList("sat_coursewaredetailid", new ArrayList<>()); QuerySQL readSql = SQLFactory.createQuerySQL(this, "sat_courseware_read", "sat_coursewaredetailid"); readSql.addQueryFields("user_count", "count(1)"); readSql.setSiteid(siteid); readSql.setWhere("sat_coursewaredetailid", ids); readSql.addGroupBy("sat_coursewaredetailid"); RowsMap coursewareRowsMap = readSql.query().toRowsMap("sat_coursewaredetailid"); //附件 RowsMap attRowsMap = getAttachmentUrl("sat_coursewaredetail", ids); for (Row row : rows) { Rows coursewareRows = coursewareRowsMap.get(row.getString("sat_coursewaredetailid")); if (coursewareRows.isEmpty()) { row.put("user_count", 0); } else { row.put("user_count", coursewareRows.get(0).getString("user_count")); } row.put("attinfos", attRowsMap.getOrDefault(row.getString("sat_coursewaredetailid"), new Rows())); } return getSucReturnObject().setData(rows).toString(); } }