From 802849a7552d2d51312188c83b91d769fd43b1c1 Mon Sep 17 00:00:00 2001
From: kongdeqiang <123456>
Date: 星期四, 13 三月 2025 11:26:33 +0800
Subject: [PATCH] fix: 代码生成

---
 platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceBaseModel.java                     |   37 +
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ContractItemMapper.java                  |   11 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ContractController.java              |  119 ++++
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ContractItemServiceImpl.java       |   16 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ContractItemService.java                |    8 
 platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceDemandTotal.java                   |    3 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ReceivingNoteController.java         |  119 ++++
 platformx-device-biz/src/main/resources/mapper/ContractItemMapper.xml                                            |   24 
 platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceDemandSub.java                     |    3 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ContractItemController.java          |  119 ++++
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceInventoryController.java       |  112 ++++
 platformx-device-biz/src/main/resources/mapper/InventoryFlowWaterMapper.xml                                      |   21 
 platformx-device-biz/src/main/resources/mapper/ReceivingNoteMapper.xml                                           |   21 
 platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ReceivingNote.java                       |   55 ++
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ContractService.java                    |   15 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ReceivingNoteItemServiceImpl.java  |   16 
 platformx-boot/src/main/java/com/by4cloud/platformx/api/feign/RemoteDeptService.java                             |   15 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/InventoryFlowWaterService.java          |    8 
 platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml                                         |   21 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/InventoryFlowWaterMapper.java            |   11 
 platformx-device-biz/src/main/resources/mapper/ContractMapper.xml                                                |   29 +
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ReceivingNoteItemService.java           |    8 
 platformx-device-api/pom.xml                                                                                     |    8 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceController.java                |   15 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ReceivingNoteItemController.java     |  119 ++++
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ReceivingNoteItemMapper.java             |   11 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceInventoryServiceImpl.java    |   20 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ReceivingNoteServiceImpl.java      |   16 
 platformx-boot/src/main/java/com/by4cloud/platformx/api/feign/RemoteUserService.java                             |   16 
 platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ContractItem.java                        |   37 +
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/InventoryFlowWaterController.java    |  119 ++++
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InventoryFlowWaterServiceImpl.java |   16 
 platformx-device-biz/src/main/resources/mapper/ReceivingNoteItemMapper.xml                                       |   19 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceInventoryMapper.java               |   11 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ReceivingNoteMapper.java                 |   11 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ReceivingNoteService.java               |    8 
 platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceInventory.java                     |   48 +
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ContractServiceImpl.java           |   68 ++
 platformx-boot/src/main/resources/application.yml                                                                |    2 
 platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/Contract.java                            |  107 +++
 platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/InventoryFlowWater.java                  |   53 +
 platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ReceivingNoteItem.java                   |   50 +
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceInventoryService.java             |    9 
 platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/Device.java                              |   29 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ContractMapper.java                      |   11 
 45 files changed, 1,577 insertions(+), 17 deletions(-)

diff --git a/platformx-boot/src/main/java/com/by4cloud/platformx/api/feign/RemoteDeptService.java b/platformx-boot/src/main/java/com/by4cloud/platformx/api/feign/RemoteDeptService.java
new file mode 100644
index 0000000..26af3c7
--- /dev/null
+++ b/platformx-boot/src/main/java/com/by4cloud/platformx/api/feign/RemoteDeptService.java
@@ -0,0 +1,15 @@
+package com.by4cloud.platformx.api.feign;
+
+import com.by4cloud.platformx.common.core.constant.ServiceNameConstants;
+import org.springframework.cloud.openfeign.FeignClient;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName RemoteDeptService.java
+ * @Description TODO
+ * @createTime 2025骞�03鏈�12鏃� 14:12:00
+ */
+@FeignClient(contextId = "remoteDeptService", value = ServiceNameConstants.UPMS_SERVICE,url="${servers.main-url}")
+public interface RemoteDeptService {
+}
diff --git a/platformx-boot/src/main/java/com/by4cloud/platformx/api/feign/RemoteUserService.java b/platformx-boot/src/main/java/com/by4cloud/platformx/api/feign/RemoteUserService.java
new file mode 100644
index 0000000..b267a2e
--- /dev/null
+++ b/platformx-boot/src/main/java/com/by4cloud/platformx/api/feign/RemoteUserService.java
@@ -0,0 +1,16 @@
+package com.by4cloud.platformx.api.feign;
+
+import com.by4cloud.platformx.common.core.constant.ServiceNameConstants;
+import org.springframework.cloud.openfeign.FeignClient;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName RemoteUserService.java
+ * @Description TODO
+ * @createTime 2025骞�03鏈�12鏃� 13:42:00
+ */
+@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.UPMS_SERVICE,url="${servers.main-url}")
+public interface RemoteUserService {
+
+}
diff --git a/platformx-boot/src/main/resources/application.yml b/platformx-boot/src/main/resources/application.yml
index fc91368..91a918f 100644
--- a/platformx-boot/src/main/resources/application.yml
+++ b/platformx-boot/src/main/resources/application.yml
@@ -2,6 +2,8 @@
   port: 8888    # 椤圭洰绔彛
   servlet:
     context-path: /device  # 椤圭洰璁块棶璺緞
+servers:
+  main-url: http://127.0.0.1:9999/admin
 
 spring:
   application:
diff --git a/platformx-device-api/pom.xml b/platformx-device-api/pom.xml
index 69b13cb..300a4a2 100644
--- a/platformx-device-api/pom.xml
+++ b/platformx-device-api/pom.xml
@@ -42,5 +42,13 @@
 			<groupId>com.by4cloud</groupId>
 			<artifactId>platformx-common-data</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>com.by4cloud</groupId>
