From 0b977fb16e8272739bbe25973947f45a55ebe842 Mon Sep 17 00:00:00 2001
From: 唐耀东 <18861537@qq.com>
Date: 星期五, 31 十二月 2021 11:30:49 +0800
Subject: [PATCH] 提交代码

---
 ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/DevManufacturerMapper.java                  |   14 +
 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/DevPeripheralUnitVo.java                 |    3 
 ruoyi-common/src/main/java/com/ruoyi/common/enums/EquipmentLog.java                    |    2 
 ruoyi-oa/src/main/java/com/ruoyi/oa/service/IDevEquipmentService.java                  |    2 
 ruoyi-oa/src/main/java/com/ruoyi/oa/service/IDevManufacturerService.java               |   56 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java |   65 +++-
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/ExternaController.java       |   39 +-
 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevEquipmentCode.java                       |    6 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevPeripheralUnitController.java |    2 
 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevEquipment.java                           |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevManufacturerController.java   |  126 +++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java               |    9 
 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevPeripheralUnitServiceImpl.java     |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java   |    4 
 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/DevManufacturerBo.java                   |   92 ++++++
 ruoyi-oa/src/main/resources/mapper/oa/DevManufacturerMapper.xml                        |   22 +
 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/DevEquipmentBo.java                      |   10 
 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevEquipmentServiceImpl.java          |   41 ++
 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevManufacturer.java                        |   57 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java         |   22 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevEquipmentLogController.java   |    2 
 ruoyi-admin/src/main/resources/application.yml                                         |    4 
 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevEquipmentLogServiceImpl.java       |    6 
 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevPeripheralUnit.java                      |    3 
 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevManufacturerServiceImpl.java       |  105 +++++++
 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/DevManufacturerVo.java                   |   70 +++++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevEquipmentController.java      |   22 
 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/DevPeripheralUnitBo.java                 |    2 
 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/DevEquipmentLogVo.java                   |    6 
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java           |    6 
 30 files changed, 708 insertions(+), 94 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/ExternaController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/ExternaController.java
index 533a94e..4555176 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/ExternaController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/ExternaController.java
@@ -1,6 +1,7 @@
 package com.ruoyi.web.controller.common;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ruoyi.common.annotation.DataDictClass;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -57,7 +58,7 @@
     @ApiOperation("鍩虹淇℃伅")
     @Log(type = LogType.EQUIPMENT_LOG, operation = EquipmentLog.LOAD)
     @GetMapping
-    public AjaxResult externalAdd() {
+    public AjaxResult externaList() {
 
         // 鏅烘帶璁惧绫诲瀷
         List<SysDictData> dict1 = dictDataService.list(new QueryWrapper<SysDictData>().lambda().eq(SysDictData::getDictType, "DICT101"));
@@ -65,12 +66,6 @@
         List<SysDictData> dict2 = dictDataService.list(new QueryWrapper<SysDictData>().lambda().eq(SysDictData::getDictType, "DICT102"));
         // 涓插彛閫氫俊娉㈢壒鐜�
         List<SysDictData> dict3 = dictDataService.list(new QueryWrapper<SysDictData>().lambda().eq(SysDictData::getDictType, "DICT103"));
-        // 鍦ㄧ敤鐘舵��
-        List<SysDictData> dict4 = dictDataService.list(new QueryWrapper<SysDictData>().lambda().eq(SysDictData::getDictType, "DICT104"));
-        // 鍔炲灞傛
-        List<SysDictData> dict5 = dictDataService.list(new QueryWrapper<SysDictData>().lambda().eq(SysDictData::getDictType, "DICT105"));
-        // 瀛︾鑼冨洿
-        List<SysDictData> dict6 = dictDataService.list(new QueryWrapper<SysDictData>().lambda().eq(SysDictData::getDictType, "DICT106"));
         // 閲囬泦鍛ㄦ湡
         List<SysDictData> dict7 = dictDataService.list(new QueryWrapper<SysDictData>().lambda().eq(SysDictData::getDictType, "DICT107"));
         // 澶栬鍗曞厓
@@ -83,9 +78,6 @@
         map.put("DICT101", dict1);
         map.put("DICT102", dict2);
         map.put("DICT103", dict3);
-        map.put("DICT104", dict4);
-        map.put("DICT105", dict5);
-        map.put("DICT106", dict6);
         map.put("DICT107", dict7);
         map.put("peripheralUnit", peripheralUnit);
         map.put("batch", batch);
@@ -94,24 +86,37 @@
     }
 
     /**
-     * 鏂板鏅烘帶璁惧
+     * 璁惧鏍¢獙
      */
-    @ApiOperation("鏂板鏅烘帶璁惧")
-    @Log(type = LogType.EQUIPMENT_LOG, operation = EquipmentLog.WRITE)
+    @ApiOperation("璁惧鏍¢獙")
+    @Log(type = LogType.EQUIPMENT_LOG, operation = EquipmentLog.CHECK)
     @RepeatSubmit()
     @PostMapping("/equipment")
+    @DataDictClass
     public AjaxResult equipmentAdd(@Validated(AddGroup.class) @RequestBody DevEquipmentBo bo) {
         return AjaxResult.success(iDevEquipmentService.externalAdd(bo));
     }
 
     /**
-     * 缂栬緫鏅烘帶璁惧
+     * 璁惧鍐欏叆鍙傛暟
      */
-    @ApiOperation("鏂板鏅烘帶璁惧锛堝閮ㄨ皟鐢�-鍘绘帀鏉冮檺锛�")
+    @ApiOperation("璁惧鍐欏叆鍙傛暟")
     @RepeatSubmit()
-    @Log(type = LogType.EQUIPMENT_LOG, operation = EquipmentLog.SUBMIT_COMMENT)
-    @PutMapping("/equipment")
+    @Log(type = LogType.EQUIPMENT_LOG, operation = EquipmentLog.WRITE)
+    @PostMapping("/edit")
     public AjaxResult equipmentEdit(@Validated(AddGroup.class) @RequestBody DevEquipmentBo bo) {
         return AjaxResult.success(iDevEquipmentService.equipmentEdit(bo));
     }
+
+    /**
+     * 鎻愪氦澶囨敞
+     */
+    @ApiOperation("鎻愪氦澶囨敞")
+    @RepeatSubmit()
+    @Log(type = LogType.EQUIPMENT_LOG, operation = EquipmentLog.SUBMIT_COMMENT)
+    @PostMapping("/submitComment")
+    public AjaxResult submitComment(@Validated(AddGroup.class) @RequestBody DevEquipmentBo bo) {
+        iDevEquipmentService.submitComment(bo);
+        return AjaxResult.success();
+    }
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevEquipmentController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevEquipmentController.java
index 539d17e..14bd079 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevEquipmentController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevEquipmentController.java
@@ -79,17 +79,17 @@
         return AjaxResult.success(iDevEquipmentService.queryById(id));
     }
 
