配件成倍、多工序组、sql语句修正1

This commit is contained in:
lym
2024-06-21 12:00:38 +08:00
15 changed files with 152 additions and 58 deletions
@@ -78,7 +78,7 @@ public class PlanController {
@GetMapping("getPlateByPlanId") @GetMapping("getPlateByPlanId")
@Operation(summary = "根据排单id获取小板分页") @Operation(summary = "根据排单id获取小板分页")
@PreAuthorize("@ss.hasPermission('executor:plan:query')") @PreAuthorize("@ss.hasPermission('placeorder:orderlist')")
public CommonResult<PageResult<PlateResList>> getPlateByPlanId(@Valid GetPlateByPlanIdVO vo) { public CommonResult<PageResult<PlateResList>> getPlateByPlanId(@Valid GetPlateByPlanIdVO vo) {
return success(planService.getPlateByPlanId(vo)); return success(planService.getPlateByPlanId(vo));
} }
@@ -161,4 +161,13 @@ public class PlanController {
} }
@GetMapping("getPlateList")
@Operation(summary = "根据排单ID获取板材列表(未分页)")
@Parameter(name = "planId", description = "排单id", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('placeorder:orderlist')")
public CommonResult<List<PlateResList>> getPlateList(@Valid @RequestParam("planId") Long planId) {
return success(planService.getPlateList(planId));
}
} }
@@ -113,5 +113,8 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
BigDecimal selectPlateSize( @Param("orderId") Long orderId); BigDecimal selectPlateSize( @Param("orderId") Long orderId);
List<Long> selectPlateIdListByBodyId(@Param("bodyId") Long bodyId, @Param("organId") Long organId); List<Long> selectPlateIdListByBodyId(@Param("bodyId") Long bodyId, @Param("organId") Long organId);
List<PlateResList> selectPlateListByPlanId(@Param("planId") Long planId, @Param("organId") Long organId);
} }
@@ -69,4 +69,6 @@ public interface PlanService {
PageResult<PlanGoodsVO> getNotPlanGoodsListPageByOrderId( NotPlanGoodsListPageVO pageVO); PageResult<PlanGoodsVO> getNotPlanGoodsListPageByOrderId( NotPlanGoodsListPageVO pageVO);
Boolean setSort(List<SortVO> list); Boolean setSort(List<SortVO> list);
List<PlateResList> getPlateList(Long planId);
} }
@@ -331,7 +331,7 @@ public class PlanServiceImpl implements PlanService {
.eqIfPresent("op.is_door", pageReqVO.getIsDoor()) .eqIfPresent("op.is_door", pageReqVO.getIsDoor())
.betweenIfPresent("op.height", new BigDecimal[]{pageReqVO.getLongMinRang(), pageReqVO.getLongMaxRang()}) .betweenIfPresent("op.height", new BigDecimal[]{pageReqVO.getLongMinRang(), pageReqVO.getLongMaxRang()})
.betweenIfPresent("op.width", new BigDecimal[]{pageReqVO.getWidthMinRang(), pageReqVO.getWidthMaxRang()}) .betweenIfPresent("op.width", new BigDecimal[]{pageReqVO.getWidthMinRang(), pageReqVO.getWidthMaxRang()})
.groupBy("a.id", " a.order_date", "a.delivery_date", "a.customer", "a.address", "a.custom_order_no") .groupBy("a.id", " a.order_date", "a.delivery_date", "a.customer", "a.address", "a.custom_order_no","a.create_time")
.orderByDesc("a.create_time"); .orderByDesc("a.create_time");
List<Integer> filterTypes = new ArrayList<>(); List<Integer> filterTypes = new ArrayList<>();
if (Objects.nonNull(pageReqVO.getHoleThrough()) && pageReqVO.getHoleThrough()) { if (Objects.nonNull(pageReqVO.getHoleThrough()) && pageReqVO.getHoleThrough()) {
@@ -502,4 +502,15 @@ public class PlanServiceImpl implements PlanService {
return Boolean.TRUE; return Boolean.TRUE;
} }
@Override
public List<PlateResList> getPlateList(Long planId) {
return plateMapper.selectPlateListByPlanId(planId,getUserOrganId());
}
} }
@@ -283,6 +283,22 @@
select sum(area) from order_plate where order_id = #{orderId}; select sum(area) from order_plate where order_id = #{orderId};
</select>
<select id="selectPlateListByPlanId" resultType="com.cf.imes.module.executor.controller.admin.plan.vo.PlateResList"
parameterType="java.lang.Long">
select a.order_id, a.plate_no , a.name as plateName,a.is_special_shaped,a.is_sculpt,a.area,a.seal_left,a.seal_right,a.seal_up,a.seal_down, e.material, e.color, a.width, a.height, a.thickness, b.room_id, b.body_id
from order_plan_item p
left join order_item b on p.item_id = b.id and b.organ_id = p.organ_id
left join order_plate a on b.plate_id = a.id and b.order_id = a.order_id and b.organ_id = a.organ_id
left join order_goods e on a.goods_id = e.id and a.order_id = e.order_id and a.organ_id = e.organ_id
where p.plan_id = #{planId} and p.organ_id = #{organId} ;
</select> </select>
@@ -183,8 +183,8 @@ public class PackController {
@Operation(summary = "板材包裹更新-即封包") @Operation(summary = "板材包裹更新-即封包")
@PreAuthorize("@ss.hasPermission('manage:pack:updatePack')") @PreAuthorize("@ss.hasPermission('manage:pack:updatePack')")
public CommonResult<OrderPackRespVO> updatePack(@Valid @RequestBody OrderPackReqVO packageVO) { public CommonResult<OrderPackRespVO> updatePack(@Valid @RequestBody OrderPackReqVO packageVO) {
OrderPackageDO orderPackageDO = packService.updatePack(packageVO);
return success(BeanUtils.toBean(orderPackageDO, OrderPackRespVO.class)); return success(packService.updatePack(packageVO));
} }
@@ -196,9 +196,7 @@ public class PackController {
@PreAuthorize("@ss.hasPermission('manage:pack:updateParts')") @PreAuthorize("@ss.hasPermission('manage:pack:updateParts')")
public CommonResult<OrderPackRespVO> updateParts(@Valid @RequestBody OrderPartsReqVO reqVO) { public CommonResult<OrderPackRespVO> updateParts(@Valid @RequestBody OrderPartsReqVO reqVO) {
OrderPackageDO orderPackageDO = packService.updateParts(reqVO); return success(packService.updateParts(reqVO));
return success(BeanUtils.toBean(orderPackageDO, OrderPackRespVO.class));
} }
@@ -277,7 +275,7 @@ public class PackController {
@PostMapping("/insertParts") @PostMapping("/insertParts")
@Operation(summary = "新增配件包裹") @Operation(summary = "新增配件包裹")
@PreAuthorize("@ss.hasPermission('manage:pack:insert')") @PreAuthorize("@ss.hasPermission('manage:pack:insert')")
public CommonResult<OrderPackageDO> addNewPartsPack (@Valid @RequestBody OrderPackReqVO reqVO) { public CommonResult<OrderPackRespVO> addNewPartsPack (@Valid @RequestBody OrderPackReqVO reqVO) {
return success(packService.addNewPartsPack(reqVO)); return success(packService.addNewPartsPack(reqVO));
@@ -289,7 +287,7 @@ public class PackController {
@PostMapping("/insertOtherPack") @PostMapping("/insertOtherPack")
@Operation(summary = "新增外部配件-即新增一个包裹") @Operation(summary = "新增外部配件-即新增一个包裹")
@PreAuthorize("@ss.hasPermission('manage:pack:insert')") @PreAuthorize("@ss.hasPermission('manage:pack:insert')")
public CommonResult<OrderPackageDO> addNewOtherPack(@Valid @RequestBody OtherPackReqVO reqVO) { public CommonResult<OrderPackRespVO> addNewOtherPack(@Valid @RequestBody OtherPackReqVO reqVO) {
return success(packService.addNewOtherPack(reqVO)); return success(packService.addNewOtherPack(reqVO));
@@ -4,24 +4,26 @@ package com.cf.imes.module.manage.controller.admin.pack.vo;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO; import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data; import lombok.Data;
@Schema(description = "管理后台 - 生产单包裹表 Response VO") @Schema(description = "管理后台 - 生产单包裹表 Response VO")
@Data @Data
@Builder
public class OrderPackRespVO { public class OrderPackRespVO {
@Schema(description = "包裹ID", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "包裹ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id; private Long id;
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED)
private Long orderNo; private Long orderId;
@Schema(description = "包裹编号", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "包裹编号", requiredMode = Schema.RequiredMode.REQUIRED)
private String packageNo; private String packageNo;
@Schema(description = "包裹类型,-1未定义,0板材,1配件,2其他配件", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "包裹类型,-1未定义,0板材,1配件,2其他配件", requiredMode = Schema.RequiredMode.REQUIRED)
private Long type; private Integer packageType;
@Schema(description = "包裹名", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "包裹名", requiredMode = Schema.RequiredMode.REQUIRED)
private String name; private String name;
@@ -25,13 +25,13 @@ public interface ProcessStepItemMapper extends BaseMapperX<OrderProcessStepItemN
List<OrderModuleVO> selectPlateName(Long processStepId); List<OrderModuleVO> selectPlateName(Long processStepId);
void updateStatus(@Param("id") Long id, @Param("nickname") String nickname, @Param("salary")BigDecimal salary); void updateStatus(@Param("id") Long id);
ProcessStepStatus selectStatusById(@Param("id") Long id,@Param("name") String name, @Param("organId") Long organId); ProcessStepStatus selectStatusById(@Param("id") Long id,@Param("name") String name, @Param("organId") Long organId);
void updateStemStatus(@Param("processStepId") Long processStepId,@Param("name") String name, @Param("nickname") String nickname); void updateStemStatus(@Param("processStepId") Long processStepId,@Param("name") String name);
@@ -47,4 +47,8 @@ public interface ProcessStepMapper extends BaseMapperX<OrderProcessStepNDO> {
BigDecimal calculateSalary( @Param("processStepId") Long processStepId,@Param("area") BigDecimal area); BigDecimal calculateSalary( @Param("processStepId") Long processStepId,@Param("area") BigDecimal area);
void updateStatus(@Param("id") Long id, @Param("nickname") String nickname, @Param("salary")BigDecimal salary);
void updateStatusByName(@Param("id") Long processStepId,@Param("nickname") String nickname);
} }
@@ -38,7 +38,7 @@ public interface PackService {
// 查看配件列表分页 // 查看配件列表分页
PageResult<OrderPartsRespVO> getPartsList(OrderPartsReqVO reqVO); PageResult<OrderPartsRespVO> getPartsList(OrderPartsReqVO reqVO);
OrderPackageDO updateParts(OrderPartsReqVO reqVO); OrderPackRespVO updateParts(OrderPartsReqVO reqVO);
// 拆包 // 拆包
@@ -61,7 +61,7 @@ public interface PackService {
OrderPackageDO insertPack(OrderPackReqVO packageVO); OrderPackageDO insertPack(OrderPackReqVO packageVO);
// 更新包裹 // 更新包裹
OrderPackageDO updatePack(OrderPackReqVO packageVO); OrderPackRespVO updatePack(OrderPackReqVO packageVO);
// 查询包裹 // 查询包裹
@@ -78,7 +78,7 @@ public interface PackService {
// 新增外部配件包裹 // 新增外部配件包裹
OrderPackageDO addNewOtherPack(OtherPackReqVO reqVO); OrderPackRespVO addNewOtherPack(OtherPackReqVO reqVO);
// 新增外部配件 // 新增外部配件
@@ -93,7 +93,7 @@ public interface PackService {
// 新增配件-即新增一个包裹 // 新增配件-即新增一个包裹
OrderPackageDO addNewPartsPack(OrderPackReqVO reqVO); OrderPackRespVO addNewPartsPack(OrderPackReqVO reqVO);
} }
@@ -185,7 +185,7 @@ public class PackServiceImpl implements PackService {
// 更新配件 // 更新配件
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public OrderPackageDO updateParts(OrderPartsReqVO reqVO) { public OrderPackRespVO updateParts(OrderPartsReqVO reqVO) {
OrderPackageDO orderPackageDO = orderPackageMapper.selectByPackId(reqVO.getPackId(), getUserOrganId()); OrderPackageDO orderPackageDO = orderPackageMapper.selectByPackId(reqVO.getPackId(), getUserOrganId());
@@ -209,7 +209,7 @@ public class PackServiceImpl implements PackService {
orderPackageDO.setType(OrderPackageTypeEnum.PLATE.getType()); orderPackageDO.setType(OrderPackageTypeEnum.PLATE.getType());
orderPackageDO.setStatus(OrderPackageStatusEnum.PACKAGED.getStatus()); orderPackageDO.setStatus(OrderPackageStatusEnum.PACKAGED.getStatus());
orderPackageMapper.updateById(orderPackageDO); orderPackageMapper.updateById(orderPackageDO);
return orderPackageDO; return typeConversion(orderPackageDO);
} }
@@ -224,7 +224,7 @@ public class PackServiceImpl implements PackService {
orderPackageMapper.updateById(orderPackageDO); orderPackageMapper.updateById(orderPackageDO);
return orderPackageDO; return typeConversion(orderPackageDO);
} }
@@ -315,7 +315,7 @@ public class PackServiceImpl implements PackService {
// 更新包裹 // 更新包裹
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public OrderPackageDO updatePack(OrderPackReqVO packageVO) { public OrderPackRespVO updatePack(OrderPackReqVO packageVO) {
// 判断包裹ID是否为空,为空,走新增,不为空,走更新 // 判断包裹ID是否为空,为空,走新增,不为空,走更新
@@ -331,7 +331,7 @@ public class PackServiceImpl implements PackService {
// 生产单明细表新增包裹 ID // 生产单明细表新增包裹 ID
orderItemMapper.insertPackId(packageVO.getAddPlateIdList(), orderPackageDO.getId()); orderItemMapper.insertPackId(packageVO.getAddPlateIdList(), orderPackageDO.getId());
return orderPackageDO; return typeConversion(orderPackageDO);
} }
@@ -357,7 +357,7 @@ public class PackServiceImpl implements PackService {
orderPackageDO.setType(OrderPackageTypeEnum.PARTS.getType()); orderPackageDO.setType(OrderPackageTypeEnum.PARTS.getType());
orderPackageDO.setStatus(OrderPackageStatusEnum.PACKAGED.getStatus()); orderPackageDO.setStatus(OrderPackageStatusEnum.PACKAGED.getStatus());
orderPackageMapper.updateById(orderPackageDO); orderPackageMapper.updateById(orderPackageDO);
return orderPackageDO; return typeConversion(orderPackageDO);
} }
@@ -372,7 +372,7 @@ public class PackServiceImpl implements PackService {
orderPackageMapper.updateById(orderPackageDO); orderPackageMapper.updateById(orderPackageDO);
return orderPackageDO; return typeConversion(orderPackageDO);
} }
@@ -385,7 +385,7 @@ public class PackServiceImpl implements PackService {
List<OrderPackageDO> orderPackageDOS = orderPackageMapper.selectPackStatus(orderId,getUserOrganId()); List<OrderPackageDO> orderPackageDOS = orderPackageMapper.selectPackStatus(orderId,getUserOrganId());
// List<OrderPackageDO> collect = orderPackageDOS.stream().map(o -> o.setRemark(JsonUtils.unzipString(o.getRemark()))).collect(Collectors.toList()); // List<OrderPackageDO> collect = orderPackageDOS.stream().map(o -> o.setRemark(JsonUtils.unzipString(o.getRemark()))).collect(Collectors.toList());
return BeanUtils.toBean(orderPackageDOS, OrderPackRespVO.class); return orderPackageDOS.stream().map(m -> typeConversion(m)).collect(Collectors.toList());
} }
@@ -428,7 +428,7 @@ public class PackServiceImpl implements PackService {
// 新增外部配件包裹表 // 新增外部配件包裹表
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public OrderPackageDO addNewOtherPack(OtherPackReqVO reqVO) { public OrderPackRespVO addNewOtherPack(OtherPackReqVO reqVO) {
// 判断配件名称是否重复 // 判断配件名称是否重复
OrderPartsNDO orderPartsNDO = orderPartsMapper.selectOneParts(reqVO.getName(),getUserOrganId()); OrderPartsNDO orderPartsNDO = orderPartsMapper.selectOneParts(reqVO.getName(),getUserOrganId());
@@ -465,7 +465,7 @@ public class PackServiceImpl implements PackService {
// 查看新增的包裹信息 // 查看新增的包裹信息
/* return orderPackageMapper.selectByPackId(orderPackageDO.getId());*/ /* return orderPackageMapper.selectByPackId(orderPackageDO.getId());*/
return orderPackageDO; return typeConversion(orderPackageDO);
} }
@@ -524,7 +524,7 @@ public class PackServiceImpl implements PackService {
// 新增配件-即新增一个包裹 // 新增配件-即新增一个包裹
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public OrderPackageDO addNewPartsPack(OrderPackReqVO reqVO) { public OrderPackRespVO addNewPartsPack(OrderPackReqVO reqVO) {
OrderPackageDO orderPackageDO = new OrderPackageDO(); OrderPackageDO orderPackageDO = new OrderPackageDO();
orderPackageDO.setOrderId(reqVO.getOrderId()); orderPackageDO.setOrderId(reqVO.getOrderId());
@@ -535,7 +535,24 @@ public class PackServiceImpl implements PackService {
orderItemMapper.insertPartsId(orderPackageDO.getId(), reqVO.getAddPartsIdList()); orderItemMapper.insertPartsId(orderPackageDO.getId(), reqVO.getAddPartsIdList());
return orderPackageDO; return typeConversion(orderPackageDO);
}
// 类型转换
private OrderPackRespVO typeConversion(OrderPackageDO orderPackageDO){
return OrderPackRespVO.builder()
.id(orderPackageDO.getId())
.orderId(orderPackageDO.getOrderId())
.organId(orderPackageDO.getOrganId())
.packageNo(orderPackageDO.getPackageNo())
.packageType(orderPackageDO.getType())
.name(orderPackageDO.getName())
.status(orderPackageDO.getStatus())
.remark(orderPackageDO.getRemark())
.build();
} }
@@ -135,7 +135,9 @@ public class ProductionProcessServiceImpl implements ProductionProcessService {
// 判断生产单工序的状态是否为组件加工 // 判断生产单工序的状态是否为组件加工
if(processStepStatuses.getType().equals(ProcessProcessingTypeEnum.COMPONENTPROCESSING.getNumber())){ if(processStepStatuses.getType().equals(ProcessProcessingTypeEnum.COMPONENTPROCESSING.getNumber())){
processStepItemMapper.updateStemStatus(reqVo.getProcessStepId(),reqVo.getName(),nickname); processStepMapper.updateStatusByName(reqVo.getProcessStepId(),nickname);
processStepItemMapper.updateStemStatus(reqVo.getProcessStepId(),reqVo.getName());
List<OrderProcessStepItemNDO> orderProcessStepItemNDOS = processStepItemMapper.selectStemById(reqVo.getProcessStepId(),ProcessingStatusEnum.RAW.getStatus(),getUserOrganId()); List<OrderProcessStepItemNDO> orderProcessStepItemNDOS = processStepItemMapper.selectStemById(reqVo.getProcessStepId(),ProcessingStatusEnum.RAW.getStatus(),getUserOrganId());
if(orderProcessStepItemNDOS.isEmpty()){ if(orderProcessStepItemNDOS.isEmpty()){
@@ -154,8 +156,12 @@ public class ProductionProcessServiceImpl implements ProductionProcessService {
try { try {
BigDecimal salary = calculateSalary(reqVo.getProcessStepId()); BigDecimal salary = calculateSalary(reqVo.getProcessStepId());
// 修改生产明细表和步骤表的工序状态 // 修改生产明细表和步骤表的工序状态
processStepItemMapper.updateStatus(reqVo.getProcessStepId(),nickname,salary); processStepMapper.updateStatus(reqVo.getProcessStepId(),nickname,salary);
processStepItemMapper.updateStatus(reqVo.getProcessStepId());
}catch (Exception e){ }catch (Exception e){
log.error(String.valueOf(e)); log.error(String.valueOf(e));
@@ -20,16 +20,11 @@
<update id="updateStatus" <update id="updateStatus"
parameterType="java.lang.Object"> parameterType="java.lang.Long">
update order_process_step_item opsi update order_process_step_item
JOIN order_process_step ops ON opsi.process_step_id = ops.id SET status = TRUE
SET opsi.status = TRUE, WHERE process_step_id = #{id};
ops.status = TRUE,
ops.finish_time = now(),
ops.manager = #{nickname},
ops.salary_amount = #{salary}
WHERE ops.id = #{id};
</update> </update>
@@ -37,9 +32,9 @@
<update id="updateStemStatus" parameterType="java.lang.Object"> <update id="updateStemStatus" parameterType="java.lang.Object">
update order_process_step_item opsi update order_process_step_item opsi
join order_process_step ops on opsi.process_step_id = ops.id
set opsi.status = true, set opsi.status = true
ops.manager = #{nickname}
where opsi.process_step_id = #{processStepId} and opsi.name = #{name} where opsi.process_step_id = #{processStepId} and opsi.name = #{name}
@@ -11,6 +11,28 @@
</update> </update>
<update id="updateStatus"
parameterType="java.lang.Object">
update order_process_step
set status = true,
finish_time = now(),
manager = #{nickname},
salary_amount = #{salary}
where id = #{id};
</update>
<update id="updateStatusByName" parameterType="java.lang.Object">
update order_process_step
set manager = #{nickname}
where id = #{id};
</update>
<resultMap id="OrderMap" type="com.cf.imes.module.manage.controller.admin.process.vo.ProcessRespVO"> <resultMap id="OrderMap" type="com.cf.imes.module.manage.controller.admin.process.vo.ProcessRespVO">
@@ -3,6 +3,7 @@ package com.cf.imes.module.system.service.permission;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.extra.spring.SpringUtil; import cn.hutool.extra.spring.SpringUtil;
import com.cf.imes.framework.common.enums.CommonStatusEnum; import com.cf.imes.framework.common.enums.CommonStatusEnum;
import com.cf.imes.framework.common.exception.ServiceException; import com.cf.imes.framework.common.exception.ServiceException;
@@ -189,18 +190,22 @@ public class PermissionServiceImpl implements PermissionService {
roleMenuMapper.deleteListByRoleIdAndMenuIds(roleId, deleteMenuIds); roleMenuMapper.deleteListByRoleIdAndMenuIds(roleId, deleteMenuIds);
} }
Long currentOrganId = SecurityFrameworkUtils.getUserOrganId();
// 角色菜单权限发生修改,通知刷新本地缓存 // 角色菜单权限发生修改,通知刷新本地缓存
if (CollectionUtil.isNotEmpty(createMenuIds) || CollectionUtil.isNotEmpty(deleteMenuIds)) { if (CollectionUtil.isNotEmpty(createMenuIds) || CollectionUtil.isNotEmpty(deleteMenuIds)) {
CompletableFuture.runAsync(() -> { CompletableFuture.runAsync(() -> {
// 获取新增和删除菜单id的并集 // 当前操作人和所操作的目标菜单机构不同时,清空MENU_ROLE_ID_LIST:目标机构id:菜单id的缓存
Collection<Long> delKeys = CollUtil.union(createMenuIds, deleteMenuIds); if (ObjectUtil.notEqual(organId, currentOrganId)) {
delKeys.forEach(menuId -> { // 获取新增和删除菜单id的并集
// 移除redis中的缓存 Collection<Long> delMenuIds = CollUtil.union(createMenuIds, deleteMenuIds);
redisTemplate.delete(String.format(String.valueOf(new StringBuffer(RedisKeyConstants.USER_ROLE_ID_LIST).append(":%s:%s")), organId, menuId)); // 构建批量删除的key集合
}); Set<String> delKeys = delMenuIds.stream().map(menuId -> String.format(String.valueOf(new StringBuffer(RedisKeyConstants.MENU_ROLE_ID_LIST).append(":%s:%s")), organId, menuId)).collect(Collectors.toSet());
Long batchDelNum = redisTemplate.delete(delKeys);
log.info("[assignRoleMenu] 批量删除redis[MENU_ROLE_ID_LIST]数量:{}", batchDelNum);
}
redisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); redisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, "");
}).exceptionally(e -> { }).exceptionally(e -> {
log.error("redis message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e.getMessage()); log.error("[assignRoleMenu] redis message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e);
return null; return null;
}); });
} }
@@ -326,18 +331,22 @@ public class PermissionServiceImpl implements PermissionService {
userRoleMapper.deleteListByRoleIdAndUserIds(roleId, deleteRoleUserIds); userRoleMapper.deleteListByRoleIdAndUserIds(roleId, deleteRoleUserIds);
} }
Long currentOrganId = SecurityFrameworkUtils.getUserOrganId();
// 角色菜单权限发生修改,通知刷新本地缓存 // 角色菜单权限发生修改,通知刷新本地缓存
if (CollectionUtil.isNotEmpty(createRoleUserIds) || CollectionUtil.isNotEmpty(deleteRoleUserIds)) { if (CollectionUtil.isNotEmpty(createRoleUserIds) || CollectionUtil.isNotEmpty(deleteRoleUserIds)) {
CompletableFuture.runAsync(() -> { CompletableFuture.runAsync(() -> {
// 获取新增和删除用户id的并集 // 当前操作人和所操作的目标菜单机构不同时,清空USER_ROLE_ID_LIST:目标机构id:用户id的缓存
Collection<Long> delKeys = CollUtil.union(createRoleUserIds, deleteRoleUserIds); if (ObjectUtil.notEqual(finalOrganId, currentOrganId)) {
delKeys.forEach(userId -> { // 获取新增和删除用户id的并集
// 移除redis中的缓存 Collection<Long> delRoleUserIds = CollUtil.union(createRoleUserIds, deleteRoleUserIds);
redisTemplate.delete(String.format(String.valueOf(new StringBuffer(RedisKeyConstants.USER_ROLE_ID_LIST).append(":%s:%s")), finalOrganId, userId)); // 构建批量删除的key集合
}); Set<String> delKeys = delRoleUserIds.stream().map(userId -> String.format(String.valueOf(new StringBuffer(RedisKeyConstants.USER_ROLE_ID_LIST).append(":%s:%s")), finalOrganId, userId)).collect(Collectors.toSet());
Long batchDelNum = redisTemplate.delete(delKeys);
log.info("[batchAssignRoleUsers] 批量删除redis[USER_ROLE_ID_LIST]数量:{}", batchDelNum);
}
redisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); redisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, "");
}).exceptionally(e -> { }).exceptionally(e -> {
log.error("redis message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e.getMessage()); log.error("[batchAssignRoleUsers] redis message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e);
return null; return null;
}); });
} }
@@ -419,7 +428,7 @@ public class PermissionServiceImpl implements PermissionService {
redisTemplate.delete(String.format(String.valueOf(new StringBuffer(RedisKeyConstants.USER_ROLE_ID_LIST).append(":%s:%s")), organId, userId)); redisTemplate.delete(String.format(String.valueOf(new StringBuffer(RedisKeyConstants.USER_ROLE_ID_LIST).append(":%s:%s")), organId, userId));
redisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); redisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, "");
}).exceptionally(e -> { }).exceptionally(e -> {
log.error("redis 清空user_role_ids或message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e.getMessage()); log.error("[assignUserRole] redis 清空USER_ROLE_ID_LIST或message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e);
return null; return null;
}); });
} }