|
|
|
@ -2,6 +2,8 @@ package com.dsideal.QingLong.Collect.Model;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
|
|
import cn.hutool.core.io.FileUtil;
|
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
import com.dsideal.QingLong.Collect.Const.DataTypeConst;
|
|
|
|
|
import com.dsideal.QingLong.Interceptor.EmptyInterface;
|
|
|
|
|
import com.dsideal.QingLong.Interceptor.IsLoginInterface;
|
|
|
|
@ -1199,4 +1201,117 @@ public class CollectModel {
|
|
|
|
|
Page<Record> pageRecord = Db.paginateByFullSql(page, limit, CommonUtil.getTotalSql(sql), sql);
|
|
|
|
|
return pageRecord;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 功能:增加一个表单式的新任务
|
|
|
|
|
*
|
|
|
|
|
* @param job_name
|
|
|
|
|
* @param json
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public int addFormJob(String person_id, int publish_role_id, String job_name, String table_name, String json) {
|
|
|
|
|
//1、保存任务信息
|
|
|
|
|
Record record = new Record();
|
|
|
|
|
record.set("job_name", job_name);
|
|
|
|
|
record.set("create_time", DateTime.now());
|
|
|
|
|
record.set("person_id", person_id);
|
|
|
|
|
record.set("publish_state", 0);
|
|
|
|
|
record.set("publish_role_id", publish_role_id);
|
|
|
|
|
record.set("job_type", 1);
|
|
|
|
|
record.set("form_table_name", table_name);
|
|
|
|
|
Db.save("t_collect_job", "job_id", record);
|
|
|
|
|
int job_id = record.getInt("job_id");
|
|
|
|
|
//2、需要在这里建表,因为发布时不管建表,只管可见范围
|
|
|
|
|
createTable(job_name, table_name, json);
|
|
|
|
|
return job_id;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 功能:创建表
|
|
|
|
|
*
|
|
|
|
|
* @param job_name
|
|
|
|
|
* @param table_name
|
|
|
|
|
* @param json
|
|
|
|
|
*/
|
|
|
|
|
private void createTable(String job_name, String table_name, String json) {
|
|
|
|
|
JSONArray ja = JSONArray.parseArray(json);
|
|
|
|
|
String colSql = "", commentSql = "";
|
|
|
|
|
for (Object o : ja) {
|
|
|
|
|
JSONObject jo = (JSONObject) o;
|
|
|
|
|
boolean required = jo.getBoolean("required");//必填
|
|
|
|
|
String original_name = jo.getString("label");//描述
|
|
|
|
|
String column_name = jo.getString("id");//字段名
|
|
|
|
|
int data_type_id = jo.getInteger("data_type_id");// 数据类型
|
|
|
|
|
String column_type = getDataType(data_type_id, DataTypeConst.PG_DATA_TYPE);
|
|
|
|
|
colSql += column_name + " " + column_type;
|
|
|
|
|
|
|
|
|
|
if (required) colSql += " NOT NULL ";
|
|
|
|
|
colSql += ",";
|
|
|
|
|
commentSql += "COMMENT ON COLUMN \"public\".\"" + table_name + "\".\"" + column_name + "\" IS '" + original_name + "';\n";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String finalSql = "CREATE TABLE \"public\".\"" + table_name + "\" (";
|
|
|
|
|
finalSql += "\"id\" serial4,";
|
|
|
|
|
finalSql += "\"bureau_id\" char(36) NOT NULL,";
|
|
|
|
|
finalSql += "\"person_id\" char(36) NOT NULL,";
|
|
|
|
|
finalSql += "\"job_id\" int(4) NOT NULL,";
|
|
|
|
|
finalSql += colSql;
|
|
|
|
|
finalSql += "PRIMARY KEY (\"id\")";
|
|
|
|
|
finalSql += ");\n";
|
|
|
|
|
|
|
|
|
|
finalSql += "COMMENT ON COLUMN \"public\".\"" + table_name + "\".\"id\" IS '主键,自增长ID';\n";
|
|
|
|
|
finalSql += "COMMENT ON COLUMN \"public\".\"" + table_name + "\".\"bureau_id\" IS '单位ID';\n";
|
|
|
|
|
finalSql += "COMMENT ON COLUMN \"public\".\"" + table_name + "\".\"person_id\" IS '上传人员ID';\n";
|
|
|
|
|
finalSql += "COMMENT ON COLUMN \"public\".\"" + table_name + "\".\"job_id\" IS '任务ID';\n";
|
|
|
|
|
finalSql += commentSql;
|
|
|
|
|
finalSql += "COMMENT ON TABLE \"public\".\"" + table_name + "\" IS '" + job_name + "';";
|
|
|
|
|
//添加索引
|
|
|
|
|
finalSql += "CREATE INDEX ON \"public\".\"" + table_name + "\" (\"bureau_id\");";
|
|
|
|
|
finalSql += "CREATE INDEX ON \"public\".\"" + table_name + "\" (\"person_id\");";
|
|
|
|
|
Db.update(finalSql);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 功能:更新一个存在的表单式任务
|
|
|
|
|
*
|
|
|
|
|
* @param job_id
|
|
|
|
|
* @param json
|
|
|
|
|
*/
|
|
|
|
|
public void updateFormJob(int job_id, String job_name, String json, String table_name) {
|
|
|
|
|
//删除数据库表
|
|
|
|
|
dropTable(table_name);
|
|
|
|
|
//更新数据
|
|
|
|
|
String sql = "update t_collect_job set job_name=?,json=? where job_id=?";
|
|
|
|
|
Db.update(sql, job_name, json, job_id);
|
|
|
|
|
//需要在这里建表,因为发布时不管建表,只管可见范围
|
|
|
|
|
createTable(job_name, table_name, json);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 功能:填报者保存填报结果
|
|
|
|
|
*/
|
|
|
|
|
public void saveFormJob(String bureau_id, String person_id, String table_name, String json) {
|
|
|
|
|
JSONObject jo = JSONObject.parseObject(json);
|
|
|
|
|
Record record = new Record();
|
|
|
|
|
record.set("bureau_id", bureau_id);
|
|
|
|
|
record.set("person_id", person_id);
|
|
|
|
|
for (Map.Entry<String, Object> entry : jo.entrySet()) {
|
|
|
|
|
String key = entry.getKey();
|
|
|
|
|
Object value = entry.getValue();
|
|
|
|
|
record.set(key, value);
|
|
|
|
|
}
|
|
|
|
|
Db.save(table_name, "id", record);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 功能:获取指定任务指定单位的填报内容
|
|
|
|
|
*
|
|
|
|
|
* @param job_id
|
|
|
|
|
* @param bureau_id
|
|
|
|
|
*/
|
|
|
|
|
public Record getFormFillJob(int job_id, String bureau_id) {
|
|
|
|
|
String table_name = getJob(job_id).getStr("form_table_name");
|
|
|
|
|
String sql = "select * from " + table_name + " where bureau_id=? and job_id=?";
|
|
|
|
|
return Db.findFirst(sql, bureau_id, job_id);
|
|
|
|
|
}
|
|
|
|
|
}
|