用户管理新增员工工号字典,并保持租户内唯一性验证;employee 新增 getByEmpNo 方法,cloud版升级注意

This commit is contained in:
thinkgem
2019-11-20 22:33:50 +08:00
parent 5677047365
commit 4f751c6620
12 changed files with 169 additions and 54 deletions

View File

@@ -28,6 +28,7 @@ import com.jeesite.common.mybatis.mapper.query.QueryType;
@Column(includeEntity=BaseEntity.class),
@Column(includeEntity=DataEntity.class),
@Column(name="emp_code", attrName="empCode", label="员工编码", isPK=true),
@Column(name="emp_no", attrName="empNo", label="员工工号"),
@Column(name="emp_name", attrName="empName", label="员工姓名", queryType=QueryType.LIKE),
@Column(name="emp_name_en", attrName="empNameEn", label="英文名", queryType=QueryType.LIKE),
@Column(name="office_code", attrName="office.officeCode", label="机构编码", isQuery=false),
@@ -37,15 +38,35 @@ import com.jeesite.common.mybatis.mapper.query.QueryType;
}, joinTable={
@JoinTable(type=Type.LEFT_JOIN, entity=Office.class, alias="o",
on="o.office_code = a.office_code",
columns={@Column(includeEntity=Office.class)}),
columns={
@Column(name="office_code", label="机构编码", isPK=true),
@Column(name="parent_codes",label="所有父级编码", queryType=QueryType.LIKE),
@Column(name="view_code", label="机构代码"),
@Column(name="office_name", label="机构名称", isQuery=false),
@Column(name="full_name", label="机构全称"),
@Column(name="office_type", label="机构类型"),
@Column(name="leader", label="负责人"),
@Column(name="phone", label="电话"),
@Column(name="address", label="联系地址"),
@Column(name="zip_code", label="邮政编码"),
@Column(name="email", label="邮箱"),
}),
@JoinTable(type=Type.LEFT_JOIN, entity=Company.class, alias="c",
on="c.company_code = a.company_code",
columns={@Column(includeEntity=Company.class)}),
columns={
@Column(name="company_code", label="公司编码", isPK=true),
@Column(name="parent_codes",label="所有父级编码", queryType=QueryType.LIKE),
@Column(name="view_code", label="公司代码"),
@Column(name="company_name", label="公司名称", isQuery=false),
@Column(name="full_name", label="公司全称"),
@Column(name="area_code", attrName="area.areaCode", label="区域编码"),
}),
@JoinTable(type=Type.LEFT_JOIN, entity=Area.class, alias="ar",
on="ar.area_code = c.area_code", attrName="company.area",
columns={
@Column(name="area_name", label="区域名称"),
@Column(name="area_type", label="区域类型"),
@Column(name="area_code", label="区域代码", isPK=true),
@Column(name="area_name", label="区域名称", isQuery=false),
@Column(name="area_type", label="区域类型"),
}),
}, orderBy="a.update_date DESC"
)
@@ -53,6 +74,7 @@ public class Employee extends DataEntity<Employee> {
private static final long serialVersionUID = 1L;
private String empCode; // 员工编码
private String empNo; // 员工工号
private String empName; // 员工姓名
private String empNameEn; // 员工英文名
private Office office; // 机构编码
@@ -78,7 +100,16 @@ public class Employee extends DataEntity<Employee> {
public void setEmpCode(String empCode) {
this.empCode = empCode;
}
@Length(min=0, max=100, message="工号长度不能超过 100 个字符")
public String getEmpNo() {
return empNo;
}
public void setEmpNo(String empNo) {
this.empNo = empNo;
}
@Length(min=0, max=100, message="名称长度不能超过 100 个字符")
public String getEmpName() {
return empName;

View File

@@ -24,6 +24,11 @@ public interface EmployeeService extends CrudServiceApi<Employee> {
@Override
public Employee get(Employee employee);
/**
* 根据工号获取数据
*/
public Employee getByEmpNo(Employee employee);
/**
* 查询分页数据
*/

View File

@@ -125,6 +125,10 @@ public class EmpUserServiceSupport extends CrudService<EmpUserDao, EmpUser>
if (StringUtils.isBlank(employee.getEmpCode())){
employee.setEmpCode(user.getUserCode());
}
// 如果员工工号为空,则使用员工编码
if (StringUtils.isBlank(employee.getEmpNo())){
employee.setEmpNo(employee.getEmpCode());
}
// 如果员工姓名为空,则使用昵称名
if (StringUtils.isBlank(employee.getEmpName())){
employee.setEmpName(user.getUserName());

View File

@@ -41,6 +41,16 @@ public class EmployeeServiceSupport extends CrudService<EmployeeDao, Employee>
return super.get(employee);
}
/**
* 根据工号获取数据
*/
@Override
public Employee getByEmpNo(Employee employee) {
Employee where = new Employee();
where.setEmpNo(employee.getEmpNo());
return dao.getByEntity(where);
}
/**
* 查询分页数据
*/
@@ -57,7 +67,7 @@ public class EmployeeServiceSupport extends CrudService<EmployeeDao, Employee>
public void save(Employee employee) {
if (employee.getIsNewRecord()){
if (dao.get(employee) != null){
throw newValidationException("员工编码已存在");
throw newValidationException(text("员工工号已存在"));
}
}
super.save(employee);

View File

@@ -20,6 +20,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
@@ -149,16 +150,23 @@ public class EmpUserController extends BaseController {
@RequiresPermissions(value={"sys:empUser:edit","sys:empUser:authRole"}, logical=Logical.OR)
@PostMapping(value = "save")
@ResponseBody
public String save(@Validated EmpUser empUser, String oldLoginCode, String op, HttpServletRequest request) {
public String save(@Validated EmpUser empUser, String op, HttpServletRequest request) {
if (User.isSuperAdmin(empUser.getUserCode())) {
return renderResult(Global.FALSE, "非法操作,不能够操作此用户!");
}
if (!EmpUser.USER_TYPE_EMPLOYEE.equals(empUser.getUserType())){
return renderResult(Global.FALSE, "非法操作,不能够操作此用户!");
}
if (!Global.TRUE.equals(userService.checkLoginCode(oldLoginCode, empUser.getLoginCode()))) {
EmpUser old = super.getWebDataBinderSource(request);
if (!Global.TRUE.equals(userService.checkLoginCode(old != null ? old.getLoginCode() : "", empUser.getLoginCode()))) {
return renderResult(Global.FALSE, text("保存用户失败,登录账号''{0}''已存在", empUser.getLoginCode()));
}
if (StringUtils.isBlank(empUser.getEmployee().getEmpNo())){
empUser.getEmployee().setEmpNo(empUser.getLoginCode());
}
if (!Global.TRUE.equals(checkEmpNo(old != null ? old.getEmployee().getEmpNo() : "", empUser.getEmployee().getEmpNo()))) {
return renderResult(Global.FALSE, text("保存用户失败,员工工号''{0}''已存在", empUser.getEmployee().getEmpNo()));
}
if (StringUtils.inString(op, Global.OP_ADD, Global.OP_EDIT)
&& UserUtils.getSubject().isPermitted("sys:empUser:edit")){
empUserService.save(empUser);
@@ -169,6 +177,26 @@ public class EmpUserController extends BaseController {
}
return renderResult(Global.TRUE, text("保存用户''{0}''成功", empUser.getUserName()));
}
/**
* 验证工号是否有效
* @param oldName
* @param name
* @return
*/
@RequiresPermissions("user")
@RequestMapping(value = "checkEmpNo")
@ResponseBody
public String checkEmpNo(String oldEmpNo, @RequestParam("employee.empNo") String empNo) {
Employee employee = new Employee();
employee.setEmpNo(empNo);
if (empNo != null && empNo.equals(oldEmpNo)) {
return Global.TRUE;
} else if (empNo != null && employeeService.getByEmpNo(employee) == null) {
return Global.TRUE;
}
return Global.FALSE;
}
/**
* 导出用户数据

View File

@@ -0,0 +1,7 @@
-- 员工表新增工号字段
ALTER TABLE ${_prefix}sys_employee ADD emp_no varchar(100) NULL;
-- 新增 BPM 模块
INSERT INTO ${_prefix}sys_module(module_code, module_name, description, main_class_name, current_version, upgrade_info, status, create_by, create_date, update_by, update_date, remarks)
VALUES ('bpm', '业务流程', '流程设计器、流程监管控制、流程办理、流程追踪', 'com.jeesite.modules.bpm.entity.BpmEntity', '4.1.8', NULL, '0', 'system', now(), 'system', now(), NULL);

View File

@@ -0,0 +1,8 @@
-- 员工表新增工号字段
ALTER TABLE `${_prefix}sys_employee`
ADD COLUMN `emp_no` varchar(100) NULL COMMENT '员工工号' AFTER `emp_code`;
-- 新增 BPM 模块
INSERT INTO ${_prefix}sys_module(module_code, module_name, description, main_class_name, current_version, upgrade_info, status, create_by, create_date, update_by, update_date, remarks)
VALUES ('bpm', '业务流程', '流程设计器、流程监管控制、流程办理、流程追踪', 'com.jeesite.modules.bpm.entity.BpmEntity', '4.1.8', NULL, '0', 'system', now(), 'system', now(), NULL);

View File

@@ -1,7 +1,7 @@
-- 菜单表增加菜单标题(页签的名字)
ALTER TABLE ${_prefix}sys_menu ADD menu_title varchar2(100) NULL;
COMMENT ON COLUMN js_sys_menu.menu_title IS '菜单标题';
COMMENT ON COLUMN ${_prefix}sys_menu.menu_title IS '菜单标题';
-- 角色业务范围字典数据
INSERT INTO ${_prefix}sys_dict_type(id, dict_name, dict_type, is_sys, status, create_by, create_date, update_by, update_date, remarks)
@@ -11,7 +11,7 @@ VALUES ('1149344606834356224', '0', '0,', 30, '0000000030,', '1', 0, '组织管
-- 角色表增加适应业务范围
ALTER TABLE ${_prefix}sys_role ADD biz_scope varchar2(255) NULL;
COMMENT ON COLUMN js_sys_role.biz_scope IS '适应业务范围(不同的功能,不同的数据权限支持)';
COMMENT ON COLUMN ${_prefix}sys_role.biz_scope IS '适应业务范围(不同的功能,不同的数据权限支持)';
-- 角色表增加 20 个扩展字段
ALTER TABLE ${_prefix}sys_role
@@ -35,23 +35,23 @@ ADD (extend_s1 nvarchar2(500),
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp);
COMMENT ON COLUMN js_sys_role.extend_s1 IS '扩展 String 1';
COMMENT ON COLUMN js_sys_role.extend_s2 IS '扩展 String 2';
COMMENT ON COLUMN js_sys_role.extend_s3 IS '扩展 String 3';
COMMENT ON COLUMN js_sys_role.extend_s4 IS '扩展 String 4';
COMMENT ON COLUMN js_sys_role.extend_s5 IS '扩展 String 5';
COMMENT ON COLUMN js_sys_role.extend_s6 IS '扩展 String 6';
COMMENT ON COLUMN js_sys_role.extend_s7 IS '扩展 String 7';
COMMENT ON COLUMN js_sys_role.extend_s8 IS '扩展 String 8';
COMMENT ON COLUMN js_sys_role.extend_i1 IS '扩展 Integer 1';
COMMENT ON COLUMN js_sys_role.extend_i2 IS '扩展 Integer 2';
COMMENT ON COLUMN js_sys_role.extend_i3 IS '扩展 Integer 3';
COMMENT ON COLUMN js_sys_role.extend_i4 IS '扩展 Integer 4';
COMMENT ON COLUMN js_sys_role.extend_f1 IS '扩展 Float 1';
COMMENT ON COLUMN js_sys_role.extend_f2 IS '扩展 Float 2';
COMMENT ON COLUMN js_sys_role.extend_f3 IS '扩展 Float 3';
COMMENT ON COLUMN js_sys_role.extend_f4 IS '扩展 Float 4';
COMMENT ON COLUMN js_sys_role.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_sys_role.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_sys_role.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_sys_role.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN ${_prefix}sys_role.extend_s1 IS '扩展 String 1';
COMMENT ON COLUMN ${_prefix}sys_role.extend_s2 IS '扩展 String 2';
COMMENT ON COLUMN ${_prefix}sys_role.extend_s3 IS '扩展 String 3';
COMMENT ON COLUMN ${_prefix}sys_role.extend_s4 IS '扩展 String 4';
COMMENT ON COLUMN ${_prefix}sys_role.extend_s5 IS '扩展 String 5';
COMMENT ON COLUMN ${_prefix}sys_role.extend_s6 IS '扩展 String 6';
COMMENT ON COLUMN ${_prefix}sys_role.extend_s7 IS '扩展 String 7';
COMMENT ON COLUMN ${_prefix}sys_role.extend_s8 IS '扩展 String 8';
COMMENT ON COLUMN ${_prefix}sys_role.extend_i1 IS '扩展 Integer 1';
COMMENT ON COLUMN ${_prefix}sys_role.extend_i2 IS '扩展 Integer 2';
COMMENT ON COLUMN ${_prefix}sys_role.extend_i3 IS '扩展 Integer 3';
COMMENT ON COLUMN ${_prefix}sys_role.extend_i4 IS '扩展 Integer 4';
COMMENT ON COLUMN ${_prefix}sys_role.extend_f1 IS '扩展 Float 1';
COMMENT ON COLUMN ${_prefix}sys_role.extend_f2 IS '扩展 Float 2';
COMMENT ON COLUMN ${_prefix}sys_role.extend_f3 IS '扩展 Float 3';
COMMENT ON COLUMN ${_prefix}sys_role.extend_f4 IS '扩展 Float 4';
COMMENT ON COLUMN ${_prefix}sys_role.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN ${_prefix}sys_role.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN ${_prefix}sys_role.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN ${_prefix}sys_role.extend_d4 IS '扩展 Date 4';

View File

@@ -0,0 +1,8 @@
-- 员工表新增工号字段
ALTER TABLE ${_prefix}sys_employee ADD emp_no varchar2(100) NULL;
COMMENT ON COLUMN ${_prefix}sys_employee.emp_no IS '员工工号';
-- 新增 BPM 模块
INSERT INTO ${_prefix}sys_module(module_code, module_name, description, main_class_name, current_version, upgrade_info, status, create_by, create_date, update_by, update_date, remarks)
VALUES ('bpm', '业务流程', '流程设计器、流程监管控制、流程办理、流程追踪', 'com.jeesite.modules.bpm.entity.BpmEntity', '4.1.8', NULL, '0', 'system', sysdate, 'system', sysdate, NULL);

View File

@@ -1,7 +1,7 @@
-- 菜单表增加菜单标题(页签的名字)
ALTER TABLE ${_prefix}sys_menu ADD menu_title varchar(100) NULL;
COMMENT ON COLUMN js_sys_menu.menu_title IS '菜单标题';
COMMENT ON COLUMN ${_prefix}sys_menu.menu_title IS '菜单标题';
-- 角色业务范围字典数据
INSERT INTO ${_prefix}sys_dict_type(id, dict_name, dict_type, is_sys, status, create_by, create_date, update_by, update_date, remarks)
@@ -11,7 +11,7 @@ VALUES ('1149344606834356224', '0', '0,', 30, '0000000030,', '1', 0, '组织管
-- 角色表增加适应业务范围
ALTER TABLE ${_prefix}sys_role ADD COLUMN biz_scope varchar(255) NULL;
COMMENT ON COLUMN js_sys_role.biz_scope IS '适应业务范围(不同的功能,不同的数据权限支持)';
COMMENT ON COLUMN ${_prefix}sys_role.biz_scope IS '适应业务范围(不同的功能,不同的数据权限支持)';
-- 角色表增加 20 个扩展字段
ALTER TABLE ${_prefix}sys_role
@@ -35,23 +35,23 @@ ADD COLUMN extend_d1 timestamp,
ADD COLUMN extend_d2 timestamp,
ADD COLUMN extend_d3 timestamp,
ADD COLUMN extend_d4 timestamp;
COMMENT ON COLUMN js_sys_role.extend_s1 IS '扩展 String 1';
COMMENT ON COLUMN js_sys_role.extend_s2 IS '扩展 String 2';
COMMENT ON COLUMN js_sys_role.extend_s3 IS '扩展 String 3';
COMMENT ON COLUMN js_sys_role.extend_s4 IS '扩展 String 4';
COMMENT ON COLUMN js_sys_role.extend_s5 IS '扩展 String 5';
COMMENT ON COLUMN js_sys_role.extend_s6 IS '扩展 String 6';
COMMENT ON COLUMN js_sys_role.extend_s7 IS '扩展 String 7';
COMMENT ON COLUMN js_sys_role.extend_s8 IS '扩展 String 8';
COMMENT ON COLUMN js_sys_role.extend_i1 IS '扩展 Integer 1';
COMMENT ON COLUMN js_sys_role.extend_i2 IS '扩展 Integer 2';
COMMENT ON COLUMN js_sys_role.extend_i3 IS '扩展 Integer 3';
COMMENT ON COLUMN js_sys_role.extend_i4 IS '扩展 Integer 4';
COMMENT ON COLUMN js_sys_role.extend_f1 IS '扩展 Float 1';
COMMENT ON COLUMN js_sys_role.extend_f2 IS '扩展 Float 2';
COMMENT ON COLUMN js_sys_role.extend_f3 IS '扩展 Float 3';
COMMENT ON COLUMN js_sys_role.extend_f4 IS '扩展 Float 4';
COMMENT ON COLUMN js_sys_role.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_sys_role.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_sys_role.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_sys_role.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN ${_prefix}sys_role.extend_s1 IS '扩展 String 1';
COMMENT ON COLUMN ${_prefix}sys_role.extend_s2 IS '扩展 String 2';
COMMENT ON COLUMN ${_prefix}sys_role.extend_s3 IS '扩展 String 3';
COMMENT ON COLUMN ${_prefix}sys_role.extend_s4 IS '扩展 String 4';
COMMENT ON COLUMN ${_prefix}sys_role.extend_s5 IS '扩展 String 5';
COMMENT ON COLUMN ${_prefix}sys_role.extend_s6 IS '扩展 String 6';
COMMENT ON COLUMN ${_prefix}sys_role.extend_s7 IS '扩展 String 7';
COMMENT ON COLUMN ${_prefix}sys_role.extend_s8 IS '扩展 String 8';
COMMENT ON COLUMN ${_prefix}sys_role.extend_i1 IS '扩展 Integer 1';
COMMENT ON COLUMN ${_prefix}sys_role.extend_i2 IS '扩展 Integer 2';
COMMENT ON COLUMN ${_prefix}sys_role.extend_i3 IS '扩展 Integer 3';
COMMENT ON COLUMN ${_prefix}sys_role.extend_i4 IS '扩展 Integer 4';
COMMENT ON COLUMN ${_prefix}sys_role.extend_f1 IS '扩展 Float 1';
COMMENT ON COLUMN ${_prefix}sys_role.extend_f2 IS '扩展 Float 2';
COMMENT ON COLUMN ${_prefix}sys_role.extend_f3 IS '扩展 Float 3';
COMMENT ON COLUMN ${_prefix}sys_role.extend_f4 IS '扩展 Float 4';
COMMENT ON COLUMN ${_prefix}sys_role.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN ${_prefix}sys_role.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN ${_prefix}sys_role.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN ${_prefix}sys_role.extend_d4 IS '扩展 Date 4';

View File

@@ -0,0 +1,8 @@
-- 员工表新增工号字段
ALTER TABLE ${_prefix}sys_employee ADD emp_no varchar(100) NULL;
COMMENT ON COLUMN ${_prefix}sys_employee.emp_no IS '员工工号';
-- 新增 BPM 模块
INSERT INTO ${_prefix}sys_module(module_code, module_name, description, main_class_name, current_version, upgrade_info, status, create_by, create_date, update_by, update_date, remarks)
VALUES ('bpm', '业务流程', '流程设计器、流程监管控制、流程办理、流程追踪', 'com.jeesite.modules.bpm.entity.BpmEntity', '4.1.8', NULL, '0', 'system', now(), 'system', now(), NULL);

View File

@@ -121,9 +121,11 @@
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required hide">*</span> ${text('员工号')}<i class="fa icon-question hide"></i></label>
<span class="required hide">*</span> ${text('员工号')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:input path="employee.empCode" maxlength="32" readonly="${!empUser.isNewRecord}" class="form-control userName"/>
<#form:input path="employee.empNo" maxlength="32" class="form-control userName"
remote="${ctx}/sys/empUser/checkEmpNo?oldEmpNo=${empUser.employee.empNo}"
data-msg-remote="${text('员工工号已存在')}"/>
</div>
</div>
</div>
@@ -294,6 +296,10 @@ $("#inputForm").validate({
<% if(op == 'add' || op == 'auth') { // 获取选中角色 %>
$("#userRoleString").val(roleGrid.dataGrid('getSelectRows').join(','));
<% } %>
var empNo = $('#employee_empNo').val();
if (empNo == ''){
$('#employee_empNo').val($('#loginCode').val());
}
js.ajaxSubmitForm($(form), function(data){
js.showMessage(data.message);
if(data.result == Global.TRUE){