Browse Source

给岗位设置仓库权限完成

lwx_dev
erdanergou 3 years ago
parent
commit
077a018f8d
  1. 22
      src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java
  2. 32
      src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.java
  3. 76
      src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.xml
  4. 17
      src/main/java/com/dreamchaser/depository_manage/service/RoleService.java
  5. 99
      src/main/java/com/dreamchaser/depository_manage/service/impl/RoleServiceImpl.java
  6. 55
      src/main/resources/templates/pages/authorization/depositoryOpen.html
  7. 4
      src/main/resources/templates/pages/material/material-add.html
  8. 76
      target/classes/com/dreamchaser/depository_manage/mapper/RoleMapper.xml
  9. 4
      target/classes/templates/pages/material/material-add.html

22
src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java

@ -1417,7 +1417,6 @@ public class DepositoryController {
} }
// 构造库位树 // 构造库位树
@GetMapping("/treeMenus_Place") @GetMapping("/treeMenus_Place")
public RestResponse InitTreeMenus_Place(@RequestParam(value = "depositoryId") Integer depositoryId) { public RestResponse InitTreeMenus_Place(@RequestParam(value = "depositoryId") Integer depositoryId) {
@ -1491,6 +1490,7 @@ public class DepositoryController {
/** /**
* 用于打印图片 * 用于打印图片
*
* @param map * @param map
* @param request * @param request
* @param response * @param response
@ -1531,6 +1531,7 @@ public class DepositoryController {
/** /**
* 用于设置仓库可见范围权限 * 用于设置仓库可见范围权限
*
* @param map 存储数据 * @param map 存储数据
* @param request 请求 * @param request 请求
* @return * @return
@ -1545,10 +1546,16 @@ public class DepositoryController {
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
map.put("userId", userToken.getId()); map.put("userId", userToken.getId());
// 添加时影响的行数
Integer integer = roleService.addWarehouseVisiblePermission(map);
// 需要添加的数量 // 需要添加的数量
Integer count = ObjectFormatUtil.toInteger(map.get("count")); Integer count = ObjectFormatUtil.toInteger(map.get("count"));
// 操作时影响的行数
Integer integer = 0;
if (count == 0) {
// 如果要删除
} else {
// 如果不是删除
integer = roleService.setWarehouseVisiblePermission(map);
}
return CrudUtil.insertHandle(count, integer); return CrudUtil.insertHandle(count, integer);
} else { } else {
throw new MyException("缺少必要参数"); throw new MyException("缺少必要参数");
@ -1556,6 +1563,12 @@ public class DepositoryController {
} }
@PostMapping("/findWarehouseVisiblePermission")
public RestResponse findWarehouseVisiblePermission(@RequestBody Map<String, Object> map){
List<Integer> list = roleService.findDepositoryIdForWarehouseVisiblePermissionByCondition(map);
return new RestResponse(list);
}
/** /**
* 用于获取当前仓库的所有子类 * 用于获取当前仓库的所有子类
* *
@ -1596,6 +1609,7 @@ public class DepositoryController {
return false; return false;
} }
// 用于分发任务 // 用于分发任务
@Data @Data
class distributeTasks implements Callable<Object> { class distributeTasks implements Callable<Object> {
@ -1802,6 +1816,4 @@ public class DepositoryController {
} }
} }

32
src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.java

@ -182,4 +182,36 @@ public interface RoleMapper {
*/ */
Integer addWarehouseVisiblePermission(Map<String,Object> map); Integer addWarehouseVisiblePermission(Map<String,Object> map);
/**
* 根据条件查询可见范围的数量
* @param map 待查询数据
* @return
*/
Integer findWarehouseVisiblePermissionCountByCondition(Map<String,Object> map);
/**
* 根据条件删除仓库可见范围
* @param map
* @return
*/
Integer delWarehouseVisiblePermissionByCondition(Map<String,Object> map);
/**
* 根据条件获取在可视范围内的仓库id
* @param map
* @return
*/
List<Integer> findDepositoryIdForWarehouseVisiblePermissionByCondition(Map<String,Object> map);
/**
* 根据条件获取可视范围内的仓库数量
* @param map
* @return
*/
Integer findDepositoryIDCountForWarehouseVisiblePermissionByCondition(Map<String,Object> map);
} }

76
src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.xml

@ -50,7 +50,6 @@
</sql> </sql>
<update id="updateUserOrPostRoleAndDepository" parameterType="map"> <update id="updateUserOrPostRoleAndDepository" parameterType="map">
update postoruserrole update postoruserrole
<set> <set>
@ -147,8 +146,6 @@
</insert> </insert>
<select id="findDepositoryAndRole" parameterType="int" resultMap="depositoryAndrole"> <select id="findDepositoryAndRole" parameterType="int" resultMap="depositoryAndrole">
select select
<include refid="roleNameAnddepositoryName"/> <include refid="roleNameAnddepositoryName"/>
@ -240,8 +237,6 @@
</select> </select>
<select id="findRoleAndDepositoryById" parameterType="int" resultMap="depositoryAndrole"> <select id="findRoleAndDepositoryById" parameterType="int" resultMap="depositoryAndrole">
select select
<include refid="roleNameAnddepositoryName"/> <include refid="roleNameAnddepositoryName"/>
@ -265,7 +260,7 @@
</delete> </delete>
<insert id="addWarehouseVisiblePermission"> <insert id="addWarehouseVisiblePermission">
insert into depositoryopenrole (id,did,uid,`type`,state,`time`,userId) insert into depositoryopenrole (id,did,uid,`type`,`time`,userId)
values values
<foreach collection="depositoryIdList" item="did" index="index" separator=","> <foreach collection="depositoryIdList" item="did" index="index" separator=",">
( (
@ -273,7 +268,6 @@
#{did}, #{did},
#{uid}, #{uid},
#{type}, #{type},
#{state},
#{time}, #{time},
#{userId} #{userId}
) )
@ -281,6 +275,74 @@
ON duplicate KEY UPDATE time=values(time),userId=values(userId) ON duplicate KEY UPDATE time=values(time),userId=values(userId)
</insert> </insert>
<select id="findWarehouseVisiblePermissionCountByCondition" parameterType="map" resultType="int">
select
COUNT(*)
from depositoryopenrole
where 1 = 1
<if test="type != null and type != ''">
and `type` = #{type}
</if>
<if test="userId != null and userId != ''">
and userId = #{userId}
</if>
and uid in
<foreach collection="uidList" index="index" item="uid" open="(" separator="," close=")">
#{uid}
</foreach>
<if test="depositoryIdList != null and depositoryIdList !=''">
and did in
<foreach collection="depositoryIdList" index="index" item="did" open="(" separator="," close=")">
#{did}
</foreach>
</if>
</select>
<delete id="delWarehouseVisiblePermissionByCondition" parameterType="map">
delete
from depositoryopenrole
where
`type` = #{type}
<if test="uidList != null and uidList !=''">
and uid in
<foreach collection="uidList" index="index" item="uid" open="(" separator="," close=")">
#{uid}
</foreach>
</if>
<if test="uid != null and uid != ''">
and uid = #{uid}
</if>
and did in
<foreach collection="depositoryIdList" index="index" item="did" open="(" separator="," close=")">
#{did}
</foreach>
</delete>
<select id="findDepositoryIdForWarehouseVisiblePermissionByCondition" parameterType="map" resultType="int">
select
did
from depositoryopenrole
where 1 = 1
<if test="type != null and type != ''">
and `type` = #{type}
</if>
and uid = #{uid}
</select>
<select id="findDepositoryIDCountForWarehouseVisiblePermissionByCondition" parameterType="map" resultType="int">
select
COUNT(*)
from depositoryopenrole
where 1 = 1
<if test="type != null and type != ''">
and `type` = #{type}
</if>
and uid = #{uid}
</select>
</mapper> </mapper>

17
src/main/java/com/dreamchaser/depository_manage/service/RoleService.java

@ -159,6 +159,21 @@ public interface RoleService {
* @param map 添加具体数据 * @param map 添加具体数据
* @return * @return
*/ */
Integer addWarehouseVisiblePermission(Map<String,Object> map); Integer setWarehouseVisiblePermission(Map<String,Object> map);
/**
* 用于删除权限
* @param map 待删除数据
*/
Integer delWarehouseVisiblePermission(Map<String,Object> map);
/**
* 根据调剂获取在可视范围内的仓库id
* @param map 待查询调剂
* @return
*/
List<Integer> findDepositoryIdForWarehouseVisiblePermissionByCondition(Map<String,Object> map);
} }

