From 5de7d78bc629f316749b9e11b9c6113d5e0d0b8f Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 27 三月 2025 11:20:23 +0800
Subject: [PATCH] 新增站点初始化功能

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/DeviceSiteService.java          |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeviceSiteController.java    |   15 +++++
 rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java               |    8 ++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/DeviceSiteParame.java |   31 ++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java |   49 ++++++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java                  |   48 +++++++++++++--
 6 files changed, 146 insertions(+), 7 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeviceSiteController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeviceSiteController.java
index b3da571..bc4524a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeviceSiteController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeviceSiteController.java
@@ -4,14 +4,18 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.vincent.rsf.framework.common.Cools;
 import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.common.utils.ExcelUtil;
 import com.vincent.rsf.server.common.annotation.OperationLog;
 import com.vincent.rsf.server.common.domain.BaseParam;
 import com.vincent.rsf.server.common.domain.KeyValVo;
 import com.vincent.rsf.server.common.domain.PageParam;
+import com.vincent.rsf.server.manager.controller.params.DeviceSiteParame;
 import com.vincent.rsf.server.manager.entity.DeviceSite;
 import com.vincent.rsf.server.manager.service.DeviceSiteService;
 import com.vincent.rsf.server.system.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -20,6 +24,7 @@
 import java.util.*;
 
 @RestController
+@Api(tags = "绔欑偣绠$悊")
 public class DeviceSiteController extends BaseController {
 
     @Autowired
@@ -107,4 +112,14 @@
         ExcelUtil.build(ExcelUtil.create(deviceSiteService.list(), DeviceSite.class), response);
     }
 
