diff --git a/fys-admin/pom.xml b/fys-admin/pom.xml index e706cd4..20f147e 100644 --- a/fys-admin/pom.xml +++ b/fys-admin/pom.xml @@ -94,10 +94,10 @@ - + diff --git a/fys-admin/src/main/java/com/fuyuanshen/app/controller/AppDeviceController.java b/fys-admin/src/main/java/com/fuyuanshen/app/controller/AppDeviceController.java index c88a40e..31f02ef 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/app/controller/AppDeviceController.java +++ b/fys-admin/src/main/java/com/fuyuanshen/app/controller/AppDeviceController.java @@ -11,6 +11,7 @@ import com.fuyuanshen.common.mybatis.core.page.PageQuery; import com.fuyuanshen.common.mybatis.core.page.TableDataInfo; import com.fuyuanshen.common.web.core.BaseController; import com.fuyuanshen.equipment.domain.dto.AppDeviceBo; +import com.fuyuanshen.equipment.domain.dto.AppDeviceSendMsgBo; import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria; import com.fuyuanshen.equipment.domain.vo.AppDeviceVo; import jakarta.validation.constraints.NotNull; @@ -101,7 +102,7 @@ public class AppDeviceController extends BaseController { * 发送信息 */ @PostMapping(value = "/sendMessage") - public R sendMessage(@RequestBody AppDeviceBo bo) { + public R sendMessage(@RequestBody AppDeviceSendMsgBo bo) { return toAjax(appDeviceService.sendMessage(bo)); } } diff --git a/fys-admin/src/main/java/com/fuyuanshen/app/controller/AppDeviceShareController.java b/fys-admin/src/main/java/com/fuyuanshen/app/controller/AppDeviceShareController.java index 60620f6..581c934 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/app/controller/AppDeviceShareController.java +++ b/fys-admin/src/main/java/com/fuyuanshen/app/controller/AppDeviceShareController.java @@ -55,6 +55,14 @@ public class AppDeviceShareController extends BaseController { return deviceShareService.queryPageList(bo, pageQuery); } + /** + * 他人分享管理列表 + */ + @GetMapping("/otherDeviceShareList") + public TableDataInfo otherDeviceShareList(AppDeviceShareBo bo, PageQuery pageQuery) { + return deviceShareService.otherDeviceShareList(bo, pageQuery); + } + /** * 获取设备分享详细信息 * diff --git a/fys-admin/src/main/java/com/fuyuanshen/app/service/AppDeviceBizService.java b/fys-admin/src/main/java/com/fuyuanshen/app/service/AppDeviceBizService.java index 35a897e..0f1a83d 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/app/service/AppDeviceBizService.java +++ b/fys-admin/src/main/java/com/fuyuanshen/app/service/AppDeviceBizService.java @@ -1,5 +1,6 @@ package com.fuyuanshen.app.service; +import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -11,25 +12,33 @@ import com.fuyuanshen.app.domain.vo.AppDeviceDetailVo; import com.fuyuanshen.app.domain.vo.AppPersonnelInfoVo; import com.fuyuanshen.app.mapper.AppPersonnelInfoMapper; import com.fuyuanshen.app.mapper.equipment.APPDeviceMapper; +import com.fuyuanshen.common.core.exception.ServiceException; import com.fuyuanshen.common.core.utils.MapstructUtils; +import com.fuyuanshen.common.core.utils.ObjectUtils; import com.fuyuanshen.common.mybatis.core.page.PageQuery; import com.fuyuanshen.common.mybatis.core.page.TableDataInfo; import com.fuyuanshen.common.satoken.utils.AppLoginHelper; import com.fuyuanshen.equipment.domain.Device; import com.fuyuanshen.equipment.domain.DeviceType; import com.fuyuanshen.equipment.domain.dto.AppDeviceBo; +import com.fuyuanshen.equipment.domain.dto.AppDeviceSendMsgBo; import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria; import com.fuyuanshen.equipment.domain.vo.AppDeviceVo; import com.fuyuanshen.equipment.enums.BindingStatusEnum; import com.fuyuanshen.equipment.enums.CommunicationModeEnum; import com.fuyuanshen.equipment.mapper.DeviceMapper; import com.fuyuanshen.equipment.mapper.DeviceTypeMapper; +import com.fuyuanshen.equipment.utils.c.ReliableTextToBitmap; +import com.fuyuanshen.system.mqtt.config.MqttGateway; +import com.fuyuanshen.system.mqtt.constants.MqttConstants; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Slf4j @@ -41,6 +50,7 @@ public class AppDeviceBizService { private final DeviceMapper deviceMapper; private final AppPersonnelInfoMapper appPersonnelInfoMapper; private final DeviceTypeMapper deviceTypeMapper; + private final MqttGateway mqttGateway; public List getTypeList() { @@ -57,12 +67,31 @@ public class AppDeviceBizService { } - public int sendMessage(AppDeviceBo bo) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("id", bo.getDeviceId()) - .eq("binding_user_id", AppLoginHelper.getUserId()) - .set("send_msg", bo.getSendMsg()); - return deviceMapper.update(updateWrapper); + public int sendMessage(AppDeviceSendMsgBo bo) { + List deviceIds = bo.getDeviceIds(); + if(deviceIds == null || deviceIds.isEmpty()){ + throw new ServiceException("请选择设备"); + } + for (Long deviceId : deviceIds){ + Device deviceObj = deviceMapper.selectById(deviceId); + if(deviceObj==null) { + throw new ServiceException("设备不存在"+deviceId); + } + + byte[] msg = ReliableTextToBitmap.textToBitmapBytes(bo.getSendMsg()); + Map linkHashMap = new HashMap<>(); + linkHashMap.put("message",msg); + String sendMsg = JSON.toJSONString(linkHashMap); + mqttGateway.sendMsgToMqtt(MqttConstants.GLOBAL_PUB_KEY+deviceObj.getDeviceImei(), 1 ,sendMsg); + log.info("发送设备消息:{}", bo.getSendMsg()); + + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", deviceId) + .eq("binding_user_id", AppLoginHelper.getUserId()) + .set("send_msg", bo.getSendMsg()); + deviceMapper.update(updateWrapper); + } + return 1; } @@ -138,6 +167,9 @@ public class AppDeviceBizService { public AppDeviceDetailVo getInfo(Long id) { Device device = deviceMapper.selectById(id); + if (device == null) { + throw new RuntimeException("请先将设备入库!!!"); + } AppDeviceDetailVo vo = new AppDeviceDetailVo(); vo.setDeviceId(device.getId()); vo.setDeviceName(device.getDeviceName()); @@ -152,7 +184,11 @@ public class AppDeviceBizService { } vo.setBluetoothName(device.getBluetoothName()); - AppPersonnelInfo appPersonnelInfo = appPersonnelInfoMapper.selectById(device.getId()); + vo.setSendMsg(device.getSendMsg()); + + QueryWrapper qw = new QueryWrapper() + .eq("device_id", device.getId()); + AppPersonnelInfo appPersonnelInfo = appPersonnelInfoMapper.selectOne(qw); if(appPersonnelInfo != null){ AppPersonnelInfoVo personnelInfoVo = MapstructUtils.convert(appPersonnelInfo, AppPersonnelInfoVo.class); vo.setPersonnelInfo(personnelInfoVo); @@ -161,7 +197,41 @@ public class AppDeviceBizService { } public boolean registerPersonInfo(AppPersonnelInfoBo bo) { - AppPersonnelInfo appPersonnelInfo = MapstructUtils.convert(bo, AppPersonnelInfo.class); - return appPersonnelInfoMapper.insertOrUpdate(appPersonnelInfo); + Long deviceId = bo.getDeviceId(); + Device deviceObj = deviceMapper.selectById(deviceId); + if(deviceObj == null){ + throw new RuntimeException("请先将设备入库!!!"); + } + QueryWrapper qw = new QueryWrapper() + .eq("device_id", deviceId); + List appPersonnelInfoVos = appPersonnelInfoMapper.selectVoList(qw); +// unitName,position,name,id + byte[] unitName = ReliableTextToBitmap.textToBitmapBytes(bo.getUnitName()); + byte[] position = ReliableTextToBitmap.textToBitmapBytes(bo.getPosition()); + byte[] name = ReliableTextToBitmap.textToBitmapBytes(bo.getName()); + byte[] id = ReliableTextToBitmap.textToBitmapBytes(bo.getCode()); + Map linkHashMap = new HashMap<>(); + linkHashMap.put("unitName",unitName); + linkHashMap.put("position",position); + linkHashMap.put("name",name); + linkHashMap.put("id",id); + String personnelInfo = JSON.toJSONString(linkHashMap); + mqttGateway.sendMsgToMqtt(MqttConstants.GLOBAL_PUB_KEY+deviceObj.getDeviceImei(), 1 ,personnelInfo); + log.info("发送点阵数据到设备消息:{}", bo); + + if(ObjectUtils.length(appPersonnelInfoVos) == 0){ + AppPersonnelInfo appPersonnelInfo = MapstructUtils.convert(bo, AppPersonnelInfo.class); + return appPersonnelInfoMapper.insertOrUpdate(appPersonnelInfo); + }else { + UpdateWrapper uw = new UpdateWrapper<>(); + uw.eq("device_id", deviceId) + .set("name", bo.getName()) + .set("position", bo.getPosition()) + .set("unit_name", bo.getUnitName()) + .set("code",bo.getCode()); + return appPersonnelInfoMapper.update(null, uw)>0; + } + + } } diff --git a/fys-admin/src/main/resources/application-dev.yml b/fys-admin/src/main/resources/application-dev.yml index 8e300e7..21268ac 100644 --- a/fys-admin/src/main/resources/application-dev.yml +++ b/fys-admin/src/main/resources/application-dev.yml @@ -303,6 +303,6 @@ mqtt: password: #YtvpSfCNG url: tcp://47.120.79.150:2883 subClientId: fys_subClient - subTopic: worker/alert/#,worker/location/# - pubTopic: worker/location + subTopic: A/#,worker/location/# + pubTopic: B/# pubClientId: fys_pubClient \ No newline at end of file diff --git a/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/AppPersonnelInfo.java b/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/AppPersonnelInfo.java index afd0072..710290b 100644 --- a/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/AppPersonnelInfo.java +++ b/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/AppPersonnelInfo.java @@ -36,6 +36,11 @@ public class AppPersonnelInfo extends TenantEntity { */ private String name; + /** + * 职位 + */ + private String position; + /** * 单位名称 */ @@ -46,5 +51,6 @@ public class AppPersonnelInfo extends TenantEntity { */ private String sendMsg; + private String code; } diff --git a/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/bo/AppPersonnelInfoBo.java b/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/bo/AppPersonnelInfoBo.java index 39f8b40..da469ac 100644 --- a/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/bo/AppPersonnelInfoBo.java +++ b/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/bo/AppPersonnelInfoBo.java @@ -23,13 +23,11 @@ public class AppPersonnelInfoBo extends BaseEntity { /** * 主键 */ - @NotNull(message = "主键不能为空", groups = { AddGroup.class, EditGroup.class }) private Long id; /** * 设备id */ - @NotNull(message = "设备id不能为空", groups = { AddGroup.class, EditGroup.class }) private Long deviceId; /** @@ -37,6 +35,11 @@ public class AppPersonnelInfoBo extends BaseEntity { */ private String name; + /** + * 职位 + */ + private String position; + /** * 部门名称 */ @@ -52,5 +55,8 @@ public class AppPersonnelInfoBo extends BaseEntity { */ private String sendMsg; - + /** + * ID号 + */ + private String code; } diff --git a/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/vo/AppDeviceDetailVo.java b/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/vo/AppDeviceDetailVo.java index 5d4cc20..d90f808 100644 --- a/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/vo/AppDeviceDetailVo.java +++ b/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/vo/AppDeviceDetailVo.java @@ -69,4 +69,9 @@ public class AppDeviceDetailVo { * 人员信息 */ private AppPersonnelInfoVo personnelInfo; + + /** + * 发送信息 + */ + private String sendMsg; } diff --git a/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/vo/AppDeviceShareVo.java b/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/vo/AppDeviceShareVo.java index 3b554a3..b9ea67d 100644 --- a/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/vo/AppDeviceShareVo.java +++ b/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/vo/AppDeviceShareVo.java @@ -41,6 +41,10 @@ public class AppDeviceShareVo implements Serializable { @ExcelProperty(value = "设备ID") private Long deviceId; + /** + * 设备IMEI + */ + private String deviceImei; /** * 设备名称 */ diff --git a/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/vo/AppPersonnelInfoVo.java b/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/vo/AppPersonnelInfoVo.java index 84c064c..bbbabfa 100644 --- a/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/vo/AppPersonnelInfoVo.java +++ b/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/domain/vo/AppPersonnelInfoVo.java @@ -47,10 +47,10 @@ public class AppPersonnelInfoVo implements Serializable { private String name; /** - * 部门名称 + * 岗位 */ - @ExcelProperty(value = "部门名称") - private String deptName; + @ExcelProperty(value = "岗位") + private String position; /** * 单位名称 @@ -59,10 +59,10 @@ public class AppPersonnelInfoVo implements Serializable { private String unitName; /** - * 发送信息 + * ID号 */ - @ExcelProperty(value = "发送信息") - private String sendMsg; + @ExcelProperty(value = "ID号") + private String code; } diff --git a/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/mapper/AppDeviceShareMapper.java b/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/mapper/AppDeviceShareMapper.java index 8bf8360..01dbf1a 100644 --- a/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/mapper/AppDeviceShareMapper.java +++ b/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/mapper/AppDeviceShareMapper.java @@ -1,8 +1,12 @@ package com.fuyuanshen.app.mapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fuyuanshen.app.domain.AppDeviceShare; +import com.fuyuanshen.app.domain.bo.AppDeviceShareBo; import com.fuyuanshen.app.domain.vo.AppDeviceShareVo; import com.fuyuanshen.common.mybatis.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Param; /** * 设备分享Mapper接口 @@ -11,5 +15,5 @@ import com.fuyuanshen.common.mybatis.core.mapper.BaseMapperPlus; * @date 2025-07-16 */ public interface AppDeviceShareMapper extends BaseMapperPlus { - + IPage otherDeviceShareList(@Param("bo") AppDeviceShareBo bo, Page page); } diff --git a/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/service/IAppDeviceShareService.java b/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/service/IAppDeviceShareService.java index 84dfb27..b4fcb4f 100644 --- a/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/service/IAppDeviceShareService.java +++ b/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/service/IAppDeviceShareService.java @@ -65,4 +65,6 @@ public interface IAppDeviceShareService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + TableDataInfo otherDeviceShareList(AppDeviceShareBo bo, PageQuery pageQuery); } diff --git a/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/service/impl/AppDeviceShareServiceImpl.java b/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/service/impl/AppDeviceShareServiceImpl.java index 89178ca..322268a 100644 --- a/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/service/impl/AppDeviceShareServiceImpl.java +++ b/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/service/impl/AppDeviceShareServiceImpl.java @@ -1,5 +1,6 @@ package com.fuyuanshen.app.service.impl; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.fuyuanshen.common.core.utils.MapstructUtils; import com.fuyuanshen.common.core.utils.StringUtils; import com.fuyuanshen.common.mybatis.core.page.TableDataInfo; @@ -68,6 +69,7 @@ public class AppDeviceShareServiceImpl implements IAppDeviceShareService { if(device != null){ r.setDevicePic(device.getDevicePic()); r.setDeviceName(device.getDeviceName()); + r.setDeviceImei(device.getDeviceImei()); } }); return TableDataInfo.build(result); @@ -146,4 +148,22 @@ public class AppDeviceShareServiceImpl implements IAppDeviceShareService { } return baseMapper.deleteByIds(ids) > 0; } + + @Override + public TableDataInfo otherDeviceShareList(AppDeviceShareBo bo, PageQuery pageQuery) { + String username = AppLoginHelper.getUsername(); + bo.setPhonenumber(username); + Page page = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()); + IPage result = baseMapper.otherDeviceShareList(bo, page); + List records = result.getRecords(); + records.forEach(r -> { + Device device = deviceMapper.selectById(r.getDeviceId()); + if(device != null){ + r.setDevicePic(device.getDevicePic()); + r.setDeviceName(device.getDeviceName()); + r.setDeviceImei(device.getDeviceImei()); + } + }); + return TableDataInfo.build(result); + } } diff --git a/fys-modules/fys-app/src/main/resources/mapper/app/AppDeviceShareMapper.xml b/fys-modules/fys-app/src/main/resources/mapper/app/AppDeviceShareMapper.xml index 2bdb85f..2202eae 100644 --- a/fys-modules/fys-app/src/main/resources/mapper/app/AppDeviceShareMapper.xml +++ b/fys-modules/fys-app/src/main/resources/mapper/app/AppDeviceShareMapper.xml @@ -4,4 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + diff --git a/fys-modules/fys-customer/src/main/java/com/fuyuanshen/customer/domain/Customer.java b/fys-modules/fys-customer/src/main/java/com/fuyuanshen/customer/domain/Customer.java index 9886065..418a1bf 100644 --- a/fys-modules/fys-customer/src/main/java/com/fuyuanshen/customer/domain/Customer.java +++ b/fys-modules/fys-customer/src/main/java/com/fuyuanshen/customer/domain/Customer.java @@ -92,7 +92,7 @@ public class Customer extends TenantEntity { /** * 帐号状态(0正常 1停用) */ - private String status; + private String status = "0"; /** * 删除标志(0代表存在 1代表删除) diff --git a/fys-modules/fys-customer/src/main/java/com/fuyuanshen/customer/service/impl/CustomerServiceImpl.java b/fys-modules/fys-customer/src/main/java/com/fuyuanshen/customer/service/impl/CustomerServiceImpl.java index ac996d4..b67ca9b 100644 --- a/fys-modules/fys-customer/src/main/java/com/fuyuanshen/customer/service/impl/CustomerServiceImpl.java +++ b/fys-modules/fys-customer/src/main/java/com/fuyuanshen/customer/service/impl/CustomerServiceImpl.java @@ -1,9 +1,11 @@ package com.fuyuanshen.customer.service.impl; +import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fuyuanshen.common.core.domain.model.LoginUser; +import com.fuyuanshen.common.core.utils.StringUtils; import com.fuyuanshen.common.mybatis.core.page.TableDataInfo; import com.fuyuanshen.common.satoken.utils.LoginHelper; import com.fuyuanshen.customer.constant.ArrayConstants; @@ -92,6 +94,7 @@ public class CustomerServiceImpl extends ServiceImpl i } customer.setUserLevel((byte) (loginUser.getUserLevel() + 1)); customer.setPid(loginUser.getUserId()); + customer.setStatus("0"); save(customer); @@ -106,18 +109,40 @@ public class CustomerServiceImpl extends ServiceImpl i /** * 修改客户 + * 不是因为寂寞才想你,只是因为想你才寂寞。 * - * @param resources / + * @param customer / */ @Override @Transactional(rollbackFor = Exception.class) - public void updateCustomer(Customer resources) throws Exception { - if (resources.getEnabled()) { - resources.setStatus("0"); - } else { - resources.setStatus("1"); + public void updateCustomer(Customer customer) throws Exception { + + UserQueryCriteria userQueryCriteria = new UserQueryCriteria(); + if (StringUtils.isNotEmpty(customer.getUserName())) { + userQueryCriteria.setCustomerName(customer.getUserName()); + List customers = customerMapper.queryCustomers(userQueryCriteria); + if (!customers.isEmpty()) { + throw new BadRequestException("用户名已存在!!!"); + } } - saveOrUpdate(resources); + + if (customer.getEnabled()) { + customer.setStatus("0"); + } else { + // 强制下线 + // StpUtil.logout(customer.getCustomerId()); + // StpUtil.kickout(customer.getCustomerId()); + customer.setStatus("1"); + // 检查目标用户是否有有效的登录状态 + if (StpUtil.isLogin(customer.getCustomerId())) { + // 用户已登录,可以执行踢出操作 + StpUtil.kickout(customer.getCustomerId()); + } else { + // 用户未登录,无法踢出 + System.out.println("目标用户未登录,无法执行踢出操作"); + } + } + saveOrUpdate(customer); } diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/Device.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/Device.java index 9ec8bc1..52b05c9 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/Device.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/Device.java @@ -105,7 +105,6 @@ public class Device extends TenantEntity { @Schema(name = "设备状态") private Integer deviceStatus; - /** * 绑定状态 * 0 未绑定 @@ -127,4 +126,17 @@ public class Device extends TenantEntity { private Date bindingTime; private String sendMsg; + + /** + * 发布主题(格式:A/{device_id}) + * pub_topic + */ + private String pubTopic; + + /** + * 订阅主题(格式:B/{device_id}) + * sub_topic + */ + private String subTopic; + } diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/dto/AppDeviceBo.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/dto/AppDeviceBo.java index 0ca4b7f..5115612 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/dto/AppDeviceBo.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/dto/AppDeviceBo.java @@ -30,5 +30,5 @@ public class AppDeviceBo { private String sendMsg; - private String deviceId; + private Long deviceId; } diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/dto/AppDeviceSendMsgBo.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/dto/AppDeviceSendMsgBo.java new file mode 100644 index 0000000..40caaad --- /dev/null +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/dto/AppDeviceSendMsgBo.java @@ -0,0 +1,16 @@ +package com.fuyuanshen.equipment.domain.dto; + +import lombok.Data; + +import java.util.List; + +/** + * 绑定设备参数 + */ +@Data +public class AppDeviceSendMsgBo { + + private String sendMsg; + + private List deviceIds; +} diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceServiceImpl.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceServiceImpl.java index 5534d9d..cfb4805 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceServiceImpl.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceServiceImpl.java @@ -186,6 +186,10 @@ public class DeviceServiceImpl extends ServiceImpl impleme device.setCreateByName(loginUser.getNickname()); device.setTypeName(deviceTypes.getTypeName()); device.setDeviceType(deviceTypes.getId()); + if (device.getDeviceImei() != null) { + device.setPubTopic("A/" + device.getDeviceImei()); + device.setSubTopic("B/" + device.getDeviceImei()); + } deviceMapper.insert(device); @@ -293,14 +297,18 @@ public class DeviceServiceImpl extends ServiceImpl impleme for (Long id : ids) { DeviceAssignments deviceAssignment = deviceAssignmentsMapper.selectById(id); - Device deviceType = deviceMapper.selectById(deviceAssignment.getDeviceId()); + Device device = deviceMapper.selectById(deviceAssignment.getDeviceId()); if (StringUtils.isNotEmpty(deviceAssignment.getAssigneeName())) { - throw new BadRequestException(deviceType.getDeviceName() + ":设备已分配,请先解绑设备!!!"); + throw new BadRequestException(device.getDeviceName() + ":设备已分配,请先解绑设备!!!"); + } + + if (device.getBindingStatus().equals(1)){ + throw new BadRequestException(device.getDeviceName() + ":设备已绑定,请先解绑设备!!!"); } // 接收者 - if (Objects.equals(deviceAssignment.getAssigneeId(), deviceType.getOriginalOwnerId())) { + if (Objects.equals(deviceAssignment.getAssigneeId(), device.getOriginalOwnerId())) { invalidIds.add(deviceAssignment.getDeviceId()); } diff --git a/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceMapper.xml b/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceMapper.xml index 06fe6bc..9a683ad 100644 --- a/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceMapper.xml +++ b/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceMapper.xml @@ -38,13 +38,19 @@ +