写在前头,项目移植到linux系统运行时,注意1:配置文件要加上office = /opt/openoffice4
2:linux下mysql区分表名大小写,需在/etc/my.cof加上lower_case_table_names = 1
使用spring注解管理bean,使用@Autowired获取bean时不能用static修饰,否则注入失败
文件上传使用webuploader
文件预览功能使用openOffice4.1.5+JODConverter
注意:openOffice安装时除了自定义目录外,还会自动生成一个默认安装文件夹在C:Program Files (x86)OpenOffice 4;program正是藏于此。
linux环境下运行时,要配置officeHome = /opt/openoffice4
由于图片预览效果不足,因此申请书一律不允许上传图片,只能上传文档类型文件。
EL(expression Language)表达式语言是在JSP2.0版本中引入的新特性,它用于JSP文件中的数据访问。 html页面是不可以使用el表达式的,因为会引起系统的冲突,只有jsp文件才可以写el表达式。
项目中url链接多参数标准写法:
4.样式使用方法:先引入bootstrap-prettyfile.js,再在其页面加上
$( 'input[type="file"]' ).prettyFile();
5.弹出层使用插件:sweetalert2,使用cdn方式,在页面引入
6.文档文件上传使用sweetalert2插件,then函数中的参数需要在取.value才是上传的文件对象。
function upload(){
swal({
title: '提交谈话记录',
input: 'file',
inputAttributes: {
accept: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword'
},
showCancelButton: true,
/confirm/iButtonText: '确认提交',
showLoaderOn/confirm/i: true,
//提交前函数
pre/confirm/i: function(file) {
console.log(file);
//校验函数
return new Promise(function(resolve, reject) { //返回resolve()为通过,reject()拒绝
//校验是否为doc或者docx
if (file.type === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' || value.type === 'application/msword') {
resolve();
} else {
swal(
'文件格式不正确!',
'只能上传doc或docx类型的文件',
'warning'
);
}
});
},
allowOutsideClick: false
}).then(function (file) {
var fm = new FormData();
fm.append("file", file.value);
$.ajax({
url: '/module/proposer/partyMemcon/save',
type: 'post',
data: fm,
dataType: 'json',
contentType: false, //禁止设置请求类型
processdata: false, //禁止jquery对DAta数据的处理,默认会处理
//禁止的原因是,FormData已经帮我们做了处理
success: function(result){
alert("哈哈哈")
},
error: function(result){
alert("nima");
}
});
})
}7.js中需要用到thymeleaf中的值时使用此方法
8.下拉搜索选择:suggest,返回数据类型,value为List数组数据。(似乎不能多选)
https://github.com/lzwme/bootstrap-suggest-plugin
{
"message": "",
"value": [{},{}]
"code": 200,
"redirect": ""
}有特定写法:
因此用到了MagicSuggest 支持多选 使用教程
后台用数组接值
public AjaxResult save(@RequestParam(value = "sList[]") Integer[] sList)
创建Dom元素。div或者input标签
$('#magicsuggest').magicSuggest({
hh: 55
});所需json数据格式为数组:
[{ id: 0,
name: "Panda",
desc: "Pandas are great furry animals",
xxx:xxx
}]9.富文本框插件:summernote,引入css和js,初始化组件,接着国际化。
$('.summernote').summernote({
lang: 'zh-CN'
});10.表单向导插件:jquery steps
$("#form").steps({});11.时间选择器:datepicker 初始化
$("#date").datepicker({
format: 'yyyy-mm-dd',
language: 'cn',
});汉化:打开datepicker.js 修改,增加cn部分
var dates = $.fn.datepicker.dates = {
en: {
days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
today: "Today",
clear: "Clear",
titleFormat: "MM yyyy"
},
cn: {
days: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"],
daysShort: ["日", "一", "二", "三", "四", "五", "六", "七"],
daysMin: ["日", "一", "二", "三", "四", "五", "六", "七"],
months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
today: "今天",
clear: "清除"
}
}; 问题:选择器在表单向导中无效。
改用固定文本格式:jasny,引入样式及js即可
12.文件上传,accept只是在选择文件时自动筛选出doc或者docx后缀的文件,并没强制要求。
13.表单带文件上传时使用FormData,button可以触发jquery表单验证,a不能。不能使用表单序列化,会提示“表单包含了一个文件输入元素,但是其中缺少 method=POST 以及 enctype=multipart/form-data,所以文件将不会被发送。”,所以如下,ajax提交forms即可
var forms = new FormData(document.getElementById('recordsForm'));14.使用th:each遍历list集合中对象的对象属性的属性报错。
15.thymeleaf在js中取值方式:
疑难杂症:
一个发展记录对应一个会议记录,会议记录包含会议产生决议文件,决议的对象集合,发展记录包含备案通过的对象集合以及不通过的对象集合。
流程:先添加一次会议记录,再提交备案记录,选择对应会议信息,自动填充相关内容(主要是决议对象)。上级党委查看备案请示。
积极分子培养界面的抉择?申请人列表:备案记录列表
表单向导与众多组件冲突
会议记录文件上传路径及文件命名为:conference/日期/会议名称+文件名称.doc
入党申请书上传路径及文件命名为:partyApplication/用户id/文件名称.doc
积极分子名册上传路径及文件命名为:activistEvolve/日期/会议ID+文件名称.doc
mybatis报错Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String,是因为date类型不能进行''判断,去掉后面的判断即可。
and submit_time = #{submitTime} ,
8.mybatis使用聚合查询时给查询结果设置别名,让实体中的一个属性对应别名即可成功赋值。
9.使用poi-tl word模板引擎时报错:
org.apache.poi.util.POILogger.log(ILjava/lang/Object;)V
是由于poi的依赖版本不一致导致,poi-tl整合了poi,修改一致即可解决
org.apache.poi poi-ooxml3.17 org.apache.poi poi-ooxml-schemas3.17 org.apache.poi poi3.17
10.使用poi-tl进行word操作时doc文件时报错,似乎并不支持doc,但支持docx,需要使用办公软件将 其转格式,如果直接改后缀将无效果。docx比doc更轻巧高效。
11.使用mybatis插入时报错:
There is no getter for property named 'nul' in 'class com.partyjoin.project.module.prepareEvolve.domain.PrepareEvolve'
是因为属性对不上吗?可能吧,但不清楚,找不出来。重新生成代码就好了。
12.发展预备党员记录时,有两次会议,分别是预审会议和备案会议,此时一个实体里就含有两个相同类型的对象,使用mybatis不知如何查询。
我们就直接在代码里查两次会议赋值了。
13.因一次预备党员含有预审会议及备案会议两个会议,新增预备党员培养记录时关联了预审会议,当添加备案会议时是向培养记录里增加备案会议,但此时备案会议和培养记录找不到关联关系,所以决定在预备党员培养备案添加时加入选择预审记录行目以解决此问题。
14.magicSuggest想动态获取数据(动态改变data数据源)不成功,只能把其实例化放在某操作后。这也只能改变一次数据源,没有找到magicSuggest初始化设置方法。此时应该先使用$("**").remove()方法销毁元素,也就是把magicSuggest对象销毁,然后再生成新的元素代替旧的,$("#sListContainer").prepend('');
使用prepend可以在父级元素最前面追加一个子元素,如果使用append则是在末尾加。这样就达到了动态改变数据源的需求。
15.查询某条大于指定时间的记录时,mysql使用此函数进行时间增减,还有其它数量的。select date_add(application_time, interval 1 month) < ****time 意思为筛选出application_time加1月后还小于****time的个数。mybatis中大小写不能用>,<号,格式化为:> <等于号不变。
16.查询各部门统计各角色人数时:涉及到1.部门之间有层级关系,应把子部门的个角色人数统计到父部门中。我们是这样做的:根据登录用户所在部门查询其部门各角色人数以及其所有子部门个角色人数,接着在service再把子部门各角色人数累计到相应父部门信息中。
业务流程:
申请人注册账号,为其在user表创建一条记录,status为2未激活状态,管理员给予激活后,status置为0激活状态,并为其在user_role表创建记录,给予其roleId2为申请人角色。且自动为其在proposer表创建一条材料记录。
积极分子人选管理列表只列出提交了入党申请书以及谈话记录的人选。
当申请人提交了入党申请书达到6个月后以及党支部派人与之谈话及提交了以下材料后:党员或群团组织推优表,积极分子备案登记表,积极分子备案报告,开会讨论其是否能提升为积极分子。
开会通过后,党支部添加积极分子备案记录,上级党委批准通过后,将申请人角色置为积极分子,且删除原来申请人角色。此时可为积极分子指定1-2名培养联系人(待完善)。为每个积极分子在政审表新增一条记录。
当成为积极分子一年后且提交如下材料后:入党积极分子培养考察登记表,发展对象人选备案登记表,发展对象人选公示情况登记表,发展对象备案报告,思想汇报1,2,3,4。添加讨论发展对象会议决议对象时才能显示出来。
添加会议后上报备案,备案列表选出的会议是没有进行过备案的会议。然后上级党委进行审核,审核通过后将积极分子角色变更为发展对象角色,且成为发展对象时间为上级党委审核通过时间。
备案通过后,为发展对象添加2名入党介绍人。然后填写 发展对象短期集中培训情况登记表,政审的各种材料以及自传。
预备党员人选管理只列出提交了自传,发展对象短期集中培训登记表,政审报告的人,和预审通过,未通过,备案通过,未通过的。
添加预备党员预审会议时决议对象只列出提交了自传,发展对象短期集中培训登记表,政审报告的人。
上级党委给预审的人上传一份发展对象预审的意见
预审备案后,接着预备党员进行备案,给预审通过的预备党员上传关于审批预备党员的请示,让申请人自己上传入党志愿书,然后添加讨论预备党员会议时决议对象只列出通过预审对象且要已提交了审批预备党员的请示以及入党志愿书的人。会议完成后将决议填入个人中国共产党入党志愿书(需要到预备党员人选详情页面上传)
然后上报备案时先选择对应的预审记录,在选择备案会议进行提交。
上级党委收到预备党员备案请求后,派人谈话并更新谈话内容到入党志愿书,上传接收预备党员备案的报告,然后开党委会议讨论,开完会后将决议意见写入入党志愿书更新,然后添加会议时先选择预备党员备案记录,自动填充相关对象给你选择通过与否。通过则成为预备党员。此阶段是通过会议决定备案通过与否,不是通过审核。
到了发展正式党员阶段,支部为申请者上传预备党员教育考察登记表,预备党员转正情况公示登记表。申请者上传转正申请书和思想汇报5-8。添加讨论正式党员会议时,只列出提交了预备党员教育考察登记表,转正申请书,预备党员转正公示情况登记表以及思想汇报5-8的对象。
然后选择会议后进行正式党员备案,上级备案通过后将角色变更为正式党员
待解决:
指定培养联系人
党委审核发展对象页面个人详细材料未实现ok
指定入党介绍人
正式党员,预备党员预审审核页面个人详细材料未实现ok
预备党员阶段:目前是一条培养记录包含预审和备案记录,是否该分开。不开分的话要求预审的对象集合要和备案的对象集合保持一致。
成为预备党员时间未确定ok
党龄起算时间
没限定到预备期满前一个月提交转正申请书以及决议对象是否通过预备期
上级党委备案时修改的文件只是新增了一份文件,并没有删除源文件
需要提出意见并更改的文件:
积极分子阶段:
党委审核时:入党积极分子备案登记表
发展对象阶段:
党委审核时:发展对象备案登记表
预备党员阶段:
上级党委预审:发展对象预审的意见(下发退回党支部。新的)
支部开会备案时:中国共产党入党志愿书
上级党委谈话后:中国共产党入党志愿书
上级党委党委会:中国共产党入党志愿书
程序18(???)向党委备案:接收预备党员备案的报告
正式党员阶段:
支部会议:中国共产党入党志愿书
上级党委审批:中国共产党入党志愿书



