|
|
@@ -0,0 +1,233 @@
|
|
|
+package restcontroller.webmanage.saletool.courseware;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import common.Controller;
|
|
|
+import common.YosException;
|
|
|
+import common.annotation.API;
|
|
|
+import common.data.*;
|
|
|
+import io.swagger.annotations.Api;
|
|
|
+import restcontroller.R;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.LinkedHashSet;
|
|
|
+
|
|
|
+public class coursewaretestlibrary extends Controller {
|
|
|
+ /**
|
|
|
+ * 构造函数
|
|
|
+ *
|
|
|
+ * @param content
|
|
|
+ */
|
|
|
+ public coursewaretestlibrary(JSONObject content) throws YosException {
|
|
|
+ super(content);
|
|
|
+ }
|
|
|
+
|
|
|
+ String sat_courseware_testlibrary = "sat_courseware_testlibrary";
|
|
|
+
|
|
|
+ @API(title = "题库新增或更新", apiversion = R.ID20240322093302.v1.class)
|
|
|
+ public String insertOrUpdate() throws YosException {
|
|
|
+
|
|
|
+ Long sat_courseware_testlibraryid = content.getLongValue("sat_courseware_testlibraryid");
|
|
|
+ JSONArray sat_courseware_classids = new JSONArray();
|
|
|
+ if (content.containsKey("sat_courseware_classids")) {
|
|
|
+ sat_courseware_classids = content.getJSONArray("sat_courseware_classids");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (sat_courseware_testlibraryid <= 0) {
|
|
|
+ sat_courseware_testlibraryid = createTableID(sat_courseware_testlibrary);
|
|
|
+ InsertSQL insertSQL = SQLFactory.createInsertSQL(this, sat_courseware_testlibrary);
|
|
|
+ insertSQL.setUniqueid(sat_courseware_testlibraryid);
|
|
|
+ insertSQL.setSiteid(siteid);
|
|
|
+ insertSQL.setValue("question", content.getStringValue("question"));
|
|
|
+ insertSQL.setValue("type", content.getIntValue("type", 1));
|
|
|
+ insertSQL.setValue("sat_courseware_classids", sat_courseware_classids);
|
|
|
+ insertSQL.insert();
|
|
|
+ content.put("sat_courseware_testlibraryid", sat_courseware_testlibraryid);
|
|
|
+ }
|
|
|
+ if (sat_courseware_testlibraryid > 0) {
|
|
|
+ UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, sat_courseware_testlibrary);
|
|
|
+ updateSQL.setUniqueid(sat_courseware_testlibraryid);
|
|
|
+ updateSQL.setSiteid(siteid);
|
|
|
+ updateSQL.setValue("question", content.getStringValue("question"));
|
|
|
+ updateSQL.setValue("type", content.getIntValue("type", 1));
|
|
|
+ updateSQL.setValue("sat_courseware_classids", sat_courseware_classids);
|
|
|
+ updateSQL.update();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return detail();
|
|
|
+ }
|
|
|
+
|
|
|
+ @API(title = "题库详情", apiversion = R.ID20240322093402.v1.class)
|
|
|
+ public String detail() throws YosException {
|
|
|
+ Long sat_courseware_testlibraryid = content.getLongValue("sat_courseware_testlibraryid");
|
|
|
+ QuerySQL querySQL = SQLFactory.createQuerySQL(this, sat_courseware_testlibrary).setTableAlias("t1");
|
|
|
+ querySQL.setUniqueid(sat_courseware_testlibraryid);
|
|
|
+ querySQL.setSiteid(siteid);
|
|
|
+ Rows rows = querySQL.query();
|
|
|
+ Row detailRow = rows.isNotEmpty() ? rows.get(0) : new Row();
|
|
|
+
|
|
|
+ JSONArray jsonArray = detailRow.getJSONArray("options");
|
|
|
+ detailRow.put("options", jsonArray);
|
|
|
+
|
|
|
+ JSONArray sat_courseware_classids = detailRow.getJSONArray("sat_courseware_classids");
|
|
|
+ if (sat_courseware_classids.size() == 0) {
|
|
|
+ detailRow.put("classnames", "");
|
|
|
+ } else {
|
|
|
+ detailRow.put("classnames", getClassnames(sat_courseware_classids));
|
|
|
+ }
|
|
|
+
|
|
|
+ return getSucReturnObject().setData(detailRow).toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ @API(title = "题库删除", apiversion = R.ID20240322093502.v1.class)
|
|
|
+ public String delete() throws YosException {
|
|
|
+
|
|
|
+ JSONArray sat_courseware_testlibraryids = content.getJSONArray("sat_courseware_testlibraryids");
|
|
|
+
|
|
|
+ DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, sat_courseware_testlibrary);
|
|
|
+ deleteSQL.setSiteid(siteid);
|
|
|
+ deleteSQL.setWhere("sat_courseware_testlibraryid", sat_courseware_testlibraryids.toArray());
|
|
|
+ deleteSQL.delete();
|
|
|
+
|
|
|
+ return getSucReturnObject().toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ @API(title = "题库列表", apiversion = R.ID20240322093602.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.question like'%").append(whereObject.getString("condition")).append("%' ");
|
|
|
+// where.append("or t1.notes like'%").append(whereObject.getString("condition")).append("%' ");
|
|
|
+ where.append(")");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (whereObject.containsKey("type") && !"".equals(whereObject.getString("type"))) {
|
|
|
+ where.append(" and (");
|
|
|
+ where.append("t1.type ='").append(whereObject.getString("type")).append("' ");
|
|
|
+ where.append(")");
|
|
|
+ }
|
|
|
+ if (whereObject.containsKey("sat_courseware_classids") && !"".equals(whereObject.getString("sat_courseware_classids"))) {
|
|
|
+
|
|
|
+ JSONArray sat_courseware_classids = whereObject.getJSONArray("sat_courseware_classids");
|
|
|
+ for (Object obj : sat_courseware_classids) {
|
|
|
+ where.append(" and (");
|
|
|
+ where.append("JSON_CONTAINS(t1.sat_courseware_classids,'" + obj + "')");
|
|
|
+ where.append(")");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (whereObject.containsKey("begindate") && !"".equals(whereObject.getString("begindate"))) {
|
|
|
+ where.append(" and (");
|
|
|
+ where.append("t1.createdate >='").append(whereObject.getString("begindate")).append("' ");
|
|
|
+ where.append(")");
|
|
|
+ }
|
|
|
+ if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
|
|
|
+ where.append(" and (");
|
|
|
+ where.append("t1.createdate <='").append(whereObject.getString("enddate")).append(" 23:59:59' ");
|
|
|
+ where.append(")");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ QuerySQL querySQL = SQLFactory.createQuerySQL(this, sat_courseware_testlibrary)
|
|
|
+ .setTableAlias("t1");
|
|
|
+
|
|
|
+ querySQL.setSiteid(siteid);
|
|
|
+ querySQL.setWhere(where.toString());
|
|
|
+ querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting);
|
|
|
+ Rows rows = querySQL.query();
|
|
|
+
|
|
|
+ ArrayList<Long> ids = rows.toArrayList("sat_courseware_testlibraryid", new ArrayList<>());
|
|
|
+ RowsMap attRowsMap = getAttachmentUrl(sat_courseware_testlibrary, ids);
|
|
|
+ for (Row row : rows) {
|
|
|
+ row.put("attinfos", attRowsMap.getOrDefault(row.getString("sat_courseware_testlibraryid"), new 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", "多选");
|
|
|
+ }
|
|
|
+ JSONArray jsonArray = row.getJSONArray("options");
|
|
|
+ row.put("options", jsonArray);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return getSucReturnObject().setData(rows).toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ @API(title = "题库选项新增或更新", apiversion = R.ID20240322093702.v1.class)
|
|
|
+ public String optionsInsertOrUpdate() throws YosException {
|
|
|
+ Long sat_courseware_testlibraryid = content.getLongValue("sat_courseware_testlibraryid");
|
|
|
+
|
|
|
+ JSONArray options = new JSONArray();
|
|
|
+ if (content.containsKey("options")) {
|
|
|
+ options = content.getJSONArray("options");
|
|
|
+ }
|
|
|
+
|
|
|
+ Rows rows = dbConnect.runSqlQuery("SELECT * from sat_courseware_testlibrary WHERE sat_courseware_testlibraryid=" + sat_courseware_testlibraryid + " and siteid='" + siteid + "'");
|
|
|
+ if (rows.isEmpty()) {
|
|
|
+ return getErrReturnObject().setErrMsg("数据不存在").toString();
|
|
|
+ }
|
|
|
+ int type = rows.get(0).getInteger("type");
|
|
|
+ //判断多选还是单选
|
|
|
+ int typemx = 1;
|
|
|
+ if (type == 1) {
|
|
|
+ int count = 0;
|
|
|
+ for (Object obj : options) {
|
|
|
+ JSONObject option = (JSONObject) obj;
|
|
|
+ if (option.containsKey("isfact") && option.getBooleanValue("isfact")) {
|
|
|
+ count++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ typemx = count > 1 ? 2 : 1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, sat_courseware_testlibrary);
|
|
|
+ updateSQL.setUniqueid(sat_courseware_testlibraryid);
|
|
|
+ updateSQL.setSiteid(siteid);
|
|
|
+ updateSQL.setValue("options", options);
|
|
|
+ if (type == 1) {
|
|
|
+ updateSQL.setValue("typemx", typemx);
|
|
|
+ }
|
|
|
+ System.err.println(updateSQL.getSQL());
|
|
|
+ updateSQL.update();
|
|
|
+ return detail();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public String getClassnames(JSONArray sat_courseware_classids) throws YosException {
|
|
|
+ LinkedHashSet<String> classids1 = new LinkedHashSet<>();
|
|
|
+ classids1.add("-1");
|
|
|
+ LinkedHashSet<String> classids2 = new LinkedHashSet<>();
|
|
|
+ classids2.add("-2");
|
|
|
+ for (Object obj : sat_courseware_classids) {
|
|
|
+ JSONArray objects = (JSONArray) obj;
|
|
|
+ if (objects.size() == 1) {
|
|
|
+ classids1.addAll(objects.toJavaList(String.class));
|
|
|
+ }
|
|
|
+ if (objects.size() == 2) {
|
|
|
+ classids2.addAll(objects.toJavaList(String.class));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ QuerySQL classQuery = SQLFactory.createQuerySQL(this, "sat_courseware_class", "classname").setTableAlias("t1");
|
|
|
+ classQuery.addJoinTable(JOINTYPE.left, "sat_courseware_class", "t2", "t1.sat_courseware_classid=t2.parentid and t1.siteid=t2.siteid");
|
|
|
+ classQuery.setWhere("(t2.sat_courseware_classid in " + classids2.toString().replace("[", "(").replace("]", ")")
|
|
|
+ + " or t1.sat_courseware_classid in " + classids1.toString().replace("[", "(").replace("]", ")") + ")");
|
|
|
+ classQuery.addQueryFields("classnames", "(CONCAT( t1.classname,'/',ifnull(t2.classname,'-')))");
|
|
|
+ ArrayList<String> classnames = classQuery.query().toArrayList("classnames");
|
|
|
+ return String.join(";", classnames);
|
|
|
+ }
|
|
|
+}
|