--辅助输入
DROP TABLE IF EXISTS S_INPUTHELPER;
CREATE TABLE S_INPUTHELPER
(
INPUTHELPERID VARCHAR(20) NOT NULL,
INPUTHELPERNAME VARCHAR(50) NOT NULL,
CONSTRAINT S_INPUTHELPER_PK PRIMARY KEY (INPUTHELPERID)
);
--辅助输入.检索条件
DROP TABLE IF EXISTS S_INPUTHELPER_CONDITION;
CREATE TABLE S_INPUTHELPER_CONDITION
(
INPUTHELPERID VARCHAR(20) NOT NULL,
CONDITIONID VARCHAR(20) NOT NULL,
CONDITIONNAME VARCHAR(50) NOT NULL
);
--辅助输入.显示项目
DROP TABLE IF EXISTS S_INPUTHELPER_HEADER;
CREATE TABLE S_INPUTHELPER_HEADER
(
INPUTHELPERID VARCHAR(20) NOT NULL,
HEADERID VARCHAR(20) NOT NULL,
HEADERNAME VARCHAR(50) NOT NULL,
HEADERWIDTH VARCHAR(3) NOT NULL,
HEADERSHOW BOOLEAN NOT NULL
);
--辅助输入.返回值
DROP TABLE IF EXISTS S_INPUTHELPER_BACKER;
CREATE TABLE S_INPUTHELPER_BACKER
(
INPUTHELPERID VARCHAR(20) NOT NULL,
BACKERID VARCHAR(20) NOT NULL,
BACKPOSITION VARCHAR(3) NOT NULL
insert into S_INPUTHELPER (INPUTHELPERID, INPUTHELPERNAME)values('Technology', '操作技术');
insert into S_INPUTHELPER_CONDITION (INPUTHELPERID, CONDITIONID, CONDITIONNAME)values('Technology','skillno', '技术No');
insert into S_INPUTHELPER_CONDITION (INPUTHELPERID, CONDITIONID, CONDITIONNAME)values('Technology','skill', '技术名称');
insert into S_INPUTHELPER_HEADER (INPUTHELPERID, HEADERID, HEADERNAME, HEADERWIDTH, HEADERSHOW)values('Technology', 'skillno', 'No', '20', true);
insert into S_INPUTHELPER_HEADER (INPUTHELPERID, HEADERID, HEADERNAME, HEADERWIDTH, HEADERSHOW)values('Technology', 'skill', '技术名称', '150', true);
insert into S_INPUTHELPER_BACKER (INPUTHELPERID, BACKERID, BACKPOSITION)values('Technology', 'skillno', 1);
insert into S_INPUTHELPER_BACKER (INPUTHELPERID, BACKERID, BACKPOSITION)values('Technology', 'skill', 2);
--语言技术辅助输入
insert into S_INPUTHELPER (INPUTHELPERID, INPUTHELPERNAME)values('Language', '语言技术');
insert into S_INPUTHELPER_CONDITION (INPUTHELPERID, CONDITIONID, CONDITIONNAME)values('Language','languageno', '语言No');
insert into S_INPUTHELPER_CONDITION (INPUTHELPERID, CONDITIONID, CONDITIONNAME)values('Language','lanskill', '语言名称');
insert into S_INPUTHELPER_HEADER (INPUTHELPERID, HEADERID, HEADERNAME, HEADERWIDTH, HEADERSHOW)values('Language', 'languageno', 'No', '40', true);
insert into S_INPUTHELPER_HEADER (INPUTHELPERID, HEADERID, HEADERNAME, HEADERWIDTH, HEADERSHOW)values('Language', 'lanskill', '语言名称', '150', true);
insert into S_INPUTHELPER_BACKER (INPUTHELPERID, BACKERID, BACKPOSITION)values('Language', 'languageno', 1);
insert into S_INPUTHELPER_BACKER (INPUTHELPERID, BACKERID, BACKPOSITION)values('Language', 'lanskill', 2);
DROP TABLE IF EXISTS t_technology;
CREATE TABLE t_technology
(
technologyid integer NOT NULL,
employeeid integer NOT NULL,
skillability VARCHAR(50),
experiencetime VARCHAR(10),
traininfoid integer,
skillno VARCHAR(20),
createuserid integer NOT NULL,
createdate timestamp NOT NULL,
updateuserid integer NOT NULL,
updatedate timestamp NOT NULL,
CONSTRAINT t_technology_pk PRIMARY KEY (technologyid)
);
--语言技术信息
DROP TABLE IF EXISTS t_language;
CREATE TABLE t_language
(
languageid integer NOT NULL,
employeeid integer NOT NULL,
languageno VARCHAR(10),
speakability VARCHAR(50),
readability VARCHAR(50),
writeability VARCHAR(50),
traininfoid integer,
createuserid integer NOT NULL,
createdate timestamp NOT NULL,
updateuserid integer NOT NULL,
updatedate timestamp NOT NULL,
CONSTRAINT t_language_pk PRIMARY KEY (languageid)
);
--辅助输入 操作技术类型
DROP TABLE IF EXISTS m_technologytype;
CREATE TABLE m_technologytype
(
skillno VARCHAR(20) NOT NULL,
skill VARCHAR(50) NOT NULL,
CONSTRAINT m_technology_pk PRIMARY KEY (skillno)
);
--技术数据
insert into m_technologytype(skillno, skill)values('1', 'VB');
insert into m_technologytype(skillno, skill)values('2', 'VC');
insert into m_technologytype(skillno, skill)values('3', 'C#');
insert into m_technologytype(skillno, skill)values('4', 'Java');
insert into m_technologytype(skillno, skill)values('5', 'PL/SQL');
insert into m_technologytype(skillno, skill)values('6', 'JavaScript');
insert into m_technologytype(skillno, skill)values('7', 'C/C++');
insert into m_technologytype(skillno, skill)values('8', 'Unix');
insert into m_technologytype(skillno, skill)values('9', 'SQLServer');
insert into m_technologytype(skillno, skill)values('10', 'Windows');
--辅助输入 语言技术类型
DROP TABLE IF EXISTS m_languagetype;
CREATE TABLE m_languagetype
(
languageno VARCHAR(10) NOT NULL,
lanskill VARCHAR(50) NOT NULL,
CONSTRAINT m_languagetype_pk PRIMARY KEY (languageno)
);
--语言数据
insert into m_languagetype(languageno, lanskill)values('1', '中国语');
insert into m_languagetype(languageno, lanskill)values('2', '日本语');
insert into m_languagetype(languageno, lanskill)values('3', '英语');
insert into m_languagetype(languageno, lanskill)values('4', '韩语');
insert into m_languagetype(languageno, lanskill)values('5', '俄语');
insert into m_languagetype(languageno, lanskill)values('6', '西班牙语');
--项目经验
DROP TABLE IF EXISTS t_project;
CREATE TABLE t_project
(
projectid integer NOT NULL,
employeeid integer NOT NULL,
startdate timestamp,
enddate timestamp,
projectname VARCHAR(50) NOT NULL,
operatesystem VARCHAR(50),
usedatabase VARCHAR(50),
developlanguage VARCHAR(50),
tool VARCHAR(50),
bse CHAR(1),
fabricate CHAR(1),
monomertest CHAR(1),
combinetest CHAR(1),
applytest CHAR(1),
tutor CHAR(1),
pjmanage CHAR(1),
detaileddesign CHAR(1),
basicdesign CHAR(1),
essentialdesign CHAR(1),
createuserid integer NOT NULL,
createdate timestamp NOT NULL,
updateuserid integer NOT NULL,
updatedate timestamp NOT NULL,
CONSTRAINT t_project_pk PRIMARY KEY (projectid)
);
Technoogy.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<jsp:include page="../script.jsp"></jsp:include>
<style type="text/css">
</style>
<script type="text/javascript">
$(function() {
$("#technology").flexigrid({
singleSelect: true,
showToggleBtn: false,
buttons: [
{name: '添加', bclass: 'flexgrid_edit', onpress : function(com,grid){
window.location.href= "${pageContext.request.contextPath}/employee/${employeeid}/TechnologyDetail.html";
}},
{separator: true},
{name: '编辑', bclass: 'flexgrid_edit', onpress : function(com,grid){
var i = $('.trSelected',grid).length;
if(i == 1){
var id = $('.trSelected',grid)[0].id.substr(3);
window.location.href= "${pageContext.request.contextPath}/employee/${employeeid}/TechnologyDetail/" + id + ".html";
}else{
$( "#dialog-confirm" ).dialog('open');
}
}},
{separator: true},
{name: '返回在职员工检索', bclass: 'flexgrid_edit', onpress : function(com,grid){
window.location.href= "${pageContext.request.contextPath}/employee/EmployeeSearch.html";
}},
{separator: true}
]
});
$( "#dialog-confirm" ).dialog({
autoOpen: false,
resizable: false,
height:150,
modal: true,
buttons: {
OK: function() {
$( this ).dialog( "close" );
}
}
});
});
</script>
</head>
<body>
<jsp:include page="../header.jsp"></jsp:include>
<h3>操作技术信息一览</h3>
员工ID:<c:out value="${employeeid}"/>
员工姓名:<c:out value="XXX"/>
性别 : <c:out value="男"/>
入职日期:<c:out value="2009/02/02"/>
职位:<c:out value="经理"/>
<table id="technology" border="0">
<thead>
<tr><th width="150">操作技术</th><th width="150">技术能力</th><th width="130">经验月数</th></tr>
</thead>
<tbody>
<c:forEach items="${Technology}" var="item">
<tr id="row<c:out value="${item.technologyid}"/>">
<td><c:out value="${item.skill }"></c:out></td>
<td><c:out value="${item.skillability}"></c:out></td>
<td><c:out value="${item.experiencetime }"></c:out></td>
</tr>
</c:forEach>
</tbody>
</table>
<div id="dialog-confirm" title="请选择">
<p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>请选择一位员工。</p>
</div>
<jsp:include page="../footer.jsp"></jsp:include>
</body>
</html>
TechnologyDetail.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<jsp:include page="../script.jsp"></jsp:include>
<style type="text/css">
</style>
<script type="text/javascript">
$(function() {
$(".text").addClass("ui-widget-content ui-corner-all");
$(".helper").addClass("ui-icon ui-icon-search").button();
$("#technologyForm").submit(function(){
$("input.text").trim();
});
$(".helper").button();
$("#technologyhelper").click(function(){
$('#dialog-inputhelper').load('${pageContext.request.contextPath}/common/InputHelper.html',
{
moduleid:"Technology",
titem: ["skillno", "skill"],
tval: [$('#skillno').val(), $('#skill').val()],
bitem: ["skillno", "skill"],
bdisplayid: ["skillno", "skill"]
}
);
});
$("#searchtrainhelper").click(function(){
$('#dialog-inputhelper').load('${pageContext.request.contextPath}/common/InputHelper.html',
{
moduleid:"Searchtrain",
titem: ["employeeid","traininfoid"],
tval: [$('#employeeid').val(),$('#traininfoid').val()],
bitem: ["employeeid","traininfoid"],
bdisplayid: ["employeeid","traininfoid"]
}
);
});
$(":button").button();
$("#btnSave").button();
$( "#dialog-confirm" ).dialog({
autoOpen: false,
resizable: false,
height:150,
modal: true,
buttons: {
OK: function() {
$( this ).dialog( "close" );
}
}
});
$("#btnBack").button().click(function(){
window.location.href = "${pageContext.request.contextPath}/employee/${employeeid}/Technology.html";
});
});
</script>
</head>
<body>
<jsp:include page="../header.jsp"></jsp:include>
<h3><c:if test="${isNew}">添加操作技术信息</c:if><c:if test="${!isNew}">编辑操作技术信息</c:if></h3>
员工ID:<c:out value="${employeeid}"/>
员工姓名:<c:out value="XXX"/>
性别 : <c:out value="男"/>
入职日期:<c:out value="2009/02/02"/>
职位:<c:out value="经理"/>
<jsp:include page="../messager.jsp"></jsp:include>
<form:form id="technologyDetailForm" commandName="technologyDetailForm" method="POST">
操作技术:<form:input id="skillno" path="skillno" style="width:25px" class="text" cssErrorClass="text ui-state-error"/>
<span id="technologyhelper" class="helper"></span>
<form:input path="skill" class="text"/><form:errors path="skillno" cssClass="error"/><br>
经验月数(月):<form:input id="experiencetime" path="experiencetime" class="text " cssErrorClass="text ui-state-error"/><form:errors path="experiencetime" cssClass="error"/><br>
培训ID:<form:input path="traininfoid" class="text" cssErrorClass="text ui-state-error"/><form:errors path="traininfoid" cssClass="error"/><span id="searchtrainhelper" class="helper"></span><c:if test="${!isNew}"><c:if test="${isTrain}"><c:if test="${isTraininfo}"><a id="btnSearch" href="/hr/employee/${employeeid}/TrainDetail/${traininfoid}.html">查看培训信息</a></c:if></c:if></c:if><br/>
技术能力:<form:radiobutton path="skillability" value="經驗"/><label>經驗</label>
<form:radiobutton path="skillability" value="知識"/><label>知識</label><br>
<tr><td></td><td><input id="btnSave" type="submit" value="保存"/>
<c:if test="${!isNew}"><input type="submit" id="btnDelete" value="删除"/>
<script type="text/javascript">
$(function(){
$("#btnDelete").button().click(function(){
$( "#comfineDialog" ).dialog("open");
return false;
});
$("#comfineDialog").dialog({
autoOpen: false,
resizable: false,
height:140,
modal: true,
buttons: {
"删除": function() {
$("input.text").trim();
$("#technologyDetailForm")[0].action="${pageContext.request.contextPath}/employee/${technologyDetailForm.employeeid}/TechnologyDetail/${technologyDetailForm.technologyid}/delete.html";
$("#technologyDetailForm").submit();
},
Cancel: function() {
$( this ).dialog( "close" );
}
}
});
});
</script>
<div id="comfineDialog" title="确认">确定要删除吗?</div>
</c:if>
<input type="button" id="btnBack" value="返回"/>
<form:hidden path="updatedate"/>
</form:form>
<jsp:include page="../footer.jsp"></jsp:include>
<div id="dialog-inputhelper"></div>
</body>
</html>
TechnologyController
package cn.com.mbp.hr.employee.SkillInformation.Technology.mvc;
import org.springframework.beans.factory.annotation.Autowired;
cn.com.mbp.hr.employee.SkillInformation.Technology.service.TechnologyServiceLocal;
@Controller
@RequestMapping("/employee/{employeeid}/Technology")
public class TechnologyController {
@Autowired
private TechnologyServiceLocal service;
/**
* 画面初期化
* @param employeeid 员工ID
* @param model 操作技术信息列表
* @return /employee/TechnologyList.jsp
*/
@RequestMapping(method=RequestMethod.GET)
public String doInit(
@PathVariable Integer employeeid,
ModelMap model){
model.addAttribute("employeeid",employeeid);
model.addAttribute("Technology",service.findAll(employeeid));
return "/employee/Technology";
}
}
Technologydetailcontroller
package cn.com.mbp.hr.employee.SkillInformation.Technology.mvc;
import java.util.Locale;
/**
* <p>机能名: 档案管理/技术信息</p>
* <p>画面名: 详细操作技术</p>
* <p>式样书: 基本设计_技术信息.xls</p>
* @version 1.0 2011/3/22
* @author 杨蓓蓓(S1011523)
*/
@Controller
@RequestMapping("/employee/{employeeid}/TechnologyDetail")
public class TechnologyDetailController {
@Autowired
private TechnologyServiceLocal service;
@Autowired
private MessageSource message;
/**
* 画面初期化
* @param employeeid 员工ID
* @param model 初始化画面参数
* @return /employee/TechnologyDetail.jsp
*/
@RequestMapping( method=RequestMethod.GET)
public String doInit(@PathVariable Integer employeeid,ModelMap model){
TechnologyDetailForm form =new TechnologyDetailForm();
model.addAttribute("employeeid",employeeid);
model.addAttribute("isNew", true);
model.addAttribute(form);
return "/employee/TechnologyDetail";
}
/**
* 保存处理
* @param form 操作技术信息
* @param result 信息验证结果
* @param employeeid 员工ID
* @param model 初始化画面参数
* @return /employee/TechnologyDetail.jsp
*/
@RequestMapping(method=RequestMethod.POST)
public String doSave(@Valid TechnologyDetailForm form, BindingResult result,
@PathVariable Integer employeeid,ModelMap model){
if(result.hasErrors()){
model.addAttribute("employeeid",employeeid);
model.addAttribute("isNew", true);
return "/employee/TechnologyDetail";
}
UserInfoDetails user = (UserInfoDetails)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
model.addAttribute("employeeid", employeeid);
model.addAttribute("isNew", true);
if(service.checkSkillexist(form,user.getUserid()) == 0){
model.addAttribute(ProcessResult.KEY, new ProcessResult(ProcessResult.NG, message.getMessage("checkSkillexist.error.SkillExist", new String[]{form.getSkillno().toString()}, Locale.getDefault())));
return "/employee/TechnologyDetail";
}
if(service.checkSkill(form,user.getUserid()) == 0){
model.addAttribute(ProcessResult.KEY, new ProcessResult(ProcessResult.NG, message.getMessage("CheckSkill.error.SkillMatchExist", new String[]{form.getSkillno().toString()}, Locale.getDefault())));
return "/employee/TechnologyDetail";
}else{
service.saveTechnology(form,employeeid,user.getUserid());
return "redirect:/employee/"+employeeid+"/Technology.html";}
}
/**
* 修改详细操作技术信息画面
* @param employeeid 员工ID
* @param technologyid 技术ID
* @param model 操作技术信息
* @param skillno 技术NO
* @return /employee/TechnologyDetail.jsp
*/
@RequestMapping(value = "/{technologyid}", method=RequestMethod.GET)
public String doDetail(@PathVariable Integer employeeid,@PathVariable Integer technologyid, ModelMap model, Object skillno){
TechnologyDetailForm form = new TechnologyDetailForm();
TechnologyInfoBean technology = service.getTechnologyById(technologyid);
form.setTechnologyid(technologyid);//技术ID
form.setEmployeeid(technology.getEmployeeid());//员工ID
form.setSkill(technology.getSkill());//操作技术
form.setSkillno(technology.getSkillno());//技术NO
form.setSkillability(technology.getSkillability());//技术能力
form.setExperiencetime(technology.getExperiencetime());//经验月数
form.setTraininfoid(technology.getTraininfoid());//培训ID
form.setUpdatedate(technology.getUpdatedate());//更新日期
model.addAttribute(form);
model.addAttribute("employeeid",employeeid);
return "/employee/TechnologyDetail";
}
/**
* 保存更新操作技术信息画面
* @param employeeid 员工ID
* @param technologyid 技术ID
* @param model 操作技术信息
* @return /employee/TechnologyDetail.jsp
*/
@RequestMapping(value = "/{technologyid}", method=RequestMethod.POST)
public String doUpdate(@PathVariable Integer employeeid,@PathVariable Integer technologyid, ModelMap model,
@Valid TechnologyDetailForm form, BindingResult result){
if(result.hasErrors()){
model.addAttribute("employeeid",employeeid);
return "/employee/TechnologyDetail";
}
model.addAttribute("employeeid", employeeid);
model.addAttribute("isNew", true);
UserInfoDetails user = (UserInfoDetails)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if(service.checkSkillexist(form,user.getUserid()) == 0){
model.addAttribute(ProcessResult.KEY, new ProcessResult(ProcessResult.NG, message.getMessage("checkSkillexist.error.SkillExist", new String[]{form.getSkillno().toString()}, Locale.getDefault())));
return "/employee/TechnologyDetail";
}
if(service.checkSkill(form,user.getUserid()) == 0){
model.addAttribute(ProcessResult.KEY, new ProcessResult(ProcessResult.NG, message.getMessage("CheckSkill.error.SkillMatchExist", new String[]{form.getSkillno().toString()}, Locale.getDefault())));
return "/employee/TechnologyDetail";
}else{
service.updateTechnology(employeeid, technologyid, form, user.getUserid());
return "redirect:/employee/"+employeeid+"/Technology.html";}
}
/**
* 删除处理
* @param form 操作技术信息
* @param result 信息验证结果
* @param employeeid 员工ID
* @param technologyid 技术ID
* @return /employee/Technology/员工ID.html
*/
@RequestMapping(value = "/{technologyid}/delete", method=RequestMethod.POST)
public String doDelete(@Valid TechnologyDetailForm form, BindingResult result,@PathVariable Integer employeeid,@PathVariable Integer technologyid){
UserInfoDetails user = (UserInfoDetails)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
service.deleteTechnology(form, technologyid,employeeid, user.getUserid());
return "redirect:/employee/"+employeeid+"/Technology.html";
}
}
Helper.xml
<select id="Technology">
select m.skillno, m.skill
from m_technologytype m
<dynamic prepend="WHERE">
<isNotEmpty prepend="AND" property="skillno">
m.skillno LIKE '%' || #skillno# || '%'
</isNotEmpty>
<isNotEmpty prepend="AND" property="skill">
m.skill LIKE '%' || #skill# || '%'
</isNotEmpty>
</dynamic>
</select>
<select id="TechnologyCount">
select count(*)
from m_technologytype m
<dynamic prepend="WHERE">
<isNotEmpty prepend="AND" property="skillno">
m.skillno LIKE '%' || #skillno# || '%'
</isNotEmpty>
<isNotEmpty prepend="AND" property="skill">
m.skill LIKE '%' || #skill# || '%'
</isNotEmpty>
</dynamic>
</select>