99
src/main/java/com/dreamchaser/depository_manage/service/impl/RoleServiceImpl.java

@ -277,18 +277,15 @@ public class RoleServiceImpl implements RoleService {
* @return * @return
*/ */
@Override @Override
public Integer addWarehouseVisiblePermission(Map<String, Object> map) { public Integer setWarehouseVisiblePermission(Map<String, Object> map) {
// 获取当前赋值的权限类型 // 获取当前赋值的权限类型
String type = (String) map.get("type"); String type = (String) map.get("type");
// 定义返回结果 // 定义返回结果
Integer result = 0; Integer result = 0;
// 用于插入权限列表 // 用于插入权限列表
Map<String, Object> paramForInsert = new HashMap<>(); Map<String, Object> paramForInsert = new HashMap<>();
paramForInsert.put("userId", map.get("userId"));
paramForInsert.put("time", System.currentTimeMillis());
paramForInsert.put("depositoryIdList", map.get("depositoryIds"));
paramForInsert.put("state", 1);
List<Object> userIds = (List<Object>) map.get("userIds");
if ("person".equals(type)) { if ("person".equals(type)) {
// 如果是对人员赋权 // 如果是对人员赋权
paramForInsert.put("type", 1); paramForInsert.put("type", 1);
@ -298,14 +295,102 @@ public class RoleServiceImpl implements RoleService {
} else { } else {
throw new MyException("未知参数错误"); throw new MyException("未知参数错误");
} }
// 获取当前要处理的数量
Integer count = ObjectFormatUtil.toInteger(map.get("count"));
List<Object> userIds = (List<Object>) map.get("userIds");
paramForInsert.put("uidList", userIds);
// 获取当前要处理用于及其仓库的数量
Integer countByCondition = roleMapper.findWarehouseVisiblePermissionCountByCondition(paramForInsert);
if (countByCondition > count) {
// 当前数量小于已存在的数量,则代表权限删除
result = countByCondition - delWarehouseVisiblePermission(map);
} else {
paramForInsert.put("depositoryIdList", map.get("depositoryIds"));
paramForInsert.put("userId", map.get("userId"));
paramForInsert.put("time", System.currentTimeMillis());
// 用于查询当前可见的仓库id数量
Map<String, Object> paramForCount = new HashMap<>();
paramForCount.put("type", paramForInsert.get("type"));
for (Object userId : userIds for (Object userId : userIds
) { ) {
paramForInsert.put("uid", userId); paramForInsert.put("uid", userId);
result += roleMapper.addWarehouseVisiblePermission(paramForInsert); paramForCount.put("uid", userId);
Integer paramCount = roleMapper.findDepositoryIDCountForWarehouseVisiblePermissionByCondition(paramForCount);
result += (roleMapper.addWarehouseVisiblePermission(paramForInsert) - paramCount);
}
} }
return result; return result;
} }
/**
* 用于删除权限
*
* @param map 待删除数据
*/
@Override
public Integer delWarehouseVisiblePermission(Map<String, Object> map) {
// 获取当前赋值的权限类型
Map<String, Object> paramForDelete = new HashMap<>();
Integer integer = 0;
String type = (String) map.get("type");
if ("person".equals(type)) {
// 如果是对人员赋权
paramForDelete.put("type", 1);
} else if ("post".equals(type)) {
// 如果是对岗位赋权
paramForDelete.put("type", 2);
} else {
throw new MyException("未知参数错误");
}
List<Object> userIds = (List<Object>) map.get("userIds");
List<Integer> depositoryIds = (List<Integer>) map.get("depositoryIds");
if (depositoryIds.size() == 0) {
// 如果是要删除所有的
paramForDelete.put("uidList", userIds);
// 删除当前所有的权限
integer = roleMapper.delWarehouseVisiblePermissionByCondition(paramForDelete);
} else {
// 如果不是所有
for (Object uid : userIds
) {
paramForDelete.put("uid", uid);
// 获取当前用户所拥有的权限
List<Integer> depositoryIdList = roleMapper.findDepositoryIdForWarehouseVisiblePermissionByCondition(paramForDelete);
// 获取当前已拥有的与新拥有的差集
depositoryIdList.removeAll(depositoryIds);
paramForDelete.put("depositoryIdList", depositoryIdList);
integer += roleMapper.delWarehouseVisiblePermissionByCondition(paramForDelete);
}
}
return integer;
}
/**
* 根据调剂获取在可视范围内的仓库id
*
* @param map 待查询调剂
* @return
*/
@Override
public List<Integer> findDepositoryIdForWarehouseVisiblePermissionByCondition(Map<String, Object> map) {
String type = (String) map.get("type");
if ("person".equals(type)) {
// 如果是对人员赋权
map.put("type", 1);
} else if ("post".equals(type)) {
// 如果是对岗位赋权
map.put("type", 2);
} else {
throw new MyException("未知参数错误");
}
return roleMapper.findDepositoryIdForWarehouseVisiblePermissionByCondition(map);
}
/** /**
* 获取当前仓库的子仓库 * 获取当前仓库的子仓库

55
src/main/resources/templates/pages/authorization/depositoryOpen.html

@ -202,9 +202,8 @@
beforeSend: function () { beforeSend: function () {
}, },
success: function (d) { success: function (d) {
var data2 = d.data;
depositoryTree.reload({ depositoryTree.reload({
data: data2 data: d.data
}); });
}, },
@ -215,6 +214,27 @@
, id: "postTree" , id: "postTree"
, showCheckbox: true //是否显示复选框 , showCheckbox: true //是否显示复选框
, data: [] , data: []
, click: function (obj) {
let data = obj.data; //得到当前点击的节点数据
let elem = obj.elem;
if ("-1" === data.orgid) {
// 如果点击的是岗位
let postId = data.id; // 岗位id
$.ajax({
url: "/repository/findWarehouseVisiblePermission",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify({"type": "post", "uid": postId}),
success: function (res) {
let data = res.data;
depositoryTree.reload();
tree.setChecked('depositoryTree', data);
tree.setChecked('postTree',[postId])
}
})
}
}
}); });
@ -233,6 +253,8 @@
// 获取选中的仓库树id // 获取选中的仓库树id
let allTreeId = getAllTreeId(treeData); let allTreeId = getAllTreeId(treeData);
if (userIds.length > 0) { if (userIds.length > 0) {
if (!flagForForm) {
flagForForm = true;
let req = {}; let req = {};
req.userIds = userIds; req.userIds = userIds;
req.depositoryIds = allTreeId; req.depositoryIds = allTreeId;
@ -244,9 +266,33 @@
dataType: 'json', dataType: 'json',
contentType: "application/json;charset=utf-8", contentType: "application/json;charset=utf-8",
data: JSON.stringify(req), data: JSON.stringify(req),
success :function() { beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (res) {
layer.close(this.layerIndex);
if (res.status >= 300) {
layer.msg(res.statusInfo.message, {
icon: 5,
time: 1000
}, function () {
location.reload();
});//失败的表情
flagForForm = false;
} else {
layer.msg("设置成功!", {
icon: 6,//成功的表情
time: 1000
}, //1秒关闭(如果不配置,默认是3秒)
function () {
//do something
location.reload();
});
}
} }
}) })
}
} else { } else {
layer.msg("请选中赋权岗位或人员", { layer.msg("请选中赋权岗位或人员", {
icon: 5, icon: 5,
@ -272,8 +318,11 @@
idList.push(temp.id); idList.push(temp.id);
} }
} else { } else {
if (temp.children.length === 0) {
// 如果是底层仓库
idList.push(temp.id); idList.push(temp.id);
} }
}
if (temp.children !== null && temp.children !== undefined && temp.children.length > 0) { if (temp.children !== null && temp.children !== undefined && temp.children.length > 0) {
// 如果存在子树 // 如果存在子树
idList.push(...getAllTreeId(temp.children)); idList.push(...getAllTreeId(temp.children));

4
src/main/resources/templates/pages/material/material-add.html

@ -265,6 +265,7 @@
layer.close(this.layerIndex); layer.close(this.layerIndex);
if (data.status >= 300) { if (data.status >= 300) {
layer.msg(data.statusInfo.message);//失败的表情 layer.msg(data.statusInfo.message);//失败的表情
flagForForm = false;
return; return;
} else { } else {
layer.msg("添加成功!", { layer.msg("添加成功!", {
@ -304,9 +305,6 @@
}) })
}); });
$('body').on('click', '[data-refresh]', function () {
location.reload();
})
}); });
</script> </script>

76
target/classes/com/dreamchaser/depository_manage/mapper/RoleMapper.xml

@ -50,7 +50,6 @@
</sql> </sql>
<update id="updateUserOrPostRoleAndDepository" parameterType="map"> <update id="updateUserOrPostRoleAndDepository" parameterType="map">
update postoruserrole update postoruserrole
<set> <set>
@ -147,8 +146,6 @@
</insert> </insert>
<select id="findDepositoryAndRole" parameterType="int" resultMap="depositoryAndrole"> <select id="findDepositoryAndRole" parameterType="int" resultMap="depositoryAndrole">
select select
<include refid="roleNameAnddepositoryName"/> <include refid="roleNameAnddepositoryName"/>
@ -240,8 +237,6 @@
</select> </select>
<select id="findRoleAndDepositoryById" parameterType="int" resultMap="depositoryAndrole"> <select id="findRoleAndDepositoryById" parameterType="int" resultMap="depositoryAndrole">
select select
<include refid="roleNameAnddepositoryName"/> <include refid="roleNameAnddepositoryName"/>
@ -265,7 +260,7 @@
</delete> </delete>
<insert id="addWarehouseVisiblePermission"> <insert id="addWarehouseVisiblePermission">
insert into depositoryopenrole (id,did,uid,`type`,state,`time`,userId) insert into depositoryopenrole (id,did,uid,`type`,`time`,userId)
values values
<foreach collection="depositoryIdList" item="did" index="index" separator=","> <foreach collection="depositoryIdList" item="did" index="index" separator=",">
( (
@ -273,7 +268,6 @@
#{did}, #{did},
#{uid}, #{uid},
#{type}, #{type},
#{state},
#{time}, #{time},
#{userId} #{userId}
) )
@ -281,6 +275,74 @@
ON duplicate KEY UPDATE time=values(time),userId=values(userId) ON duplicate KEY UPDATE time=values(time),userId=values(userId)
</insert> </insert>
<select id="findWarehouseVisiblePermissionCountByCondition" parameterType="map" resultType="int">
select
COUNT(*)
from depositoryopenrole
where 1 = 1
<if test="type != null and type != ''">
and `type` = #{type}
</if>
<if test="userId != null and userId != ''">
and userId = #{userId}
</if>
and uid in
<foreach collection="uidList" index="index" item="uid" open="(" separator="," close=")">
#{uid}
</foreach>
<if test="depositoryIdList != null and depositoryIdList !=''">
and did in
<foreach collection="depositoryIdList" index="index" item="did" open="(" separator="," close=")">
#{did}
</foreach>
</if>
</select>
<delete id="delWarehouseVisiblePermissionByCondition" parameterType="map">
delete
from depositoryopenrole
where
`type` = #{type}
<if test="uidList != null and uidList !=''">
and uid in
<foreach collection="uidList" index="index" item="uid" open="(" separator="," close=")">
#{uid}
</foreach>
</if>
<if test="uid != null and uid != ''">
and uid = #{uid}
</if>
and did in
<foreach collection="depositoryIdList" index="index" item="did" open="(" separator="," close=")">
#{did}
</foreach>
</delete>
<select id="findDepositoryIdForWarehouseVisiblePermissionByCondition" parameterType="map" resultType="int">
select
did
from depositoryopenrole
where 1 = 1
<if test="type != null and type != ''">
and `type` = #{type}
</if>
and uid = #{uid}
</select>
<select id="findDepositoryIDCountForWarehouseVisiblePermissionByCondition" parameterType="map" resultType="int">
select
COUNT(*)
from depositoryopenrole
where 1 = 1
<if test="type != null and type != ''">
and `type` = #{type}
</if>
and uid = #{uid}
</select>
</mapper> </mapper>

4
target/classes/templates/pages/material/material-add.html

@ -265,6 +265,7 @@
layer.close(this.layerIndex); layer.close(this.layerIndex);
if (data.status >= 300) { if (data.status >= 300) {
layer.msg(data.statusInfo.message);//失败的表情 layer.msg(data.statusInfo.message);//失败的表情
flagForForm = false;
return; return;
} else { } else {
layer.msg("添加成功!", { layer.msg("添加成功!", {
@ -304,9 +305,6 @@
}) })
}); });
$('body').on('click', '[data-refresh]', function () {
location.reload();
})
}); });
</script> </script>

Loading…
Cancel
Save