You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

190 lines
6.2 KiB

package com.dsideal.FengHuang.Yp.Model;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdcardUtil;
import com.jfinal.kit.Kv;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.SqlPara;
import java.util.Calendar;
import java.util.List;
public class YpModel {
/**
* 功能:获取当前任务名称
*
* @return
*/
public Record getCurrentTaskInfo() {
String sql = "select task_id,task_name,is_run from t_yp_task where b_use=1";
return Db.findFirst(sql);
}
/**
* 功能:获取指定任务的开启班型及人数限制
*/
public List<Record> getTaskLimit(int task_id) {
String sql = "select * from t_yp_task_bx_limit where task_id=?";
return Db.find(sql, task_id);
}
public List<Record> getTaskApplyCount(int task_id) {
String sql = "select bx_id from t_yp_task_bx_limit as t1 where t1.task_id=?";
List<Record> list = Db.find(sql, task_id);
for (Record record : list) {
int bx_id = record.getInt("bx_id");
sql = "select count(*) as count from t_yp_record as t2 where t2.task_id=? and t2.bx_id=?";
Record r1 = Db.findFirst(sql, task_id, bx_id);
record.set("apply_count", r1.getInt("count"));
}
return list;
}
/**
* 功能:增加任务
*/
public void addTask(String task_name) {
Record record = new Record();
record.set("task_name", task_name);
record.set("create_time", DateTime.now());
record.set("b_use", 0);
record.set("is_run", 0);
Db.save("t_yp_task", "task_id", record);
}
/**
* 功能:修改任务
*/
public void updateTask(int task_id, String task_name) {
String sql = "update t_yp_task set task_name=? where task_id=?";
Db.update(sql, task_name, task_id);
}
/**
* 功能:删除任务
*
* @param task_id
*/
public void delTask(int task_id) {
String sql = "update t_yp_task set b_use=0 where task_id=?";
Db.update(sql, task_id);
}
/**
* 功能:启动任务
*
* @param task_id
*/
public void startTask(int task_id) {
String sql = "update t_yp_task set b_use=1,is_run=1 where task_id=?";
Db.update(sql, task_id);
}
/**
* 功能:根据身份证号计算班型
*
* @param sfzh
*/
public Kv evalBx(String sfzh) {
Kv kv = Kv.create();
if (!IdcardUtil.isValidCard(sfzh)) {
kv.set("bx_id", -1);
kv.set("bx_name", "身份证不合法");
return kv;//-1代表身份证不合法
}
//解析出出生日期
String birth = IdcardUtil.getBirthByIdCard(sfzh);
String sql = "select * from t_yp_bx where b_use=1";
List<Record> list = Db.find(sql);
//当前年份
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int bx_id;
String bx_name;
for (Record record : list) {
bx_id = record.getInt("bx_id");
bx_name = record.getStr("bx_name");
int start_year_num = record.getInt("start_year_num");
int end_year_num = record.getInt("end_year_num");
String start_month_day = record.getStr("start_month_day");
String end_month_day = record.getStr("end_month_day");
String st = year - start_year_num + start_month_day;
String ed = year - end_year_num + end_month_day;
if (birth.compareTo(st) >= 0 && birth.compareTo(ed) <= 0) {
kv.set("bx_id", bx_id);
kv.set("bx_name", bx_name);
return kv;
}
}
kv.set("bx_id", -2);
kv.set("bx_name", "出生日期不在指定的时间段内");
return kv;
}
/**
* 功能:保存申报结果
*
* @param task_id
* @param name
* @param xb
* @param bx_id
* @param address
* @param father_name
* @param mother_name
* @param sfzh
* @param tel
*/
public int save(int task_id, String name, String xb, int bx_id, String address, String father_name, String mother_name, String sfzh, String tel, String uuid) {
//1、检查身份证号是不是已存在
String sql = "select count(1) as count from t_yp_record where sfzh=?";
int count = Db.findFirst(sql, sfzh).getInt("count");
if (count > 0) return 2;
//2、是不是指定班型已招满
sql = "select count(1) as count from t_yp_record where task_id=? and bx_id=?";
count = Db.findFirst(sql, task_id, bx_id).getInt("count");
//可以招多少人?
sql = "select * from t_yp_task_bx_limit where task_id=? and bx_id=?";
int limit_count = Db.findFirst(sql, task_id, bx_id).getInt("limit");
if (count >= limit_count) return 3;
//3、保存
Record record = new Record();
record.set("task_id", task_id);
record.set("name", name);
record.set("xb", xb);
record.set("bx_id", bx_id);
record.set("address", address);
record.set("father_name", father_name);
record.set("mother_name", mother_name);
record.set("sfzh", sfzh);
record.set("tel", tel);
record.set("create_time",DateTime.now());
record.set("pic", "/upload/" + uuid + ".jpg");
Db.save("t_yp_record", "id", record);
return 1;
}
/**
* 功能:查看指定任务的结果
*
* @param task_id
* @param bx_id
* @param page
* @param limit
*/
public Page<Record> getTaskInfo(int task_id, int bx_id, int page, int limit) {
Kv kv = Kv.by("task_id", task_id);
kv.set("bx_id", bx_id);
SqlPara sqlPara = Db.getSqlPara("yp.getTaskInfo", kv);
Page<Record> pageRecord = Db.paginate(page, limit, sqlPara);
return pageRecord;
}
}