diff --git a/hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/equipment/entity/EmInfoEntity.java b/hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/equipment/entity/EmInfoEntity.java index 3581439..088f2db 100644 --- a/hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/equipment/entity/EmInfoEntity.java +++ b/hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/equipment/entity/EmInfoEntity.java @@ -127,12 +127,17 @@ public class EmInfoEntity extends TenantEntity { @JsonSerialize(nullsUsing = NullSerializer.class) private Long manager; /** - * 设备等级(01:一类设备,02:二类设备,03:三类设备) + * 设备类别(01:一类设备,02:二类设备,03:三类设备) */ - @ApiModelProperty(value = "设备等级(01:一类设备,02:二类设备,03:三类设备)") + @ApiModelProperty(value = "设备类别(01:一类设备,02:二类设备,03:三类设备)") @EnumValue(strValues = {"01", "02", "03"}, message = "值只能为01、02、03") private String gradeCode; /** + *设备等级(0:一级设备,1:二级设备,2:三级设备) + */ + @ApiModelProperty(value = "设备等级(0:一级设备,1:二级设备,2:三级设备)") + private Integer emGrade; + /** * 安装时间 */ @ApiModelProperty(value = "安装时间") diff --git a/hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/equipment/entity/EmTreeEntity.java b/hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/equipment/entity/EmTreeEntity.java index 87027f2..6053448 100644 --- a/hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/equipment/entity/EmTreeEntity.java +++ b/hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/equipment/entity/EmTreeEntity.java @@ -51,7 +51,7 @@ public class EmTreeEntity extends TenantEntity { @ApiModelProperty(value = "所属组织") private Long refOreanization; - @ApiModelProperty(value = "设备等级") + @ApiModelProperty(value = "设备等级(0:一级设备,1:二级设备,2:三级设备)") private Integer emGrade; @ApiModelProperty(value = "巡检标准") diff --git a/hzims-service/assets/src/main/java/com/hnac/hzims/spare/aspect/LimitRemindAspect.java b/hzims-service/assets/src/main/java/com/hnac/hzims/spare/aspect/LimitRemindAspect.java index a1f2c9c..9cb524f 100644 --- a/hzims-service/assets/src/main/java/com/hnac/hzims/spare/aspect/LimitRemindAspect.java +++ b/hzims-service/assets/src/main/java/com/hnac/hzims/spare/aspect/LimitRemindAspect.java @@ -1,13 +1,14 @@ package com.hnac.hzims.spare.aspect; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.toolkit.Assert; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.google.common.collect.Lists; import com.hnac.hzims.message.MessageConstants; import com.hnac.hzims.message.dto.AppPushDto; +import com.hnac.hzims.message.dto.MessagePushRecordDto; import com.hnac.hzims.message.dto.WsPushDto; +import com.hnac.hzims.message.fegin.IMessageClient; import com.hnac.hzims.message.fegin.IPushMsgClient; import com.hnac.hzims.spare.entity.*; import com.hnac.hzims.spare.service.IWtSpBasicService; @@ -20,14 +21,16 @@ import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; +import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.CollectionUtil; import org.springblade.core.tool.utils.ObjectUtil; -import org.springblade.core.tool.utils.StringUtil; +import org.springblade.system.feign.ISysClient; import org.springblade.system.user.cache.UserCache; import org.springblade.system.user.entity.User; import org.springframework.stereotype.Component; import java.lang.reflect.Field; +import java.util.Arrays; import java.util.List; import java.util.concurrent.*; @@ -40,156 +43,236 @@ import java.util.concurrent.*; @AllArgsConstructor public class LimitRemindAspect { - private final IPushMsgClient pushMsgClient; - private final IWtSpWarehouseService wtSpWarehouseService; - private final IWtSpTotalService wtSpTotalService; - private final IWtSpBasicService wtSpBasicService; + private final IPushMsgClient pushMsgClient; + private final IWtSpWarehouseService wtSpWarehouseService; + private final IWtSpTotalService wtSpTotalService; + private final IWtSpBasicService wtSpBasicService; + private final ISysClient sysClient; + private final IMessageClient messageClient; - /** - * 以出入库保存方法为切点 处理预警信息(暂未考虑台账上下限变化因素) - */ - @Pointcut("execution(* com.hnac.hzims.spare.service.impl.SpWarehouseInServiceImpl.save(..)) " + - "|| execution(* com.hnac.hzims.spare.service.impl.SpWarehouseOutServiceImpl.save(..))") - public void warnPointCut() { + /** + * 以出入库保存方法为切点 处理预警信息(暂未考虑台账上下限变化因素) + */ + @Pointcut("execution(* com.hnac.hzims.spare.service.impl.SpWarehouseInServiceImpl.save(..)) " + + "|| execution(* com.hnac.hzims.spare.service.impl.SpWarehouseOutServiceImpl.save(..))") + public void warnPointCut() { - } + } - /*** - * 生成预警后进行消息提醒 - * @param point 连接点 - */ - @After("warnPointCut()") - public void after(JoinPoint point) { - Object[] args = point.getArgs(); - if(args.length == 1 && (args[0] instanceof SpWarehouseInEntity || args[0] instanceof SpWarehouseOutEntity)){ - log.info("===进入库存预警消息推送==="); - Field basicListField = null; - Field warehouseIdField = null; - try { - basicListField = args[0].getClass().getDeclaredField("basicList"); - warehouseIdField = args[0].getClass().getDeclaredField("storageRoom"); - basicListField.setAccessible(true); - warehouseIdField.setAccessible(true); - Assert.notNull(basicListField,"获取basicList属性失败"); - Assert.notNull(warehouseIdField,"获取storageRoom属性失败"); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } - List basicList = null; - Long warehouseId = null; - try { - basicList = (List) basicListField.get(args[0]); - warehouseId = (Long) warehouseIdField.get(args[0]); - if(CollectionUtil.isNotEmpty(basicList) && ObjectUtil.isNotEmpty(warehouseId)){ - this.pushWarehouseWarning(warehouseId,basicList); - } - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - log.info("===库存预警消息推送结束==="); - } + /*** + * 生成预警后进行消息提醒 + * @param point 连接点 + */ + @After("warnPointCut()") + public void after(JoinPoint point) { + Object[] args = point.getArgs(); + if (args.length == 1 && (args[0] instanceof SpWarehouseInEntity || args[0] instanceof SpWarehouseOutEntity)) { + log.info("===进入库存预警消息推送==="); + Field basicListField = null; + Field warehouseIdField = null; + try { + basicListField = args[0].getClass().getDeclaredField("basicList"); + warehouseIdField = args[0].getClass().getDeclaredField("storageRoom"); + basicListField.setAccessible(true); + warehouseIdField.setAccessible(true); + Assert.notNull(basicListField, "获取basicList属性失败"); + Assert.notNull(warehouseIdField, "获取storageRoom属性失败"); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } + List basicList = null; + Long warehouseId = null; + try { + basicList = (List) basicListField.get(args[0]); + warehouseId = (Long) warehouseIdField.get(args[0]); + if (CollectionUtil.isNotEmpty(basicList) && ObjectUtil.isNotEmpty(warehouseId)) { + this.pushWarehouseWarningV2(warehouseId, basicList); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + log.info("===库存预警消息推送结束==="); + } - /** - * 查询出入库备品备件是否存在告警信息并推送 - * @param spRecordEntityList 出入库备品备件列表 - * @param warehouseId 仓库ID - */ - private void pushWarehouseWarning(Long warehouseId, List spRecordEntityList){ - //开启线程池推送消息 - ExecutorService executorService = new ThreadPoolExecutor(1,1,1, TimeUnit.SECONDS,new LinkedBlockingDeque<>()); - executorService.execute(()-> spRecordEntityList.forEach(spRecordEntity -> { - //查询该仓库是否有备品备件超出上下限 - WtSpWarehouseEntity wtSpWarehouseEntity = wtSpWarehouseService.selectById(warehouseId); - WtSpTotalEntity wtSpTotalEntity = wtSpTotalService.getOne(Wrappers.lambdaQuery() - .eq(WtSpTotalEntity::getSpBasicId,spRecordEntity.getSpBasicId()) - .eq(WtSpTotalEntity::getWarehouseId,warehouseId) - .last("limit 1;") - ); - WtSpBasicEntity basicEntity = wtSpBasicService.getById(spRecordEntity.getSpBasicId()); - //超出上限/下限发送消息提醒 - log.info("仓库id为:{},库存为:{},上限为:{},下限为:{}",warehouseId,wtSpTotalEntity.getStock(),basicEntity.getUpperLimit(),basicEntity.getLowerLimit()); - if(wtSpTotalEntity.getStock() > basicEntity.getUpperLimit() || wtSpTotalEntity.getStock() < basicEntity.getLowerLimit()) { - User pusher = UserCache.getUser(wtSpWarehouseEntity.getManager()); - if(ObjectUtil.isEmpty(pusher)){ - return; - } - //完善推送信息 - String alert; - if(wtSpTotalEntity.getStock() > basicEntity.getUpperLimit()) { - alert = String.format("%s内的(%s)已达到上限,目前仓库内的库存为:%s,上限值为:%s。请及时处理!", - wtSpWarehouseEntity.getName(), - basicEntity.getName(), - wtSpTotalEntity.getStock(), - basicEntity.getUpperLimit() - ); - } - else { - alert = String.format("%s内的(%s)已达到下限,目前仓库内的库存为:%s,下限值为:%s。请及时处理!", - wtSpWarehouseEntity.getName(), - basicEntity.getName(), - wtSpTotalEntity.getStock(), - basicEntity.getLowerLimit() - ); - } - //推送web消息 - CompletableFuture.supplyAsync(()->{ - this.warningPushWeb(alert,pusher); - return "推送成功"; - }); - //推送App消息 - CompletableFuture.supplyAsync(()->{ - this.warningPushApp(alert,pusher); - return "推送成功"; - }); - } - })); - executorService.shutdown(); - } + /** + * 查询出入库备品备件是否存在告警信息并推送 + * + * @param spRecordEntityList 出入库备品备件列表 + * @param warehouseId 仓库ID + */ + final static ExecutorService executorService = new ThreadPoolExecutor(5, 5, 1, TimeUnit.SECONDS, new LinkedBlockingDeque<>()); - /** - * 备品备件-预警app推送 - * @param alert 推送内容 - * @param pusher 推送人 - */ - private void warningPushApp(String alert, User pusher) { - //app推送 - AppPushDto appPushDto = new AppPushDto(); - appPushDto.setBusinessClassify(MessageConstants.BusinessClassifyEnum.ASSETS.getKey()); - appPushDto.setBusinessKey("assets-warning"); - appPushDto.setIsAll(true); - appPushDto.setContent(alert); - appPushDto.setSubject("库存预警"); - appPushDto.setTitle("库存预警"); - appPushDto.setAudienceType(PushAudienceType.TAG); - appPushDto.setTags(Lists.newArrayList(new String[]{pusher.getId().toString()})); - //FIXME 因feign接口请求头丢失 登录信息失效先启用未登陆方式 - appPushDto.setTenantId("200000"); - appPushDto.setCreateUser(1380746947515691009L); - appPushDto.setCreateDept(2000000101L); - appPushDto.setPushAlert(alert); - pushMsgClient.sendPush(appPushDto); - } + private void pushWarehouseWarningV2(Long warehouseId, List spRecordEntityList) { + //开启线程池推送消息 + executorService.execute(() -> spRecordEntityList.forEach(spRecordEntity -> { + //查询该仓库是否有备品备件超出上下限 + WtSpWarehouseEntity wtSpWarehouseEntity = wtSpWarehouseService.selectById(warehouseId); + WtSpTotalEntity wtSpTotalEntity = wtSpTotalService.getOne(Wrappers.lambdaQuery() + .eq(WtSpTotalEntity::getSpBasicId, spRecordEntity.getSpBasicId()) + .eq(WtSpTotalEntity::getWarehouseId, warehouseId) + .last("limit 1;") + ); + WtSpBasicEntity basicEntity = wtSpBasicService.getById(spRecordEntity.getSpBasicId()); + //超出上限/下限发送消息提醒 + log.info("仓库id为:{},库存为:{},上限为:{},下限为:{}", warehouseId, wtSpTotalEntity.getStock(), basicEntity.getUpperLimit(), basicEntity.getLowerLimit()); + if (wtSpTotalEntity.getStock() > basicEntity.getUpperLimit() || wtSpTotalEntity.getStock() < basicEntity.getLowerLimit()) { + User pusher = UserCache.getUser(wtSpWarehouseEntity.getManager()); + if (ObjectUtil.isEmpty(pusher)) { + return; + } + //完善推送信息 + String alert; + if (wtSpTotalEntity.getStock() > basicEntity.getUpperLimit()) { + alert = String.format("%s内的(%s)已达到上限,目前仓库内的库存为:%s,上限值为:%s。请及时处理!", + wtSpWarehouseEntity.getName(), + basicEntity.getName(), + wtSpTotalEntity.getStock(), + basicEntity.getUpperLimit() + ); + } else { + alert = String.format("%s内的(%s)已达到下限,目前仓库内的库存为:%s,下限值为:%s。请及时处理!", + wtSpWarehouseEntity.getName(), + basicEntity.getName(), + wtSpTotalEntity.getStock(), + basicEntity.getLowerLimit() + ); + } + //推送消息 + CompletableFuture.supplyAsync(() -> { + this.warningPush(alert, pusher,warehouseId); + return "推送成功"; + }); + } + })); + executorService.shutdown(); + } - /** - * 备品备件-预警web推送 - * @param alert 推送内容 - * @param pusher 推送人 - */ - private void warningPushWeb(String alert, User pusher) { - //web推送 - WsPushDto wsPushDto = new WsPushDto(); - wsPushDto.setBusinessClassify(MessageConstants.BusinessClassifyEnum.ASSETS.getKey()); - wsPushDto.setBusinessKey("assets-warning"); - wsPushDto.setContent(alert); - wsPushDto.setSubject("库存预警"); - wsPushDto.setSubject("备品备件预警信息"); - wsPushDto.setUserIdList(Lists.newArrayList(new String[]{pusher.getId().toString()})); - wsPushDto.setText(alert); - //FIXME 因feign接口请求头丢失 登录信息失效先启用未登陆方式 - wsPushDto.setTenantId("200000"); - wsPushDto.setCreateUser(1380746947515691009L); - wsPushDto.setCreateDept(2000000101L); - pushMsgClient.sendWebsocket(wsPushDto); - } + private void warningPush(String alert, User pusher,Long warehouseId) { + MessagePushRecordDto message = new MessagePushRecordDto(); + message.setBusinessClassify("business"); + message.setBusinessKey(MessageConstants.BusinessClassifyEnum.ASSETS.getKey()); + message.setSubject(MessageConstants.BusinessClassifyEnum.ASSETS.getDescription()); + message.setTaskId(warehouseId); + message.setTenantId("200000"); + message.setTypes(Arrays.asList(MessageConstants.APP_PUSH, MessageConstants.WS_PUSH)); + message.setPushType(MessageConstants.IMMEDIATELY); + message.setContent(alert); + message.setDeptId(pusher.getCreateDept()); + R deptName = sysClient.getDeptName(pusher.getCreateDept()); + if (deptName.isSuccess()) { + message.setDeptName(deptName.getData()); + } + Long userId = pusher.getId(); + if (ObjectUtils.isEmpty(userId)) { + log.error("推送人不能为空哦,{}", userId); + return; + } + message.setPusher(userId.toString()); + message.setPusherName(pusher.getName()); + message.setAccount(pusher.getAccount()); + message.setCreateUser(userId); + messageClient.sendMessage(message); + + } + + //此接口已经弃用20230608 + @Deprecated + private void pushWarehouseWarning(Long warehouseId, List spRecordEntityList) { + //开启线程池推送消息 + executorService.execute(() -> spRecordEntityList.forEach(spRecordEntity -> { + //查询该仓库是否有备品备件超出上下限 + WtSpWarehouseEntity wtSpWarehouseEntity = wtSpWarehouseService.selectById(warehouseId); + WtSpTotalEntity wtSpTotalEntity = wtSpTotalService.getOne(Wrappers.lambdaQuery() + .eq(WtSpTotalEntity::getSpBasicId, spRecordEntity.getSpBasicId()) + .eq(WtSpTotalEntity::getWarehouseId, warehouseId) + .last("limit 1;") + ); + WtSpBasicEntity basicEntity = wtSpBasicService.getById(spRecordEntity.getSpBasicId()); + //超出上限/下限发送消息提醒 + log.info("仓库id为:{},库存为:{},上限为:{},下限为:{}", warehouseId, wtSpTotalEntity.getStock(), basicEntity.getUpperLimit(), basicEntity.getLowerLimit()); + if (wtSpTotalEntity.getStock() > basicEntity.getUpperLimit() || wtSpTotalEntity.getStock() < basicEntity.getLowerLimit()) { + User pusher = UserCache.getUser(wtSpWarehouseEntity.getManager()); + if (ObjectUtil.isEmpty(pusher)) { + return; + } + //完善推送信息 + String alert; + if (wtSpTotalEntity.getStock() > basicEntity.getUpperLimit()) { + alert = String.format("%s内的(%s)已达到上限,目前仓库内的库存为:%s,上限值为:%s。请及时处理!", + wtSpWarehouseEntity.getName(), + basicEntity.getName(), + wtSpTotalEntity.getStock(), + basicEntity.getUpperLimit() + ); + } else { + alert = String.format("%s内的(%s)已达到下限,目前仓库内的库存为:%s,下限值为:%s。请及时处理!", + wtSpWarehouseEntity.getName(), + basicEntity.getName(), + wtSpTotalEntity.getStock(), + basicEntity.getLowerLimit() + ); + } + //推送web消息 + CompletableFuture.supplyAsync(() -> { + this.warningPushWeb(alert, pusher); + return "推送成功"; + }); + //推送App消息 + CompletableFuture.supplyAsync(() -> { + this.warningPushApp(alert, pusher); + return "推送成功"; + }); + } + })); + executorService.shutdown(); + } + + /** + * 备品备件-预警app推送 + * + * @param alert 推送内容 + * @param pusher 推送人 + */ + private void warningPushApp(String alert, User pusher) { + //app推送 + AppPushDto appPushDto = new AppPushDto(); + appPushDto.setBusinessClassify(MessageConstants.BusinessClassifyEnum.ASSETS.getKey()); + appPushDto.setBusinessKey("assets-warning"); + appPushDto.setIsAll(true); + appPushDto.setContent(alert); + appPushDto.setSubject("库存预警"); + appPushDto.setTitle("库存预警"); + appPushDto.setAudienceType(PushAudienceType.TAG); + appPushDto.setTags(Lists.newArrayList(new String[]{pusher.getId().toString()})); + //FIXME 因feign接口请求头丢失 登录信息失效先启用未登陆方式 + appPushDto.setTenantId("200000"); + appPushDto.setCreateUser(1380746947515691009L); + appPushDto.setCreateDept(2000000101L); + appPushDto.setPushAlert(alert); + pushMsgClient.sendPush(appPushDto); + } + + /** + * 备品备件-预警web推送 + * + * @param alert 推送内容 + * @param pusher 推送人 + */ + private void warningPushWeb(String alert, User pusher) { + //web推送 + WsPushDto wsPushDto = new WsPushDto(); + wsPushDto.setBusinessClassify(MessageConstants.BusinessClassifyEnum.ASSETS.getKey()); + wsPushDto.setBusinessKey("assets-warning"); + wsPushDto.setContent(alert); + wsPushDto.setSubject("库存预警"); + wsPushDto.setSubject("备品备件预警信息"); + wsPushDto.setUserIdList(Lists.newArrayList(new String[]{pusher.getId().toString()})); + wsPushDto.setText(alert); + //FIXME 因feign接口请求头丢失 登录信息失效先启用未登陆方式 + wsPushDto.setTenantId("200000"); + wsPushDto.setCreateUser(1380746947515691009L); + wsPushDto.setCreateDept(2000000101L); + pushMsgClient.sendWebsocket(wsPushDto); + } } diff --git a/hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/controller/EmDefinitionController.java b/hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/controller/EmDefinitionController.java index b746354..2fc3672 100644 --- a/hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/controller/EmDefinitionController.java +++ b/hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/controller/EmDefinitionController.java @@ -65,6 +65,7 @@ public class EmDefinitionController extends BladeController { if (Func.isNotEmpty(emDefinition.getStatus())) { wrapper.eq(EmDefinitionEntity::getStatus, emDefinition.getStatus()); } + wrapper.orderByDesc(EmDefinitionEntity::getCreateTime); IPage pages = emDefinitionService.page(Condition.getPage(query), wrapper); for (EmDefinitionEntity definition : pages.getRecords()) { User createUser = UserCache.getUser(definition.getCreateUser()); diff --git a/hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/controller/EmInfoController.java b/hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/controller/EmInfoController.java index aedbbf7..c7eaa21 100644 --- a/hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/controller/EmInfoController.java +++ b/hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/controller/EmInfoController.java @@ -9,6 +9,7 @@ import com.hnac.hzims.common.logs.enums.BusinessType; import com.hnac.hzims.common.logs.enums.OperatorType; import com.hnac.hzims.equipment.dto.DeviceTreeDTO; import com.hnac.hzims.equipment.entity.EmInfoEntity; +import com.hnac.hzims.equipment.entity.EmTreeEntity; import com.hnac.hzims.equipment.service.IEmInfoService; import com.hnac.hzims.equipment.vo.EmInfoAddVo; import com.hnac.hzims.equipment.vo.EmInfoContentVO; @@ -35,6 +36,7 @@ import springfox.documentation.annotations.ApiIgnore; import javax.validation.Valid; import java.util.*; +import java.util.stream.Collectors; /** * 设备控制器 @@ -176,6 +178,51 @@ public class EmInfoController extends BladeController { } /** + * 获取所有设备列表(树结构) + * @param refDept 站点机构 + * @param name 设备名称 + * @return + */ + @ApiLog + @RequestMapping(value = "/getEmInfoTreeList") + @ApiOperationSupport(order = 3) + @ApiOperation(value = "获取所有设备列表(树结构)", notes = "传入设备id") + public R> getEmInfoTreeList(Long refDept, String name) { + List resultList = new ArrayList<>(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + if (Func.isNotEmpty(refDept)) { + wrapper.eq(EmInfoEntity::getDepartment, refDept); + } + if (Func.isNotEmpty(name)) { + wrapper.like(EmInfoEntity::getName, name); + } + List list = em_infoService.list(wrapper); + if (Func.isNotEmpty(name)) { + for (EmInfoEntity emInfo : list) { + LambdaQueryWrapper sonWrapper = new LambdaQueryWrapper<>(); + sonWrapper.likeRight(EmInfoEntity::getPath, emInfo.getPath()); + List sonList = em_infoService.list(sonWrapper); + // 把List结构数据转换成树结构 + Map> emInfoMap = sonList.stream().collect(Collectors.groupingBy(EmInfoEntity::getGpid)); + sonList.forEach(emTree -> { + emTree.setInfoChildren(emInfoMap.get(emTree.getId())); + }); + sonList = sonList.stream().filter(item -> item.getGpid().equals(emInfo.getGpid())).collect(Collectors.toList()); + resultList.addAll(sonList); + } + } else { + // 把List结构数据转换成树结构 + Map> emInfoMap = list.stream().collect(Collectors.groupingBy(EmInfoEntity::getGpid)); + list.forEach(emTree -> { + emTree.setInfoChildren(emInfoMap.get(emTree.getId())); + }); + resultList = list.stream().filter(item -> item.getGpid().equals(0L)).collect(Collectors.toList()); + } + + return R.data(resultList); + } + + /** * 新增 */ @PostMapping("/save") diff --git a/hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/mapper/EmInfoMapper.java b/hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/mapper/EmInfoMapper.java index 387e821..3f2cb5c 100644 --- a/hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/mapper/EmInfoMapper.java +++ b/hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/mapper/EmInfoMapper.java @@ -50,7 +50,7 @@ public interface EmInfoMapper extends UserDataScopeBaseMapper { List listByTenantId(@Param("tenantId") String tenantId); - Integer getMaxEmIndexByPid(@Param("pid") Long pid); + Integer getMaxEmIndexByPid(@Param("department") Long department, @Param("emGrade") Integer emGrade); List getSparePart(@Param("path") String path, @Param("startTime") String startTime, @Param("endTime") String endTime); } diff --git a/hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/mapper/EmInfoMapper.xml b/hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/mapper/EmInfoMapper.xml index e90bc2a..db7e24d 100644 --- a/hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/mapper/EmInfoMapper.xml +++ b/hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/mapper/EmInfoMapper.xml @@ -117,7 +117,7 @@ - SELECT DM.*, DC.`CLASS_NAME` as managerId, DC.`START_TIME`, DC.`END_TIME` + SELECT DM.*, DC.`CLASS_NAME`, DC.`START_TIME`, DC.`END_TIME` FROM hz_ims_duty_main DM JOIN hz_ims_duty_class DC ON DM.`CLASS_ID` = DC.`ID`