+			<artifactId>platformx-upms-api</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>cn.hutool</groupId>
+			<artifactId>hutool-extra</artifactId>
+		</dependency>
 	</dependencies>
 </project>
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/Contract.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/Contract.java
new file mode 100644
index 0000000..ce772e3
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/Contract.java
@@ -0,0 +1,107 @@
+package com.by4cloud.platformx.device.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+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 org.springframework.format.annotation.DateTimeFormat;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Transient;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName Contract.java
+ * @Description TODO
+ * @createTime 2025骞�03鏈�13鏃� 09:07:00
+ */
+@Data
+@Entity
+@TableName("contract")
+@javax.persistence.Table(name = "contract")
+@Table(appliesTo = "contract", comment = "鍚堝悓琛�")
+public class Contract extends BaseModel<Contract> {
+
+	@Schema(description = "鍚嶇О")
+	@Column(columnDefinition="VARCHAR(200) comment '鍚嶇О'")
+	private String name;
+	@Schema(description = "缂栧彿")
+	@Column(columnDefinition="VARCHAR(200) comment '缂栧彿'")
+	private String number;
+
+	@Schema(description = "鐢叉柟")
+	@Column(columnDefinition="VARCHAR(50) comment '鐢叉柟'")
+	private String partya;
+
+	@Schema(description = "涔欐柟")
+	@Column(columnDefinition="VARCHAR(50) comment '涔欐柟'")
+	private String partyb;
+
+	@Schema(description = "涓夋柟")
+	@Column(columnDefinition="VARCHAR(50) comment '涓夋柟'")
+	private String partyc;
+
+	/**
+	 * 鍚堝悓閲戦
+	 */
+	@Column(columnDefinition="double comment '鍚堝悓閲戦'")
+	private Double output;
+
+	/**
+	 * 鎬婚噺
+	 */
+	@Column(columnDefinition="double comment '鎬婚噺'")
+	private Double countExecutive;
+
+	/**
+	 * 鎵ц閲�
+	 */
+	@Column(columnDefinition="double comment '鎵ц閲�'")
+	private Double executive;
+
+	/**
+	 * 鍚堝悓鏉℃
+	 */
+	@TableField(updateStrategy = FieldStrategy.NOT_NULL)
+	@Column(columnDefinition="varchar(500) comment '鍚堝悓鏉℃'")
+	private String content;
+
+	/**
+	 *
+	 */
+	@TableField(updateStrategy = FieldStrategy.NOT_NULL)
+	@Column(columnDefinition="varchar(2000) comment '鏂囦欢鍚嶇О'")
+	private String fileName;
+
+	@TableField(updateStrategy = FieldStrategy.NOT_NULL)
+	@Column(columnDefinition="varchar(2000) comment '鏂囦欢鍦板潃'")
+	private String filePath;
+
+	@Schema(description = "绫诲瀷")
+	@Column(columnDefinition="int comment '绫诲瀷 0绉熻祦鍚堝悓锛�1璐拱鍚堝悓锛�2鎵跨鍚堝悓'")
+	private Integer type;
+
+	@Schema(description = "鐘舵��")
+	@Column(columnDefinition="int comment '绫诲瀷 0寰呭鎵癸紝1宸插鎵癸紝2瀹岀粨'")
+	private Integer status;
+
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	@Schema(description = "濉姤鏃堕棿")
+	@Column(columnDefinition = "datetime comment '濉姤鏃堕棿'")
+	private Date releaseDate;
+	@Transient
+	@TableField(exist = false)
+	private List<ContractItem> contractItemList;
+
+
+
+}
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ContractItem.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ContractItem.java
new file mode 100644
index 0000000..3221398
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ContractItem.java
@@ -0,0 +1,37 @@
+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;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName ContractItem.java
+ * @Description TODO
+ * @createTime 2025骞�03鏈�13鏃� 09:42:00
+ */
+@Data
+@Entity
+@TableName("contract_item")
+@javax.persistence.Table(name = "contract_item")
+@Table(appliesTo = "contract_item", comment = "鍚堝悓鏄庣粏琛�")
+public class ContractItem extends DeviceBaseModel<ContractItem> {
+
+	/**
+	 * 鍚堝悓Id
+	 */
+	@Column(columnDefinition="long comment '鍚堝悓Id'")
+	private Long contractId;
+
+	@Schema(description = "璁惧ID")
+	@Column(columnDefinition="long comment '璁惧ID'")
+	private Long deviceId;
+
+
+}
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/Device.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/Device.java
index c54c664..26dc966 100644
--- a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/Device.java
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/Device.java
@@ -1,7 +1,11 @@
 package com.by4cloud.platformx.device.entity;
 
+import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.by4cloud.platformx.admin.api.utils.UpmsCacheUtil;
+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;
@@ -25,7 +29,7 @@
 @TableName("device")
 @javax.persistence.Table(name = "device")
 @Table(appliesTo = "device", comment = "鍑虹璁惧娓呭崟琛�")
