From 9338b0d24bd8e83c1c54897d72f71cb8967c672a Mon Sep 17 00:00:00 2001 From: chenyouting <514333061@qq.com> Date: Mon, 21 Jul 2025 15:24:26 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/service/AppDeviceBizService.java | 32 +++++++++++++++++-- .../app/domain/AppPersonnelInfo.java | 5 +++ .../app/domain/bo/AppPersonnelInfoBo.java | 12 +++++-- .../app/domain/vo/AppDeviceDetailVo.java | 5 +++ .../equipment/domain/dto/AppDeviceBo.java | 2 +- 5 files changed, 49 insertions(+), 7 deletions(-) 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..bac5113 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 @@ -12,6 +12,7 @@ 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.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; @@ -31,6 +32,8 @@ import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; +import static org.apache.poi.hslf.usermodel.HSLFFontInfo.FontRenderType.device; + @Slf4j @Service @@ -138,6 +141,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 +158,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 +171,23 @@ public class AppDeviceBizService { } public boolean registerPersonInfo(AppPersonnelInfoBo bo) { - AppPersonnelInfo appPersonnelInfo = MapstructUtils.convert(bo, AppPersonnelInfo.class); - return appPersonnelInfoMapper.insertOrUpdate(appPersonnelInfo); + Long deviceId = bo.getDeviceId(); + QueryWrapper qw = new QueryWrapper() + .eq("device_id", deviceId); + List appPersonnelInfoVos = appPersonnelInfoMapper.selectVoList(qw); + 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-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..f1387db 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; + /** * 单位名称 */ 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-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; } From 3bce279d7b56b56e178762344d718b9ce9dc47a7 Mon Sep 17 00:00:00 2001 From: daiyongfei <974332738@qq.com> Date: Tue, 22 Jul 2025 09:58:49 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=A2=E6=88=B7-?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=90=8D=E9=87=8D=E5=A4=8D=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CustomerServiceImpl.java | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) 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..10e1e7f 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 @@ -4,6 +4,7 @@ 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; @@ -107,17 +108,27 @@ 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 { + customer.setStatus("1"); + } + saveOrUpdate(customer); } From 33e53de5a1fb438f8c6bef6a9fb496c10148a52b Mon Sep 17 00:00:00 2001 From: daiyongfei <974332738@qq.com> Date: Tue, 22 Jul 2025 16:13:39 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E4=B8=BB=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/service/impl/CustomerServiceImpl.java | 1 + .../com/fuyuanshen/equipment/domain/Device.java | 14 +++++++++++++- .../equipment/service/impl/DeviceServiceImpl.java | 4 ++++ .../resources/mapper/equipment/DeviceMapper.xml | 2 +- 4 files changed, 19 insertions(+), 2 deletions(-) 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 10e1e7f..85cffbf 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 @@ -107,6 +107,7 @@ public class CustomerServiceImpl extends ServiceImpl i /** * 修改客户 + * 不是因为寂寞才想你,只是因为想你才寂寞。 * * @param 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/service/impl/DeviceServiceImpl.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceServiceImpl.java index 5534d9d..60cbc58 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); 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..dc60b8b 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 @@ -39,7 +39,7 @@ + SELECT * FROM app_device_share a where a.phonenumber = #{bo.phonenumber} + 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-system/src/main/java/com/fuyuanshen/system/mqtt/config/MqttOutboundConfiguration.java b/fys-modules/fys-system/src/main/java/com/fuyuanshen/system/mqtt/config/MqttOutboundConfiguration.java index 66c345f..8ae31fc 100644 --- a/fys-modules/fys-system/src/main/java/com/fuyuanshen/system/mqtt/config/MqttOutboundConfiguration.java +++ b/fys-modules/fys-system/src/main/java/com/fuyuanshen/system/mqtt/config/MqttOutboundConfiguration.java @@ -44,7 +44,7 @@ public class MqttOutboundConfiguration { mqttPahoClientFactory ); mqttPahoMessageHandler.setDefaultQos(1); - mqttPahoMessageHandler.setDefaultTopic("worker/location"); + mqttPahoMessageHandler.setDefaultTopic("B/#"); mqttPahoMessageHandler.setAsync(true); return mqttPahoMessageHandler; } diff --git a/fys-modules/fys-system/src/main/java/com/fuyuanshen/system/mqtt/constants/MqttConstants.java b/fys-modules/fys-system/src/main/java/com/fuyuanshen/system/mqtt/constants/MqttConstants.java new file mode 100644 index 0000000..49398a1 --- /dev/null +++ b/fys-modules/fys-system/src/main/java/com/fuyuanshen/system/mqtt/constants/MqttConstants.java @@ -0,0 +1,16 @@ +package com.fuyuanshen.system.mqtt.constants; + + +public interface MqttConstants { + + + /** + * 全局发布消息的key + */ + String GLOBAL_PUB_KEY = "B/"; + + /** + * 全局订阅消息的key + */ + String GLOBAL_SUB_KEY = "A/"; +} diff --git a/fys-modules/fys-system/src/main/java/com/fuyuanshen/system/mqtt/receiver/ReceiverMessageHandler.java b/fys-modules/fys-system/src/main/java/com/fuyuanshen/system/mqtt/receiver/ReceiverMessageHandler.java index 9b8a9f6..c9df7ce 100644 --- a/fys-modules/fys-system/src/main/java/com/fuyuanshen/system/mqtt/receiver/ReceiverMessageHandler.java +++ b/fys-modules/fys-system/src/main/java/com/fuyuanshen/system/mqtt/receiver/ReceiverMessageHandler.java @@ -27,5 +27,6 @@ public class ReceiverMessageHandler implements MessageHandler { String timestamp = Objects.requireNonNull(headers.get("timestamp")).toString(); log.info("MQTT payload= {} \n receivedTopic = {} \n receivedQos = {} \n timestamp = {}" ,payload,receivedTopic,receivedQos,timestamp); + } } \ No newline at end of file From d84a7cde3b7c7d59f99c99378d24ca05fe927bb6 Mon Sep 17 00:00:00 2001 From: daiyongfei <974332738@qq.com> Date: Wed, 23 Jul 2025 09:52:28 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E5=B8=90=E5=8F=B7=E7=8A=B6=E6=80=81?= =?UTF-8?q?=EF=BC=880=E6=AD=A3=E5=B8=B8=201=E5=81=9C=E7=94=A8=EF=BC=89stat?= =?UTF-8?q?us?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fuyuanshen/customer/domain/Customer.java | 2 +- .../customer/service/impl/CustomerServiceImpl.java | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) 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 85cffbf..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,5 +1,6 @@ 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; @@ -93,6 +94,7 @@ public class CustomerServiceImpl extends ServiceImpl i } customer.setUserLevel((byte) (loginUser.getUserLevel() + 1)); customer.setPid(loginUser.getUserId()); + customer.setStatus("0"); save(customer); @@ -127,7 +129,18 @@ public class CustomerServiceImpl extends ServiceImpl i 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); } From 619356209b779d06995f281ac10a8c66b2032863 Mon Sep 17 00:00:00 2001 From: daiyongfei <974332738@qq.com> Date: Wed, 23 Jul 2025 10:53:26 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=AE=BE=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DeviceServiceImpl.java | 10 +++++--- .../mapper/equipment/DeviceMapper.xml | 25 +++++++++++++------ 2 files changed, 24 insertions(+), 11 deletions(-) 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 60cbc58..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 @@ -297,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 dc60b8b..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 @@ +