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")
public RestResponse InitTreeMenus_Place(@RequestParam(value = "depositoryId") Integer depositoryId) {
@ -1491,6 +1490,7 @@ public class DepositoryController {
/**
* 用于打印图片
*
* @param map
* @param request
* @param response
@ -1531,6 +1531,7 @@ public class DepositoryController {
/**
* 用于设置仓库可见范围权限
*
* @param map 存储数据
* @param request 请求
* @return
@ -1545,10 +1546,16 @@ public class DepositoryController {
}
UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
map.put("userId", userToken.getId());
// 添加时影响的行数
Integer integer = roleService.addWarehouseVisiblePermission(map);
// 需要添加的数量
Integer count = ObjectFormatUtil.toInteger(map.get("count"));
// 操作时影响的行数
Integer integer = 0;
if (count == 0) {
// 如果要删除
} else {
// 如果不是删除
integer = roleService.setWarehouseVisiblePermission(map);
}
return CrudUtil.insertHandle(count, integer);
} else {
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;
}
// 用于分发任务
@Data
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);
/**
* 根据条件查询可见范围的数量
* @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>
<update id="updateUserOrPostRoleAndDepository" parameterType="map">
update postoruserrole
<set>
@ -147,8 +146,6 @@
</insert>
<select id="findDepositoryAndRole" parameterType="int" resultMap="depositoryAndrole">
select
<include refid="roleNameAnddepositoryName"/>
@ -240,8 +237,6 @@
</select>
<select id="findRoleAndDepositoryById" parameterType="int" resultMap="depositoryAndrole">
select
<include refid="roleNameAnddepositoryName"/>
@ -265,7 +260,7 @@
</delete>
<insert id="addWarehouseVisiblePermission">
insert into depositoryopenrole (id,did,uid,`type`,state,`time`,userId)
insert into depositoryopenrole (id,did,uid,`type`,`time`,userId)
values
<foreach collection="depositoryIdList" item="did" index="index" separator=",">
(
@ -273,7 +268,6 @@
#{did},
#{uid},
#{type},
#{state},
#{time},
#{userId}
)
@ -281,6 +275,74 @@
ON duplicate KEY UPDATE time=values(time),userId=values(userId)
</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>

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

@ -159,6 +159,21 @@ public interface RoleService {
* @param map 添加具体数据
* @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
*/
@Override
public Integer addWarehouseVisiblePermission(Map<String, Object> map) {
public Integer setWarehouseVisiblePermission(Map<String, Object> map) {
// 获取当前赋值的权限类型
String type = (String) map.get("type");
// 定义返回结果
Integer result = 0;
// 用于插入权限列表
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)) {
// 如果是对人员赋权
paramForInsert.put("type", 1);
@ -298,14 +295,102 @@ public class RoleServiceImpl implements RoleService {
} else {
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
) {
paramForInsert.put("uid", userId);
result += roleMapper.addWarehouseVisiblePermission(paramForInsert);
paramForCount.put("uid", userId);
Integer paramCount = roleMapper.findDepositoryIDCountForWarehouseVisiblePermissionByCondition(paramForCount);
result += (roleMapper.addWarehouseVisiblePermission(paramForInsert) - paramCount);
}
}
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 () {
},
success: function (d) {
var data2 = d.data;
depositoryTree.reload({
data: data2
data: d.data
});
},
@ -215,6 +214,27 @@
, id: "postTree"
, showCheckbox: true //是否显示复选框
, 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
let allTreeId = getAllTreeId(treeData);
if (userIds.length > 0) {
if (!flagForForm) {
flagForForm = true;
let req = {};
req.userIds = userIds;
req.depositoryIds = allTreeId;
@ -244,9 +266,33 @@
dataType: 'json',
contentType: "application/json;charset=utf-8",
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 {
layer.msg("请选中赋权岗位或人员", {
icon: 5,
@ -272,8 +318,11 @@
idList.push(temp.id);
}
} else {
if (temp.children.length === 0) {
// 如果是底层仓库
idList.push(temp.id);
}
}
if (temp.children !== null && temp.children !== undefined && temp.children.length > 0) {
// 如果存在子树
idList.push(...getAllTreeId(temp.children));

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

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

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

@ -50,7 +50,6 @@
</sql>
<update id="updateUserOrPostRoleAndDepository" parameterType="map">
update postoruserrole
<set>
@ -147,8 +146,6 @@
</insert>
<select id="findDepositoryAndRole" parameterType="int" resultMap="depositoryAndrole">
select
<include refid="roleNameAnddepositoryName"/>
@ -240,8 +237,6 @@
</select>
<select id="findRoleAndDepositoryById" parameterType="int" resultMap="depositoryAndrole">
select
<include refid="roleNameAnddepositoryName"/>
@ -265,7 +260,7 @@
</delete>
<insert id="addWarehouseVisiblePermission">
insert into depositoryopenrole (id,did,uid,`type`,state,`time`,userId)
insert into depositoryopenrole (id,did,uid,`type`,`time`,userId)
values
<foreach collection="depositoryIdList" item="did" index="index" separator=",">
(
@ -273,7 +268,6 @@
#{did},
#{uid},
#{type},
#{state},
#{time},
#{userId}
)
@ -281,6 +275,74 @@
ON duplicate KEY UPDATE time=values(time),userId=values(userId)
</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>

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

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

Loading…
Cancel
Save