From 3c7399c25c0f35c8aa7cb6af1935e31d1a3f0102 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期二, 02 六月 2026 17:43:50 +0800
Subject: [PATCH] 新增智能电表、空调管理

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceServiceImpl.java |   31 +++++++++++++++++++++++++++++++
 1 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceServiceImpl.java
index 4754f5a..d494162 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceServiceImpl.java
@@ -99,6 +99,7 @@
         if(ywDeviceMapper.selectCount(new QueryWrapper<YwDevice>().lambda().eq(YwDevice::getIsdeleted,Constants.ZERO).eq(YwDevice::getCode,ywDevice.getCode()))>Constants.ZERO){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁惧缂栧彿閲嶅!");
         }
+        ywDevice.setDeviceNum(normalizeDeviceNum(ywDevice.getDeviceNum()));
         ywDevice.setCreateDate(new Date());
         ywDevice.setCreator(loginUserInfo.getId());
         ywDevice.setIsdeleted(Constants.ZERO);
@@ -187,6 +188,7 @@
                 .ne(YwDevice::getId,ywDevice.getId()))>Constants.ZERO){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁惧缂栧彿閲嶅!");
         }
+        ywDevice.setDeviceNum(normalizeDeviceNum(ywDevice.getDeviceNum()));
         ywDevice.setEditDate(new Date());
         ywDevice.setEditor(loginUserInfo.getId());
         ywDeviceMapper.updateById(ywDevice);
@@ -504,6 +506,7 @@
     private boolean isImportBlankRow(DeviceImport row) {
         return StringUtils.isBlank(row.getCode())
                 && StringUtils.isBlank(row.getName())
+                && StringUtils.isBlank(row.getDeviceNum())
                 && StringUtils.isBlank(row.getProjectName())
                 && StringUtils.isBlank(row.getRoomPath());
     }
@@ -612,6 +615,7 @@
         if (StringUtils.isBlank(row.getName())) {
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝绗�" + rowNum + "琛岃澶囧悕绉颁笉鑳戒负绌猴紝璇锋鏌ヨ〃鏍煎唴瀹癸紒");
         }
+        Integer deviceNum = parseImportDeviceNum(row.getDeviceNum(), rowNum);
         if (StringUtils.isBlank(row.getProjectName())) {
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝绗�" + rowNum + "琛屾墍灞為」鐩笉鑳戒负绌猴紝璇锋鏌ヨ〃鏍煎唴瀹癸紒");
         }
@@ -668,6 +672,7 @@
         YwDevice device = new YwDevice();
         device.setCode(code);
         device.setName(row.getName().trim());
+        device.setDeviceNum(deviceNum);
         device.setCateId(cateId);
         device.setModelNo(StringUtils.trimToNull(row.getModelNo()));
         device.setUserId(userId);
@@ -697,6 +702,32 @@
         return device;
     }
 
+    private Integer normalizeDeviceNum(Integer deviceNum) {
+        if (deviceNum == null || deviceNum <= 0) {
+            return 1;
+        }
+        return deviceNum;
+    }
+
+    private Integer parseImportDeviceNum(String deviceNumText, int rowNum) {
+        if (StringUtils.isBlank(deviceNumText)) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝绗�" + rowNum + "琛岃澶囨暟閲忎笉鑳戒负绌猴紝璇锋鏌ヨ〃鏍煎唴瀹癸紒");
+        }
+        String text = deviceNumText.trim();
+        if (StringUtils.endsWith(text, ".0")) {
+            text = StringUtils.substringBefore(text, ".0");
+        }
+        try {
+            double value = Double.parseDouble(text);
+            if (value <= 0 || value != Math.floor(value)) {
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝绗�" + rowNum + "琛岃澶囨暟閲忓繀椤讳负姝f暣鏁帮紝璇锋鏌ヨ〃鏍煎唴瀹癸紒");
+            }
+            return (int) value;
+        } catch (NumberFormatException e) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝绗�" + rowNum + "琛岃澶囨暟閲忓繀椤讳负姝f暣鏁帮紝璇锋鏌ヨ〃鏍煎唴瀹癸紒");
+        }
+    }
+
     private Integer resolveInternalUserId(String userName, int rowNum, String fieldLabel, DeviceImportCache cache) {
         if (StringUtils.isBlank(userName)) {
             return null;

--
Gitblit v1.9.3