+    @PreAuthorize("hasAuthority('manager:deviceSite:save')")
+    @ApiOperation("绔欑偣鍒濆鍖�")
+    @PostMapping("/deviceSite/init")
+    public R initDeviceSite(@RequestBody DeviceSiteParame param) {
+        if (Objects.isNull(param)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return R.ok(deviceSiteService.initSites(param));
+    }
+
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/DeviceSiteParame.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/DeviceSiteParame.java
new file mode 100644
index 0000000..0563c68
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/DeviceSiteParame.java
@@ -0,0 +1,31 @@
+package com.vincent.rsf.server.manager.controller.params;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+public class DeviceSiteParame {
+
+    @ApiModelProperty("鏄惁鍒濆鍖�")
+    private Integer flagInit;
+
+    @ApiModelProperty("璁惧绫诲瀷")
+    private String deviceType;
+
+    @ApiModelProperty("浣滀笟绫诲瀷")
+    private List<Long> typeIds;
+
+    @ApiModelProperty("浣滀笟绔欑偣")
+    private List<String> sites;
+
+    @ApiModelProperty("璁惧缂栧彿")
+    private String deviceCode;
+
+    @ApiModelProperty("璁惧浣滀笟绔欑偣")
+    private List<String> deviceSites;
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java
index 54bb6f8..d2a1173 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java
@@ -1,16 +1,23 @@
 package com.vincent.rsf.server.manager.entity;
 
-import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.*;
+
 import java.text.SimpleDateFormat;
-import java.util.Date;
+import java.util.*;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.vincent.rsf.server.manager.service.LocTypeService;
+import com.vincent.rsf.server.system.constant.DictTypeCode;
+import com.vincent.rsf.server.system.entity.DictData;
+import com.vincent.rsf.server.system.entity.DictType;
+import com.vincent.rsf.server.system.service.DictDataService;
+import lombok.experimental.Accessors;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.format.annotation.DateTimeFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -20,8 +27,10 @@
 import com.vincent.rsf.server.system.entity.User;
 import java.io.Serializable;
 import java.util.Date;
+import java.util.stream.Collectors;
 
 @Data
+@Accessors(chain = true)
 @TableName("man_device_site")
 public class DeviceSite implements Serializable {
 
@@ -38,7 +47,7 @@
      * 鍏ュ嚭搴撶被鍨�
      */
     @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�")
-    private Integer type;
+    private String type;
 
     /**
      * 绔欑偣缂栧彿
@@ -127,6 +136,12 @@
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
 
+
+    /**
+     * 浣滀笟绫诲瀷
+     */
+    @TableField(exist = false)
+    private String typeIds;
     /**
      * 澶囨敞
      */
@@ -135,7 +150,7 @@
 
     public DeviceSite() {}
 
-    public DeviceSite(Integer type,String site,String name,String wcsCode,String label,String device,String deviceCode,String deviceSite,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
+    public DeviceSite(String type,String site,String name,String wcsCode,String label,String device,String deviceCode,String deviceSite,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
         this.type = type;
         this.site = site;
         this.name = name;
@@ -173,6 +188,25 @@
 //            null    // 澶囨敞
 //    );
 
+    public String getType$(){
+        if (null == this.type){ return null; }
+        String[] split = this.type.split(",");
+        List<String> asList = Arrays.asList(split);
+        if (asList.isEmpty()) {
+            return null;
+        }
+        DictDataService dictDataService = SpringUtils.getBean(DictDataService.class);
+        List<DictData> dictDatas = dictDataService.list(new LambdaQueryWrapper<DictData>()
+                .eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_TASK_TYPE)
+                .in(DictData::getId, asList));
+        if (dictDatas.isEmpty()) {
+            return null;
+        }
+        List<String> strings = dictDatas.stream().map(DictData::getLabel).collect(Collectors.toList());
+
+        return StringUtils.join(strings, ",");
+    }
+
     public String getStatus$(){
         if (null == this.status){ return null; }
         switch (this.status){
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/DeviceSiteService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/DeviceSiteService.java
index 9bf943c..5bb3ef3 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/DeviceSiteService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/DeviceSiteService.java
@@ -1,8 +1,10 @@
 package com.vincent.rsf.server.manager.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.vincent.rsf.server.manager.controller.params.DeviceSiteParame;
 import com.vincent.rsf.server.manager.entity.DeviceSite;
 
 public interface DeviceSiteService extends IService<DeviceSite> {
 
+    boolean initSites(DeviceSiteParame param);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java
index e19660b..9328ef1 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java
@@ -1,12 +1,61 @@
 package com.vincent.rsf.server.manager.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.manager.controller.params.DeviceSiteParame;
 import com.vincent.rsf.server.manager.mapper.DeviceSiteMapper;
 import com.vincent.rsf.server.manager.entity.DeviceSite;
 import com.vincent.rsf.server.manager.service.DeviceSiteService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
 
 @Service("deviceSiteService")
 public class DeviceSiteServiceImpl extends ServiceImpl<DeviceSiteMapper, DeviceSite> implements DeviceSiteService {
 
+    /**
+     * 鍒濆鍖栫珯鐐�
+     * @param param
+     * @return
+     */
+    @Override
+    public boolean initSites(DeviceSiteParame param) {
+        if (param.getFlagInit() == 1) {
+            if (!this.remove(new LambdaQueryWrapper<>())) {
+                throw new CoolException("鍒濆鍖栧け璐ワ細 鍒犻櫎绔欑偣澶辫触锛侊紒");
+            }
+        }
+        if (Objects.isNull(param.getDeviceSites()) || param.getDeviceSites().isEmpty()) {
+            throw new CoolException("鍒濆鍖栧け璐ワ細 璁惧浣滀笟绔欑偣涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(param.getSites()) || param.getSites().isEmpty()) {
+            throw new CoolException("鍒濆鍖栧け璐�: 浣滀笟绔欑偣涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(param.getTypeIds()) || param.getTypeIds().isEmpty()) {
+            throw new CoolException("鍒濆鍖栧け璐ワ細 浣滀笟绫诲瀷涓嶈兘涓虹┖锛侊紒");
+        }
+        List<DeviceSite> deviceSites =  new ArrayList<>();
+        for (String site : param.getSites()) {
+            for (String deviceSite : param.getDeviceSites()) {
+                for (Long id : param.getTypeIds()) {
+                    DeviceSite site1 = new DeviceSite();
+                    site1.setType(id + "")
+                            .setSite(site)
+                            .setDevice(param.getDeviceType())
+                            .setDeviceSite(deviceSite)
+                            .setDeviceCode(param.getDeviceCode());
+                    deviceSites.add(site1);
+                }
+            }
+        }
+        if (!this.saveBatch(deviceSites)) {
+            throw new CoolException("鍒濆鍖栧け璐ワ細 鏁版嵁淇濆瓨澶辫触锛侊紒");
+        }
+        return true;
+    }
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java
index 5791882..00a24a1 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java
@@ -9,6 +9,14 @@
  */
 public class DictTypeCode {
 
+    /**
+     * 浼佷笟绫诲瀷
+     */
     public final static String DICT_COMPANY_TYPE = "sys_companys_type";
 
+    /**
+     * 浠诲姟绫诲瀷
+     */
+    public final static String DICT_SYS_TASK_TYPE = "sys_task_type";
+
 }

--
Gitblit v1.9.1