-public class Device extends DeviceBaseModel<Device>{
+public class Device extends BaseModel<Device> {
 	@Schema(description = "鍒嗙被ID")
 	@Column(columnDefinition="long comment '鍒嗙被ID'")
 	private Long classId;
@@ -71,8 +75,25 @@
 	@Column(columnDefinition="int comment '搴撳瓨鏁�'")
 	private Integer num;
 
-	@Transient
-	@TableField(exist = false)
-	private String reqCompName;
+	@Column(
+			columnDefinition = "varchar(100) comment '鍚嶇О'"
+	)
+	private String name;
+	@Column(
+			columnDefinition = "varchar(200) comment '瑙勬牸鍨嬪彿'"
+	)
+	private String specification;
+	@Column(
+			columnDefinition = "int comment '鍒拌揣鏈堜唤'"
+	)
+	private Integer month;
+	@Column(
+			columnDefinition = "varchar(20) comment '鍗曚綅'"
+	)
+	private String unit;
+	@Column(
+			columnDefinition = "double(10,2) comment '鍗曚环'"
+	)
+	private Double price;
 
 }
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceBaseModel.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceBaseModel.java
index 43d265b..0eeecc5 100644
--- a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceBaseModel.java
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceBaseModel.java
@@ -1,13 +1,17 @@
 package com.by4cloud.platformx.device.entity;
 
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.by4cloud.platformx.admin.api.utils.UpmsCacheUtil;
 import com.by4cloud.platformx.common.data.mybatis.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 
 import javax.persistence.Column;
 import javax.persistence.Id;
 import javax.persistence.MappedSuperclass;
+import javax.persistence.Transient;
 import java.time.LocalDateTime;
 
 /**
@@ -74,6 +78,21 @@
 			columnDefinition = "char(1) default '0'"
 	)
 	private String delFlag = "0";
+	@Schema(
+			description = "鍗曚綅id"
+	)
+	@TableField(
+			fill = FieldFill.INSERT
+	)
+	private Long compId;
+	@Transient
+	@TableField(
+			exist = false
+	)
+	@Schema(
+			description = "鍗曚綅鍚嶇О"
+	)
+	private String compName;
 	@Column(
 			columnDefinition = "varchar(100) comment '鍚嶇О'"
 	)
@@ -98,6 +117,14 @@
 			columnDefinition = "double(10,2) comment '鍗曚环'"
 	)
 	private Double price;
+	public String getCompName() {
+		if (StrUtil.isEmpty(this.compName)) {
+			UpmsCacheUtil upmsCacheUtil = (UpmsCacheUtil) SpringUtil.getBean(UpmsCacheUtil.class);
+			this.compName = upmsCacheUtil.getCompNameById(this.compId);
+		}
+
+		return this.compName;
+	}
 
 	public String getName() {
 		return name;
@@ -146,7 +173,15 @@
 	public void setPrice(Double price) {
 		this.price = price;
 	}
-
+	public void setCompId(final Long compId) {
+		this.compId = compId;
+	}
+	public Long getCompId() {
+		return this.compId;
+	}
+	public void setCompName(final String compName) {
+		this.compName = compName;
+	}
 	public Double getAmount() {
 		return amount;
 	}
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceDemandSub.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceDemandSub.java
index b8d9e35..e74e3ef 100644
--- a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceDemandSub.java
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceDemandSub.java
@@ -27,9 +27,6 @@
 	@Schema(description = "鎷熶娇鐢ㄥ湴鐐�")
 	@Column(columnDefinition="VARCHAR(64) comment '鎷熶娇鐢ㄥ湴鐐�'")
 	private String place;
-	@Schema(description = "浣跨敤鍏徃")
-	@Column(columnDefinition="int comment '浣跨敤鍏徃'")
-	private Integer compId;
 	@Schema(description = "鐢宠閮ㄩ棬")
 	@Column(columnDefinition="int comment '鐢宠閮ㄩ棬'")
 	private Integer deptId;
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceDemandTotal.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceDemandTotal.java
index d6ce6c3..7d562bc 100644
--- a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceDemandTotal.java
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceDemandTotal.java
@@ -24,9 +24,6 @@
 	@Schema(description = "鎷熶娇鐢ㄥ湴鐐�")
 	@Column(columnDefinition="VARCHAR(64) comment '鎷熶娇鐢ㄥ湴鐐�'")
 	private String place;
-	@Schema(description = "浣跨敤鍏徃")
-	@Column(columnDefinition="int comment '浣跨敤鍏徃'")
-	private Integer compId;
 	@Schema(description = "鐢宠閮ㄩ棬")
 	@Column(columnDefinition="int comment '鐢宠閮ㄩ棬'")
 	private Integer deptId;
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceInventory.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceInventory.java
new file mode 100644
index 0000000..267fc3b
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceInventory.java
@@ -0,0 +1,48 @@
+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;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName DeviceInventory.java
+ * @Description TODO
+ * @createTime 2025骞�03鏈�13鏃� 08:23:00
+ */
+@Data
+@Entity
+@TableName("device_inventory")
+@javax.persistence.Table(name = "device_inventory")
+@Table(appliesTo = "device_inventory", comment = "鍑虹璁惧搴撳瓨琛�")
+public class DeviceInventory extends BaseModel<DeviceInventory> {
+
+	@Schema(description = "璁惧缂栫爜")
+	@Column(columnDefinition="VARCHAR(64) comment '璁惧缂栫爜'")
+	private String deviceNumber;
+
+	@Schema(description = "搴忓垪鍙�")
+	@Column(columnDefinition="VARCHAR(64) comment '搴忓垪鍙�'")
+	private String serialNo;
+
+	@Schema(description = "璁惧ID")
+	@Column(columnDefinition="long comment '璁惧ID'")
+	private Long deviceId;
+
+	@Column(
+			columnDefinition = "varchar(100) comment '鍚嶇О'"
+	)
+	private String name;
+
+	@Schema(description = "鏉ユ簮")
+	@Column(columnDefinition="int comment '鏉ユ簮 0浠撳簱 1璐拱 2瀛愬崟浣嶉棽缃�'")
+	private Integer source;
+
+
+}
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/InventoryFlowWater.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/InventoryFlowWater.java
new file mode 100644
index 0000000..3102bb6
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/InventoryFlowWater.java
@@ -0,0 +1,53 @@
+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;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName InventoryFlowWater.java
+ * @Description TODO
+ * @createTime 2025骞�03鏈�13鏃� 08:40:00
+ */
+@Data
+@Entity
+@TableName("inventory_flow_water")
+@javax.persistence.Table(name = "inventory_flow_water")
+@Table(appliesTo = "inventory_flow_water", comment = "搴撳瓨娴佹按琛�")
+public class InventoryFlowWater extends BaseModel<InventoryFlowWater> {
+
+	@Schema(description = "鍒嗙被ID")
+	@Column(columnDefinition="long comment '鍒嗙被ID'")
+	private Long classId;
+
+	@Schema(description = "璁惧ID")
+	@Column(columnDefinition="long comment '璁惧ID'")
+	private Long deviceId;
+
+	@Schema(description = "璁″垝id")
+	@Column(columnDefinition="long comment '璁″垝id'")
+	private Long planId;
+
+	@Schema(description = "搴撳瓨ID")
+	@Column(columnDefinition="long comment '搴撳瓨ID'")
+	private Long inventoryId;
+
+	@Schema(description = "鏁伴噺")
+	@Column(columnDefinition="long comment '鏁伴噺'")
+	private Long num;
+
+	@Schema(description = "澶囨敞")
+	@Column(columnDefinition="VARCHAR(200) comment '澶囨敞'")
+	private String remark;
+
+
+
+
+}
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ReceivingNote.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ReceivingNote.java
new file mode 100644
index 0000000..c96a2df
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ReceivingNote.java
@@ -0,0 +1,55 @@
+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 org.springframework.format.annotation.DateTimeFormat;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import java.util.Date;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName ReceivingNote.java
+ * @Description TODO
+ * @createTime 2025骞�03鏈�13鏃� 09:51:00
+ */
+@Data
+@Entity
+@TableName("receiving_note")
+@javax.persistence.Table(name = "receiving_note")
+@Table(appliesTo = "receiving_note", comment = "楠屾敹琛�")
+public class ReceivingNote extends BaseModel<ReceivingNote> {
+	/**
+	 * 鍚堝悓Id
+	 */
+	@Column(columnDefinition="long comment '鍚堝悓Id'")
+	private Long contractId;
+	@Schema(description = "楠屾敹鍏徃")
+	@Column(columnDefinition="VARCHAR(64) comment '楠屾敹鍏徃'")
+	private String releaseCompName;
+	@Schema(description = "楠屾敹浜�")
+	@Column(columnDefinition="VARCHAR(64) comment '楠屾敹浜�'")
+	private String releasePerson;
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	@Schema(description = "楠屾敹鏃堕棿")
+	@Column(columnDefinition = "datetime comment '楠屾敹鏃堕棿'")
+	private Date releaseDate;
+	@Schema(description = "鎬绘暟")
+	@Column(columnDefinition="long comment '鎬绘暟'")
+	private Long count;
+	/**
+	 * 鎬婚噾棰�
+	 */
+	@Column(columnDefinition="double comment '鎬婚噾棰�'")
+	private Double output;
+
+
+
+}
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ReceivingNoteItem.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ReceivingNoteItem.java
new file mode 100644
index 0000000..0aea09c
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ReceivingNoteItem.java
@@ -0,0 +1,50 @@
+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 org.springframework.format.annotation.DateTimeFormat;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import java.util.Date;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName ReceivingNote.java
+ * @Description TODO
+ * @createTime 2025骞�03鏈�13鏃� 09:51:00
+ */
+@Data
+@Entity
+@TableName("receiving_note_item")
+@javax.persistence.Table(name = "receiving_note_item")
+@Table(appliesTo = "receiving_note_item", comment = "楠屾敹瀛愰」琛�")
+public class ReceivingNoteItem extends BaseModel<ReceivingNoteItem> {
+	/**
+	 * 楠屾敹涓昏〃Id
+	 */
+	@Column(columnDefinition="long comment '楠屾敹涓昏〃Id'")
+	private Long noteId;
+	/**
+	 * 鍚堝悓Id
+	 */
+	@Column(columnDefinition="long comment '鍚堝悓瀛愰」Id'")
+	private Long contractItemId;
+
+	@Schema(description = "鏁伴噺")
+	@Column(columnDefinition="long comment '鏁伴噺'")
+	private Long num;
+	/**
+	 * 楠屾敹閲戦
+	 */
+	@Column(columnDefinition="double comment '楠屾敹閲戦'")
+	private Double output;
+
+
+
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ContractController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ContractController.java
new file mode 100644
index 0000000..b75ded5
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ContractController.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.Contract;
+import com.by4cloud.platformx.device.service.ContractService;
+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 pig
+ * @date 2025-03-13 10:20:35
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/contract" )
+@Tag(description = "contract" , name = "鍚堝悓琛ㄧ鐞�" )
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class ContractController {
+
+    private final ContractService contractService;
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     * @param page 鍒嗛〉瀵硅薄
+     * @param contract 鍚堝悓琛�
+     * @return
+     */
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+    @GetMapping("/page" )
+    @PreAuthorize("@pms.hasPermission('platformx_contract_view')" )
+    public R getContractPage(@ParameterObject Page page, @ParameterObject Contract contract) {
+        LambdaQueryWrapper<Contract> wrapper = Wrappers.lambdaQuery();
+        return R.ok(contractService.page(page, wrapper));
+    }
+
+
+    /**
+     * 閫氳繃id鏌ヨ鍚堝悓琛�
+     * @param id id
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
+    @GetMapping("/{id}" )
+    @PreAuthorize("@pms.hasPermission('platformx_contract_view')" )
+    public R getById(@PathVariable("id" ) Long id) {
+        return R.ok(contractService.getById(id));
+    }
+
+    /**
+     * 鏂板鍚堝悓琛�
+     * @param contract 鍚堝悓琛�
+     * @return R
+     */
+    @Operation(summary = "鏂板鍚堝悓琛�" , description = "鏂板鍚堝悓琛�" )
+    @SysLog("鏂板鍚堝悓琛�" )
+    @PostMapping
+    @PreAuthorize("@pms.hasPermission('platformx_contract_add')" )
+    public R save(@RequestBody Contract contract) {
+        return R.ok(contractService.save(contract));
+    }
+
+    /**
+     * 淇敼鍚堝悓琛�
+     * @param contract 鍚堝悓琛�
+     * @return R
+     */
+    @Operation(summary = "淇敼鍚堝悓琛�" , description = "淇敼鍚堝悓琛�" )
+    @SysLog("淇敼鍚堝悓琛�" )
+    @PutMapping
+    @PreAuthorize("@pms.hasPermission('platformx_contract_edit')" )
+    public R updateById(@RequestBody Contract contract) {
+        return R.ok(contractService.updateById(contract));
+    }
+
+    /**
+     * 閫氳繃id鍒犻櫎鍚堝悓琛�
+     * @param ids id鍒楄〃
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鍒犻櫎鍚堝悓琛�" , description = "閫氳繃id鍒犻櫎鍚堝悓琛�" )
+    @SysLog("閫氳繃id鍒犻櫎鍚堝悓琛�" )
+    @DeleteMapping
+    @PreAuthorize("@pms.hasPermission('platformx_contract_del')" )
+    public R removeById(@RequestBody Long[] ids) {
+        return R.ok(contractService.removeBatchByIds(CollUtil.toList(ids)));
+    }
+
+
+    /**
+     * 瀵煎嚭excel 琛ㄦ牸
+     * @param contract 鏌ヨ鏉′欢
+   	 * @param ids 瀵煎嚭鎸囧畾ID
+     * @return excel 鏂囦欢娴�
+     */
+    @ResponseExcel
+    @GetMapping("/export")
+    @PreAuthorize("@pms.hasPermission('platformx_contract_export')" )
+    public List<Contract> export(Contract contract,Long[] ids) {
+        return contractService.list(Wrappers.lambdaQuery(contract).in(ArrayUtil.isNotEmpty(ids), Contract::getId, ids));
+    }
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ContractItemController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ContractItemController.java
new file mode 100644
index 0000000..8a31ce0
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ContractItemController.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.ContractItem;
+import com.by4cloud.platformx.device.service.ContractItemService;
+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 pig
+ * @date 2025-03-13 10:48:44
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/contractItem" )
+@Tag(description = "contractItem" , name = "鍚堝悓鏄庣粏琛ㄧ鐞�" )
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class ContractItemController {
+
+    private final ContractItemService contractItemService;
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     * @param page 鍒嗛〉瀵硅薄
+     * @param contractItem 鍚堝悓鏄庣粏琛�
+     * @return
+     */
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+    @GetMapping("/page" )
+    @PreAuthorize("@pms.hasPermission('platformx_contractItem_view')" )
+    public R getContractItemPage(@ParameterObject Page page, @ParameterObject ContractItem contractItem) {
+        LambdaQueryWrapper<ContractItem> wrapper = Wrappers.lambdaQuery();
+        return R.ok(contractItemService.page(page, wrapper));
+    }
+
+
+    /**
+     * 閫氳繃id鏌ヨ鍚堝悓鏄庣粏琛�
+     * @param id id
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
+    @GetMapping("/{id}" )
+    @PreAuthorize("@pms.hasPermission('platformx_contractItem_view')" )
+    public R getById(@PathVariable("id" ) Long id) {
+        return R.ok(contractItemService.getById(id));
+    }
+
+    /**
+     * 鏂板鍚堝悓鏄庣粏琛�
+     * @param contractItem 鍚堝悓鏄庣粏琛�
+     * @return R
+     */
+    @Operation(summary = "鏂板鍚堝悓鏄庣粏琛�" , description = "鏂板鍚堝悓鏄庣粏琛�" )
+    @SysLog("鏂板鍚堝悓鏄庣粏琛�" )
+    @PostMapping
+    @PreAuthorize("@pms.hasPermission('platformx_contractItem_add')" )
+    public R save(@RequestBody ContractItem contractItem) {
+        return R.ok(contractItemService.save(contractItem));
+    }
+
+    /**
+     * 淇敼鍚堝悓鏄庣粏琛�
+     * @param contractItem 鍚堝悓鏄庣粏琛�
+     * @return R
+     */
+    @Operation(summary = "淇敼鍚堝悓鏄庣粏琛�" , description = "淇敼鍚堝悓鏄庣粏琛�" )
+    @SysLog("淇敼鍚堝悓鏄庣粏琛�" )
+    @PutMapping
+    @PreAuthorize("@pms.hasPermission('platformx_contractItem_edit')" )
+    public R updateById(@RequestBody ContractItem contractItem) {
+        return R.ok(contractItemService.updateById(contractItem));
+    }
+
+    /**
+     * 閫氳繃id鍒犻櫎鍚堝悓鏄庣粏琛�
+     * @param ids id鍒楄〃
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鍒犻櫎鍚堝悓鏄庣粏琛�" , description = "閫氳繃id鍒犻櫎鍚堝悓鏄庣粏琛�" )
+    @SysLog("閫氳繃id鍒犻櫎鍚堝悓鏄庣粏琛�" )
+    @DeleteMapping
+    @PreAuthorize("@pms.hasPermission('platformx_contractItem_del')" )
+    public R removeById(@RequestBody Long[] ids) {
+        return R.ok(contractItemService.removeBatchByIds(CollUtil.toList(ids)));
+    }
+
+
+    /**
+     * 瀵煎嚭excel 琛ㄦ牸
+     * @param contractItem 鏌ヨ鏉′欢
+   	 * @param ids 瀵煎嚭鎸囧畾ID
+     * @return excel 鏂囦欢娴�
+     */
+    @ResponseExcel
+    @GetMapping("/export")
+    @PreAuthorize("@pms.hasPermission('platformx_contractItem_export')" )
+    public List<ContractItem> export(ContractItem contractItem,Long[] ids) {
+        return contractItemService.list(Wrappers.lambdaQuery(contractItem).in(ArrayUtil.isNotEmpty(ids), ContractItem::getId, ids));
+    }
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceController.java
index e69afb0..8727174 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceController.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceController.java
@@ -6,8 +6,10 @@
 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.admin.api.entity.SysDeptRelation;
 import com.by4cloud.platformx.common.core.util.R;
 import com.by4cloud.platformx.common.log.annotation.SysLog;
+import com.by4cloud.platformx.common.security.util.SecurityUtils;
 import com.by4cloud.platformx.device.entity.Device;
 import com.by4cloud.platformx.device.service.DeviceService;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -86,15 +88,13 @@
 
 	/**
 	 * 瀹℃壒閫氳繃
-	 * @param id id
 	 * @return R
 	 */
 	@Operation(summary = "瀹℃壒閫氳繃" , description = "瀹℃壒閫氳繃" )
-	@GetMapping("/pass/{id}" )
-	public R passById(@PathVariable("id" ) Long id) {
-		Device byId = deviceService.getById(id);
-		byId.setReqStatus(1);
-		deviceService.updateById(byId);
+	@PostMapping("/pass" )
+	public R passById(@RequestBody Device device) {
+		device.setReqStatus(1);
+		deviceService.updateById(device);
 		return R.ok();
 	}
 	/**
@@ -121,6 +121,9 @@
     @PostMapping
     @PreAuthorize("@pms.hasPermission('platformx_device_add')" )
     public R save(@RequestBody Device device) {
+		if(device.getReqStatus() == 0){
+			device.setReqCompId(SecurityUtils.getUser().getDeptId());
+		}
         return R.ok(deviceService.save(device));
     }
 
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceInventoryController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceInventoryController.java
new file mode 100644
index 0000000..0856eae
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceInventoryController.java
@@ -0,0 +1,112 @@
+package com.by4cloud.platformx.device.controller;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ArrayUtil;
+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.excel.annotation.ResponseExcel;
+import com.by4cloud.platformx.common.log.annotation.SysLog;
+import com.by4cloud.platformx.device.entity.DeviceInventory;
+import com.by4cloud.platformx.device.service.DeviceInventoryService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springdoc.api.annotations.ParameterObject;
+import org.springframework.http.HttpHeaders;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 搴撳瓨琛�
+ *
+ * @author pig
+ * @date 2025-03-13 10:22:39
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/deviceInventory" )
+@Tag(description = "deviceInventory" , name = "搴撳瓨琛ㄧ鐞�" )
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class DeviceInventoryController {
+
+    private final DeviceInventoryService DeviceInventoryService;
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     * @param page 鍒嗛〉瀵硅薄
+     * @param deviceInventory 搴撳瓨琛�
+     * @return
+     */
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+    @GetMapping("/page" )
+    public R getDeviceInventoryPage(@ParameterObject Page page, @ParameterObject DeviceInventory deviceInventory) {
+        LambdaQueryWrapper<DeviceInventory> wrapper = Wrappers.lambdaQuery();
+        return R.ok(DeviceInventoryService.page(page, wrapper));
+    }
+
+
+    /**
+     * 閫氳繃id鏌ヨ搴撳瓨娴佹按琛�
+     * @param id id
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
+    @GetMapping("/{id}" )
+    public R getById(@PathVariable("id" ) Long id) {
+        return R.ok(DeviceInventoryService.getById(id));
+    }
+
+    /**
+     * 鏂板搴撳瓨娴佹按琛�
+     * @param DeviceInventory 搴撳瓨琛�
+     * @return R
+     */
+    @Operation(summary = "鏂板搴撳瓨琛�" , description = "鏂板搴撳瓨琛�" )
+    @SysLog("鏂板搴撳瓨娴佹按琛�" )
+    @PostMapping
+    public R save(@RequestBody DeviceInventory DeviceInventory) {
+        return R.ok(DeviceInventoryService.save(DeviceInventory));
+    }
+
+    /**
+     * 淇敼搴撳瓨琛�
+     * @param DeviceInventory 搴撳瓨琛�
+     * @return R
+     */
+    @SysLog("淇敼搴撳瓨琛�" )
+    @PutMapping
+    public R updateById(@RequestBody DeviceInventory DeviceInventory) {
+        return R.ok(DeviceInventoryService.updateById(DeviceInventory));
+    }
+
+    /**
+     * 閫氳繃id鍒犻櫎搴撳瓨娴佹按琛�
+     * @param ids id鍒楄〃
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鍒犻櫎搴撳瓨琛�" , description = "閫氳繃id鍒犻櫎搴撳瓨琛�" )
+    @SysLog("閫氳繃id鍒犻櫎搴撳瓨娴佹按琛�" )
+    @DeleteMapping
+    public R removeById(@RequestBody Long[] ids) {
+        return R.ok(DeviceInventoryService.removeBatchByIds(CollUtil.toList(ids)));
+    }
+
+
+    /**
+     * 瀵煎嚭excel 琛ㄦ牸
+     * @param deviceInventory 鏌ヨ鏉′欢
+   	 * @param ids 瀵煎嚭鎸囧畾ID
+     * @return excel 鏂囦欢娴�
+     */
+    @ResponseExcel
+    @GetMapping("/export")
+    @PreAuthorize("@pms.hasPermission('platformx_DeviceInventory_export')" )
+    public List<DeviceInventory> export(DeviceInventory deviceInventory,Long[] ids) {
+        return DeviceInventoryService.list(Wrappers.lambdaQuery(deviceInventory).in(ArrayUtil.isNotEmpty(ids), DeviceInventory::getId, ids));
+    }
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/InventoryFlowWaterController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/InventoryFlowWaterController.java
new file mode 100644
index 0000000..9583c9a
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/InventoryFlowWaterController.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.InventoryFlowWater;
+import com.by4cloud.platformx.device.service.InventoryFlowWaterService;
+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 pig
+ * @date 2025-03-13 10:22:39
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/inventoryFlowWater" )
+@Tag(description = "inventoryFlowWater" , name = "搴撳瓨娴佹按琛ㄧ鐞�" )
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class InventoryFlowWaterController {
+
+    private final InventoryFlowWaterService inventoryFlowWaterService;
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     * @param page 鍒嗛〉瀵硅薄
+     * @param inventoryFlowWater 搴撳瓨娴佹按琛�
+     * @return
+     */
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+    @GetMapping("/page" )
+    @PreAuthorize("@pms.hasPermission('platformx_inventoryFlowWater_view')" )
+    public R getInventoryFlowWaterPage(@ParameterObject Page page, @ParameterObject InventoryFlowWater inventoryFlowWater) {
+        LambdaQueryWrapper<InventoryFlowWater> wrapper = Wrappers.lambdaQuery();
+        return R.ok(inventoryFlowWaterService.page(page, wrapper));
+    }
+
+
+    /**
+     * 閫氳繃id鏌ヨ搴撳瓨娴佹按琛�
+     * @param id id
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
+    @GetMapping("/{id}" )
+    @PreAuthorize("@pms.hasPermission('platformx_inventoryFlowWater_view')" )
+    public R getById(@PathVariable("id" ) Long id) {
+        return R.ok(inventoryFlowWaterService.getById(id));
+    }
+
+    /**
+     * 鏂板搴撳瓨娴佹按琛�
+     * @param inventoryFlowWater 搴撳瓨娴佹按琛�
+     * @return R
+     */
+    @Operation(summary = "鏂板搴撳瓨娴佹按琛�" , description = "鏂板搴撳瓨娴佹按琛�" )
+    @SysLog("鏂板搴撳瓨娴佹按琛�" )
+    @PostMapping
+    @PreAuthorize("@pms.hasPermission('platformx_inventoryFlowWater_add')" )
+    public R save(@RequestBody InventoryFlowWater inventoryFlowWater) {
+        return R.ok(inventoryFlowWaterService.save(inventoryFlowWater));
+    }
+
+    /**
+     * 淇敼搴撳瓨娴佹按琛�
+     * @param inventoryFlowWater 搴撳瓨娴佹按琛�
+     * @return R
+     */
+    @Operation(summary = "淇敼搴撳瓨娴佹按琛�" , description = "淇敼搴撳瓨娴佹按琛�" )
+    @SysLog("淇敼搴撳瓨娴佹按琛�" )
+    @PutMapping
+    @PreAuthorize("@pms.hasPermission('platformx_inventoryFlowWater_edit')" )
+    public R updateById(@RequestBody InventoryFlowWater inventoryFlowWater) {
+        return R.ok(inventoryFlowWaterService.updateById(inventoryFlowWater));
+    }
+
+    /**
+     * 閫氳繃id鍒犻櫎搴撳瓨娴佹按琛�
+     * @param ids id鍒楄〃
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鍒犻櫎搴撳瓨娴佹按琛�" , description = "閫氳繃id鍒犻櫎搴撳瓨娴佹按琛�" )
+    @SysLog("閫氳繃id鍒犻櫎搴撳瓨娴佹按琛�" )
+    @DeleteMapping
+    @PreAuthorize("@pms.hasPermission('platformx_inventoryFlowWater_del')" )
+    public R removeById(@RequestBody Long[] ids) {
+        return R.ok(inventoryFlowWaterService.removeBatchByIds(CollUtil.toList(ids)));
+    }
+
+
+    /**
+     * 瀵煎嚭excel 琛ㄦ牸
+     * @param inventoryFlowWater 鏌ヨ鏉′欢
+   	 * @param ids 瀵煎嚭鎸囧畾ID
+     * @return excel 鏂囦欢娴�
+     */
+    @ResponseExcel
+    @GetMapping("/export")
+    @PreAuthorize("@pms.hasPermission('platformx_inventoryFlowWater_export')" )
+    public List<InventoryFlowWater> export(InventoryFlowWater inventoryFlowWater,Long[] ids) {
+        return inventoryFlowWaterService.list(Wrappers.lambdaQuery(inventoryFlowWater).in(ArrayUtil.isNotEmpty(ids), InventoryFlowWater::getId, ids));
+    }
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ReceivingNoteController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ReceivingNoteController.java
new file mode 100644
index 0000000..c6e4689
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ReceivingNoteController.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.ReceivingNote;
+import com.by4cloud.platformx.device.service.ReceivingNoteService;
+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 pig
+ * @date 2025-03-13 11:03:52
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/receivingNote" )
+@Tag(description = "receivingNote" , name = "楠屾敹琛ㄧ鐞�" )
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class ReceivingNoteController {
+
+    private final  ReceivingNoteService receivingNoteService;
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     * @param page 鍒嗛〉瀵硅薄
+     * @param receivingNote 楠屾敹琛�
+     * @return
+     */
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+    @GetMapping("/page" )
+    @PreAuthorize("@pms.hasPermission('device_receivingNote_view')" )
+    public R getReceivingNotePage(@ParameterObject Page page, @ParameterObject ReceivingNote receivingNote) {
+        LambdaQueryWrapper<ReceivingNote> wrapper = Wrappers.lambdaQuery();
+        return R.ok(receivingNoteService.page(page, wrapper));
+    }
+
+
+    /**
+     * 閫氳繃id鏌ヨ楠屾敹琛�
+     * @param id id
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
+    @GetMapping("/{id}" )
+    @PreAuthorize("@pms.hasPermission('device_receivingNote_view')" )
+    public R getById(@PathVariable("id" ) Long id) {
+        return R.ok(receivingNoteService.getById(id));
+    }
+
+    /**
+     * 鏂板楠屾敹琛�
+     * @param receivingNote 楠屾敹琛�
+     * @return R
+     */
+    @Operation(summary = "鏂板楠屾敹琛�" , description = "鏂板楠屾敹琛�" )
+    @SysLog("鏂板楠屾敹琛�" )
+    @PostMapping
+    @PreAuthorize("@pms.hasPermission('device_receivingNote_add')" )
+    public R save(@RequestBody ReceivingNote receivingNote) {
+        return R.ok(receivingNoteService.save(receivingNote));
+    }
+
+    /**
+     * 淇敼楠屾敹琛�
+     * @param receivingNote 楠屾敹琛�
+     * @return R
+     */
+    @Operation(summary = "淇敼楠屾敹琛�" , description = "淇敼楠屾敹琛�" )
+    @SysLog("淇敼楠屾敹琛�" )
+    @PutMapping
+    @PreAuthorize("@pms.hasPermission('device_receivingNote_edit')" )
+    public R updateById(@RequestBody ReceivingNote receivingNote) {
+        return R.ok(receivingNoteService.updateById(receivingNote));
+    }
+
+    /**
+     * 閫氳繃id鍒犻櫎楠屾敹琛�
+     * @param ids id鍒楄〃
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鍒犻櫎楠屾敹琛�" , description = "閫氳繃id鍒犻櫎楠屾敹琛�" )
+    @SysLog("閫氳繃id鍒犻櫎楠屾敹琛�" )
+    @DeleteMapping
+    @PreAuthorize("@pms.hasPermission('device_receivingNote_del')" )
+    public R removeById(@RequestBody Long[] ids) {
+        return R.ok(receivingNoteService.removeBatchByIds(CollUtil.toList(ids)));
+    }
+
+
+    /**
+     * 瀵煎嚭excel 琛ㄦ牸
+     * @param receivingNote 鏌ヨ鏉′欢
+   	 * @param ids 瀵煎嚭鎸囧畾ID
+     * @return excel 鏂囦欢娴�
+     */
+    @ResponseExcel
+    @GetMapping("/export")
+    @PreAuthorize("@pms.hasPermission('device_receivingNote_export')" )
+    public List<ReceivingNote> export(ReceivingNote receivingNote,Long[] ids) {
+        return receivingNoteService.list(Wrappers.lambdaQuery(receivingNote).in(ArrayUtil.isNotEmpty(ids), ReceivingNote::getId, ids));
+    }
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ReceivingNoteItemController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ReceivingNoteItemController.java
new file mode 100644
index 0000000..9220b00
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ReceivingNoteItemController.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.ReceivingNoteItem;
+import com.by4cloud.platformx.device.service.ReceivingNoteItemService;
+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 pig
+ * @date 2025-03-13 11:04:28
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/receivingNoteItem" )
+@Tag(description = "receivingNoteItem" , name = "楠屾敹瀛愰」琛ㄧ鐞�" )
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class ReceivingNoteItemController {
+
+    private final  ReceivingNoteItemService receivingNoteItemService;
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     * @param page 鍒嗛〉瀵硅薄
+     * @param receivingNoteItem 楠屾敹瀛愰」琛�
+     * @return
+     */
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+    @GetMapping("/page" )
+    @PreAuthorize("@pms.hasPermission('device_receivingNoteItem_view')" )
+    public R getReceivingNoteItemPage(@ParameterObject Page page, @ParameterObject ReceivingNoteItem receivingNoteItem) {
+        LambdaQueryWrapper<ReceivingNoteItem> wrapper = Wrappers.lambdaQuery();
+        return R.ok(receivingNoteItemService.page(page, wrapper));
+    }
+
+
+    /**
+     * 閫氳繃id鏌ヨ楠屾敹瀛愰」琛�
+     * @param id id
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
+    @GetMapping("/{id}" )
+    @PreAuthorize("@pms.hasPermission('device_receivingNoteItem_view')" )
+    public R getById(@PathVariable("id" ) Long id) {
+        return R.ok(receivingNoteItemService.getById(id));
+    }
+
+    /**
+     * 鏂板楠屾敹瀛愰」琛�
+     * @param receivingNoteItem 楠屾敹瀛愰」琛�
+     * @return R
+     */
+    @Operation(summary = "鏂板楠屾敹瀛愰」琛�" , description = "鏂板楠屾敹瀛愰」琛�" )
+    @SysLog("鏂板楠屾敹瀛愰」琛�" )
+    @PostMapping
+    @PreAuthorize("@pms.hasPermission('device_receivingNoteItem_add')" )
+    public R save(@RequestBody ReceivingNoteItem receivingNoteItem) {
+        return R.ok(receivingNoteItemService.save(receivingNoteItem));
+    }
+
+    /**
+     * 淇敼楠屾敹瀛愰」琛�
+     * @param receivingNoteItem 楠屾敹瀛愰」琛�
+     * @return R
+     */
+    @Operation(summary = "淇敼楠屾敹瀛愰」琛�" , description = "淇敼楠屾敹瀛愰」琛�" )
+    @SysLog("淇敼楠屾敹瀛愰」琛�" )
+    @PutMapping
+    @PreAuthorize("@pms.hasPermission('device_receivingNoteItem_edit')" )
+    public R updateById(@RequestBody ReceivingNoteItem receivingNoteItem) {
+        return R.ok(receivingNoteItemService.updateById(receivingNoteItem));
+    }
+
+    /**
+     * 閫氳繃id鍒犻櫎楠屾敹瀛愰」琛�
+     * @param ids id鍒楄〃
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鍒犻櫎楠屾敹瀛愰」琛�" , description = "閫氳繃id鍒犻櫎楠屾敹瀛愰」琛�" )
+    @SysLog("閫氳繃id鍒犻櫎楠屾敹瀛愰」琛�" )
+    @DeleteMapping
+    @PreAuthorize("@pms.hasPermission('device_receivingNoteItem_del')" )
+    public R removeById(@RequestBody Long[] ids) {
+        return R.ok(receivingNoteItemService.removeBatchByIds(CollUtil.toList(ids)));
+    }
+
+
+    /**
+     * 瀵煎嚭excel 琛ㄦ牸
+     * @param receivingNoteItem 鏌ヨ鏉′欢
+   	 * @param ids 瀵煎嚭鎸囧畾ID
+     * @return excel 鏂囦欢娴�
+     */
+    @ResponseExcel
+    @GetMapping("/export")
+    @PreAuthorize("@pms.hasPermission('device_receivingNoteItem_export')" )
+    public List<ReceivingNoteItem> export(ReceivingNoteItem receivingNoteItem,Long[] ids) {
+        return receivingNoteItemService.list(Wrappers.lambdaQuery(receivingNoteItem).in(ArrayUtil.isNotEmpty(ids), ReceivingNoteItem::getId, ids));
+    }
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ContractItemMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ContractItemMapper.java
new file mode 100644
index 0000000..72b7151
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ContractItemMapper.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.ContractItem;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ContractItemMapper extends PlatformxBaseMapper<ContractItem> {
+
+
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ContractMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ContractMapper.java
new file mode 100644
index 0000000..1c2d1a7
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ContractMapper.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.Contract;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ContractMapper extends PlatformxBaseMapper<Contract> {
+
+
+}
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
new file mode 100644
index 0000000..c059f90
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceInventoryMapper.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.DeviceInventory;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DeviceInventoryMapper extends PlatformxBaseMapper<DeviceInventory> {
+
+
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/InventoryFlowWaterMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/InventoryFlowWaterMapper.java
new file mode 100644
index 0000000..baae039
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/InventoryFlowWaterMapper.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.InventoryFlowWater;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface InventoryFlowWaterMapper extends PlatformxBaseMapper<InventoryFlowWater> {
+
+
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ReceivingNoteItemMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ReceivingNoteItemMapper.java
new file mode 100644
index 0000000..042d9de
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ReceivingNoteItemMapper.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.ReceivingNoteItem;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ReceivingNoteItemMapper extends PlatformxBaseMapper<ReceivingNoteItem> {
+
+
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ReceivingNoteMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ReceivingNoteMapper.java
new file mode 100644
index 0000000..a863374
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ReceivingNoteMapper.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.ReceivingNote;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ReceivingNoteMapper extends PlatformxBaseMapper<ReceivingNote> {
+
+
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ContractItemService.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ContractItemService.java
new file mode 100644
index 0000000..57fc87f
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ContractItemService.java
@@ -0,0 +1,8 @@
+package com.by4cloud.platformx.device.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.by4cloud.platformx.device.entity.ContractItem;
+
+public interface ContractItemService extends IService<ContractItem> {
+
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ContractService.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ContractService.java
new file mode 100644
index 0000000..1d80c42
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ContractService.java
@@ -0,0 +1,15 @@
+package com.by4cloud.platformx.device.service;
+
+import com.by4cloud.platformx.device.entity.Contract;
+import com.github.yulichang.extension.mapping.base.MPJDeepService;
+
+public interface ContractService extends MPJDeepService<Contract> {
+    Boolean saveDeep(Contract contract);
+
+    Boolean updateDeep(Contract contract);
+
+    Boolean removeDeep(Long[] ids);
+
+    Boolean removeChild(Long[] ids);
+
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceInventoryService.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceInventoryService.java
new file mode 100644
index 0000000..7083605
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceInventoryService.java
@@ -0,0 +1,9 @@
+package com.by4cloud.platformx.device.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.by4cloud.platformx.device.entity.DeviceInventory;
+import com.by4cloud.platformx.device.entity.InventoryFlowWater;
+
+public interface DeviceInventoryService extends IService<DeviceInventory> {
+
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/InventoryFlowWaterService.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/InventoryFlowWaterService.java
new file mode 100644
index 0000000..4e1e008
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/InventoryFlowWaterService.java
@@ -0,0 +1,8 @@
+package com.by4cloud.platformx.device.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.by4cloud.platformx.device.entity.InventoryFlowWater;
+
+public interface InventoryFlowWaterService extends IService<InventoryFlowWater> {
+
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ReceivingNoteItemService.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ReceivingNoteItemService.java
new file mode 100644
index 0000000..f6fc7ab
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ReceivingNoteItemService.java
@@ -0,0 +1,8 @@
+package com.by4cloud.platformx.device.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.by4cloud.platformx.device.entity.ReceivingNoteItem;
+
+public interface ReceivingNoteItemService extends IService<ReceivingNoteItem> {
+
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ReceivingNoteService.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ReceivingNoteService.java
new file mode 100644
index 0000000..cff8e48
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ReceivingNoteService.java
@@ -0,0 +1,8 @@
+package com.by4cloud.platformx.device.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.by4cloud.platformx.device.entity.ReceivingNote;
+
+public interface ReceivingNoteService extends IService<ReceivingNote> {
+
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ContractItemServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ContractItemServiceImpl.java
new file mode 100644
index 0000000..3643686
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ContractItemServiceImpl.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.ContractItem;
+import com.by4cloud.platformx.device.mapper.ContractItemMapper;
+import com.by4cloud.platformx.device.service.ContractItemService;
+import org.springframework.stereotype.Service;
+/**
+ * 鍚堝悓鏄庣粏琛�
+ *
+ * @author pig
+ * @date 2025-03-13 10:48:44
+ */
+@Service
+public class ContractItemServiceImpl extends ServiceImpl<ContractItemMapper, ContractItem> implements ContractItemService {
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ContractServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ContractServiceImpl.java
new file mode 100644
index 0000000..312841b
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ContractServiceImpl.java
@@ -0,0 +1,68 @@
+package com.by4cloud.platformx.device.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import com.by4cloud.platformx.device.entity.Contract;
+import com.by4cloud.platformx.device.entity.ContractItem;
+import com.by4cloud.platformx.device.mapper.ContractItemMapper;
+import com.by4cloud.platformx.device.mapper.ContractMapper;
+import com.by4cloud.platformx.device.service.ContractService;
+import org.springframework.stereotype.Service;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.springframework.transaction.annotation.Transactional;
+import lombok.RequiredArgsConstructor;
+import java.util.Objects;
+/**
+ * 鍚堝悓琛�
+ *
+ * @author pig
+ * @date 2025-03-13 10:20:35
+ */
+@Service
+@RequiredArgsConstructor
+public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> implements ContractService {
+  private final ContractItemMapper contractItemMapper;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean saveDeep(Contract contract) {
+        baseMapper.insert(contract);
+        for (ContractItem contractItem : contract.getContractItemList()) {
+            contractItem.setContractId(contract.getId());
+            contractItemMapper.insert( contractItem);
+        }
+
+        return Boolean.TRUE;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean updateDeep(Contract contract) {
+        baseMapper.updateById(contract);
+        for (ContractItem  contractItem : contract.getContractItemList()) {
+            if (Objects.isNull(contractItem.getId())) {
+                contractItem.setContractId(contract.getId());
+                contractItemMapper.insert(contractItem);
+            } else {
+                contractItemMapper.updateById(contractItem);
+            }
+        }
+        return Boolean.TRUE;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean removeDeep(Long[] ids) {
+        baseMapper.deleteBatchIds(CollUtil.toList(ids));
+        contractItemMapper.delete(Wrappers.<ContractItem>lambdaQuery().in(ContractItem::getContractId, ids));
+        return Boolean.TRUE;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean removeChild(Long[] ids) {
+        contractItemMapper.deleteBatchIds(CollUtil.toList(ids));
+        return Boolean.TRUE;
+    }
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceInventoryServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceInventoryServiceImpl.java
new file mode 100644
index 0000000..da0b221
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceInventoryServiceImpl.java
@@ -0,0 +1,20 @@
+package com.by4cloud.platformx.device.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.by4cloud.platformx.device.entity.DeviceInventory;
+import com.by4cloud.platformx.device.entity.InventoryFlowWater;
+import com.by4cloud.platformx.device.mapper.DeviceInventoryMapper;
+import com.by4cloud.platformx.device.mapper.InventoryFlowWaterMapper;
+import com.by4cloud.platformx.device.service.DeviceInventoryService;
+import com.by4cloud.platformx.device.service.InventoryFlowWaterService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 搴撳瓨
+ *
+ * @author pig
+ * @date 2025-03-13 10:22:39
+ */
+@Service
+public class DeviceInventoryServiceImpl extends ServiceImpl<DeviceInventoryMapper, DeviceInventory> implements DeviceInventoryService {
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InventoryFlowWaterServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InventoryFlowWaterServiceImpl.java
new file mode 100644
index 0000000..f172139
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InventoryFlowWaterServiceImpl.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.InventoryFlowWater;
+import com.by4cloud.platformx.device.mapper.InventoryFlowWaterMapper;
+import com.by4cloud.platformx.device.service.InventoryFlowWaterService;
+import org.springframework.stereotype.Service;
+/**
+ * 搴撳瓨娴佹按琛�
+ *
+ * @author pig
+ * @date 2025-03-13 10:22:39
+ */
+@Service
+public class InventoryFlowWaterServiceImpl extends ServiceImpl<InventoryFlowWaterMapper, InventoryFlowWater> implements InventoryFlowWaterService {
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ReceivingNoteItemServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ReceivingNoteItemServiceImpl.java
new file mode 100644
index 0000000..3d30892
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ReceivingNoteItemServiceImpl.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.ReceivingNoteItem;
+import com.by4cloud.platformx.device.mapper.ReceivingNoteItemMapper;
+import com.by4cloud.platformx.device.service.ReceivingNoteItemService;
+import org.springframework.stereotype.Service;
+/**
+ * 楠屾敹瀛愰」琛�
+ *
+ * @author pig
+ * @date 2025-03-13 11:04:28
+ */
+@Service
+public class ReceivingNoteItemServiceImpl extends ServiceImpl<ReceivingNoteItemMapper, ReceivingNoteItem> implements ReceivingNoteItemService {
+}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ReceivingNoteServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ReceivingNoteServiceImpl.java
new file mode 100644
index 0000000..0d6d1da
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ReceivingNoteServiceImpl.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.ReceivingNote;
+import com.by4cloud.platformx.device.mapper.ReceivingNoteMapper;
+import com.by4cloud.platformx.device.service.ReceivingNoteService;
+import org.springframework.stereotype.Service;
+/**
+ * 楠屾敹琛�
+ *
+ * @author pig
+ * @date 2025-03-13 11:03:52
+ */
+@Service
+public class ReceivingNoteServiceImpl extends ServiceImpl<ReceivingNoteMapper, ReceivingNote> implements ReceivingNoteService {
+}
diff --git a/platformx-device-biz/src/main/resources/mapper/ContractItemMapper.xml b/platformx-device-biz/src/main/resources/mapper/ContractItemMapper.xml
new file mode 100644
index 0000000..f13d680
--- /dev/null
+++ b/platformx-device-biz/src/main/resources/mapper/ContractItemMapper.xml
@@ -0,0 +1,24 @@
+<?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.ContractItemMapper">
+
+  <resultMap id="contractItemMap" type="com.by4cloud.platformx.device.entity.ContractItem">
+        <id property="id" column="id"/>
+        <result property="amount" column="amount"/>
+        <result property="compId" column="comp_id"/>
+        <result property="month" column="month"/>
+        <result property="name" column="name"/>
+        <result property="num" column="num"/>
+        <result property="price" column="price"/>
+        <result property="specification" column="specification"/>
+        <result property="unit" column="unit"/>
+        <result property="contractId" column="contract_id"/>
+        <result property="deviceId" column="device_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>
diff --git a/platformx-device-biz/src/main/resources/mapper/ContractMapper.xml b/platformx-device-biz/src/main/resources/mapper/ContractMapper.xml
new file mode 100644
index 0000000..cff2e80
--- /dev/null
+++ b/platformx-device-biz/src/main/resources/mapper/ContractMapper.xml
@@ -0,0 +1,29 @@
+<?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.ContractMapper">
+
+  <resultMap id="contractMap" type="com.by4cloud.platformx.device.entity.Contract">
+        <id property="id" column="id"/>
+        <result property="name" column="name"/>
+        <result property="compId" column="comp_id"/>
+        <result property="partya" column="partya"/>
+        <result property="partyb" column="partyb"/>
+        <result property="partyc" column="partyc"/>
+        <result property="content" column="content"/>
+        <result property="countExecutive" column="count_executive"/>
+        <result property="output" column="output"/>
+        <result property="executive" column="executive"/>
+        <result property="fileName" column="file_name"/>
+        <result property="filePath" column="file_path"/>
+        <result property="number" column="number"/>
+        <result property="releaseDate" column="release_date"/>
+        <result property="status" column="status"/>
+        <result property="type" column="type"/>
+        <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>
diff --git a/platformx-device-biz/src/main/resources/mapper/InventoryFlowWaterMapper.xml b/platformx-device-biz/src/main/resources/mapper/InventoryFlowWaterMapper.xml
new file mode 100644
index 0000000..3ca2275
--- /dev/null
+++ b/platformx-device-biz/src/main/resources/mapper/InventoryFlowWaterMapper.xml
@@ -0,0 +1,21 @@
+<?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.InventoryFlowWaterMapper">
+
+  <resultMap id="inventoryFlowWaterMap" type="com.by4cloud.platformx.device.entity.InventoryFlowWater">
+        <id property="id" column="id"/>
+        <result property="inventoryId" column="inventory_id"/>
+        <result property="classId" column="class_id"/>
+        <result property="deviceId" column="device_id"/>
+        <result property="num" column="num"/>
+        <result property="planId" column="plan_id"/>
+        <result property="remark" column="remark"/>
+        <result property="compId" column="comp_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>
diff --git a/platformx-device-biz/src/main/resources/mapper/ReceivingNoteItemMapper.xml b/platformx-device-biz/src/main/resources/mapper/ReceivingNoteItemMapper.xml
new file mode 100644
index 0000000..5cb7345
--- /dev/null
+++ b/platformx-device-biz/src/main/resources/mapper/ReceivingNoteItemMapper.xml
@@ -0,0 +1,19 @@
+<?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.ReceivingNoteItemMapper">
+
+  <resultMap id="receivingNoteItemMap" type="com.by4cloud.platformx.device.entity.ReceivingNoteItem">
+        <id property="id" column="id"/>
+        <result property="compId" column="comp_id"/>
+        <result property="noteId" column="note_id"/>
+        <result property="contractItemId" column="contract_item_id"/>
+        <result property="num" column="num"/>
+        <result property="output" column="output"/>
+        <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>
diff --git a/platformx-device-biz/src/main/resources/mapper/ReceivingNoteMapper.xml b/platformx-device-biz/src/main/resources/mapper/ReceivingNoteMapper.xml
new file mode 100644
index 0000000..43d7177
--- /dev/null
+++ b/platformx-device-biz/src/main/resources/mapper/ReceivingNoteMapper.xml
@@ -0,0 +1,21 @@
+<?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.ReceivingNoteMapper">
+
+  <resultMap id="receivingNoteMap" type="com.by4cloud.platformx.device.entity.ReceivingNote">
+        <id property="id" column="id"/>
+        <result property="compId" column="comp_id"/>
+        <result property="contractId" column="contract_id"/>
+        <result property="count" column="count"/>
+        <result property="output" column="output"/>
+        <result property="releaseCompName" column="release_comp_name"/>
+        <result property="releaseDate" column="release_date"/>
+        <result property="releasePerson" column="release_person"/>
+        <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>
diff --git a/platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml b/platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml
new file mode 100644
index 0000000..b84b53e
--- /dev/null
+++ b/platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml
@@ -0,0 +1,21 @@
+<?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.DeviceInventoryMapper">
+
+  <resultMap id="deviceInventoryMap" type="com.by4cloud.platformx.device.entity.DeviceInventory">
+        <id property="id" column="id"/>
+        <result property="deviceNumber" column="device_number"/>
+        <result property="serialNo" column="serial_no"/>
+        <result property="deviceId" column="device_id"/>
+        <result property="deviceId" column="device_id"/>
+        <result property="name" column="name"/>
+        <result property="source" column="source"/>
+        <result property="compId" column="comp_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>

--
Gitblit v1.9.1