From c6db287f6c987060d615fd7ef5126511e051d5c6 Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期日, 27 四月 2025 17:33:30 +0800
Subject: [PATCH] 盘点计划 盘点单
---
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlanScope.java | 29 +
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DevicePurchasePlanController.java | 14
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingRecordMapper.java | 16
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceStocktakingPlanServiceImpl.java | 179 +++++++++
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanUserMapper.java | 11
platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanScopeMapper.xml | 17
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceClassMapper.java | 4
platformx-device-biz/src/main/resources/mapper/DeviceClassMapper.xml | 19 +
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlanUser.java | 27 +
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceStocktakingPlanService.java | 22 +
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceStocktakingPlanController.java | 171 +++++++++
platformx-device-biz/src/main/resources/mapper/DeviceStocktakingRecordMapper.xml | 69 +++
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceStocktakingRecordService.java | 8
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanMapper.java | 14
platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml | 16
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlan.java | 53 ++
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DeviceClassVo.java | 20 +
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DevicePurchasePlanService.java | 3
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanScopeMapper.java | 11
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/StocktatingRecordVo.java | 19 +
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DeviceStocktakingPlanVo.java | 36 ++
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceStocktakingRecordController.java | 119 ++++++
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingRecord.java | 91 +++++
platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanMapper.xml | 60 +++
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceInventoryMapper.java | 5
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DevicePurchasePlanServiceImpl.java | 7
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceStocktakingRecordServiceImpl.java | 16
platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanUserMapper.xml | 17
28 files changed, 1,072 insertions(+), 1 deletions(-)
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlan.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlan.java
new file mode 100644
index 0000000..b70bf4b
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlan.java
@@ -0,0 +1,53 @@
+package com.by4cloud.platformx.device.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.by4cloud.platformx.common.data.mybatis.BaseModel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.hibernate.annotations.Table;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Transient;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@Entity
+@TableName("device_stocktaking_plan")
+@javax.persistence.Table(name = "device_stocktaking_plan")
+@Table(appliesTo = "device_stocktaking_plan", comment = "璁惧鐩樼偣璁″垝")
+public class DeviceStocktakingPlan extends BaseModel<DeviceStocktakingPlan> {
+
+ @Schema(description = "璁″垝鍚嶇О")
+ @Column(columnDefinition="VARCHAR(128) comment '璁″垝鍚嶇О'")
+ private String planName;
+
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Schema(description = "鐩樼偣鍛ㄦ湡寮�濮�")
+ @Column(columnDefinition="VARCHAR(128) comment '鐩樼偣鍛ㄦ湡寮�濮�'")
+ private Date startDate;
+
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Schema(description = "鐩樼偣鍛ㄦ湡缁撴潫")
+ @Column(columnDefinition="VARCHAR(128) comment '鐩樼偣鍛ㄦ湡缁撴潫'")
+ private Date endDate;
+
+ @Schema(description = "鐩樼偣璁″垝鐘舵��")
+ @Column(columnDefinition="int comment '鐩樼偣璁″垝鐘舵�� 0 寰呭鎵� 1 寰呯敓鎴愮洏鐐瑰崟 2 鐩樼偣涓� 3 瀹屾垚'")
+ private Integer planStatus;
+
+ @Transient
+ @TableField(exist = false)
+ private List<Long> classIdList;
+
+ @Transient
+ @TableField(exist = false)
+ private List<Long> userIdList;
+
+ @Transient
+ @TableField(exist = false)
+ private String resultFlag;
+}
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlanScope.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlanScope.java
new file mode 100644
index 0000000..caaca79
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlanScope.java
@@ -0,0 +1,29 @@
+package com.by4cloud.platformx.device.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.by4cloud.platformx.common.data.mybatis.BaseModel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.hibernate.annotations.Table;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import java.util.Date;
+
+@Data
+@Entity
+@TableName("device_stocktaking_plan_scope")
+@javax.persistence.Table(name = "device_stocktaking_plan_scope")
+@Table(appliesTo = "device_stocktaking_plan_scope", comment = "璁惧鐩樼偣璁″垝鑼冨洿")
+public class DeviceStocktakingPlanScope extends BaseModel<DeviceStocktakingPlanScope> {
+
+ @Schema(description = "鍏宠仈鐩樼偣璁″垝")
+ @Column(columnDefinition="bigint comment '鍏宠仈鐩樼偣璁″垝'")
+ private Long planId;
+
+ @Schema(description = "鐩樼偣璁惧鍒嗙被ID")
+ @Column(columnDefinition="bigint comment '鐩樼偣璁惧鍒嗙被ID'")
+ private Long classId;
+
+}
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlanUser.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlanUser.java
new file mode 100644
index 0000000..c217891
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlanUser.java
@@ -0,0 +1,27 @@
+package com.by4cloud.platformx.device.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.by4cloud.platformx.common.data.mybatis.BaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.hibernate.annotations.Table;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+
+@Data
+@Entity
+@TableName("device_stocktaking_plan_user")
+@javax.persistence.Table(name = "device_stocktaking_plan_user")
+@Table(appliesTo = "device_stocktaking_plan_user", comment = "璁惧鐩樼偣璁″垝浜哄憳")
+public class DeviceStocktakingPlanUser extends BaseModel<DeviceStocktakingPlanUser> {
+
+ @Schema(description = "鍏宠仈鐩樼偣璁″垝")
+ @Column(columnDefinition="bigint comment '鍏宠仈鐩樼偣璁″垝'")
+ private Long planId;
+
+ @Schema(description = "鐩樼偣浜哄憳")
+ @Column(columnDefinition="bigint comment '鐩樼偣浜哄憳'")
+ private Long stocktakingUserId;
+
+}
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingRecord.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingRecord.java
new file mode 100644
index 0000000..3b790b3
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingRecord.java
@@ -0,0 +1,91 @@
+package com.by4cloud.platformx.device.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.by4cloud.platformx.common.data.mybatis.BaseModel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.hibernate.annotations.Table;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import java.util.Date;
+
+@Data
+@Entity
+@TableName("device_stocktaking_record")
+@javax.persistence.Table(name = "device_stocktaking_record")
+@Table(appliesTo = "device_stocktaking_record", comment = "璁惧鐩樼偣璁板綍")
+public class DeviceStocktakingRecord extends BaseModel<DeviceStocktakingRecord> {
+
+ @Schema(description = "鍏宠仈鐩樼偣璁″垝")
+ @Column(columnDefinition="bigint comment '鍏宠仈鐩樼偣璁″垝'")
+ private Long planId;
+
+ @Schema(description = "鐩樼偣璁惧鍒嗙被ID")
+ @Column(columnDefinition="bigint comment '鐩樼偣璁惧鍒嗙被ID'")
+ private Long classId;
+
+ /**
+ * 璁惧ID
+ */
+ @Schema(description="璁惧ID")
+ @Column(columnDefinition="bigint comment '璁惧ID'")
+ private Long deviceId;
+
+ /**
+ * 璁惧ID
+ */
+ @Schema(description="璁惧鍒嗙被ID")
+ @Column(columnDefinition="bigint comment '璁惧鍒嗙被ID'")
+ private Long deviceClassId;
+
+ /**
+ * 璁惧缂栫爜
+ */
+ @Schema(description="璁惧缂栫爜")
+ @Column(columnDefinition="VARCHAR(64) comment '璁惧缂栫爜'")
+ private String deviceCode;
+
+ /**
+ * 璁惧鍚嶇О
+ */
+ @Schema(description="璁惧鍚嶇О")
+ @Column(columnDefinition="VARCHAR(256) comment '璁惧鍚嶇О'")
+ private String deviceName;
+
+ /**
+ * 瑙勬牸鍨嬪彿
+ */
+ @Schema(description="瑙勬牸鍨嬪彿")
+ @Column(columnDefinition="VARCHAR(256) comment '瑙勬牸鍨嬪彿'")
+ private String deviceModels;
+
+ /**
+ * 璁惧搴忓垪鍙�
+ */
+ @Schema(description="璁惧搴忓垪鍙�")
+ @Column(columnDefinition="VARCHAR(256) comment '璁惧搴忓垪鍙�'")
+ private String serialNo;
+
+ @Schema(description = "寮傚父鏍囪")
+ @Column(columnDefinition="int comment '寮傚父鏍囪 0 鏃� 1 鐩樼泩 2 鐩樹簭 3 浣嶇疆鍋忕Щ'")
+ private Integer abnormalMarking;
+
+ @Schema(description = "瀛樻斁浣嶇疆")
+ @Column(columnDefinition="VARCHAR(256) comment '瀛樻斁浣嶇疆'")
+ private String position;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+ @Schema(description = "鐩樼偣鏃堕棿")
+ @Column(columnDefinition="datetime comment '鐩樼偣鏃堕棿'")
+ private Date recordTime;
+
+ @Schema(description = "鐩樼偣浜哄憳")
+ @Column(columnDefinition="bigint comment '鐩樼偣浜哄憳'")
+ private Long stocktakingUserId;
+
+ @Schema(description = "杩囩▼鐓х墖")
+ @Column(columnDefinition="VARCHAR(256) comment '杩囩▼鐓х墖'")
+ private String recordPic;
+}
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DeviceClassVo.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DeviceClassVo.java
new file mode 100644
index 0000000..800e871
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DeviceClassVo.java
@@ -0,0 +1,20 @@
+package com.by4cloud.platformx.device.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class DeviceClassVo {
+
+ private Long classId;
+
+ private Long deviceId;
+
+ private String number;
+
+ private String name;
+
+ private String specification;
+
+ private String serialNo;
+
+}
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DeviceStocktakingPlanVo.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DeviceStocktakingPlanVo.java
new file mode 100644
index 0000000..b73f88a
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DeviceStocktakingPlanVo.java
@@ -0,0 +1,36 @@
+package com.by4cloud.platformx.device.entity.vo;
+
+import com.by4cloud.platformx.device.entity.DeviceStocktakingRecord;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class DeviceStocktakingPlanVo {
+
+ private Long id;
+
+ @Schema(description = "璁″垝鍚嶇О")
+ private String planName;
+
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Schema(description = "鐩樼偣鍛ㄦ湡寮�濮�")
+ private Date startDate;
+
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Schema(description = "鐩樼偣鍛ㄦ湡缁撴潫")
+ private Date endDate;
+
+ private Integer planStatus;
+
+ private String scopes;
+
+ private List<Long> userIds;
+
+ private String users;
+
+ private List<DeviceStocktakingRecord> recordList;
+}
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/StocktatingRecordVo.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/StocktatingRecordVo.java
new file mode 100644
index 0000000..ecf1d79
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/StocktatingRecordVo.java
@@ -0,0 +1,19 @@
+package com.by4cloud.platformx.device.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class StocktatingRecordVo {
+
+ private String number;
+
+ private String className;
+
+ private String specification;
+
+ private String deviceName;
+
+ private Integer zmNum;
+
+ private Integer pdNum;
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DevicePurchasePlanController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DevicePurchasePlanController.java
index b5136e5..84a7c58 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DevicePurchasePlanController.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DevicePurchasePlanController.java
@@ -46,7 +46,7 @@
/**
* 鍒嗛〉鏌ヨ
* @param page 鍒嗛〉瀵硅薄
- * @param devicePurchasePlan 璁惧閲囪喘璁″垝
+ * @param queryDTO 璁惧閲囪喘璁″垝
* @return
*/
@Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
@@ -109,6 +109,18 @@
return R.ok(devicePurchasePlanService.removeBatchByIds(CollUtil.toList(ids)));
}
+ /**
+ * 閫氳繃id鍒犻櫎璁惧閲囪喘璁″垝鏄庣粏
+ * @param id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鍒犻櫎璁惧閲囪喘璁″垝鏄庣粏" , description = "閫氳繃id鍒犻櫎璁惧閲囪喘璁″垝鏄庣粏" )
+ @SysLog("閫氳繃id鍒犻櫎璁惧閲囪喘璁″垝鏄庣粏" )
+ @DeleteMapping("/removeItemById/{id}")
+ public R removeItemById(@PathVariable("id") Long id) {
+ return devicePurchasePlanService.removeItemById(id);
+ }
+
/**
* 瀵煎嚭excel 琛ㄦ牸
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceStocktakingPlanController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceStocktakingPlanController.java
new file mode 100644
index 0000000..6b9a608
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceStocktakingPlanController.java
@@ -0,0 +1,171 @@
+package com.by4cloud.platformx.device.controller;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.common.log.annotation.SysLog;
+import com.by4cloud.platformx.device.entity.DeviceStocktakingPlan;
+import com.by4cloud.platformx.device.service.DeviceStocktakingPlanService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import org.springdoc.api.annotations.ParameterObject;
+import org.springframework.http.HttpHeaders;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 璁惧鐩樼偣璁″垝
+ *
+ * @author syt
+ * @date 2025-04-24 15:19:13
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/deviceStocktakingPlan" )
+@Tag(description = "deviceStocktakingPlan" , name = "璁惧鐩樼偣璁″垝绠$悊" )
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class DeviceStocktakingPlanController {
+
+ private final DeviceStocktakingPlanService deviceStocktakingPlanService;
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param page 鍒嗛〉瀵硅薄
+ * @param deviceStocktakingPlan 璁惧鐩樼偣璁″垝
+ * @return
+ */
+ @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+ @GetMapping("/page" )
+ @PreAuthorize("@pms.hasPermission('device_deviceStocktakingPlan_view')" )
+ public R getDeviceStocktakingPlanPage(@ParameterObject Page page, @ParameterObject DeviceStocktakingPlan deviceStocktakingPlan) {
+ LambdaQueryWrapper<DeviceStocktakingPlan> wrapper = Wrappers.lambdaQuery();
+ wrapper.eq(StrUtil.isNotBlank(deviceStocktakingPlan.getPlanName()), DeviceStocktakingPlan::getPlanName,deviceStocktakingPlan.getPlanName());
+ wrapper.eq(Objects.nonNull(deviceStocktakingPlan.getPlanStatus()),DeviceStocktakingPlan::getPlanStatus,deviceStocktakingPlan.getPlanStatus());
+ wrapper.eq(StrUtil.isNotBlank(deviceStocktakingPlan.getResultFlag())&&"1".equals(deviceStocktakingPlan.getResultFlag()),DeviceStocktakingPlan::getPlanStatus,2)
+ .or().eq(StrUtil.isNotBlank(deviceStocktakingPlan.getResultFlag())&&"1".equals(deviceStocktakingPlan.getResultFlag()),DeviceStocktakingPlan::getPlanStatus,3);
+ wrapper.orderByDesc(DeviceStocktakingPlan::getCreateTime);
+ return R.ok(deviceStocktakingPlanService.page(page, wrapper));
+ }
+
+
+ /**
+ * 閫氳繃id鏌ヨ璁惧鐩樼偣璁″垝
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
+ @GetMapping("/{id}" )
+ @PreAuthorize("@pms.hasPermission('device_deviceStocktakingPlan_view')" )
+ public R getById(@PathVariable("id" ) Long id) {
+ return deviceStocktakingPlanService.getByIdNew(id);
+ }
+
+ /**
+ * 鏂板璁惧鐩樼偣璁″垝
+ * @param deviceStocktakingPlan 璁惧鐩樼偣璁″垝
+ * @return R
+ */
+ @Operation(summary = "鏂板璁惧鐩樼偣璁″垝" , description = "鏂板璁惧鐩樼偣璁″垝" )
+ @SysLog("鏂板璁惧鐩樼偣璁″垝" )
+ @PostMapping
+ @PreAuthorize("@pms.hasPermission('device_deviceStocktakingPlan_add')" )
+ public R save(@RequestBody DeviceStocktakingPlan deviceStocktakingPlan) {
+ return deviceStocktakingPlanService.saveNew(deviceStocktakingPlan);
+ }
+
+ /**
+ * 淇敼璁惧鐩樼偣璁″垝
+ * @param deviceStocktakingPlan 璁惧鐩樼偣璁″垝
+ * @return R
+ */
+ @Operation(summary = "淇敼璁惧鐩樼偣璁″垝" , description = "淇敼璁惧鐩樼偣璁″垝" )
+ @SysLog("淇敼璁惧鐩樼偣璁″垝" )
+ @PutMapping
+ @PreAuthorize("@pms.hasPermission('device_deviceStocktakingPlan_edit')" )
+ public R updateById(@RequestBody DeviceStocktakingPlan deviceStocktakingPlan) {
+ return deviceStocktakingPlanService.updateByIdNew(deviceStocktakingPlan);
+ }
+
+ /**
+ * 閫氳繃id鍒犻櫎璁惧鐩樼偣璁″垝
+ * @param ids id鍒楄〃
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鍒犻櫎璁惧鐩樼偣璁″垝" , description = "閫氳繃id鍒犻櫎璁惧鐩樼偣璁″垝" )
+ @SysLog("閫氳繃id鍒犻櫎璁惧鐩樼偣璁″垝" )
+ @DeleteMapping
+ @PreAuthorize("@pms.hasPermission('device_deviceStocktakingPlan_del')" )
+ public R removeById(@RequestBody Long[] ids) {
+ return R.ok(deviceStocktakingPlanService.removeBatchByIds(CollUtil.toList(ids)));
+ }
+
+
+ /**
+ * 瀵煎嚭excel 琛ㄦ牸
+ * @param deviceStocktakingPlan 鏌ヨ鏉′欢
+ * @param ids 瀵煎嚭鎸囧畾ID
+ * @return excel 鏂囦欢娴�
+ */
+ @ResponseExcel
+ @GetMapping("/export")
+ @PreAuthorize("@pms.hasPermission('device_deviceStocktakingPlan_export')" )
+ public List<DeviceStocktakingPlan> export(DeviceStocktakingPlan deviceStocktakingPlan,Long[] ids) {
+ return deviceStocktakingPlanService.list(Wrappers.lambdaQuery(deviceStocktakingPlan).in(ArrayUtil.isNotEmpty(ids), DeviceStocktakingPlan::getId, ids));
+ }
+
+ /**
+ * 閫氳繃id瀹℃牳閫氳繃璁惧鐩樼偣璁″垝
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id瀹℃牳閫氳繃璁惧鐩樼偣璁″垝" , description = "閫氳繃id瀹℃牳閫氳繃璁惧鐩樼偣璁″垝" )
+ @GetMapping("/approved/{id}" )
+ @PreAuthorize("@pms.hasPermission('device_deviceStocktakingPlan_approved')" )
+ public R approved(@PathVariable("id" ) Long id) {
+ return deviceStocktakingPlanService.approved(id);
+ }
+
+ /**
+ * 閫氳繃鐩樼偣璁″垝id鐢熸垚鐩樼偣鍗�
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃鐩樼偣璁″垝id鐢熸垚鐩樼偣鍗�" , description = "閫氳繃鐩樼偣璁″垝id鐢熸垚鐩樼偣鍗�" )
+ @GetMapping("/genRecord/{id}" )
+ @PreAuthorize("@pms.hasPermission('device_deviceStocktakingPlan_genrecord')" )
+ public R genRecord(@PathVariable("id" ) Long id) {
+ return deviceStocktakingPlanService.genRecord(id);
+ }
+
+ /**
+ * 閫氳繃鐩樼偣璁″垝id鑾峰彇鐩樼偣缁撴灉
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃鐩樼偣璁″垝id鑾峰彇鐩樼偣缁撴灉" , description = "閫氳繃鐩樼偣璁″垝id鑾峰彇鐩樼偣缁撴灉" )
+ @GetMapping("/getResult/{id}" )
+ public R getResult(@PathVariable("id" ) Long id) {
+ return deviceStocktakingPlanService.getResult(id);
+ }
+
+ /**
+ * 閫氳繃鐩樼偣璁″垝id瀹屾垚鐩樼偣缁撴灉
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃鐩樼偣璁″垝id瀹屾垚鐩樼偣缁撴灉" , description = "閫氳繃鐩樼偣璁″垝id瀹屾垚鐩樼偣缁撴灉" )
+ @GetMapping("/complete/{id}" )
+ public R complete(@PathVariable("id" ) Long id) {
+ return deviceStocktakingPlanService.complete(id);
+ }
+}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceStocktakingRecordController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceStocktakingRecordController.java
new file mode 100644
index 0000000..4e3b0bc
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceStocktakingRecordController.java
@@ -0,0 +1,119 @@
+package com.by4cloud.platformx.device.controller;
+
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.common.log.annotation.SysLog;
+import com.by4cloud.platformx.device.entity.DeviceStocktakingRecord;
+import com.by4cloud.platformx.device.service.DeviceStocktakingRecordService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import org.springdoc.api.annotations.ParameterObject;
+import org.springframework.http.HttpHeaders;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 璁惧鐩樼偣璁板綍
+ *
+ * @author syt
+ * @date 2025-04-24 15:21:08
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/deviceStocktakingRecord" )
+@Tag(description = "deviceStocktakingRecord" , name = "璁惧鐩樼偣璁板綍绠$悊" )
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class DeviceStocktakingRecordController {
+
+ private final DeviceStocktakingRecordService deviceStocktakingRecordService;
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param page 鍒嗛〉瀵硅薄
+ * @param deviceStocktakingRecord 璁惧鐩樼偣璁板綍
+ * @return
+ */
+ @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+ @GetMapping("/page" )
+ @PreAuthorize("@pms.hasPermission('device_deviceStocktakingRecord_view')" )
+ public R getDeviceStocktakingRecordPage(@ParameterObject Page page, @ParameterObject DeviceStocktakingRecord deviceStocktakingRecord) {
+ LambdaQueryWrapper<DeviceStocktakingRecord> wrapper = Wrappers.lambdaQuery();
+ return R.ok(deviceStocktakingRecordService.page(page, wrapper));
+ }
+
+
+ /**
+ * 閫氳繃id鏌ヨ璁惧鐩樼偣璁板綍
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
+ @GetMapping("/{id}" )
+ @PreAuthorize("@pms.hasPermission('device_deviceStocktakingRecord_view')" )
+ public R getById(@PathVariable("id" ) Long id) {
+ return R.ok(deviceStocktakingRecordService.getById(id));
+ }
+
+ /**
+ * 鏂板璁惧鐩樼偣璁板綍
+ * @param deviceStocktakingRecord 璁惧鐩樼偣璁板綍
+ * @return R
+ */
+ @Operation(summary = "鏂板璁惧鐩樼偣璁板綍" , description = "鏂板璁惧鐩樼偣璁板綍" )
+ @SysLog("鏂板璁惧鐩樼偣璁板綍" )
+ @PostMapping
+ @PreAuthorize("@pms.hasPermission('device_deviceStocktakingRecord_add')" )
+ public R save(@RequestBody DeviceStocktakingRecord deviceStocktakingRecord) {
+ return R.ok(deviceStocktakingRecordService.save(deviceStocktakingRecord));
+ }
+
+ /**
+ * 淇敼璁惧鐩樼偣璁板綍
+ * @param deviceStocktakingRecord 璁惧鐩樼偣璁板綍
+ * @return R
+ */
+ @Operation(summary = "淇敼璁惧鐩樼偣璁板綍" , description = "淇敼璁惧鐩樼偣璁板綍" )
+ @SysLog("淇敼璁惧鐩樼偣璁板綍" )
+ @PutMapping
+ @PreAuthorize("@pms.hasPermission('device_deviceStocktakingRecord_edit')" )
+ public R updateById(@RequestBody DeviceStocktakingRecord deviceStocktakingRecord) {
+ return R.ok(deviceStocktakingRecordService.updateById(deviceStocktakingRecord));
+ }
+
+ /**
+ * 閫氳繃id鍒犻櫎璁惧鐩樼偣璁板綍
+ * @param ids id鍒楄〃
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鍒犻櫎璁惧鐩樼偣璁板綍" , description = "閫氳繃id鍒犻櫎璁惧鐩樼偣璁板綍" )
+ @SysLog("閫氳繃id鍒犻櫎璁惧鐩樼偣璁板綍" )
+ @DeleteMapping
+ @PreAuthorize("@pms.hasPermission('device_deviceStocktakingRecord_del')" )
+ public R removeById(@RequestBody Long[] ids) {
+ return R.ok(deviceStocktakingRecordService.removeBatchByIds(CollUtil.toList(ids)));
+ }
+
+
+ /**
+ * 瀵煎嚭excel 琛ㄦ牸
+ * @param deviceStocktakingRecord 鏌ヨ鏉′欢
+ * @param ids 瀵煎嚭鎸囧畾ID
+ * @return excel 鏂囦欢娴�
+ */
+ @ResponseExcel
+ @GetMapping("/export")
+ @PreAuthorize("@pms.hasPermission('device_deviceStocktakingRecord_export')" )
+ public List<DeviceStocktakingRecord> export(DeviceStocktakingRecord deviceStocktakingRecord,Long[] ids) {
+ return deviceStocktakingRecordService.list(Wrappers.lambdaQuery(deviceStocktakingRecord).in(ArrayUtil.isNotEmpty(ids), DeviceStocktakingRecord::getId, ids));
+ }
+}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceClassMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceClassMapper.java
index bdcb528..1ba8c67 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceClassMapper.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceClassMapper.java
@@ -3,9 +3,13 @@
import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
import com.by4cloud.platformx.device.entity.DeviceClass;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
@Mapper
public interface DeviceClassMapper extends PlatformxBaseMapper<DeviceClass> {
+ List<Long> selectEndNode(@Param("classId") Long classId);
}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceInventoryMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceInventoryMapper.java
index 0db9e94..19e73cd 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceInventoryMapper.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceInventoryMapper.java
@@ -2,13 +2,18 @@
import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
import com.by4cloud.platformx.device.entity.DeviceInventory;
+import com.by4cloud.platformx.device.entity.vo.DeviceClassVo;
import com.by4cloud.platformx.device.entity.vo.InventoryDetailVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
@Mapper
public interface DeviceInventoryMapper extends PlatformxBaseMapper<DeviceInventory> {
InventoryDetailVo getReleaseDetail(@Param("id") Long id);
+
+ List<DeviceClassVo> selectListByClassId(@Param("classId") Long classId);
}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanMapper.java
new file mode 100644
index 0000000..b611810
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanMapper.java
@@ -0,0 +1,14 @@
+package com.by4cloud.platformx.device.mapper;
+
+import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
+import com.by4cloud.platformx.device.entity.DeviceStocktakingPlan;
+import com.by4cloud.platformx.device.entity.vo.DeviceStocktakingPlanVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface DeviceStocktakingPlanMapper extends PlatformxBaseMapper<DeviceStocktakingPlan> {
+
+
+ DeviceStocktakingPlanVo selectVoById(@Param("id") Long id);
+}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanScopeMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanScopeMapper.java
new file mode 100644
index 0000000..08271dc
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanScopeMapper.java
@@ -0,0 +1,11 @@
+package com.by4cloud.platformx.device.mapper;
+
+import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
+import com.by4cloud.platformx.device.entity.DeviceStocktakingPlanScope;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DeviceStocktakingPlanScopeMapper extends PlatformxBaseMapper<DeviceStocktakingPlanScope> {
+
+
+}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanUserMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanUserMapper.java
new file mode 100644
index 0000000..d7c4aed
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanUserMapper.java
@@ -0,0 +1,11 @@
+package com.by4cloud.platformx.device.mapper;
+
+import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
+import com.by4cloud.platformx.device.entity.DeviceStocktakingPlanUser;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DeviceStocktakingPlanUserMapper extends PlatformxBaseMapper<DeviceStocktakingPlanUser> {
+
+
+}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingRecordMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingRecordMapper.java
new file mode 100644
index 0000000..c9f978e
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingRecordMapper.java
@@ -0,0 +1,16 @@
+package com.by4cloud.platformx.device.mapper;
+
+import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
+import com.by4cloud.platformx.device.entity.DeviceStocktakingRecord;
+import com.by4cloud.platformx.device.entity.vo.StocktatingRecordVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface DeviceStocktakingRecordMapper extends PlatformxBaseMapper<DeviceStocktakingRecord> {
+
+
+ List<StocktatingRecordVo> selectStocktatingResultByPlanId(@Param("id") Long id);
+}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DevicePurchasePlanService.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DevicePurchasePlanService.java
index 2176343..4160720 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DevicePurchasePlanService.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DevicePurchasePlanService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.device.dto.DevicePurchasePlanQueryDTO;
import com.by4cloud.platformx.device.entity.DevicePurchasePlan;
@@ -17,4 +18,6 @@
DevicePurchasePlan getByIdNew(Long id);
boolean updateByIdNew(DevicePurchasePlan devicePurchasePlan);
+
+ R removeItemById(Long id);
}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceStocktakingPlanService.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceStocktakingPlanService.java
new file mode 100644
index 0000000..d43b236
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceStocktakingPlanService.java
@@ -0,0 +1,22 @@
+package com.by4cloud.platformx.device.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.device.entity.DeviceStocktakingPlan;
+
+public interface DeviceStocktakingPlanService extends IService<DeviceStocktakingPlan> {
+
+ R saveNew(DeviceStocktakingPlan deviceStocktakingPlan);
+
+ R approved(Long id);
+
+ R genRecord(Long id);
+
+ R getResult(Long id);
+
+ R getByIdNew(Long id);
+
+ R complete(Long id);
+
+ R updateByIdNew(DeviceStocktakingPlan deviceStocktakingPlan);
+}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceStocktakingRecordService.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceStocktakingRecordService.java
new file mode 100644
index 0000000..87c3612
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceStocktakingRecordService.java
@@ -0,0 +1,8 @@
+package com.by4cloud.platformx.device.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.by4cloud.platformx.device.entity.DeviceStocktakingRecord;
+
+public interface DeviceStocktakingRecordService extends IService<DeviceStocktakingRecord> {
+
+}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DevicePurchasePlanServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DevicePurchasePlanServiceImpl.java
index fd7a9c6..6a07206 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DevicePurchasePlanServiceImpl.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DevicePurchasePlanServiceImpl.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.common.security.util.SecurityUtils;
import com.by4cloud.platformx.device.constant.CommonStatusContant;
import com.by4cloud.platformx.device.constant.MaxSizeContant;
@@ -89,4 +90,10 @@
}
return true;
}
+
+ @Override
+ public R removeItemById(Long id) {
+ itemMapper.deleteById(id);
+ return R.ok();
+ }
}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceStocktakingPlanServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceStocktakingPlanServiceImpl.java
new file mode 100644
index 0000000..bdbcc64
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceStocktakingPlanServiceImpl.java
@@ -0,0 +1,179 @@
+package com.by4cloud.platformx.device.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.device.constant.CommonStatusContant;
+import com.by4cloud.platformx.device.entity.*;
+import com.by4cloud.platformx.device.entity.vo.DeviceClassVo;
+import com.by4cloud.platformx.device.entity.vo.DeviceStocktakingPlanVo;
+import com.by4cloud.platformx.device.entity.vo.StocktatingRecordVo;
+import com.by4cloud.platformx.device.mapper.*;
+import com.by4cloud.platformx.device.service.DeviceStocktakingPlanService;
+import lombok.AllArgsConstructor;
+
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+/**
+ * 璁惧鐩樼偣璁″垝
+ *
+ * @author syt
+ * @date 2025-04-24 15:19:13
+ */
+@Service
+@AllArgsConstructor
+public class DeviceStocktakingPlanServiceImpl extends ServiceImpl<DeviceStocktakingPlanMapper, DeviceStocktakingPlan> implements DeviceStocktakingPlanService {
+
+ private final DeviceStocktakingPlanScopeMapper scopeMapper;
+ private final DeviceStocktakingPlanUserMapper userMapper;
+ private final DeviceInventoryMapper inventoryMapper;
+ private final DeviceStocktakingRecordMapper recordMapper;
+
+ @Override
+ public R saveNew(DeviceStocktakingPlan deviceStocktakingPlan) {
+ deviceStocktakingPlan.setPlanStatus(CommonStatusContant.DEVICE_STOCKTAKING_STATUS_APPROVED);
+ baseMapper.insert(deviceStocktakingPlan);
+ //鏂板鐩樼偣浜哄憳
+ if (deviceStocktakingPlan.getUserIdList().size()>0){
+ deviceStocktakingPlan.getUserIdList().stream().forEach(userId->{
+ DeviceStocktakingPlanUser planUser = new DeviceStocktakingPlanUser();
+ planUser.setPlanId(deviceStocktakingPlan.getId());
+ planUser.setStocktakingUserId(userId);
+ userMapper.insert(planUser);
+ });
+ }
+ //鏂板鍒ゆ柇鑼冨洿
+ if (deviceStocktakingPlan.getClassIdList().size()>0){
+// List<Long> classArr = new ArrayList<>();
+// for (Long classId:deviceStocktakingPlan.getClassIdList()
+// ) {
+// List<Long> classes = classMapper.selectEndNode(classId);
+// //鏍规嵁鍒嗙被iD 鏌ヨ鍑烘墍鏈夋湯绔垎绫籌D骞跺幓閲�
+// classArr = ListUtils.union(classArr,classes).stream().distinct().collect(Collectors.toList());
+// }
+// if (classArr.size()>0){
+// classArr.stream().forEach(classId->{
+// DeviceStocktakingPlanScope planScope = new DeviceStocktakingPlanScope();
+// planScope.setPlanId(deviceStocktakingPlan.getId());
+// planScope.setClassId(classId);
+// scopeMapper.insert(planScope);
+// });
+// }
+ deviceStocktakingPlan.getClassIdList().stream().forEach(classId->{
+ DeviceStocktakingPlanScope planScope = new DeviceStocktakingPlanScope();
+ planScope.setPlanId(deviceStocktakingPlan.getId());
+ planScope.setClassId(classId);
+ scopeMapper.insert(planScope);
+ });
+
+ }
+ return R.ok();
+ }
+
+ @Override
+ public R approved(Long id) {
+ DeviceStocktakingPlan plan = baseMapper.selectById(id);
+ plan.setPlanStatus(CommonStatusContant.DEVICE_STOCKTAKING_STATUS_GEN);
+ baseMapper.updateById(plan);
+ return R.ok();
+ }
+
+ @Override
+ public R genRecord(Long id) {
+ QueryWrapper<DeviceStocktakingPlanScope> queryMapper = new QueryWrapper<>();
+ queryMapper.eq("plan_id",id);
+ List<DeviceStocktakingPlanScope> scopeList = scopeMapper.selectList(queryMapper);
+ if (scopeList.size()>0){
+ scopeList.stream().forEach(scopeItem->{
+ List<DeviceClassVo> deviceClassVos = inventoryMapper.selectListByClassId(scopeItem.getClassId());
+ if (deviceClassVos.size()>0) {
+ deviceClassVos.stream().forEach(vo->{
+ DeviceStocktakingRecord record = new DeviceStocktakingRecord();
+ record.setPlanId(id);
+ record.setClassId(vo.getClassId());
+ record.setDeviceClassId(vo.getClassId());
+ record.setDeviceId(vo.getDeviceId());
+ record.setDeviceName(vo.getName());
+ record.setDeviceCode(vo.getNumber());
+ record.setDeviceModels(vo.getSpecification());
+ record.setSerialNo(vo.getSerialNo());
+ recordMapper.insert(record);
+ });
+ }
+ });
+ }
+ //鏇存柊璁″垝鐘舵��
+ DeviceStocktakingPlan plan = baseMapper.selectById(id);
+ plan.setPlanStatus(CommonStatusContant.DEVICE_STOCKTAKING_STATUS_STOCKTATING);
+ baseMapper.updateById(plan);
+ return R.ok();
+ }
+
+ @Override
+ public R getResult(Long id) {
+ List<StocktatingRecordVo> recordVoList = recordMapper.selectStocktatingResultByPlanId(id);
+ return R.ok(recordVoList);
+ }
+
+ @Override
+ public R getByIdNew(Long id) {
+ DeviceStocktakingPlanVo vo = baseMapper.selectVoById(id);
+ if (vo!=null){
+ QueryWrapper<DeviceStocktakingRecord> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("plan_id",id);
+ List<DeviceStocktakingRecord> recordList = recordMapper.selectList(queryWrapper);
+ vo.setRecordList(recordList);
+ QueryWrapper<DeviceStocktakingPlanUser> userQueryWrapper = new QueryWrapper<>();
+ userQueryWrapper.eq("plan_id",id);
+ List<DeviceStocktakingPlanUser> userList = userMapper.selectList(userQueryWrapper);
+ if (userList.size()>0) {
+ List<Long> userIds = userList.stream().map(DeviceStocktakingPlanUser::getStocktakingUserId).collect(Collectors.toList());
+ vo.setUserIds(userIds);
+ }
+ }
+ return R.ok(vo);
+ }
+
+ @Override
+ public R complete(Long id) {
+ DeviceStocktakingPlan plan = baseMapper.selectById(id);
+ plan.setPlanStatus(CommonStatusContant.DEVICE_STOCKTAKING_STATUS_COMPLETE);
+ baseMapper.updateById(plan);
+ return R.ok();
+ }
+
+ @Override
+ public R updateByIdNew(DeviceStocktakingPlan deviceStocktakingPlan) {
+ baseMapper.updateById(deviceStocktakingPlan);
+ //鏂板鐩樼偣浜哄憳
+ if (deviceStocktakingPlan.getUserIdList().size()>0){
+ QueryWrapper<DeviceStocktakingPlanUser> userQueryWrapper = new QueryWrapper<>();
+ userQueryWrapper.eq("plan_id",deviceStocktakingPlan.getId());
+ userMapper.delete(userQueryWrapper);
+ deviceStocktakingPlan.getUserIdList().stream().forEach(userId->{
+ DeviceStocktakingPlanUser planUser = new DeviceStocktakingPlanUser();
+ planUser.setPlanId(deviceStocktakingPlan.getId());
+ planUser.setStocktakingUserId(userId);
+ userMapper.insert(planUser);
+ });
+ }
+ //鏂板鍒ゆ柇鑼冨洿
+ if (deviceStocktakingPlan.getClassIdList().size()>0){
+ QueryWrapper<DeviceStocktakingPlanScope> scopeQueryWrapper = new QueryWrapper<>();
+ scopeQueryWrapper.eq("plan_id",deviceStocktakingPlan.getId());
+ scopeMapper.delete(scopeQueryWrapper);
+ deviceStocktakingPlan.getClassIdList().stream().forEach(classId->{
+ DeviceStocktakingPlanScope planScope = new DeviceStocktakingPlanScope();
+ planScope.setPlanId(deviceStocktakingPlan.getId());
+ planScope.setClassId(classId);
+ scopeMapper.insert(planScope);
+ });
+
+ }
+ return R.ok();
+ }
+}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceStocktakingRecordServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceStocktakingRecordServiceImpl.java
new file mode 100644
index 0000000..5236cf8
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceStocktakingRecordServiceImpl.java
@@ -0,0 +1,16 @@
+package com.by4cloud.platformx.device.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.by4cloud.platformx.device.entity.DeviceStocktakingRecord;
+import com.by4cloud.platformx.device.mapper.DeviceStocktakingRecordMapper;
+import com.by4cloud.platformx.device.service.DeviceStocktakingRecordService;
+import org.springframework.stereotype.Service;
+/**
+ * 璁惧鐩樼偣璁板綍
+ *
+ * @author syt
+ * @date 2025-04-24 15:21:08
+ */
+@Service
+public class DeviceStocktakingRecordServiceImpl extends ServiceImpl<DeviceStocktakingRecordMapper, DeviceStocktakingRecord> implements DeviceStocktakingRecordService {
+}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/resources/mapper/DeviceClassMapper.xml b/platformx-device-biz/src/main/resources/mapper/DeviceClassMapper.xml
index 0d83cf6..bc6fea9 100644
--- a/platformx-device-biz/src/main/resources/mapper/DeviceClassMapper.xml
+++ b/platformx-device-biz/src/main/resources/mapper/DeviceClassMapper.xml
@@ -18,4 +18,23 @@
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
</resultMap>
+ <select id="selectEndNode" resultType="java.lang.Long">
+ SELECT parent.id
+ FROM (
+ SELECT t1.*
+ FROM device_class t1
+ WHERE FIND_IN_SET(t1.id, (
+ SELECT GROUP_CONCAT(id)
+ FROM (
+ SELECT id, IF(FIND_IN_SET(p_id, @pids) > 0, @pids := CONCAT(@pids, ',', id), 0) AS is_child
+ FROM device_class, (SELECT @pids := #{classId}) tmp
+ ORDER BY p_id
+ ) t
+ WHERE is_child != 0
+ )) OR t1.id = #{classId}
+ ) parent
+ LEFT JOIN device_class child ON parent.id = child.p_id
+ WHERE child.id IS NULL; -- 楠岃瘉鏄惁涓烘湯绔妭鐐�
+
+ </select>
</mapper>
diff --git a/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanMapper.xml b/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanMapper.xml
new file mode 100644
index 0000000..6aca0e6
--- /dev/null
+++ b/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanMapper.xml
@@ -0,0 +1,60 @@
+<?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.by4cloud.platformx.device.mapper.DeviceStocktakingPlanMapper">
+
+ <resultMap id="deviceStocktakingPlanMap" type="com.by4cloud.platformx.device.entity.DeviceStocktakingPlan">
+ <id property="id" column="id"/>
+ <result property="compId" column="comp_id"/>
+ <result property="endDate" column="end_date"/>
+ <result property="planName" column="plan_name"/>
+ <result property="planStatus" column="plan_status"/>
+ <result property="startDate" column="start_date"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ <result property="delFlag" column="del_flag"/>
+ </resultMap>
+ <select id="selectVoById" resultType="com.by4cloud.platformx.device.entity.vo.DeviceStocktakingPlanVo">
+
+ select
+ dsp.id,
+ dsp.plan_name,
+ dsp.start_date,
+ dsp.end_date,
+ dsp.plan_status,
+ (
+ select
+ GROUP_CONCAT(name)
+ from
+ platformxx_boot.sys_user su
+ where
+ exists (
+ select
+ *
+ from
+ device_stocktaking_plan_user dspu
+ where
+ dspu.stocktaking_user_id = su.user_id
+ and dspu.plan_id = dsp.id)) users,
+ (
+ select
+ GROUP_CONCAT(name)
+ from
+ device_class dc
+ where
+ exists (
+ select
+ *
+ from
+ device_stocktaking_plan_scope dsps
+ where
+ dsps.class_id = dc.id
+ and dsps.plan_id = dsp.id)) scopes
+ from
+ device_stocktaking_plan dsp
+ where
+ dsp.id = #{id}
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanScopeMapper.xml b/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanScopeMapper.xml
new file mode 100644
index 0000000..64fef8a
--- /dev/null
+++ b/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanScopeMapper.xml
@@ -0,0 +1,17 @@
+<?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.by4cloud.platformx.device.mapper.DeviceStocktakingPlanScopeMapper">
+
+ <resultMap id="deviceStocktakingPlanScopeMap" type="com.by4cloud.platformx.device.entity.DeviceStocktakingPlanScope">
+ <id property="id" column="id"/>
+ <result property="compId" column="comp_id"/>
+ <result property="classId" column="class_id"/>
+ <result property="planId" column="plan_id"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ <result property="delFlag" column="del_flag"/>
+ </resultMap>
+</mapper>
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanUserMapper.xml b/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanUserMapper.xml
new file mode 100644
index 0000000..9709832
--- /dev/null
+++ b/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanUserMapper.xml
@@ -0,0 +1,17 @@
+<?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.by4cloud.platformx.device.mapper.DeviceStocktakingPlanUserMapper">
+
+ <resultMap id="deviceStocktakingPlanUserMap" type="com.by4cloud.platformx.device.entity.DeviceStocktakingPlanUser">
+ <id property="id" column="id"/>
+ <result property="compId" column="comp_id"/>
+ <result property="planId" column="plan_id"/>
+ <result property="stocktakingUserId" column="stocktaking_user_id"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ <result property="delFlag" column="del_flag"/>
+ </resultMap>
+</mapper>
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingRecordMapper.xml b/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingRecordMapper.xml
new file mode 100644
index 0000000..4c096ad
--- /dev/null
+++ b/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingRecordMapper.xml
@@ -0,0 +1,69 @@
+<?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.by4cloud.platformx.device.mapper.DeviceStocktakingRecordMapper">
+
+ <resultMap id="deviceStocktakingRecordMap" type="com.by4cloud.platformx.device.entity.DeviceStocktakingRecord">
+ <id property="id" column="id"/>
+ <result property="compId" column="comp_id"/>
+ <result property="classId" column="class_id"/>
+ <result property="deviceClassId" column="device_class_id"/>
+ <result property="deviceCode" column="device_code"/>
+ <result property="deviceId" column="device_id"/>
+ <result property="deviceModels" column="device_models"/>
+ <result property="deviceName" column="device_name"/>
+ <result property="planId" column="plan_id"/>
+ <result property="position" column="position"/>
+ <result property="recordPic" column="record_pic"/>
+ <result property="recordTime" column="record_time"/>
+ <result property="serialNo" column="serial_no"/>
+ <result property="stocktakingUserId" column="stocktaking_user_id"/>
+ <result property="abnormalMarking" column="abnormal_marking"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ <result property="delFlag" column="del_flag"/>
+ </resultMap>
+ <select id="selectStocktatingResultByPlanId"
+ resultType="com.by4cloud.platformx.device.entity.vo.StocktatingRecordVo">
+ select
+ d.class_id ,
+ dc.name className,
+ d.number ,
+ d.name deviceName,
+ d.specification,
+ count(serial_no) zmNum,
+ (
+ select
+ count(1)
+ from
+ device_stocktaking_record dsr
+ where
+ dsr.class_id = d.class_id
+ and dsr.abnormal_marking = 0) pdNum
+ from
+ device_inventory di
+ join device d on
+ d.id = di.device_id
+ join device_class dc on
+ d.class_id = dc.id
+ where
+ di.del_flag = '0'
+ and exists (
+ select
+ *
+ from
+ device_stocktaking_plan_scope dsps
+ where
+ dsps.class_id = d.class_id
+ and dsps.plan_id = #{id}
+ )
+ group by
+ d.class_id ,
+ dc.name ,
+ d.number ,
+ d.name,
+ d.specification
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml b/platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml
index 8c9400d..6c4477f 100644
--- a/platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml
+++ b/platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml
@@ -39,4 +39,20 @@
where
di.id =#{id}
</select>
+ <select id="selectListByClassId" resultType="com.by4cloud.platformx.device.entity.vo.DeviceClassVo">
+ select
+ di.device_id ,
+ d.class_id ,
+ d.number ,
+ d.name,
+ d.specification,
+ di.serial_no
+ from
+ device_inventory di
+ join device d on
+ d.id = di.device_id
+ where
+ di.del_flag = '0'
+ and d.class_id = #{classId}
+ </select>
</mapper>
--
Gitblit v1.9.1