-//    /**
-//     * 鏂板鏅烘帶璁惧
-//     */
-//    @ApiOperation("鏂板鏅烘帶璁惧")
-//    @PreAuthorize("@ss.hasPermi('oa:equipment:add')")
-//    @Log(title = "鏅烘帶璁惧", businessType = BusinessType.INSERT)
-//    @RepeatSubmit()
-//    @PostMapping()
-//    public AjaxResult<Void> add(@Validated(AddGroup.class) @RequestBody DevEquipmentBo bo) {
-//        return toAjax(iDevEquipmentService.insertByBo(bo) ? 1 : 0);
-//    }
+    /**
+     * 鏂板鏅烘帶璁惧
+     */
+    @ApiOperation("鏂板鏅烘帶璁惧")
+    @PreAuthorize("@ss.hasPermi('oa:equipment:add')")
+    @Log(title = "鏅烘帶璁惧", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public AjaxResult<Void> add(@Validated(AddGroup.class) @RequestBody DevEquipmentBo bo) {
+        return toAjax(iDevEquipmentService.insertByBo(bo) ? 1 : 0);
+    }
 
 
     /**
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevEquipmentLogController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevEquipmentLogController.java
index ccb0bc3..d38966b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevEquipmentLogController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevEquipmentLogController.java
@@ -4,6 +4,7 @@
 import java.util.Arrays;
 import java.util.concurrent.TimeUnit;
 
+import com.ruoyi.common.annotation.DataDictClass;
 import lombok.RequiredArgsConstructor;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.*;
@@ -49,6 +50,7 @@
     @ApiOperation("鏌ヨ璁惧鑱旀満鏃ュ織鍒楄〃")
     @PreAuthorize("@ss.hasPermi('oa:equipmentLog:list')")
     @GetMapping("/list")
+    @DataDictClass
     public TableDataInfo<DevEquipmentLogVo> list(@Validated(QueryGroup.class) DevEquipmentLogBo bo) {
         return iDevEquipmentLogService.queryPageList(bo);
     }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevManufacturerController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevManufacturerController.java
new file mode 100644
index 0000000..34553c9
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevManufacturerController.java
@@ -0,0 +1,126 @@
+package com.ruoyi.web.controller.oa;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import com.ruoyi.common.annotation.DataDictClass;
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.oa.domain.vo.DevManufacturerVo;
+import com.ruoyi.oa.domain.bo.DevManufacturerBo;
+import com.ruoyi.oa.service.IDevManufacturerService;
+import com.ruoyi.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 鍘傚晢Controller
+ *
+ * @author ruoyi
+ * @date 2021-12-14
+ */
+@Validated
+@Api(value = "鍘傚晢鎺у埗鍣�", tags = {"鍘傚晢绠$悊"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/oa/manufacturer")
+public class DevManufacturerController extends BaseController {
+
+    private final IDevManufacturerService iDevManufacturerService;
+
+    /**
+     * 鏌ヨ鍘傚晢鍒楄〃
+     */
+    @ApiOperation("鏌ヨ鍘傚晢鍒楄〃")
+    @PreAuthorize("@ss.hasPermi('oa:manufacturer:list')")
+    @GetMapping("/list")
+    public TableDataInfo<DevManufacturerVo> list(@Validated(QueryGroup.class) DevManufacturerBo bo) {
+        return iDevManufacturerService.queryPageList(bo);
+    }
+
+    /**
+     * 鍘傚晢涓嬫媺鍒楄〃
+     */
+    @ApiOperation("鏌ヨ鍘傚晢鍒楄〃")
+    @GetMapping("/findList")
+    public AjaxResult findList() {
+        return AjaxResult.success(iDevManufacturerService.list());
+    }
+
+    /**
+     * 瀵煎嚭鍘傚晢鍒楄〃
+     */
+    @ApiOperation("瀵煎嚭鍘傚晢鍒楄〃")
+    @PreAuthorize("@ss.hasPermi('oa:manufacturer:export')")
+    @Log(title = "鍘傚晢", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public void export(@Validated DevManufacturerBo bo, HttpServletResponse response) {
+        List<DevManufacturerVo> list = iDevManufacturerService.queryList(bo);
+        ExcelUtil.exportExcel(list, "鍘傚晢", DevManufacturerVo.class, response);
+    }
+
+    /**
+     * 鑾峰彇鍘傚晢璇︾粏淇℃伅
+     */
+    @ApiOperation("鑾峰彇鍘傚晢璇︾粏淇℃伅")
+    @PreAuthorize("@ss.hasPermi('oa:manufacturer:query')")
+    @GetMapping("/{id}")
+    public AjaxResult<DevManufacturerVo> getInfo(@ApiParam("涓婚敭")
+                                                  @NotNull(message = "涓婚敭涓嶈兘涓虹┖")
+                                                  @PathVariable("id") Long id) {
+        return AjaxResult.success(iDevManufacturerService.queryById(id));
+    }
+
+    /**
+     * 鏂板鍘傚晢
+     */
+    @ApiOperation("鏂板鍘傚晢")
+    @PreAuthorize("@ss.hasPermi('oa:manufacturer:add')")
+    @Log(title = "鍘傚晢", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public AjaxResult<Void> add(@Validated(AddGroup.class) @RequestBody DevManufacturerBo bo) {
+        return toAjax(iDevManufacturerService.insertByBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 淇敼鍘傚晢
+     */
+    @ApiOperation("淇敼鍘傚晢")
+    @PreAuthorize("@ss.hasPermi('oa:manufacturer:edit')")
+    @Log(title = "鍘傚晢", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public AjaxResult<Void> edit(@Validated(EditGroup.class) @RequestBody DevManufacturerBo bo) {
+        return toAjax(iDevManufacturerService.updateByBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 鍒犻櫎鍘傚晢
+     */
+    @ApiOperation("鍒犻櫎鍘傚晢")
+    @PreAuthorize("@ss.hasPermi('oa:manufacturer:remove')")
+    @Log(title = "鍘傚晢" , businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult<Void> remove(@ApiParam("涓婚敭涓�")
+                                       @NotEmpty(message = "涓婚敭涓嶈兘涓虹┖")
+                                       @PathVariable Long[] ids) {
+        return toAjax(iDevManufacturerService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevPeripheralUnitController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevPeripheralUnitController.java
index fddc5cc..b86471c 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevPeripheralUnitController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/DevPeripheralUnitController.java
@@ -4,6 +4,7 @@
 import java.util.Arrays;
 import java.util.concurrent.TimeUnit;
 
+import com.ruoyi.common.annotation.DataDictClass;
 import lombok.RequiredArgsConstructor;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.*;
@@ -47,6 +48,7 @@
      * 鏌ヨ澶栬鍗曞厓鍒楄〃
      */
     @ApiOperation("鏌ヨ澶栬鍗曞厓鍒楄〃")
+    @DataDictClass
     @PreAuthorize("@ss.hasPermi('oa:peripheralUnit:list')")
     @GetMapping("/list")
     public TableDataInfo<DevPeripheralUnitVo> list(@Validated(QueryGroup.class) DevPeripheralUnitBo bo) {
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index c0d7d1e..8ab43e1 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -71,9 +71,9 @@
   servlet:
     multipart:
       # 鍗曚釜鏂囦欢澶у皬
-      max-file-size: 10MB
+      max-file-size: 50MB
       # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
-      max-request-size: 20MB
+      max-request-size: 50MB
   # 鏈嶅姟妯″潡
   devtools:
     restart:
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
index 4566ee6..7052f03 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
@@ -40,4 +40,10 @@
     @ApiModelProperty(value = "鍞竴鏍囪瘑")
     private String uuid = "";
 
+    /**
+     * 鐧诲綍绔紙SYS锛歱c绯荤粺锛孌EVICE:璁惧绔級
+     */
+    @ApiModelProperty(value = "鐧诲綍绔紙SYS锛歱c绯荤粺锛孌EVICE:璁惧绔級")
+    private String flag = "SYS";
+
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/EquipmentLog.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/EquipmentLog.java
index 8654f50..8104045 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/EquipmentLog.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/EquipmentLog.java
@@ -37,7 +37,7 @@
     RESET,
 
     /**
-     * 鎺ㄥ嚭
+     * 閫�鍑�
      */
     SIGN_OUT
 }
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevEquipment.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevEquipment.java
index 39028dc..5e62033 100644
--- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevEquipment.java
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevEquipment.java
@@ -1,6 +1,7 @@
 package com.ruoyi.oa.domain;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.ruoyi.common.annotation.Dict;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
@@ -47,6 +48,7 @@
     /**
      * 瀛︽牎id
      */
+    @Dict(dictTable = "bs_school", dicCode = "id", dicText = "code")
     private Long schoolId;
     /**
      * 涓绘満ID
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevEquipmentCode.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevEquipmentCode.java
index fc2a703..5824587 100644
--- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevEquipmentCode.java
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevEquipmentCode.java
@@ -28,9 +28,7 @@
      */
     @TableId(value = "id")
     private Long id;
-    /**
-     * 纭欢璁惧搴忓垪鐮�
-     */
-    private String sequenceCode;
+
+    private Date createTime;
 
 }
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevManufacturer.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevManufacturer.java
new file mode 100644
index 0000000..fa78ccf
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevManufacturer.java
@@ -0,0 +1,57 @@
+package com.ruoyi.oa.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 鍘傚晢瀵硅薄 dev_manufacturer
+ *
+ * @author ruoyi
+ * @date 2021-12-14
+ */
+@Data
+@Accessors(chain = true)
+@TableName("dev_manufacturer")
+public class DevManufacturer extends BaseEntity {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 鍘傚晢涓婚敭
+     */
+    @TableId(value = "id")
+    private Long id;
+    /**
+     * 鍘傚晢鍚嶇О
+     */
+    private String name;
+    /**
+     * 鍘傚晢浠g爜
+     */
+    private String code;
+    /**
+     * 鑱旂郴鏂瑰紡
+     */
+    private String phone;
+    /**
+     * 閭
+     */
+    private String mailbox;
+    /**
+     * 鑱旂郴鍦板潃
+     */
+    private String contactAddress;
+    /**
+     * 
+     */
+    @Version
+    private Integer version;
+
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevPeripheralUnit.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevPeripheralUnit.java
index afeb5e9..1c547d7 100644
--- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevPeripheralUnit.java
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/DevPeripheralUnit.java
@@ -1,6 +1,7 @@
 package com.ruoyi.oa.domain;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.ruoyi.common.annotation.Dict;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
@@ -43,10 +44,12 @@
     /**
      * 鐢熶骇鍘傚晢
      */
+    @Dict(dictTable = "dev_manufacturer", dicCode = "id", dicText = "name")
     private String manufacturer;
     /**
      * 鍘傚晢浠g爜
      */
+    @Dict(dictTable = "dev_manufacturer", dicCode = "id", dicText = "code")
     private String vendorCode;
     /**
      * 娉㈢壒鐜�
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/DevEquipmentBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/DevEquipmentBo.java
index 92e29e5..921f156 100644
--- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/DevEquipmentBo.java
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/DevEquipmentBo.java
@@ -34,70 +34,60 @@
      * 搴忓垪鍙�
      */
     @ApiModelProperty(value = "搴忓垪鍙�", required = true)
-    @NotNull(message = "搴忓垪鍙蜂笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
     private Long serialNumber;
 
     /**
      * 璁惧绫诲瀷
      */
     @ApiModelProperty(value = "璁惧绫诲瀷", required = true)
-    @NotNull(message = "璁惧绫诲瀷涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String type;
 
     /**
      * 搴忓垪鐮�
      */
     @ApiModelProperty(value = "搴忓垪鐮�", required = true)
-    @NotNull(message = "搴忓垪鐮佷笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
     private String sequenceCode;
 
     /**
      * 鐗堟湰
      */
     @ApiModelProperty(value = "鐗堟湰", required = true)
-    @NotNull(message = "鐗堟湰涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String edition;
 
     /**
      * 瀛︽牎id
      */
     @ApiModelProperty(value = "瀛︽牎id", required = true)
-    @NotNull(message = "瀛︽牎id涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private Long schoolId;
 
     /**
      * 涓绘満ID
      */
     @ApiModelProperty(value = "涓绘満ID", required = true)
-    @NotNull(message = "涓绘満ID涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String hostId;
 
     /**
      * 尾缃戠粶ID
      */
     @ApiModelProperty(value = "尾缃戠粶ID", required = true)
-    @NotNull(message = "尾缃戠粶ID涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String networkId;
 
     /**
      * 尾宸ヤ綔棰戞
      */
     @ApiModelProperty(value = "尾宸ヤ綔棰戞", required = true)
-    @NotNull(message = "尾宸ヤ綔棰戞涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String frequencyBand;
 
     /**
      * 鐢熶骇鎵规
      */
     @ApiModelProperty(value = "鐢熶骇鎵规", required = true)
-    @NotNull(message = "鐢熶骇鎵规涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private Long batchId;
 
     /**
      * 鍦ㄧ敤鐘舵��
      */
     @ApiModelProperty(value = "鍦ㄧ敤鐘舵��", required = true)
-    @NotNull(message = "鍦ㄧ敤鐘舵�佷笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
     private String useStatus;
 
     /**
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/DevManufacturerBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/DevManufacturerBo.java
new file mode 100644
index 0000000..15b14a4
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/DevManufacturerBo.java
@@ -0,0 +1,92 @@
+package com.ruoyi.oa.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 鍘傚晢涓氬姟瀵硅薄 dev_manufacturer
+ *
+ * @author ruoyi
+ * @date 2021-12-14
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("鍘傚晢涓氬姟瀵硅薄")
+public class DevManufacturerBo extends BaseEntity {
+
+    /**
+     * 鍘傚晢涓婚敭
+     */
+    @ApiModelProperty(value = "鍘傚晢涓婚敭", required = true)
+    @NotNull(message = "鍘傚晢涓婚敭涓嶈兘涓虹┖", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 鍘傚晢鍚嶇О
+     */
+    @ApiModelProperty(value = "鍘傚晢鍚嶇О", required = true)
+    @NotBlank(message = "鍘傚晢鍚嶇О涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String name;
+
+    /**
+     * 鍘傚晢浠g爜
+     */
+    @ApiModelProperty(value = "鍘傚晢浠g爜", required = true)
+    @NotBlank(message = "鍘傚晢浠g爜涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String code;
+
+    /**
+     * 鑱旂郴鏂瑰紡
+     */
+    @ApiModelProperty(value = "鑱旂郴鏂瑰紡", required = true)
+    @NotBlank(message = "鑱旂郴鏂瑰紡涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String phone;
+
+    /**
+     * 閭
+     */
+    @ApiModelProperty(value = "閭")
+    private String mailbox;
+
+    /**
+     * 鑱旂郴鍦板潃
+     */
+    @ApiModelProperty(value = "鑱旂郴鍦板潃")
+    private String contactAddress;
+
+
+    /**
+     * 鍒嗛〉澶у皬
+     */
+    @ApiModelProperty("鍒嗛〉澶у皬")
+    private Integer pageSize;
+
+    /**
+     * 褰撳墠椤垫暟
+     */
+    @ApiModelProperty("褰撳墠椤垫暟")
+    private Integer pageNum;
+
+    /**
+     * 鎺掑簭鍒�
+     */
+    @ApiModelProperty("鎺掑簭鍒�")
+    private String orderByColumn;
+
+    /**
+     * 鎺掑簭鐨勬柟鍚慸esc鎴栬�卆sc
+     */
+    @ApiModelProperty(value = "鎺掑簭鐨勬柟鍚�", example = "asc,desc")
+    private String isAsc;
+
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/DevPeripheralUnitBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/DevPeripheralUnitBo.java
index 70bd8e5..fad2aba 100644
--- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/DevPeripheralUnitBo.java
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/DevPeripheralUnitBo.java
@@ -63,7 +63,6 @@
      * 鍘傚晢浠g爜
      */
     @ApiModelProperty(value = "鍘傚晢浠g爜", required = true)
-    @NotBlank(message = "鍘傚晢浠g爜涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String vendorCode;
 
     /**
@@ -97,7 +96,6 @@
      * 闄勪欢
      */
     @ApiModelProperty(value = "闄勪欢", required = true)
-    @NotBlank(message = "闄勪欢涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String filePath;
 
 
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/DevEquipmentLogVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/DevEquipmentLogVo.java
index 31b4b5e..b0c2bde 100644
--- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/DevEquipmentLogVo.java
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/DevEquipmentLogVo.java
@@ -4,6 +4,7 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.Dict;
 import com.ruoyi.common.annotation.ExcelDictFormat;
 import com.ruoyi.common.convert.ExcelDictConvert;
 import io.swagger.annotations.ApiModel;
@@ -27,7 +28,7 @@
 	private static final long serialVersionUID = 1L;
 
     /**
-     * 
+     *
      */
 	@ExcelProperty(value = "")
 	@ApiModelProperty("")
@@ -38,6 +39,7 @@
      */
 	@ExcelProperty(value = "鎿嶄綔琛屼负")
 	@ApiModelProperty("鎿嶄綔琛屼负")
+    @Dict(dicCode = "DICT108")
 	private String operation;
 
     /**
@@ -69,7 +71,7 @@
 	private String loginLocation;
 
     /**
-     * 
+     *
      */
 	@ExcelProperty(value = "")
 	@ApiModelProperty("")
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/DevManufacturerVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/DevManufacturerVo.java
new file mode 100644
index 0000000..eeb3489
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/DevManufacturerVo.java
@@ -0,0 +1,70 @@
+package com.ruoyi.oa.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 鍘傚晢瑙嗗浘瀵硅薄 dev_manufacturer
+ *
+ * @author ruoyi
+ * @date 2021-12-14
+ */
+@Data
+@ApiModel("鍘傚晢瑙嗗浘瀵硅薄")
+@ExcelIgnoreUnannotated
+public class DevManufacturerVo {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 鍘傚晢涓婚敭
+     */
+	@ExcelProperty(value = "鍘傚晢涓婚敭")
+	@ApiModelProperty("鍘傚晢涓婚敭")
+	private Long id;
+
+    /**
+     * 鍘傚晢鍚嶇О
+     */
+	@ExcelProperty(value = "鍘傚晢鍚嶇О")
+	@ApiModelProperty("鍘傚晢鍚嶇О")
+	private String name;
+
+    /**
+     * 鍘傚晢浠g爜
+     */
+	@ExcelProperty(value = "鍘傚晢浠g爜")
+	@ApiModelProperty("鍘傚晢浠g爜")
+	private String code;
+
+    /**
+     * 鑱旂郴鏂瑰紡
+     */
+	@ExcelProperty(value = "鑱旂郴鏂瑰紡")
+	@ApiModelProperty("鑱旂郴鏂瑰紡")
+	private String phone;
+
+    /**
+     * 閭
+     */
+	@ExcelProperty(value = "閭")
+	@ApiModelProperty("閭")
+	private String mailbox;
+
+    /**
+     * 鑱旂郴鍦板潃
+     */
+	@ExcelProperty(value = "鑱旂郴鍦板潃")
+	@ApiModelProperty("鑱旂郴鍦板潃")
+	private String contactAddress;
+
+
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/DevPeripheralUnitVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/DevPeripheralUnitVo.java
index ea0359f..eb8b5f4 100644
--- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/DevPeripheralUnitVo.java
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/DevPeripheralUnitVo.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.Dict;
 import com.ruoyi.common.annotation.ExcelDictFormat;
 import com.ruoyi.common.convert.ExcelDictConvert;
 import io.swagger.annotations.ApiModel;
@@ -52,6 +53,7 @@
      */
 	@ExcelProperty(value = "鐢熶骇鍘傚晢")
 	@ApiModelProperty("鐢熶骇鍘傚晢")
+    @Dict(dictTable = "dev_manufacturer", dicCode = "id", dicText = "name")
 	private String manufacturer;
 
     /**
@@ -59,6 +61,7 @@
      */
 	@ExcelProperty(value = "鍘傚晢浠g爜")
 	@ApiModelProperty("鍘傚晢浠g爜")
+    @Dict(dictTable = "dev_manufacturer", dicCode = "id", dicText = "code")
 	private String vendorCode;
 
     /**
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/DevManufacturerMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/DevManufacturerMapper.java
new file mode 100644
index 0000000..a0fa58d
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/DevManufacturerMapper.java
@@ -0,0 +1,14 @@
+package com.ruoyi.oa.mapper;
+
+import com.ruoyi.oa.domain.DevManufacturer;
+import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+
+/**
+ * 鍘傚晢Mapper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2021-12-14
+ */
+public interface DevManufacturerMapper extends BaseMapperPlus<DevManufacturer> {
+
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IDevEquipmentService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IDevEquipmentService.java
index e865e11..7dee9db 100644
--- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IDevEquipmentService.java
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IDevEquipmentService.java
@@ -57,4 +57,6 @@
     DevEquipment externalAdd(DevEquipmentBo bo);
 
     DevEquipment equipmentEdit(DevEquipmentBo bo);
+
+    void submitComment(DevEquipmentBo bo);
 }
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IDevManufacturerService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IDevManufacturerService.java
new file mode 100644
index 0000000..16375c9
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IDevManufacturerService.java
@@ -0,0 +1,56 @@
+package com.ruoyi.oa.service;
+
+import com.ruoyi.oa.domain.DevManufacturer;
+import com.ruoyi.oa.domain.vo.DevManufacturerVo;
+import com.ruoyi.oa.domain.bo.DevManufacturerBo;
+import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 鍘傚晢Service鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2021-12-14
+ */
+public interface IDevManufacturerService extends IServicePlus<DevManufacturer, DevManufacturerVo> {
+	/**
+	 * 鏌ヨ鍗曚釜
+	 * @return
+	 */
+	DevManufacturerVo queryById(Long id);
+
+	/**
+	 * 鏌ヨ鍒楄〃
+	 */
+    TableDataInfo<DevManufacturerVo> queryPageList(DevManufacturerBo bo);
+
+	/**
+	 * 鏌ヨ鍒楄〃
+	 */
+	List<DevManufacturerVo> queryList(DevManufacturerBo bo);
+
+	/**
+	 * 鏍规嵁鏂板涓氬姟瀵硅薄鎻掑叆鍘傚晢
+	 * @param bo 鍘傚晢鏂板涓氬姟瀵硅薄
+	 * @return
+	 */
+	Boolean insertByBo(DevManufacturerBo bo);
+
+	/**
+	 * 鏍规嵁缂栬緫涓氬姟瀵硅薄淇敼鍘傚晢
+	 * @param bo 鍘傚晢缂栬緫涓氬姟瀵硅薄
+	 * @return
+	 */
+	Boolean updateByBo(DevManufacturerBo bo);
+
+	/**
+	 * 鏍¢獙骞跺垹闄ゆ暟鎹�
+	 * @param ids 涓婚敭闆嗗悎
+	 * @param isValid 鏄惁鏍¢獙,true-鍒犻櫎鍓嶆牎楠�,false-涓嶆牎楠�
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevEquipmentLogServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevEquipmentLogServiceImpl.java
index 05dd2c6..07ec710 100644
--- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevEquipmentLogServiceImpl.java
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevEquipmentLogServiceImpl.java
@@ -53,11 +53,11 @@
         LambdaQueryWrapper<DevEquipmentLog> lqw = Wrappers.lambdaQuery();
         lqw.eq(StringUtils.isNotBlank(bo.getOperation()), DevEquipmentLog::getOperation, bo.getOperation());
         lqw.like(StringUtils.isNotBlank(bo.getUserName()), DevEquipmentLog::getUserName, bo.getUserName());
-        lqw.like(StringUtils.isNotBlank(bo.getNickName()), DevEquipmentLog::getNickName, bo.getNickName());
-        lqw.eq(StringUtils.isNotBlank(bo.getIp()), DevEquipmentLog::getIp, bo.getIp());
-        lqw.eq(StringUtils.isNotBlank(bo.getLoginLocation()), DevEquipmentLog::getLoginLocation, bo.getLoginLocation());
+        lqw.like(StringUtils.isNotBlank(bo.getIp()), DevEquipmentLog::getIp, bo.getIp());
+        lqw.like(StringUtils.isNotBlank(bo.getLoginLocation()), DevEquipmentLog::getLoginLocation, bo.getLoginLocation());
         lqw.eq(StringUtils.isNotBlank(bo.getStatus()), DevEquipmentLog::getStatus, bo.getStatus());
         lqw.eq(bo.getLoginTime() != null, DevEquipmentLog::getLoginTime, bo.getLoginTime());
+        lqw.orderByDesc(DevEquipmentLog::getLoginTime);
         return lqw;
     }
 
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevEquipmentServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevEquipmentServiceImpl.java
index 4bfe12a..5133b28 100644
--- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevEquipmentServiceImpl.java
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevEquipmentServiceImpl.java
@@ -4,6 +4,7 @@
 import cn.hutool.http.HttpStatus;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.core.page.PagePlus;
@@ -123,14 +124,14 @@
         DevEquipment po = baseMapper.selectOne(new QueryWrapper<DevEquipment>().lambda()
             .eq(DevEquipment::getSequenceCode, bo.getSequenceCode()));
         // 璁惧瀛樺湪锛岀洿鎺ヨ繑鍥炶澶囦俊鎭�
-        if (StringUtils.isEmpty(po)) {
+        if (StringUtils.isNotEmpty(po)) {
             return po;
         }
         // 璁惧涓嶅瓨鍦ㄥ垯鏂板缓
         else {
             // 鍏堟牴鎹簭鍒楃爜鐢熸垚搴忓垪鍙�
             DevEquipmentCode c = new DevEquipmentCode();
-            c.setSequenceCode(bo.getSequenceCode());
+            c.setCreateTime(DateUtils.getNowDate());
             devEquipmentCodeMapper.insert(c);
             // 娣诲姞璁惧
             DevEquipment add = BeanUtil.toBean(bo, DevEquipment.class);
@@ -141,27 +142,47 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public DevEquipment equipmentEdit(DevEquipmentBo bo) {
         DevEquipment po = baseMapper.selectById(bo.getId());
+        if (po == null) {
+            throw new ServiceException("娌℃湁璁惧淇℃伅", HttpStatus.HTTP_PARTIAL);
+        }
         if (null != bo.getSchoolId()) {
             po.setSchoolId(bo.getSchoolId());
         }
-        if (StringUtils.isEmpty(bo.getHostId())) {
+        if (StringUtils.isNotBlank(bo.getHostId())) {
             po.setHostId(bo.getHostId());
         }
-        if (StringUtils.isEmpty(bo.getNetworkId())) {
-            po.setNetworkId(bo.getNetworkId());
-        }
-        if (StringUtils.isEmpty(bo.getFrequencyBand())) {
-            po.setFrequencyBand(bo.getFrequencyBand());
+//        if (StringUtils.isEmpty(bo.getNetworkId())) {
+//            po.setNetworkId(bo.getNetworkId());
+//        }
+//        if (StringUtils.isEmpty(bo.getFrequencyBand())) {
+//            po.setFrequencyBand(bo.getFrequencyBand());
+//        }
+//        if (null != bo.getBatchId()) {
+//            po.setBatchId(bo.getBatchId());
+//        }
+//        if (StringUtils.isEmpty(bo.getRemarks())) {
+//            po.setRemarks(bo.getRemarks());
+//        }
+        baseMapper.updateById(po);
+        return po;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void submitComment(DevEquipmentBo bo) {
+        DevEquipment po = baseMapper.selectById(bo.getId());
+        if (po == null) {
+            throw new ServiceException("娌℃湁璁惧淇℃伅", HttpStatus.HTTP_PARTIAL);
         }
         if (null != bo.getBatchId()) {
             po.setBatchId(bo.getBatchId());
         }
-        if (StringUtils.isEmpty(bo.getRemarks())) {
+        if (StringUtils.isNotBlank(bo.getRemarks())) {
             po.setRemarks(bo.getRemarks());
         }
         baseMapper.updateById(po);
-        return po;
     }
 }
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevManufacturerServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevManufacturerServiceImpl.java
new file mode 100644
index 0000000..f636a62
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevManufacturerServiceImpl.java
@@ -0,0 +1,105 @@
+package com.ruoyi.oa.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.http.HttpStatus;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.core.page.PagePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+import org.springframework.stereotype.Service;
+import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.oa.domain.bo.DevManufacturerBo;
+import com.ruoyi.oa.domain.vo.DevManufacturerVo;
+import com.ruoyi.oa.domain.DevManufacturer;
+import com.ruoyi.oa.mapper.DevManufacturerMapper;
+import com.ruoyi.oa.service.IDevManufacturerService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 鍘傚晢Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2021-12-14
+ */
+@Service
+public class DevManufacturerServiceImpl extends ServicePlusImpl<DevManufacturerMapper, DevManufacturer, DevManufacturerVo> implements IDevManufacturerService {
+
+    @Override
+    public DevManufacturerVo queryById(Long id) {
+        return getVoById(id);
+    }
+
+    @Override
+    public TableDataInfo<DevManufacturerVo> queryPageList(DevManufacturerBo bo) {
+        PagePlus<DevManufacturer, DevManufacturerVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
+        return PageUtils.buildDataInfo(result);
+    }
+
+    @Override
+    public List<DevManufacturerVo> queryList(DevManufacturerBo bo) {
+        return listVo(buildQueryWrapper(bo));
+    }
+
+    private LambdaQueryWrapper<DevManufacturer> buildQueryWrapper(DevManufacturerBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<DevManufacturer> lqw = Wrappers.lambdaQuery();
+        lqw.like(StringUtils.isNotBlank(bo.getName()), DevManufacturer::getName, bo.getName());
+        lqw.like(StringUtils.isNotBlank(bo.getCode()), DevManufacturer::getCode, bo.getCode());
+        lqw.like(StringUtils.isNotBlank(bo.getPhone()), DevManufacturer::getPhone, bo.getPhone());
+        lqw.like(StringUtils.isNotBlank(bo.getMailbox()), DevManufacturer::getMailbox, bo.getMailbox());
+        lqw.like(StringUtils.isNotBlank(bo.getContactAddress()), DevManufacturer::getContactAddress, bo.getContactAddress());
+        return lqw;
+    }
+
+    @Override
+    public Boolean insertByBo(DevManufacturerBo bo) {
+        List<DevManufacturer> list = baseMapper.selectList(new QueryWrapper<DevManufacturer>().lambda()
+            .eq(DevManufacturer::getCode, bo.getCode()));
+        if (list.size() > 0) {
+            throw new ServiceException("鍘傚晢浠g爜閲嶅", HttpStatus.HTTP_PARTIAL);
+        }
+        DevManufacturer add = BeanUtil.toBean(bo, DevManufacturer.class);
+        validEntityBeforeSave(add);
+        boolean flag = save(add);
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    @Override
+    public Boolean updateByBo(DevManufacturerBo bo) {
+        List<DevManufacturer> list = baseMapper.selectList(new QueryWrapper<DevManufacturer>().lambda()
+            .eq(DevManufacturer::getCode, bo.getCode()).ne(DevManufacturer::getId, bo.getId()));
+        if (list.size() > 0) {
+            throw new ServiceException("鍘傚晢浠g爜閲嶅", HttpStatus.HTTP_PARTIAL);
+        }
+        DevManufacturer update = BeanUtil.toBean(bo, DevManufacturer.class);
+        validEntityBeforeSave(update);
+        return updateById(update);
+    }
+
+    /**
+     * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+     *
+     * @param entity 瀹炰綋绫绘暟鎹�
+     */
+    private void validEntityBeforeSave(DevManufacturer entity) {
+        //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if (isValid) {
+            //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+        }
+        return removeByIds(ids);
+    }
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevPeripheralUnitServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevPeripheralUnitServiceImpl.java
index ca1ac90..52d941e 100644
--- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevPeripheralUnitServiceImpl.java
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/DevPeripheralUnitServiceImpl.java
@@ -69,6 +69,7 @@
             throw new ServiceException("鍘傚晢浠g爜閲嶅", HttpStatus.HTTP_PARTIAL);
         }
         DevPeripheralUnit add = BeanUtil.toBean(bo, DevPeripheralUnit.class);
+        add.setVendorCode(add.getManufacturer());
         validEntityBeforeSave(add);
         boolean flag = save(add);
         if (flag) {
@@ -80,6 +81,7 @@
     @Override
     public Boolean updateByBo(DevPeripheralUnitBo bo) {
         DevPeripheralUnit update = BeanUtil.toBean(bo, DevPeripheralUnit.class);
+        update.setVendorCode(update.getManufacturer());
         validEntityBeforeSave(update);
         return updateById(update);
     }
diff --git a/ruoyi-oa/src/main/resources/mapper/oa/DevManufacturerMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/DevManufacturerMapper.xml
new file mode 100644
index 0000000..27581bc
--- /dev/null
+++ b/ruoyi-oa/src/main/resources/mapper/oa/DevManufacturerMapper.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.oa.mapper.DevManufacturerMapper">
+
+    <resultMap type="com.ruoyi.oa.domain.DevManufacturer" id="DevManufacturerResult">
+        <result property="id" column="id"/>
+        <result property="name" column="name"/>
+        <result property="code" column="code"/>
+        <result property="phone" column="phone"/>
+        <result property="mailbox" column="mailbox"/>
+        <result property="contactAddress" column="contact_address"/>
+        <result property="createBy" column="create_by"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="version" column="version"/>
+    </resultMap>
+
+
+</mapper>
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
index 70f6601..ab0fd56 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
@@ -9,10 +9,7 @@
 import com.ruoyi.common.exception.user.CaptchaException;
 import com.ruoyi.common.exception.user.CaptchaExpireException;
 import com.ruoyi.common.exception.user.UserPasswordNotMatchException;
-import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.common.utils.MessageUtils;
-import com.ruoyi.common.utils.RedisUtils;
-import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.common.utils.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.BadCredentialsException;
@@ -57,9 +54,11 @@
      */
     public String login(String username, String password, String code, String uuid) {
         HttpServletRequest request = ServletUtils.getRequest();
+        // 鐢ㄦ埛绫诲瀷锛圖EVICE锛氳澶囩锛岀┖锛歱c绯荤粺锛�
+        String userType = request.getHeader("User-Type");
         boolean captchaOnOff = configService.selectCaptchaOnOff();
         // 楠岃瘉鐮佸紑鍏�
-        if (captchaOnOff) {
+        if (StringUtils.isEmpty(userType) && captchaOnOff) {
             validateCaptcha(username, code, uuid, request);
         }
         // 鐢ㄦ埛楠岃瘉
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
index e001ad2..181ef43 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
@@ -142,7 +142,7 @@
      * @return
      */
     @Override
-    @Cacheable(value = CacheConstant.SYS_DICT_CACHE, key = "#code+':'+#key")
+//    @Cacheable(value = CacheConstant.SYS_DICT_CACHE, key = "#code+':'+#key")
     public String queryDictTextByKey(String code, String key) {
         System.out.println("鏃犵紦瀛榙ictText鐨勬椂鍊欒皟鐢ㄨ繖閲岋紒");
         return baseMapper.queryDictTextByKey(code, key);
@@ -159,7 +159,7 @@
      * @return
      */
     @Override
-    @Cacheable(value = CacheConstant.SYS_DICT_TABLE_CACHE)
+//    @Cacheable(value = CacheConstant.SYS_DICT_TABLE_CACHE)
     public String queryTableDictTextByKey(String table, String text, String code, String key) {
         System.out.println("鏃犵紦瀛榙ictTable鐨勬椂鍊欒皟鐢ㄨ繖閲岋紒");
         return baseMapper.queryTableDictTextByKey(table, text, code, key);
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
index 0ce33be..d538d15 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
@@ -4,13 +4,19 @@
 import cn.hutool.http.useragent.UserAgentUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.core.domain.dto.EquipmentLogDTO;
 import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.service.EquipmentService;
 import com.ruoyi.common.core.service.LogininforService;
+import com.ruoyi.common.enums.BusinessStatus;
+import com.ruoyi.common.enums.EquipmentLog;
+import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.ServletUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.ip.AddressUtils;
+import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.system.domain.SysLogininfor;
 import com.ruoyi.system.mapper.SysLogininforMapper;
 import com.ruoyi.system.service.ISysLogininforService;
@@ -57,26 +63,47 @@
         s.append(getBlock(message));
         // 鎵撳嵃淇℃伅鍒版棩蹇�
         log.info(s.toString(), args);
-        // 鑾峰彇瀹㈡埛绔搷浣滅郴缁�
-        String os = userAgent.getOs().getName();
-        // 鑾峰彇瀹㈡埛绔祻瑙堝櫒
-        String browser = userAgent.getBrowser().getName();
-        // 灏佽瀵硅薄
-        SysLogininfor logininfor = new SysLogininfor();
-        logininfor.setUserName(username);
-        logininfor.setIpaddr(ip);
-        logininfor.setLoginLocation(address);
-        logininfor.setBrowser(browser);
-        logininfor.setOs(os);
-        logininfor.setMsg(message);
-        // 鏃ュ織鐘舵��
-        if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) {
-            logininfor.setStatus(Constants.SUCCESS);
-        } else if (Constants.LOGIN_FAIL.equals(status)) {
-            logininfor.setStatus(Constants.FAIL);
+        // 鐢ㄦ埛绫诲瀷锛圖EVICE锛氳澶囩锛岀┖锛歱c绯荤粺锛�
+        String userType = request.getHeader("User-Type");
+        // pc绯荤粺
+        if (StringUtils.isEmpty(userType)) {
+            // 鑾峰彇瀹㈡埛绔搷浣滅郴缁�
+            String os = userAgent.getOs().getName();
+            // 鑾峰彇瀹㈡埛绔祻瑙堝櫒
+            String browser = userAgent.getBrowser().getName();
+            // 灏佽瀵硅薄
+            SysLogininfor logininfor = new SysLogininfor();
+            logininfor.setUserName(username);
+            logininfor.setIpaddr(ip);
+            logininfor.setLoginLocation(address);
+            logininfor.setBrowser(browser);
+            logininfor.setOs(os);
+            logininfor.setMsg(message);
+            // 鏃ュ織鐘舵��
+            if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) {
+                logininfor.setStatus(Constants.SUCCESS);
+            } else if (Constants.LOGIN_FAIL.equals(status)) {
+                logininfor.setStatus(Constants.FAIL);
+            }
+            // 鎻掑叆鏁版嵁
+            insertLogininfor(logininfor);
         }
-        // 鎻掑叆鏁版嵁
-        insertLogininfor(logininfor);
+        // 璁惧绔�
+        if ("DEVICE".equals(userType)) {
+            EquipmentLogDTO dto = new EquipmentLogDTO();
+            dto.setLoginLocation(address);
+            dto.setUserName(username);
+            dto.setIp(ip);
+            dto.setLoginTime(DateUtils.getNowDate());
+            dto.setOperation(EquipmentLog.LOGIN.ordinal());
+            // 鏃ュ織鐘舵��
+            if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) {
+                dto.setStatus(BusinessStatus.SUCCESS.ordinal());
+            } else if (Constants.LOGIN_FAIL.equals(status)) {
+                dto.setStatus(BusinessStatus.FAIL.ordinal());
+            }
+            SpringUtils.getBean(EquipmentService.class).recordOper(dto);
+        }
     }
 
     private String getBlock(Object msg) {
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java
index 15b9759..40a1fe3 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java
@@ -138,12 +138,22 @@
      */
     @Override
     public void setUserAgent(LoginUser loginUser) {
-        UserAgent userAgent = UserAgentUtil.parse(ServletUtils.getRequest().getHeader("User-Agent"));
-        String ip = ServletUtils.getClientIP();
-        loginUser.setIpaddr(ip);
-        loginUser.setLoginLocation(AddressUtils.getRealAddressByIP(ip));
-        loginUser.setBrowser(userAgent.getBrowser().getName());
-        loginUser.setOs(userAgent.getOs().getName());
+        HttpServletRequest request = ServletUtils.getRequest();
+        // 鐢ㄦ埛绫诲瀷锛圖EVICE锛氳澶囩锛岀┖锛歱c绯荤粺锛�
+        String userType = request.getHeader("User-Type");
+        if (StringUtils.isEmpty(userType)) {
+            UserAgent userAgent = UserAgentUtil.parse(ServletUtils.getRequest().getHeader("User-Agent"));
+            String ip = ServletUtils.getClientIP();
+            loginUser.setIpaddr(ip);
+            loginUser.setLoginLocation(AddressUtils.getRealAddressByIP(ip));
+            loginUser.setBrowser(userAgent.getBrowser().getName());
+            loginUser.setOs(userAgent.getOs().getName());
+        }
+        if ("DEVICE".equals(userType)) {
+            String ip = ServletUtils.getClientIP();
+            loginUser.setIpaddr(ip);
+            loginUser.setLoginLocation(AddressUtils.getRealAddressByIP(ip));
+        }
     }
 
     /**

--
Gitblit v1.9.1