diff --git a/erp_web/pages/manage/depot.html b/erp_web/pages/manage/depot.html index f7027f24..2dc19289 100644 --- a/erp_web/pages/manage/depot.html +++ b/erp_web/pages/manage/depot.html @@ -121,6 +121,17 @@ } }); } + /** + * 2019-03-08 + * 对于undefined字段直接拼接不友好的情况做特殊处理 + * 将undefined转为''后再拼接 + * */ + function transferUndefined(obj){ + if(obj==undefined){ + return ''; + } + return obj; + } //初始化表格数据 function initTableData() { @@ -153,7 +164,7 @@ formatter: function (value, rec) { var str = ''; var rowInfo = rec.id + 'AaBb' + rec.name + 'AaBb' + rec.sort + 'AaBb' + rec.remark + 'AaBb' - + rec.address + 'AaBb' + rec.warehousing + 'AaBb' + rec.truckage+rec.principalName+rec.principal; + + rec.address + 'AaBb' + rec.warehousing + 'AaBb' + rec.truckage+ transferUndefined(rec.principalName)+transferUndefined(rec.principal); str += '   '; str += ''; return str; diff --git a/erp_web/pages/manage/organization.html b/erp_web/pages/manage/organization.html index 4d39e0fe..ef724ee0 100644 --- a/erp_web/pages/manage/organization.html +++ b/erp_web/pages/manage/organization.html @@ -36,6 +36,7 @@ + @@ -63,8 +64,12 @@ 状态 - + @@ -169,6 +174,8 @@ $("#orgStopTime").val(""); $("#remark").val(""); $("#id").val(""); + //机构父级选择 + $("#selectType").val("orgParent"); url = '/organization/addOrganization'; } function editOrganization(node) { @@ -202,6 +209,8 @@ $("#orgStopTime").val(res.data.orgStopTime); $("#remark").val(res.data.remark); $("#id").val(res.data.id); + //机构父级选择 + $("#selectType").val("orgParent"); url = '/organization/editOrganization'; } }, diff --git a/erp_web/pages/manage/organization_forselect.html b/erp_web/pages/manage/organization_forselect.html index 0d889a92..6050b4d6 100644 --- a/erp_web/pages/manage/organization_forselect.html +++ b/erp_web/pages/manage/organization_forselect.html @@ -33,9 +33,14 @@ }); function forSelectOrganization(node) { - console.log(node); - $("#orgParentName").val(node.text); - $("#orgParentNo").val(node.attributes); + var selectType=$("#selectType").val(); + if(selectType=='orgParent'){ + $("#orgParentName").val(node.text); + $("#orgParentNo").val(node.attributes); + }else if(selectType=='org'){ + $("#orgAbr").val(node.text); + $("#orgaId").val(node.id); + } $('#forSelectOrganizationDlg').dialog('close'); } }); diff --git a/erp_web/pages/manage/user.html b/erp_web/pages/manage/user.html index 8ef2eadd..7008be41 100644 --- a/erp_web/pages/manage/user.html +++ b/erp_web/pages/manage/user.html @@ -62,15 +62,24 @@ data-options="required:true,validType:'length[2,15]'" style="width: 120px;height: 20px"/> 初始密码:123456 +
+ + + + + + + +
+
+ + +
-
- - -
@@ -96,6 +105,9 @@ 取消
+
+
\ No newline at end of file diff --git a/sql/jsh_erp.sql b/sql/jsh_erp.sql index 6342e6c3..597bd2e6 100644 --- a/sql/jsh_erp.sql +++ b/sql/jsh_erp.sql @@ -1353,4 +1353,93 @@ where Id = 5; -- 改状态字段的类型,增加关联单据字段 -- ---------------------------- alter table jsh_depothead change Status Status varchar(1) DEFAULT '0' COMMENT '状态,0未审核、1已审核、2已转采购|销售'; -alter table jsh_depothead add `LinkNumber` varchar(50) DEFAULT null COMMENT '关联订单号'; \ No newline at end of file +alter table jsh_depothead add `LinkNumber` varchar(50) DEFAULT null COMMENT '关联订单号'; +-- ---------------------------- +-- 时间:2019年3月12日 +-- version:1.0.9 +-- 此次更新 +-- 1、根据本地用户表中现有部门生成机构表数据,同时重建机构和用户的关联关系 +-- 特别提醒:之后的sql都是在之前基础上迭代,可以对已存在的系统进行数据保留更新 +-- ---------------------------- +DROP FUNCTION IF EXISTS `_buildOrgAndOrgUserRel`; +DELIMITER ;; +CREATE FUNCTION `_buildOrgAndOrgUserRel` (name varchar(50)) RETURNS mediumtext CHARSET utf8 +begin + +declare _org_full_name varchar(500); -- 机构全称 +declare _org_abr varchar(20); -- 机构简称 +declare _sort int default 0; +declare _success_msg varchar(50) default '重建机构及机构用户关系成功'; -- 机构全称 + -- 遍历数据结束标志 +declare done int DEFAULT 0; +-- 获取用户表中唯一的部门信息列表 +declare orgCur cursor for select distinct department from jsh_user where department!='' and department is not null; + + -- 将结束标志绑定到游标 +declare continue handler for not found set done = 1; + -- 循环部门信息列表在机构表插入数据 + -- 打开游标 + open orgCur; + -- 开始循环 + read_loop: loop + -- 提取游标里的数据,这里只有一个,多个的话也一样; + fetch orgCur into _org_full_name; + -- 声明结束的时候 + if done=1 then + leave read_loop; + end if; + -- 这里做你想做的循环的事件 + if length(_org_full_name)<=20 then + set _org_abr=_org_full_name; + else + set _org_abr=left(_org_full_name,20); + end if; + set _sort=_sort+1; + insert into jsh_organization (org_full_name, org_abr, org_stcd, org_parent_no, sort, remark) + values (_org_full_name,_org_abr, '1', '01', _sort, '机构表初始化'); + begin + declare _userId bigint; + declare _orgId bigint; + -- 遍历数据结束标志 + declare ogrUserRelDone int DEFAULT 0; + -- 根据用户表和机构表部门关联关系,重建用户和机构关联关系 + declare ogrUserRelCur cursor for select user.id as userId,org.id as orgId from jsh_user user,jsh_organization org + where 1=1 and user.department=org.org_full_name and user.department =_org_full_name; + -- 将结束标志绑定到游标 + declare continue handler for not found set ogrUserRelDone = 1; + -- 打开游标 + open ogrUserRelCur; + -- 开始循环 + rel_read_loop: loop + -- 提取游标里的数据,这里只有一个,多个的话也一样; + fetch ogrUserRelCur into _userId,_orgId; + -- 声明结束的时候 + if ogrUserRelDone=1 then + leave rel_read_loop; + end if; + insert into `jsh_orga_user_rel`(`orga_id`, `user_id`, `delete_flag`) VALUES (_orgId,_userId,'0'); + + end loop rel_read_loop; + -- 关闭游标 + close ogrUserRelCur; + end; + + end loop read_loop; + -- 关闭游标 + close orgCur; + +-- 清空用户表中的部门信息 +update jsh_user set department=null; + +return _success_msg; +end +;; +DELIMITER ; +-- ---------------------------- +-- 初始化机构数据,重建机构用户关系 +-- ---------------------------- +select _buildOrgAndOrgUserRel('初始化机构数据,重建机构用户关系') from dual; +-- ---------------------------- +-- 删除一次性函数 +-- ---------------------------- +DROP FUNCTION _buildOrgAndOrgUserRel; \ No newline at end of file diff --git a/sql/华夏ERP数据库设计汇总.xlsx b/sql/华夏ERP数据库设计汇总.xlsx index 535d907d..d4844b7b 100644 Binary files a/sql/华夏ERP数据库设计汇总.xlsx and b/sql/华夏ERP数据库设计汇总.xlsx differ diff --git a/src/main/java/com/jsh/erp/constants/BusinessConstants.java b/src/main/java/com/jsh/erp/constants/BusinessConstants.java index bb264eb8..e9fb5f21 100644 --- a/src/main/java/com/jsh/erp/constants/BusinessConstants.java +++ b/src/main/java/com/jsh/erp/constants/BusinessConstants.java @@ -105,6 +105,30 @@ public class BusinessConstants { * 根机构编号默认为01 * */ public static final String ORGANIZATION_ROOT_NO = "01"; + /** + * 新增用户默认密码 + * */ + public static final String USER_DEFAULT_PASSWORD = "123456"; + /** + * 用户是否系统自带 + * 0、非系统自带,1系统自带 + * */ + public static final byte USER_NOT_SYSTEM = 0; + public static final byte USER_IS_SYSTEM = 1; + /** + * 用户是否为管理者 + * 0、管理者,1员工 + * */ + public static final byte USER_IS_MANAGER = 0; + public static final byte USER_NOT_MANAGER = 1; + /** + * 用户状态 + * 0:正常,1:删除,2封禁 + * */ + public static final byte USER_STATUS_NORMAL = 0; + public static final byte USER_STATUS_DELETE = 1; + public static final byte USER_STATUS_BANNED = 2; + diff --git a/src/main/java/com/jsh/erp/constants/ExceptionConstants.java b/src/main/java/com/jsh/erp/constants/ExceptionConstants.java index 4f538bd2..4be7fd17 100644 --- a/src/main/java/com/jsh/erp/constants/ExceptionConstants.java +++ b/src/main/java/com/jsh/erp/constants/ExceptionConstants.java @@ -23,22 +23,44 @@ public class ExceptionConstants { **/ public static final int SERVICE_SYSTEM_ERROR_CODE = 500; public static final String SERVICE_SYSTEM_ERROR_MSG = "未知异常"; + /** + * 用户信息 + * type = 5 + * */ + //添加用户信息失败 + public static final int USER_ADD_FAILED_CODE = 500000; + public static final String USER_ADD_FAILED_MSG = "添加用户信息失败"; + //删除用户信息失败 + public static final int USER_DELETE_FAILED_CODE = 500001; + public static final String USER_DELETE_FAILED_MSG = "删除用户信息失败"; + //修改用户信息失败 + public static final int USER_EDIT_FAILED_CODE = 500002; + public static final String USER_EDIT_FAILED_MSG = "修改用户信息失败"; + //用户名已存在 + public static final int USER_USER_NAME_ALREADY_EXISTS_CODE = 500003; + public static final String USER_USER_NAME_ALREADY_EXISTS_MSG = "用户名已存在"; + //登录名已存在 + public static final int USER_LOGIN_NAME_ALREADY_EXISTS_CODE = 500003; + public static final String USER_LOGIN_NAME_ALREADY_EXISTS_MSG = "登录名已存在"; + + /** - * 序列号 - * type = 105 + * 商品类别信息 + * type = 75 * */ - /**序列号已存在*/ - public static final int SERIAL_NUMBERE_ALREADY_EXISTS_CODE = 10500000; - public static final String SERIAL_NUMBERE_ALREADY_EXISTS_MSG = "序列号已存在"; - /**序列号不能为为空*/ - public static final int SERIAL_NUMBERE_NOT_BE_EMPTY_CODE = 10500001; - public static final String SERIAL_NUMBERE_NOT_BE_EMPTY_MSG = "序列号不能为为空"; - /**商品%s下序列号不充足,请补充后重试*/ - public static final int MATERIAL_SERIAL_NUMBERE_NOT_ENOUGH_CODE = 10500002; - public static final String MATERIAL_SERIAL_NUMBERE_NOT_ENOUGH_MSG = "商品:%s下序列号不充足,请补充后重试"; - - + //添加商品类别信息失败 + public static final int MATERIAL_CATEGORY_ADD_FAILED_CODE = 7500000; + public static final String MATERIAL_CATEGORY_ADD_FAILED_MSG = "添加商品类别信息失败"; + //删除商品类别信息失败 + public static final int MATERIAL_CATEGORY_DELETE_FAILED_CODE = 7500001; + public static final String MATERIAL_CATEGORY_DELETE_FAILED_MSG = "删除商品类别信息失败"; + //修改商品类别信息失败 + public static final int MATERIAL_CATEGORY_EDIT_FAILED_CODE = 7500002; + public static final String MATERIAL_CATEGORY_EDIT_FAILED_MSG = "添加商品类别信息失败"; + //商品类别编号已存在 + public static final int MATERIAL_CATEGORY_SERIAL_ALREADY_EXISTS_CODE = 7500003; + public static final String MATERIAL_CATEGORY_SERIAL_ALREADY_EXISTS_MSG = "商品类别编号已存在"; /** * 商品信息 @@ -59,22 +81,20 @@ public class ExceptionConstants { //商品库存不足 public static final int MATERIAL_STOCK_NOT_ENOUGH_CODE = 8000004; public static final String MATERIAL_STOCK_NOT_ENOUGH_MSG = "商品:%s库存不足"; + /** - * 商品类别信息 - * type = 75 + * 序列号 + * type = 105 * */ - //添加商品类别信息失败 - public static final int MATERIAL_CATEGORY_ADD_FAILED_CODE = 7500000; - public static final String MATERIAL_CATEGORY_ADD_FAILED_MSG = "添加商品类别信息失败"; - //删除商品类别信息失败 - public static final int MATERIAL_CATEGORY_DELETE_FAILED_CODE = 7500001; - public static final String MATERIAL_CATEGORY_DELETE_FAILED_MSG = "删除商品类别信息失败"; - //修改商品类别信息失败 - public static final int MATERIAL_CATEGORY_EDIT_FAILED_CODE = 7500002; - public static final String MATERIAL_CATEGORY_EDIT_FAILED_MSG = "添加商品类别信息失败"; - //商品类别编号已存在 - public static final int MATERIAL_CATEGORY_SERIAL_ALREADY_EXISTS_CODE = 7500003; - public static final String MATERIAL_CATEGORY_SERIAL_ALREADY_EXISTS_MSG = "商品类别编号已存在"; + /**序列号已存在*/ + public static final int SERIAL_NUMBERE_ALREADY_EXISTS_CODE = 10500000; + public static final String SERIAL_NUMBERE_ALREADY_EXISTS_MSG = "序列号已存在"; + /**序列号不能为为空*/ + public static final int SERIAL_NUMBERE_NOT_BE_EMPTY_CODE = 10500001; + public static final String SERIAL_NUMBERE_NOT_BE_EMPTY_MSG = "序列号不能为为空"; + /**商品%s下序列号不充足,请补充后重试*/ + public static final int MATERIAL_SERIAL_NUMBERE_NOT_ENOUGH_CODE = 10500002; + public static final String MATERIAL_SERIAL_NUMBERE_NOT_ENOUGH_MSG = "商品:%s下序列号不充足,请补充后重试"; /** * 机构 * type = 110 @@ -97,6 +117,19 @@ public class ExceptionConstants { //根机构不允许修改 public static final int ORGANIZATION_ROOT_NOT_ALLOWED_EDIT_CODE = 11000005; public static final String ORGANIZATION_ROOT_NOT_ALLOWED_EDIT_MSG = "根机构不允许修改"; + /** + * 机构用户关联关系 + * type = 115 + * */ + //添加机构用户关联关系失败 + public static final int ORGA_USER_REL_ADD_FAILED_CODE = 11500000; + public static final String ORGA_USER_REL_ADD_FAILED_MSG = "添加机构用户关联关系失败"; + //删除机构用户关联关系失败 + public static final int ORGA_USER_REL_DELETE_FAILED_CODE = 11500001; + public static final String ORGA_USER_REL_DELETE_FAILED_MSG = "删除机构用户关联关系失败"; + //修改机构用户关联关系失败 + public static final int ORGA_USER_REL_EDIT_FAILED_CODE = 11500002; + public static final String ORGA_USER_REL_EDIT_FAILED_MSG = "修改机构用户关联关系失败"; /** * 标准正常返回/操作成功返回 diff --git a/src/main/java/com/jsh/erp/controller/UserController.java b/src/main/java/com/jsh/erp/controller/UserController.java index 0581ae38..5fe1316e 100644 --- a/src/main/java/com/jsh/erp/controller/UserController.java +++ b/src/main/java/com/jsh/erp/controller/UserController.java @@ -1,6 +1,15 @@ package com.jsh.erp.controller; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.jsh.erp.constants.BusinessConstants; +import com.jsh.erp.constants.ExceptionConstants; +import com.jsh.erp.datasource.entities.DepotEx; +import com.jsh.erp.datasource.entities.SerialNumberEx; import com.jsh.erp.datasource.entities.User; +import com.jsh.erp.datasource.entities.UserEx; import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.*; import org.slf4j.Logger; @@ -12,9 +21,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.security.NoSuchAlgorithmException; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; + import static com.jsh.erp.utils.ResponseJsonUtil.returnJson; /** @@ -209,4 +217,99 @@ public class UserController { } return res; } + /** + * create by: cjl + * description: + * 查询分页用户列表 + * create time: 2019/3/8 15:08 + * @Param: pageSize +  * @Param: currentPage +  * @Param: search + * @return java.lang.String + */ + @GetMapping(value = "/getUserList") + public String getUserList(@RequestParam(value = Constants.PAGE_SIZE, required = false) Integer pageSize, + @RequestParam(value = Constants.CURRENT_PAGE, required = false) Integer currentPage, + @RequestParam(value = Constants.SEARCH, required = false) String search)throws Exception { + + Map parameterMap = new HashMap(); + //查询参数 + JSONObject obj= JSON.parseObject(search); + Set key= obj.keySet(); + for(String keyEach: key){ + parameterMap.put(keyEach,obj.getString(keyEach)); + } + PageQueryInfo queryInfo = new PageQueryInfo(); + Map objectMap = new HashMap(); + if (pageSize == null || pageSize <= 0) { + pageSize = BusinessConstants.DEFAULT_PAGINATION_PAGE_SIZE; + } + if (currentPage == null || currentPage <= 0) { + currentPage = BusinessConstants.DEFAULT_PAGINATION_PAGE_NUMBER; + } + PageHelper.startPage(currentPage,pageSize,false); + List list = userService.getUserList(parameterMap); + //获取分页查询后的数据 + PageInfo pageInfo = new PageInfo<>(list); + objectMap.put("page", queryInfo); + if (list == null) { + queryInfo.setRows(new ArrayList()); + queryInfo.setTotal(BusinessConstants.DEFAULT_LIST_NULL_NUMBER); + return returnJson(objectMap, "查找不到数据", ErpInfo.OK.code); + } + queryInfo.setRows(list); + queryInfo.setTotal(pageInfo.getTotal()); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * create by: cjl + * description: + * 新增用户及机构和用户关系 + * create time: 2019/3/8 16:06 + * @Param: beanJson + * @return java.lang.Object + */ + @PostMapping("/addUser") + @ResponseBody + public Object addUser(@RequestParam("info") String beanJson)throws Exception{ + + JSONObject result = ExceptionConstants.standardSuccess(); + UserEx ue= JSON.parseObject(beanJson, UserEx.class); + userService.addUserAndOrgUserRel(ue); + return result; + + } + /** + * create by: cjl + * description: + * 修改用户及机构和用户关系 + * create time: 2019/3/8 16:06 + * @Param: beanJson + * @return java.lang.Object + */ + @PostMapping("/updateUser") + @ResponseBody + public Object updateUser(@RequestParam("info") String beanJson,@RequestParam("id") Long id)throws Exception{ + JSONObject result = ExceptionConstants.standardSuccess(); + UserEx ue= JSON.parseObject(beanJson, UserEx.class); + ue.setId(id); + userService.updateUserAndOrgUserRel(ue); + return result; + } + @PostMapping("/deleteUser") + @ResponseBody + public Object deleteUser(@RequestParam("ids") String ids)throws Exception{ + JSONObject result = ExceptionConstants.standardSuccess(); + userService.batDeleteUser(ids); + return result; + } + @PostMapping("/batchDeleteUser") + @ResponseBody + public Object batchDeleteUser(@RequestParam("ids") String ids)throws Exception{ + JSONObject result = ExceptionConstants.standardSuccess(); + userService.batDeleteUser(ids); + return result; + } + } diff --git a/src/main/java/com/jsh/erp/datasource/entities/OrgaUserRelEx.java b/src/main/java/com/jsh/erp/datasource/entities/OrgaUserRelEx.java new file mode 100644 index 00000000..c6bdf8c6 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/OrgaUserRelEx.java @@ -0,0 +1,10 @@ +package com.jsh.erp.datasource.entities; + +/** + * Description + * + * @Author: cjl + * @Date: 2019/3/12 10:09 + */ +public class OrgaUserRelEx extends OrgaUserRel { +} diff --git a/src/main/java/com/jsh/erp/datasource/entities/UserEx.java b/src/main/java/com/jsh/erp/datasource/entities/UserEx.java new file mode 100644 index 00000000..6cd15893 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/UserEx.java @@ -0,0 +1,50 @@ +package com.jsh.erp.datasource.entities; + +/** + * Description + * + * @Author: cjl + * @Date: 2019/3/8 15:12 + */ +public class UserEx extends User{ + //机构简称 + private String orgAbr; + //机构id + private Long orgaId; + //用户在部门中排序 + private String userBlngOrgaDsplSeq; + //机构用户关联关系id + private Long orgaUserRelId; + + public String getOrgAbr() { + return orgAbr; + } + + public void setOrgAbr(String orgAbr) { + this.orgAbr = orgAbr; + } + + public Long getOrgaId() { + return orgaId; + } + + public void setOrgaId(Long orgaId) { + this.orgaId = orgaId; + } + + public String getUserBlngOrgaDsplSeq() { + return userBlngOrgaDsplSeq; + } + + public void setUserBlngOrgaDsplSeq(String userBlngOrgaDsplSeq) { + this.userBlngOrgaDsplSeq = userBlngOrgaDsplSeq; + } + + public Long getOrgaUserRelId() { + return orgaUserRelId; + } + + public void setOrgaUserRelId(Long orgaUserRelId) { + this.orgaUserRelId = orgaUserRelId; + } +} diff --git a/src/main/java/com/jsh/erp/datasource/mappers/OrgaUserRelMapperEx.java b/src/main/java/com/jsh/erp/datasource/mappers/OrgaUserRelMapperEx.java new file mode 100644 index 00000000..7a2017f7 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/OrgaUserRelMapperEx.java @@ -0,0 +1,14 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.OrgaUserRel; /** + * Description + * + * @Author: cjl + * @Date: 2019/3/12 9:13 + */ +public interface OrgaUserRelMapperEx { + + int addOrgaUserRel(OrgaUserRel orgaUserRel); + + int updateOrgaUserRel(OrgaUserRel orgaUserRel); +} diff --git a/src/main/java/com/jsh/erp/datasource/mappers/UserMapperEx.java b/src/main/java/com/jsh/erp/datasource/mappers/UserMapperEx.java index 167c098e..30ad71ee 100644 --- a/src/main/java/com/jsh/erp/datasource/mappers/UserMapperEx.java +++ b/src/main/java/com/jsh/erp/datasource/mappers/UserMapperEx.java @@ -1,10 +1,13 @@ package com.jsh.erp.datasource.mappers; import com.jsh.erp.datasource.entities.User; +import com.jsh.erp.datasource.entities.UserEx; import com.jsh.erp.datasource.entities.UserExample; import org.apache.ibatis.annotations.Param; +import java.util.Date; import java.util.List; +import java.util.Map; public interface UserMapperEx { @@ -17,4 +20,15 @@ public interface UserMapperEx { Long countsByUser( @Param("userName") String userName, @Param("loginName") String loginName); + + List getUserList(Map parameterMap); + + int addUser(UserEx ue); + + int updateUser(UserEx ue); + + List getUserListByUserNameOrLoginName(@Param("userName") String userName, + @Param("loginame") String loginame); + + int batDeleteOrUpdateUser(@Param("ids") String ids[], @Param("status") byte status); } \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/service/orgaUserRel/OrgaUserRelComponent.java b/src/main/java/com/jsh/erp/service/orgaUserRel/OrgaUserRelComponent.java new file mode 100644 index 00000000..9ed17861 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/orgaUserRel/OrgaUserRelComponent.java @@ -0,0 +1,65 @@ +package com.jsh.erp.service.orgaUserRel; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.service.organization.OrganizationResource; +import com.jsh.erp.service.organization.OrganizationService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +/** + * Description + * + * @Author: cjl + * @Date: 2019/3/11 18:10 + */ +@Service(value = "orgaUserRel_component") +@OrgaUserRelResource +public class OrgaUserRelComponent implements ICommonQuery { + @Resource + private OrgaUserRelService orgaUserRelService; + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map parameterMap) { + return getOrgaUserRelList(parameterMap); + } + private List getOrgaUserRelList(Map map) { + return null; + } + @Override + public Long counts(Map parameterMap) { + return null; + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return orgaUserRelService.insertOrgaUserRel(beanJson,request); + } + + @Override + public int update(String beanJson, Long id) { + return orgaUserRelService.updateOrgaUserRel(beanJson,id); + } + + @Override + public int delete(Long id) { + return orgaUserRelService.deleteOrgaUserRel(id); + } + + @Override + public int batchDelete(String ids) { + return orgaUserRelService.batchDeleteOrgaUserRel(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return 0; + } +} diff --git a/src/main/java/com/jsh/erp/service/orgaUserRel/OrgaUserRelResource.java b/src/main/java/com/jsh/erp/service/orgaUserRel/OrgaUserRelResource.java new file mode 100644 index 00000000..518f3e63 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/orgaUserRel/OrgaUserRelResource.java @@ -0,0 +1,19 @@ +package com.jsh.erp.service.orgaUserRel; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * Description + * 机构用户关系 + * @Author: cjl + * @Date: 2019/3/11 18:11 + */ +@ResourceInfo(value = "orgaUserRel", type = 115) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface OrgaUserRelResource { + +} diff --git a/src/main/java/com/jsh/erp/service/orgaUserRel/OrgaUserRelService.java b/src/main/java/com/jsh/erp/service/orgaUserRel/OrgaUserRelService.java new file mode 100644 index 00000000..bfc12e53 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/orgaUserRel/OrgaUserRelService.java @@ -0,0 +1,119 @@ +package com.jsh.erp.service.orgaUserRel; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.constants.BusinessConstants; +import com.jsh.erp.datasource.entities.*; +import com.jsh.erp.datasource.mappers.OrgaUserRelMapper; +import com.jsh.erp.datasource.mappers.OrgaUserRelMapperEx; +import com.jsh.erp.service.organization.OrganizationService; +import com.jsh.erp.service.user.UserService; +import com.jsh.erp.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Date; +import java.util.List; + +/** + * Description + * + * @Author: cjl + * @Date: 2019/3/11 18:11 + */ +@Service +public class OrgaUserRelService { + private Logger logger = LoggerFactory.getLogger(OrganizationService.class); + + @Resource + private OrgaUserRelMapper orgaUserRelMapper; + @Resource + private OrgaUserRelMapperEx orgaUserRelMapperEx; + @Resource + private UserService userService; + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertOrgaUserRel(String beanJson, HttpServletRequest request) { + OrgaUserRel orgaUserRel = JSONObject.parseObject(beanJson, OrgaUserRel.class); + return orgaUserRelMapper.insertSelective(orgaUserRel); + } + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateOrgaUserRel(String beanJson, Long id) { + OrgaUserRel orgaUserRel = JSONObject.parseObject(beanJson, OrgaUserRel.class); + orgaUserRel.setId(id); + return orgaUserRelMapper.updateByPrimaryKeySelective(orgaUserRel); + } + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteOrgaUserRel(Long id) { + return orgaUserRelMapper.deleteByPrimaryKey(id); + } + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteOrgaUserRel(String ids) { + List idList = StringUtil.strToLongList(ids); + OrgaUserRelExample example = new OrgaUserRelExample(); + example.createCriteria().andIdIn(idList); + return orgaUserRelMapper.deleteByExample(example); + } + /** + * create by: cjl + * description: + * 新增机构用户关联关系,反显id + * create time: 2019/3/12 9:40 + * @Param: orgaUserRel + * @return void + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public OrgaUserRel addOrgaUserRel(OrgaUserRel orgaUserRel) throws Exception{ + Date date = new Date(); + User userInfo=userService.getCurrentUser(); + //创建时间 + if(orgaUserRel.getCreateTime()==null){ + orgaUserRel.setCreateTime(date); + } + //创建人 + if(orgaUserRel.getCreator()==null){ + orgaUserRel.setCreator(userInfo==null?null:userInfo.getId()); + } + //更新时间 + if(orgaUserRel.getUpdateTime()==null){ + orgaUserRel.setUpdateTime(date); + } + //更新人 + if(orgaUserRel.getUpdater()==null){ + orgaUserRel.setUpdater(userInfo==null?null:userInfo.getId()); + } + orgaUserRel.setDeleteFlag(BusinessConstants.DELETE_FLAG_EXISTS); + int i=orgaUserRelMapperEx.addOrgaUserRel(orgaUserRel); + if(i>0){ + return orgaUserRel; + } + return null; + } + /** + * create by: cjl + * description: + * 更新机构用户关联关系 + * create time: 2019/3/12 9:40 + * @Param: orgaUserRel + * @return void + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public OrgaUserRel updateOrgaUserRel(OrgaUserRel orgaUserRel) { + User userInfo=userService.getCurrentUser(); + //更新时间 + if(orgaUserRel.getUpdateTime()==null){ + orgaUserRel.setUpdateTime(new Date()); + } + //更新人 + if(orgaUserRel.getUpdater()==null){ + orgaUserRel.setUpdater(userInfo==null?null:userInfo.getId()); + } + int i= orgaUserRelMapperEx.updateOrgaUserRel(orgaUserRel); + if(i>0){ + return orgaUserRel; + } + return null; + } +} diff --git a/src/main/java/com/jsh/erp/service/user/UserService.java b/src/main/java/com/jsh/erp/service/user/UserService.java index a2a3855b..4464a9d3 100644 --- a/src/main/java/com/jsh/erp/service/user/UserService.java +++ b/src/main/java/com/jsh/erp/service/user/UserService.java @@ -1,14 +1,24 @@ package com.jsh.erp.service.user; -import com.alibaba.fastjson.JSONArray; +import com.alibaba.druid.util.StringUtils; import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.constants.BusinessConstants; +import com.jsh.erp.constants.ExceptionConstants; +import com.jsh.erp.datasource.entities.OrgaUserRel; import com.jsh.erp.datasource.entities.User; +import com.jsh.erp.datasource.entities.UserEx; import com.jsh.erp.datasource.entities.UserExample; import com.jsh.erp.datasource.mappers.UserMapper; import com.jsh.erp.datasource.mappers.UserMapperEx; -import com.jsh.erp.utils.*; +import com.jsh.erp.exception.BusinessRunTimeException; +import com.jsh.erp.service.orgaUserRel.OrgaUserRelService; +import com.jsh.erp.utils.ExceptionCodeConstants; +import com.jsh.erp.utils.JshException; +import com.jsh.erp.utils.StringUtil; +import com.jsh.erp.utils.Tools; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.context.request.RequestContextHolder; @@ -17,6 +27,7 @@ import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.security.NoSuchAlgorithmException; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Objects; @@ -29,6 +40,8 @@ public class UserService { @Resource private UserMapperEx userMapperEx; + @Resource + private OrgaUserRelService orgaUserRelService; public User getUser(long id) { return userMapper.selectByPrimaryKey(id); @@ -187,4 +200,202 @@ public class UserService { HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); return (User)request.getSession().getAttribute("user"); } + + public List getUserList(Map parameterMap) throws Exception{ + return userMapperEx.getUserList(parameterMap); + } + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void addUserAndOrgUserRel(UserEx ue) throws Exception{ + //检查用户名和登录名 + checkUserNameAndLoginName(ue); + //新增用户信息 + ue= this.addUser(ue); + if(ue==null){ + logger.error("异常码[{}],异常提示[{}],参数,[{}]", + ExceptionConstants.USER_ADD_FAILED_CODE,ExceptionConstants.USER_ADD_FAILED_MSG); + throw new BusinessRunTimeException(ExceptionConstants.USER_ADD_FAILED_CODE, + ExceptionConstants.USER_ADD_FAILED_MSG); + } + if(ue.getOrgaId()==null){ + //如果没有选择机构,就不建机构和用户的关联关系 + return; + } + //新增用户和机构关联关系 + OrgaUserRel oul=new OrgaUserRel(); + //机构id + oul.setOrgaId(ue.getOrgaId()); + //用户id + oul.setUserId(ue.getId()); + //用户在机构中的排序 + oul.setUserBlngOrgaDsplSeq(ue.getUserBlngOrgaDsplSeq()); + + oul=orgaUserRelService.addOrgaUserRel(oul); + if(oul==null){ + logger.error("异常码[{}],异常提示[{}],参数,[{}]", + ExceptionConstants.ORGA_USER_REL_ADD_FAILED_CODE,ExceptionConstants.ORGA_USER_REL_ADD_FAILED_MSG); + throw new BusinessRunTimeException(ExceptionConstants.ORGA_USER_REL_ADD_FAILED_CODE, + ExceptionConstants.ORGA_USER_REL_ADD_FAILED_MSG); + } + } + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public UserEx addUser(UserEx ue) throws Exception{ + /** + * 新增用户默认设置 + * 1、密码默认123456 + * 2是否系统自带默认为非系统自带 + * 3是否管理者默认为员工 + * 4默认用户状态为正常 + * */ + ue.setPassword(Tools.md5Encryp(BusinessConstants.USER_DEFAULT_PASSWORD)); + ue.setIsystem(BusinessConstants.USER_NOT_SYSTEM); + if(ue.getIsmanager()==null){ + ue.setIsmanager(BusinessConstants.USER_NOT_MANAGER); + } + ue.setStatus(BusinessConstants.USER_STATUS_NORMAL); + int i=userMapperEx.addUser(ue); + if(i>0){ + return ue; + } + return null; + } + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void updateUserAndOrgUserRel(UserEx ue) throws Exception{ + //检查用户名和登录名 + checkUserNameAndLoginName(ue); + //更新用户信息 + ue=this.updateUser(ue); + if(ue==null){ + logger.error("异常码[{}],异常提示[{}],参数,[{}]", + ExceptionConstants.USER_EDIT_FAILED_CODE,ExceptionConstants.USER_EDIT_FAILED_MSG); + throw new BusinessRunTimeException(ExceptionConstants.USER_EDIT_FAILED_CODE, + ExceptionConstants.USER_EDIT_FAILED_MSG); + } + if(ue.getOrgaId()==null){ + //如果没有选择机构,就不建机构和用户的关联关系 + return; + } + //更新用户和机构关联关系 + OrgaUserRel oul=new OrgaUserRel(); + //机构和用户关联关系id + oul.setId(ue.getOrgaUserRelId()); + //机构id + oul.setOrgaId(ue.getOrgaId()); + //用户id + oul.setUserId(ue.getId()); + //用户在机构中的排序 + oul.setUserBlngOrgaDsplSeq(ue.getUserBlngOrgaDsplSeq()); + if(oul.getId()!=null){ + //已存在机构和用户的关联关系,更新 + oul=orgaUserRelService.updateOrgaUserRel(oul); + }else{ + //不存在机构和用户的关联关系,新建 + oul=orgaUserRelService.addOrgaUserRel(oul); + } + if(oul==null){ + logger.error("异常码[{}],异常提示[{}],参数,[{}]", + ExceptionConstants.ORGA_USER_REL_EDIT_FAILED_CODE,ExceptionConstants.ORGA_USER_REL_EDIT_FAILED_MSG); + throw new BusinessRunTimeException(ExceptionConstants.ORGA_USER_REL_EDIT_FAILED_CODE, + ExceptionConstants.ORGA_USER_REL_EDIT_FAILED_MSG); + } + + } + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public UserEx updateUser(UserEx ue){ + int i=userMapperEx.updateUser(ue); + if(i>0){ + return ue; + } + return null; + } + /** + * create by: cjl + * description: + * 检查用户名称和登录名不能重复 + * create time: 2019/3/12 11:36 + * @Param: userEx + * @return void + */ + public void checkUserNameAndLoginName(UserEx userEx){ + List list=null; + if(userEx==null){ + return; + } + Long userId=userEx.getId(); + //检查登录名 + if(!StringUtils.isEmpty(userEx.getLoginame())){ + String loginName=userEx.getLoginame(); + list=this.getUserListByloginName(loginName); + if(list!=null&&list.size()>0){ + if(list.size()>1){ + //超过一条数据存在,该登录名已存在 + logger.error("异常码[{}],异常提示[{}],参数,loginName:[{}]", + ExceptionConstants.USER_LOGIN_NAME_ALREADY_EXISTS_CODE,ExceptionConstants.USER_LOGIN_NAME_ALREADY_EXISTS_MSG,loginName); + throw new BusinessRunTimeException(ExceptionConstants.USER_LOGIN_NAME_ALREADY_EXISTS_CODE, + ExceptionConstants.USER_LOGIN_NAME_ALREADY_EXISTS_MSG); + } + //一条数据,新增时抛出异常,修改时和当前的id不同时抛出异常 + if(list.size()==1){ + if(userId==null||(userId!=null&&!userId.equals(list.get(0).getId()))){ + logger.error("异常码[{}],异常提示[{}],参数,loginName:[{}]", + ExceptionConstants.USER_LOGIN_NAME_ALREADY_EXISTS_CODE,ExceptionConstants.USER_LOGIN_NAME_ALREADY_EXISTS_MSG,loginName); + throw new BusinessRunTimeException(ExceptionConstants.USER_LOGIN_NAME_ALREADY_EXISTS_CODE, + ExceptionConstants.USER_LOGIN_NAME_ALREADY_EXISTS_MSG); + } + } + + } + } + //检查用户名 + if(!StringUtils.isEmpty(userEx.getUsername())){ + String userName=userEx.getUsername(); + list=this.getUserListByUserName(userName); + if(list!=null&&list.size()>0){ + if(list.size()>1){ + //超过一条数据存在,该用户名已存在 + logger.error("异常码[{}],异常提示[{}],参数,userName:[{}]", + ExceptionConstants.USER_USER_NAME_ALREADY_EXISTS_CODE,ExceptionConstants.USER_USER_NAME_ALREADY_EXISTS_MSG,userName); + throw new BusinessRunTimeException(ExceptionConstants.USER_USER_NAME_ALREADY_EXISTS_CODE, + ExceptionConstants.USER_USER_NAME_ALREADY_EXISTS_MSG); + } + //一条数据,新增时抛出异常,修改时和当前的id不同时抛出异常 + if(list.size()==1){ + if(userId==null||(userId!=null&&!userId.equals(list.get(0).getId()))){ + logger.error("异常码[{}],异常提示[{}],参数,userName:[{}]", + ExceptionConstants.USER_USER_NAME_ALREADY_EXISTS_CODE,ExceptionConstants.USER_USER_NAME_ALREADY_EXISTS_MSG,userName); + throw new BusinessRunTimeException(ExceptionConstants.USER_USER_NAME_ALREADY_EXISTS_CODE, + ExceptionConstants.USER_USER_NAME_ALREADY_EXISTS_MSG); + } + } + + } + } + + } + /** + * 通过用户名获取用户列表 + * */ + public List getUserListByUserName(String userName){ + return userMapperEx.getUserListByUserNameOrLoginName(userName,null); + } + /** + * 通过登录名获取用户列表 + * */ + public List getUserListByloginName(String loginName){ + return userMapperEx.getUserListByUserNameOrLoginName(null,loginName); + } + /** + * 批量删除用户 + * */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void batDeleteUser(String ids) { + String idsArray[]=ids.split(","); + int i= userMapperEx.batDeleteOrUpdateUser(idsArray,BusinessConstants.USER_STATUS_DELETE); + if(i<1){ + logger.error("异常码[{}],异常提示[{}],参数,ids:[{}]", + ExceptionConstants.USER_DELETE_FAILED_CODE,ExceptionConstants.USER_DELETE_FAILED_MSG,ids); + throw new BusinessRunTimeException(ExceptionConstants.USER_DELETE_FAILED_CODE, + ExceptionConstants.USER_DELETE_FAILED_MSG); + } + } + } diff --git a/src/main/resources/mapper_xml/OrgaUserRelMapperEx.xml b/src/main/resources/mapper_xml/OrgaUserRelMapperEx.xml new file mode 100644 index 00000000..1a18a41a --- /dev/null +++ b/src/main/resources/mapper_xml/OrgaUserRelMapperEx.xml @@ -0,0 +1,44 @@ + + + + + + + insert into jsh_orga_user_rel (orga_id, user_id, + user_blng_orga_dspl_seq, delete_flag, create_time, + creator, update_time, updater + ) + values (#{orgaId,jdbcType=BIGINT}, #{userId,jdbcType=BIGINT}, + #{userBlngOrgaDsplSeq,jdbcType=VARCHAR}, #{deleteFlag,jdbcType=CHAR}, #{createTime,jdbcType=TIMESTAMP}, + #{creator,jdbcType=BIGINT}, #{updateTime,jdbcType=TIMESTAMP}, #{updater,jdbcType=BIGINT} + ) + + + update jsh_orga_user_rel + + + orga_id = #{orgaId}, + + + user_id = #{userId}, + + + user_blng_orga_dspl_seq = #{userBlngOrgaDsplSeq}, + + + delete_flag = #{deleteFlag}, + + + update_time = #{updateTime}, + + + updater = #{updater}, + + + where 1=1 + and id=#{id} + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/UserMapperEx.xml b/src/main/resources/mapper_xml/UserMapperEx.xml index b567f93d..201541c3 100644 --- a/src/main/resources/mapper_xml/UserMapperEx.xml +++ b/src/main/resources/mapper_xml/UserMapperEx.xml @@ -1,10 +1,17 @@ + + + + + + + + + insert into jsh_user (username, loginame, + password, position, + email, phonenum, ismanager, + isystem, status, description, + remark) + values (#{username,jdbcType=VARCHAR}, #{loginame,jdbcType=VARCHAR}, + #{password,jdbcType=VARCHAR}, #{position,jdbcType=VARCHAR}, + #{email,jdbcType=VARCHAR}, #{phonenum,jdbcType=VARCHAR}, #{ismanager,jdbcType=TINYINT}, + #{isystem,jdbcType=TINYINT}, #{status,jdbcType=TINYINT}, #{description,jdbcType=VARCHAR}, + #{remark,jdbcType=VARCHAR}) + + + update jsh_user + + + username = #{username,jdbcType=VARCHAR}, + + + loginame = #{loginame,jdbcType=VARCHAR}, + + + password = #{password,jdbcType=VARCHAR}, + + + position = #{position,jdbcType=VARCHAR}, + + + department = #{department,jdbcType=VARCHAR}, + + + email = #{email,jdbcType=VARCHAR}, + + + phonenum = #{phonenum,jdbcType=VARCHAR}, + + + ismanager = #{ismanager,jdbcType=TINYINT}, + + + isystem = #{isystem,jdbcType=TINYINT}, + + + status = #{status,jdbcType=TINYINT}, + + + description = #{description,jdbcType=VARCHAR}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + + update jsh_user + set status=#{status} + where id in ( + + #{id} + + ) + \ No newline at end of file