Ver Fonte

题库管理

eganwu há 2 anos atrás
pai
commit
c1ccb6d086

+ 26 - 0
src/custom/restcontroller/R.java

@@ -5699,6 +5699,32 @@ public class R {
         }
     }
 
+    public static class ID20240322093302 {
+        public static class v1 {
+        }
+    }
+
+
+    public static class ID20240322093402 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID20240322093502 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID20240322093602 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID20240322093702 {
+        public static class v1 {
+        }
+    }
+
 }
 
 

+ 233 - 0
src/custom/restcontroller/webmanage/saletool/courseware/coursewaretestlibrary.java

@@ -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);
+    }
+}