From fc8c86e7a365d5c6bdc37c2b05b9f83115ac2bc3 Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期三, 23 四月 2025 17:30:52 +0800
Subject: [PATCH] 巡检任务  设备维修新增是否生成工单

---
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/WorkOrderService.java                    |    2 
 platformx-device-biz/src/main/resources/mapper/ResidualRecycleMapper.xml                                          |   30 ++
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ContractController.java               |   26 +
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ResidualRecycleServiceImpl.java     |   56 ++++
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InspectionTaskServiceImpl.java      |    5 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceInventoryController.java        |   31 ++
 platformx-device-api/src/main/java/com/by4cloud/platformx/device/constant/CommonStatusContant.java                |  164 +++++++++++
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceRepairServiceImpl.java        |   15 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ContractService.java                     |    5 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceRepairController.java           |    5 
 platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ResidualRecycle.java                      |  128 +++++++++
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceInventoryServiceImpl.java     |   28 ++
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ReceivingNoteServiceImpl.java       |   11 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/WorkOrderServiceImpl.java           |   37 ++
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceScrapController.java            |    3 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ResidualRecycleController.java        |  138 +++++++++
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ResidualRecycleMapper.java                |   11 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InspectionPlanServiceImpl.java      |   13 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/WorkOrderController.java              |    3 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceScrapServiceImpl.java         |    5 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ResidualRecycleService.java              |   12 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DevicePurchasePlanServiceImpl.java  |    5 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ContractServiceImpl.java            |   71 ++++
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceInventoryService.java              |    2 
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceLeasingLedgerServiceImpl.java |    7 
 25 files changed, 772 insertions(+), 41 deletions(-)

diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/constant/CommonStatusContant.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/constant/CommonStatusContant.java
new file mode 100644
index 0000000..a56ab76
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/constant/CommonStatusContant.java
@@ -0,0 +1,164 @@
+package com.by4cloud.platformx.device.constant;
+
+import javax.persistence.criteria.CriteriaBuilder;
+
+public interface CommonStatusContant {
+
+	/**
+	 * 娈嬩綋鍥炴敹-寰呭鎵�
+	 */
+	Integer RESIDUAL_RECYCLE_STATUS_PENDING_APPROVAL = 1;
+	/**
+	 * 娈嬩綋鍥炴敹-澶勭悊涓�
+	 */
+	Integer RESIDUAL_RECYCLE_STATUS_HANDLING = 2;
+	/**
+	 * 娈嬩綋鍥炴敹-寰呭鎵�
+	 */
+	Integer RESIDUAL_RECYCLE_STATUS_COMPLETE = 3;
+	/**
+	 * 璁惧搴撳瓨-鍙敤
+	 */
+	Integer DEVICE_INVENTORY_USABLE = 1;
+	/**
+	 * 璁惧搴撳瓨-绉熻祦涓�
+	 */
+	Integer DEVICE_INVENTORY_RENTING = 2;
+	/**
+	 * 璁惧搴撳瓨- 缁翠慨涓�
+	 */
+	Integer DEVICE_INVENTORY_REPAIRING = 3;
+	/**
+	 * 璁惧搴撳瓨-鎶ュ簾
+	 */
+	Integer DEVICE_INVENTORY_SCRAPING = 4;
+	/**
+	 * 璁惧搴撳瓨-娈嬪�煎洖鏀�
+	 */
+	Integer DEVICE_INVENTORY_RECYCLE = 5;
+	/**
+	 * 娈嬩綋鍥炴敹-鎷嗚В鍥炴敹
+	 */
+	Integer RESIDUAL_RECYCLE_METHOD_DISASSEMBE_RECYCLE = 1;
+	/**
+	 * 娈嬩綋鍥炴敹-涓撲笟鏈烘瀯绉讳氦
+	 */
+	Integer RESIDUAL_RECYCLE_METHOD_TRANSFER_PROFESSIONAL_INSTITUTION = 2;
+	/**
+	 * 娈嬩綋鍥炴敹-鍐嶇璧佹祦杞�
+	 */
+	Integer RESIDUAL_RECYCLE_METHOD_CYCLE_RENTING = 3;
+	/**
+	 * 鍚堝悓-寰呭鎵�
+	 */
+	Integer CONTRACT_STATUS_PENDING_APPROVAL = 0;
+	/**
+	 * 鍚堝悓-宸插鎵�
+	 */
+	Integer CONTRACT_STATUS_APPROVED = 1;
+	/**
+	 * 鍚堝悓-瀹屾垚
+	 */
+	Integer CONTRACT_STATUS_COMPLETE = 2;
+	/**
+	 * 鍚堝悓-浣滃簾瀹℃壒
+	 */
+	Integer CONTRACT_STATUS_INVALID_PENDING_APPROVAL = 3;
+	/**
+	 * 鍚堝悓-浣滃簾
+	 */
+	Integer CONTRACT_STATUS_INVALID = 4;
+	/**
+	 * 搴撳瓨娴佹按-鍏ュ簱
+	 */
+	Integer DEVICE_INVENTORY_FLOW_WATER_IN= 2;
+	/**
+	 * 搴撳瓨娴佹按-鍑哄簱
+	 */
+	Integer DEVICE_INVENTORY_FLOW_WATER_OUT= 1;
+	/**
+	 * 搴撳瓨绫诲瀷-浠撳簱
+	 */
+	Integer DEVICE_INVENTORY_RESOURCE_WAREHOUSE= 1;
+	/**
+	 * 搴撳瓨绫诲瀷-璐拱
+	 */
+	Integer DEVICE_INVENTORY_RESOURCE_BUGING= 2;
+	/**
+	 * 搴撳瓨绫诲瀷-璐拱
+	 */
+	Integer DEVICE_INVENTORY_RESOURCE_UNUSED= 3;
+	/**
+	 * 宸℃浠诲姟-鏈紑濮�
+	 */
+	Integer INSPECTION_TASK_NO_STARTED= 0;
+	/**
+	 * 宸℃浠诲姟-宸℃涓�
+	 */
+	Integer INSPECTION_TASK_DURING_INSPECTION= 1;
+	/**
+	 * 宸℃浠诲姟-瀹屾垚
+	 */
+	Integer INSPECTION_TASK_COMPLETE= 2;
+	/**
+	 * 宸ュ崟鐘舵��-寰呭垎閰�
+	 */
+	Integer WORK_ORDER_STATUS_ALLOCATED= 1;
+	/**
+	 * 宸ュ崟鐘舵��-澶勭悊涓�
+	 */
+	Integer WORK_ORDER_STATUS_HANDLING= 2;
+	/**
+	 * 宸ュ崟鐘舵��-宸插叧闂�
+	 */
+	Integer WORK_ORDER_STATUS_CLOSING= 3;
+	/**
+	 * 璁惧缁翠慨鐘舵��-寰呭鎵�
+	 */
+	Integer DEVICE_REPAIR_STATUS_PANDING_APPROVAL= 1;
+	/**
+	 * 璁惧缁翠慨鐘舵��-缁翠慨涓�
+	 */
+	Integer DEVICE_REPAIR_STATUS_REPAIRING= 2;
+	/**
+	 * 璁惧缁翠慨鐘舵��-瀹屾垚
+	 */
+	Integer DEVICE_REPAIR_STATUS_COMPLETE= 3;
+	/**
+	 * 璁惧鎶ュ簾鐘舵��-寰呭鎵�
+	 */
+	Integer DEVICE_SCRAP_STATUS_PANDING_APPROVAL= 1;
+	/**
+	 * 璁惧鎶ュ簾鐘舵��-缁翠慨涓�
+	 */
+	Integer DEVICE_SCRAP_STATUS_COMPLETE= 2;
+	/**
+	 * 宸℃璁″垝-鐢熸垚浠诲姟鏍囪瘑
+	 */
+	Integer INSPECTION_PLAN_FLAG_GEN_Y = 1;
+	/**
+	 * 宸℃璁″垝-鐢熸垚浠诲姟鏍囪瘑
+	 */
+	Integer INSPECTION_PLAN_FLAG_GEN_N = 0;
+	/**
+	 * 宸℃璁″垝-鐢熸垚浠诲姟鏍囪瘑
+	 */
+	Integer DEVICE_REPAIR_FLAG_N = 0;
+	/**
+	 * 宸℃璁″垝-鐢熸垚浠诲姟鏍囪瘑
+	 */
+	Integer DEVICE_REPAIR_FLAG_Y = 1;
+	/**
+	 * 宸ュ崟绫诲瀷-鎶ヤ慨
+	 */
+	Integer WORK_ORDER_TYPE_REPAIR = 1;
+	/**
+	 * 璁惧閲囪喘璁″垝鐘舵��-寰呭鎵�
+	 */
+	Integer DEVICE_PURCHASE_STATUS_PANDING_APPROVAL = 0;
+	/**
+	 * 璁惧閲囪喘璁″垝鐘舵��-寰呭鎵�
+	 */
+	Integer DEVICE_PURCHASE_STATUS_APPROVED = 1;
+
+}
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ResidualRecycle.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ResidualRecycle.java
new file mode 100644
index 0000000..21f84a0
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ResidualRecycle.java
@@ -0,0 +1,128 @@
+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.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@Entity
+@TableName("residual_recycle")
+@javax.persistence.Table(name = "residual_recycle")
+@Table(appliesTo = "residual_recycle", comment = "娈嬩綋鍥炴敹")
+public class ResidualRecycle extends BaseModel<ResidualRecycle> {
+
+	/**
+	 * 璁惧ID
+	 */
+	@Schema(description="璁惧ID")
+	@Column(columnDefinition="bigint comment '璁惧ID'")
+	private Long deviceId;
+
+	/**
+	 * 璁惧缂栫爜
+	 */
+	@Schema(description="璁惧缂栫爜")
+	@Column(columnDefinition="VARCHAR(16) 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(32) comment '璁¢噺鍗曚綅'")
+	private String meteringUnit;
+
+	/**
+	 * 璁惧搴忓垪鍙�
+	 */
+	@Schema(description="璁惧搴忓垪鍙�")
+	@Column(columnDefinition="VARCHAR(256) comment '璁惧搴忓垪鍙�'")
+	private String serialNo;
+
+	/**
+	 * 鍒濆浠峰��
+	 */
+	@Schema(description="鍒濆浠峰��")
+	@Column(columnDefinition="decimal(10,2) comment '鍒濆浠峰��'")
+	private BigDecimal initialValue;
+
+	/**
+	 * 绱鎶樻棫
+	 */
+	@Schema(description="绱鎶樻棫")
+	@Column(columnDefinition="decimal(10,2) comment '绱鎶樻棫'")
+	private BigDecimal accumulatedDepreciation;
+
+	/**
+	 * 澶勭疆鏂瑰紡
+	 */
+	@Schema(description="澶勭疆鏂瑰紡")
+	@Column(columnDefinition="int comment '澶勭疆鏂瑰紡 1 鎷嗚В鍥炴敹 2 涓撲笟鏈烘瀯绉讳氦 3 鍐嶇璧佹祦杞�'")
+	private Integer handleMethod;
+
+	/**
+	 * 澶勭疆鏈烘瀯
+	 */
+	@Schema(description="澶勭疆鏈烘瀯")
+	@Column(columnDefinition="VARCHAR(256) comment '澶勭疆鏈烘瀯'")
+	private String handleOrgan;
+
+	/**
+	 * 娈嬪�兼祴绠�
+	 */
+	@Schema(description="娈嬪�兼祴绠�")
+	@Column(columnDefinition="decimal(10,2) comment '娈嬪�兼祴绠�'")
+	private BigDecimal residualCalculation;
+
+	/**
+	 * 瀹為檯鍥炴敹
+	 */
+	@Schema(description="瀹為檯鍥炴敹")
+	@Column(columnDefinition="decimal(10,2) comment '瀹為檯鍥炴敹'")
+	private BigDecimal actualResidual;
+
+	/**
+	 * 鍥炴敹鐧昏鏃ユ湡
+	 */
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	@Schema(description = "鍥炴敹鐧昏鏃ユ湡")
+	@Column(columnDefinition="datetime comment '鍥炴敹鐧昏鏃ユ湡'")
+	private Date registrationDate;
+
+	/**
+	 * 璐㈠姟鏍搁攢鏃ユ湡
+	 */
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	@Schema(description = "璐㈠姟鏍搁攢鏃ユ湡")
+	@Column(columnDefinition="datetime comment '璐㈠姟鏍搁攢鏃ユ湡'")
+	private Date verificationDate;
+
+	/**
+	 * 鐘舵��
+	 */
+	@Schema(description = "鐘舵��")
+	@Column(columnDefinition="int comment '鐘舵�� 1 寰呭鎵� 2 澶勭悊涓� 3 宸插畬鎴�'")
+	private Integer status;
+}
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
index 8d8d98c..c3092ea 100644
--- 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
@@ -133,6 +133,7 @@
 	 * @param id id
 	 * @return R
 	 */
+	@SysLog("瀹℃壒閫氳繃鍚堝悓" )
 	@Operation(summary = "瀹℃壒閫氳繃鍚堝悓" , description = "瀹℃壒閫氳繃鍚堝悓" )
 	@GetMapping("/approved/{id}" )
 	public R approved(@PathVariable("id" ) Long id) {
@@ -149,4 +150,29 @@
 		return R.ok(contractService.getApprovedContractList());
 	}
 
+	/**
+	 * 鍚堝悓鐢宠浣滃簾
+	 * @param id id
+	 * @return R
+	 */
+	@SysLog("鍚堝悓鐢宠浣滃簾" )
+	@Operation(summary = "鍚堝悓鐢宠浣滃簾" , description = "鍚堝悓鐢宠浣滃簾" )
+	@GetMapping("/approvelInvalid/{id}" )
+	@PreAuthorize("@pms.hasPermission('platformx_contract_zfsq')")
+	public R approvelInvalid(@PathVariable("id" ) Long id) {
+		return contractService.approvelInvalid(id);
+	}
+
+	/**
+	 * 鍚堝悓鐢宠浣滃簾
+	 * @param id id
+	 * @return R
+	 */
+	@SysLog("鍚堝悓浣滃簾" )
+	@Operation(summary = "鍚堝悓浣滃簾" , description = "鍚堝悓浣滃簾" )
+	@GetMapping("/invalidById/{id}" )
+	@PreAuthorize("@pms.hasPermission('platformx_contract_zf')")
+	public R invalidById(@PathVariable("id" ) Long id) {
+		return contractService.invalidById(id);
+	}
 }
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
index 6a60a0b..f6b9bc9 100644
--- 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
@@ -2,6 +2,7 @@
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -52,6 +53,7 @@
 		wrapper.like(StringUtils.isNotBlank(deviceInventory.getDeviceNumber()),DeviceInventory::getDeviceNumber,deviceInventory.getDeviceNumber());
 		wrapper.like(StringUtils.isNotBlank(deviceInventory.getSerialNo()),DeviceInventory::getSerialNo,deviceInventory.getSerialNo());
 		wrapper.like(StringUtils.isNotBlank(deviceInventory.getName()),DeviceInventory::getName,deviceInventory.getName());
+		wrapper.eq(StringUtils.checkValNotNull(deviceInventory.getInventoryStatus()),DeviceInventory::getInventoryStatus,deviceInventory.getInventoryStatus());
 		wrapper.orderByDesc(DeviceInventory::getCreateTime);
         return R.ok(deviceInventoryService.page(page, wrapper));
     }
@@ -147,7 +149,7 @@
     }
 
 	/**
-	 * 璁惧涓嬫墍鏈夊簭鍒楀彿涓嬫媺
+	 * 璁惧涓嬫墍鏈夊彲鐢ㄥ簭鍒楀彿涓嬫媺
 	 * @return
 	 */
 	@GetMapping("/getDropdowmList/{deviceId}" )
@@ -155,6 +157,18 @@
 		QueryWrapper<DeviceInventory> queryWrapper = new QueryWrapper<>();
 		queryWrapper.eq("device_id",deviceId);
 		queryWrapper.eq("inventory_status","1");
+		return R.ok(deviceInventoryService.list(queryWrapper));
+	}
+
+	/**
+	 * 璁惧涓嬫墍鏈夋姤搴熷簭鍒楀彿涓嬫媺
+	 * @return
+	 */
+	@GetMapping("/getDropdowmScrapList/{deviceId}" )
+	public R getDropdowmScrapList(@PathVariable("deviceId")Long deviceId) {
+		QueryWrapper<DeviceInventory> queryWrapper = new QueryWrapper<>();
+		queryWrapper.eq("device_id",deviceId);
+		queryWrapper.eq("inventory_status","4");
 		return R.ok(deviceInventoryService.list(queryWrapper));
 	}
 
@@ -168,13 +182,24 @@
 	}
 
 	/**
-	 * 淇敼搴撳瓨琛�
+	 * 璁惧鏇存柊鐓х墖
 	 * @param deviceInventory 搴撳瓨琛�
 	 * @return R
 	 */
-	@SysLog("淇敼搴撳瓨琛�" )
+	@SysLog("璁惧鏇存柊鐓х墖" )
 	@PutMapping("/uploadPic")
 	public R uploadPic(@RequestBody DeviceInventory deviceInventory) {
 		return R.ok(deviceInventoryService.updateById(deviceInventory));
 	}
+
+	/**
+	 * 淇敼搴撳瓨琛�
+	 * @param id 搴撳瓨琛�
+	 * @return R
+	 */
+	@SysLog("璁惧褰掕繕鍏ュ簱" )
+	@GetMapping("/return/{id}")
+	public R returnDevice(@PathVariable("id")Long id) {
+		return deviceInventoryService.returnDevice(id);
+	}
 }
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceRepairController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceRepairController.java
index fcc610d..297f4c1 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceRepairController.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceRepairController.java
@@ -6,6 +6,7 @@
 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.constant.CommonStatusContant;
 import com.by4cloud.platformx.device.dto.DeviceRepairQueryDTO;
 import com.by4cloud.platformx.device.entity.DeviceInventory;
 import com.by4cloud.platformx.device.entity.DeviceRepair;
@@ -74,8 +75,8 @@
     @PostMapping
     @PreAuthorize("@pms.hasPermission('device_deviceRepair_add')" )
     public R save(@RequestBody DeviceRepair deviceRepair) {
-		deviceRepair.setStatus(1);
-		deviceRepair.setWoFlag(0);
+		deviceRepair.setStatus(CommonStatusContant.DEVICE_REPAIR_STATUS_PANDING_APPROVAL);
+		deviceRepair.setWoFlag(CommonStatusContant.DEVICE_REPAIR_FLAG_N);
         return R.ok(deviceRepairService.save(deviceRepair));
     }
 
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceScrapController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceScrapController.java
index 148e3e8..a3d2f0e 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceScrapController.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceScrapController.java
@@ -6,6 +6,7 @@
 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.constant.CommonStatusContant;
 import com.by4cloud.platformx.device.dto.DeviceRepairQueryDTO;
 import com.by4cloud.platformx.device.entity.DeviceScrap;
 import com.by4cloud.platformx.device.service.DeviceScrapService;
@@ -72,7 +73,7 @@
     @PostMapping
     @PreAuthorize("@pms.hasPermission('device_deviceScrap_add')" )
     public R save(@RequestBody DeviceScrap deviceScrap) {
-		deviceScrap.setStatus(1);
+		deviceScrap.setStatus(CommonStatusContant.DEVICE_SCRAP_STATUS_PANDING_APPROVAL);
         return R.ok(deviceScrapService.save(deviceScrap));
     }
 
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ResidualRecycleController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ResidualRecycleController.java
new file mode 100644
index 0000000..7da3cc5
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ResidualRecycleController.java
@@ -0,0 +1,138 @@
+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.constant.CommonStatusContant;
+import com.by4cloud.platformx.device.entity.ResidualRecycle;
+import com.by4cloud.platformx.device.service.ResidualRecycleService;
+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-23 10:28:34
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/residualRecycle" )
+@Tag(description = "residualRecycle" , name = "娈嬩綋鍥炴敹绠$悊" )
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class ResidualRecycleController {
+
+    private final  ResidualRecycleService residualRecycleService;
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     * @param page 鍒嗛〉瀵硅薄
+     * @param residualRecycle 娈嬩綋鍥炴敹
+     * @return
+     */
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+    @GetMapping("/page" )
+    @PreAuthorize("@pms.hasPermission('device_residualRecycle_view')" )
+    public R getResidualRecyclePage(@ParameterObject Page page, @ParameterObject ResidualRecycle residualRecycle) {
+        LambdaQueryWrapper<ResidualRecycle> wrapper = Wrappers.lambdaQuery();
+		wrapper.eq(StrUtil.isNotBlank(residualRecycle.getDeviceName()),ResidualRecycle::getDeviceName,residualRecycle.getDeviceName());
+		wrapper.eq(Objects.nonNull(residualRecycle.getStatus()),ResidualRecycle::getStatus,residualRecycle.getStatus());
+		wrapper.orderByDesc(ResidualRecycle::getCreateTime);
+        return R.ok(residualRecycleService.page(page, wrapper));
+    }
+
+
+    /**
+     * 閫氳繃id鏌ヨ娈嬩綋鍥炴敹
+     * @param id id
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
+    @GetMapping("/{id}" )
+    @PreAuthorize("@pms.hasPermission('device_residualRecycle_view')" )
+    public R getById(@PathVariable("id" ) Long id) {
+        return R.ok(residualRecycleService.getById(id));
+    }
+
+    /**
+     * 鏂板娈嬩綋鍥炴敹
+     * @param residualRecycle 娈嬩綋鍥炴敹
+     * @return R
+     */
+    @Operation(summary = "鏂板娈嬩綋鍥炴敹" , description = "鏂板娈嬩綋鍥炴敹" )
+    @SysLog("鏂板娈嬩綋鍥炴敹" )
+    @PostMapping
+    @PreAuthorize("@pms.hasPermission('device_residualRecycle_add')" )
+    public R save(@RequestBody ResidualRecycle residualRecycle) {
+		residualRecycle.setStatus(CommonStatusContant.RESIDUAL_RECYCLE_STATUS_PENDING_APPROVAL);
+        return R.ok(residualRecycleService.save(residualRecycle));
+    }
+
+    /**
+     * 淇敼娈嬩綋鍥炴敹
+     * @param residualRecycle 娈嬩綋鍥炴敹
+     * @return R
+     */
+    @Operation(summary = "淇敼娈嬩綋鍥炴敹" , description = "淇敼娈嬩綋鍥炴敹" )
+    @SysLog("淇敼娈嬩綋鍥炴敹" )
+    @PutMapping
+    @PreAuthorize("@pms.hasPermission('device_residualRecycle_edit')" )
+    public R updateById(@RequestBody ResidualRecycle residualRecycle) {
+        return residualRecycleService.updateByIdNew(residualRecycle);
+    }
+
+    /**
+     * 閫氳繃id鍒犻櫎娈嬩綋鍥炴敹
+     * @param ids id鍒楄〃
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鍒犻櫎娈嬩綋鍥炴敹" , description = "閫氳繃id鍒犻櫎娈嬩綋鍥炴敹" )
+    @SysLog("閫氳繃id鍒犻櫎娈嬩綋鍥炴敹" )
+    @DeleteMapping
+    @PreAuthorize("@pms.hasPermission('device_residualRecycle_del')" )
+    public R removeById(@RequestBody Long[] ids) {
+        return R.ok(residualRecycleService.removeBatchByIds(CollUtil.toList(ids)));
+    }
+
+
+    /**
+     * 瀵煎嚭excel 琛ㄦ牸
+     * @param residualRecycle 鏌ヨ鏉′欢
+   	 * @param ids 瀵煎嚭鎸囧畾ID
+     * @return excel 鏂囦欢娴�
+     */
+    @ResponseExcel
+    @GetMapping("/export")
+    @PreAuthorize("@pms.hasPermission('device_residualRecycle_export')" )
+    public List<ResidualRecycle> export(ResidualRecycle residualRecycle,Long[] ids) {
+        return residualRecycleService.list(Wrappers.lambdaQuery(residualRecycle).in(ArrayUtil.isNotEmpty(ids), ResidualRecycle::getId, ids));
+    }
+
+	/**
+	 * 瀹℃壒閫氳繃id娈嬩綋鍥炴敹
+	 * @param id id鍒楄〃
+	 * @return R
+	 */
+	@Operation(summary = "瀹℃壒閫氳繃id娈嬩綋鍥炴敹" , description = "瀹℃壒閫氳繃id娈嬩綋鍥炴敹" )
+	@SysLog("瀹℃壒閫氳繃id娈嬩綋鍥炴敹" )
+	@GetMapping("/approvedById/{id}")
+	@PreAuthorize("@pms.hasPermission('device_residualRecycle_approved')" )
+	public R approvedById(@PathVariable("id") Long id) {
+		return residualRecycleService.approvedById(id);
+	}
+}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/WorkOrderController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/WorkOrderController.java
index 4d1beab..afd650b 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/WorkOrderController.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/WorkOrderController.java
@@ -52,6 +52,7 @@
 		wrapper.like(StrUtil.isNotBlank(workOrder.getWoCode()),WorkOrder::getWoCode,workOrder.getWoCode());
 		wrapper.like(StrUtil.isNotBlank(workOrder.getWoDesc()),WorkOrder::getWoDesc,workOrder.getWoDesc());
 		wrapper.eq(Objects.nonNull(workOrder.getWoStatus()),WorkOrder::getWoStatus,workOrder.getWoStatus());
+		wrapper.orderByDesc(WorkOrder::getCreateTime);
         return R.ok(workOrderService.page(page, wrapper));
     }
 
@@ -91,7 +92,7 @@
     @PutMapping
     @PreAuthorize("@pms.hasPermission('device_workOrder_edit')" )
     public R updateById(@RequestBody WorkOrder workOrder) {
-        return R.ok(workOrderService.updateById(workOrder));
+        return workOrderService.updateByIdNew(workOrder);
     }
 
     /**
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ResidualRecycleMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ResidualRecycleMapper.java
new file mode 100644
index 0000000..66bfb83
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ResidualRecycleMapper.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.ResidualRecycle;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ResidualRecycleMapper extends PlatformxBaseMapper<ResidualRecycle> {
+
+
+}
\ No newline at end of file
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
index 1cb9552..4aefb84 100644
--- 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
@@ -1,5 +1,6 @@
 package com.by4cloud.platformx.device.service;
 
+import com.by4cloud.platformx.common.core.util.R;
 import com.by4cloud.platformx.device.entity.Contract;
 import com.github.yulichang.extension.mapping.base.MPJDeepService;
 
@@ -19,4 +20,8 @@
 	Boolean approved(Long id);
 
 	List<Contract> getApprovedContractList();
+
+	R approvelInvalid(Long id);
+
+	R invalidById(Long id);
 }
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
index c559473..2bd3ee8 100644
--- 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
@@ -8,4 +8,6 @@
 public interface DeviceInventoryService extends IService<DeviceInventory> {
 
     R getReleaseDetail(Long id);
+
+    R returnDevice(Long id);
 }
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ResidualRecycleService.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ResidualRecycleService.java
new file mode 100644
index 0000000..831b186
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ResidualRecycleService.java
@@ -0,0 +1,12 @@
+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.ResidualRecycle;
+
+public interface ResidualRecycleService extends IService<ResidualRecycle> {
+
+	R approvedById(Long id);
+
+	R updateByIdNew(ResidualRecycle residualRecycle);
+}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/WorkOrderService.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/WorkOrderService.java
index 19159fe..6924b1d 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/WorkOrderService.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/WorkOrderService.java
@@ -1,8 +1,10 @@
 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.WorkOrder;
 
 public interface WorkOrderService extends IService<WorkOrder> {
 
+    R updateByIdNew(WorkOrder workOrder);
 }
\ No newline at end of file
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
index 930e4e9..4f4e358 100644
--- 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
@@ -3,10 +3,10 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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.common.core.util.R;
+import com.by4cloud.platformx.device.constant.CommonStatusContant;
+import com.by4cloud.platformx.device.entity.*;
+import com.by4cloud.platformx.device.mapper.*;
 import com.by4cloud.platformx.device.service.ContractService;
 import org.springframework.stereotype.Service;
 import cn.hutool.core.collection.CollUtil;
@@ -27,11 +27,16 @@
 @RequiredArgsConstructor
 public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> implements ContractService {
   private final ContractItemMapper contractItemMapper;
+  private final DeviceLeasingLedgerMapper leasingLedgerMapper;
+  private final DeviceLeasingLedgerItemMapper ledgerItemMapper;
+  private final DeviceInventoryMapper inventoryMapper;
+  private final InventoryFlowWaterMapper flowWaterMapper;
+  private final DeviceMapper deviceMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean saveDeep(Contract contract) {
-		contract.setStatus(0);
+		contract.setStatus(CommonStatusContant.CONTRACT_STATUS_PENDING_APPROVAL);
         baseMapper.insert(contract);
         for (ContractItem contractItem : contract.getContractItemList()) {
             contractItem.setContractId(contract.getId());
@@ -87,7 +92,7 @@
 	@Override
 	public Boolean approved(Long id) {
 		Contract contract = baseMapper.selectById(id);
-		contract.setStatus(1);
+		contract.setStatus(CommonStatusContant.CONTRACT_STATUS_APPROVED);
 		baseMapper.updateById(contract);
 		return Boolean.TRUE;
 	}
@@ -95,8 +100,60 @@
 	@Override
 	public List<Contract> getApprovedContractList() {
 		QueryWrapper<Contract> queryWrapper = new QueryWrapper<>();
-		queryWrapper.eq("status",1);
+		queryWrapper.eq("status",CommonStatusContant.CONTRACT_STATUS_APPROVED);
 		List<Contract> list = baseMapper.selectList(queryWrapper);
 		return list;
 	}
+
+	@Override
+	public R approvelInvalid(Long id) {
+		Contract contract = baseMapper.selectById(id);
+		contract.setStatus(CommonStatusContant.CONTRACT_STATUS_INVALID_PENDING_APPROVAL);
+		baseMapper.updateById(contract);
+		return R.ok();
+	}
+
+	@Override
+	public R invalidById(Long id) {
+		Contract contract = baseMapper.selectById(id);
+		contract.setStatus(CommonStatusContant.CONTRACT_STATUS_INVALID);
+		baseMapper.updateById(contract);
+		//鏍规嵁鍚堝悓鏌ユ壘鐩稿叧绉熻祦鍙拌处
+		QueryWrapper<DeviceLeasingLedger> queryWrapper = new QueryWrapper<>();
+		queryWrapper.eq("contract_id",id);
+		DeviceLeasingLedger ledger = leasingLedgerMapper.selectOne(queryWrapper);
+		if (ledger!=null){
+			//鏌ユ壘鐩稿叧鍙拌处鏄庣粏
+			QueryWrapper<DeviceLeasingLedgerItem> ledgerItemQueryWrapper = new QueryWrapper<>();
+			ledgerItemQueryWrapper.eq("ledger_id",ledger.getId());
+			List<DeviceLeasingLedgerItem> ledgerItemList = ledgerItemMapper.selectList(ledgerItemQueryWrapper);
+			if(ledgerItemList.size()>0){
+				//鏍规嵁鍙拌处鏄庣粏鏌ヨ璁惧搴撳瓨
+				ledgerItemList.stream().forEach(deviceLeasingLedgerItem -> {
+					QueryWrapper<DeviceInventory> inventoryQueryWrapper = new QueryWrapper<>();
+					inventoryQueryWrapper.eq("ledger_item_id",deviceLeasingLedgerItem.getId());
+					List<DeviceInventory> inventoryList = inventoryMapper.selectList(inventoryQueryWrapper);
+					//灏嗚澶囧簱瀛樼姸鎬佹洿涓哄彲鐢�
+					if (inventoryList.size()>0){
+						inventoryList.stream().forEach(deviceInventory -> {
+							deviceInventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_USABLE);
+							inventoryMapper.updateById(deviceInventory);
+							//搴撳瓨娴佹按
+							InventoryFlowWater flowWater = new InventoryFlowWater();
+							flowWater.setDeviceId(deviceInventory.getDeviceId());
+							Device device = deviceMapper.selectById(deviceInventory.getDeviceId());
+							if (device!=null){
+								flowWater.setClassId(device.getClassId());
+							}
+							flowWater.setInventoryId(deviceInventory.getId());
+							flowWater.setSerialNo(deviceInventory.getSerialNo());
+							flowWater.setOperateType(CommonStatusContant.DEVICE_INVENTORY_FLOW_WATER_IN);
+							flowWaterMapper.insert(flowWater);
+						});
+					}
+				});
+			}
+		}
+		return R.ok();
+	}
 }
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
index bb6f0fd..23da633 100644
--- 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
@@ -2,13 +2,17 @@
 
 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.Device;
 import com.by4cloud.platformx.device.entity.DeviceInventory;
 import com.by4cloud.platformx.device.entity.InventoryFlowWater;
 import com.by4cloud.platformx.device.entity.vo.InventoryDetailVo;
 import com.by4cloud.platformx.device.mapper.DeviceInventoryMapper;
+import com.by4cloud.platformx.device.mapper.DeviceMapper;
 import com.by4cloud.platformx.device.mapper.InventoryFlowWaterMapper;
 import com.by4cloud.platformx.device.service.DeviceInventoryService;
 import com.by4cloud.platformx.device.service.InventoryFlowWaterService;
+import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
 /**
@@ -18,10 +22,34 @@
  * @date 2025-03-13 10:22:39
  */
 @Service
+@AllArgsConstructor
 public class DeviceInventoryServiceImpl extends ServiceImpl<DeviceInventoryMapper, DeviceInventory> implements DeviceInventoryService {
+
+	private final InventoryFlowWaterMapper flowWaterMapper;
+	private final DeviceMapper deviceMapper;
+
 	@Override
 	public R getReleaseDetail(Long id) {
 		InventoryDetailVo detailVo = baseMapper.getReleaseDetail(id);
 		return R.ok(detailVo);
 	}
+
+	@Override
+	public R returnDevice(Long id) {
+		DeviceInventory inventory = baseMapper.selectById(id);
+		inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_USABLE);
+		baseMapper.updateById(inventory);
+		//搴撳瓨娴佹按璁板綍
+		InventoryFlowWater flowWater = new InventoryFlowWater();
+		flowWater.setDeviceId(inventory.getDeviceId());
+		Device device = deviceMapper.selectById(inventory.getDeviceId());
+		if (device!=null){
+			flowWater.setClassId(device.getClassId());
+		}
+		flowWater.setInventoryId(inventory.getId());
+		flowWater.setSerialNo(inventory.getSerialNo());
+		flowWater.setOperateType(CommonStatusContant.DEVICE_INVENTORY_FLOW_WATER_IN);
+		flowWaterMapper.insert(flowWater);
+		return R.ok();
+	}
 }
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceLeasingLedgerServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceLeasingLedgerServiceImpl.java
index e468074..18f8ff2 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceLeasingLedgerServiceImpl.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceLeasingLedgerServiceImpl.java
@@ -3,6 +3,7 @@
 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.mapper.*;
 import com.by4cloud.platformx.device.service.DeviceLeasingLedgerService;
@@ -94,7 +95,7 @@
 				inventoryQueryWrapper.eq("serial_no",serialNo);
 				DeviceInventory inventory = inventoryMapper.selectOne(inventoryQueryWrapper);
 				if (device!=null&&inventory!=null) {
-					inventory.setInventoryStatus(2);
+					inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_RENTING);
 					inventory.setLedgerItemId(item.getId());
 					//搴撳瓨璋冩暣
 					inventoryMapper.updateById(inventory);
@@ -107,11 +108,11 @@
 					flowWater.setClassId(device.getClassId());
 					//鏍规嵁鍚堝悓绫诲瀷 璐拱 鎵跨 娴佹按鎿嶄綔绫诲瀷涓哄叆搴撴搷浣�
 					if (contract!=null&&(contract.getType()==1||contract.getType()==2)){
-						flowWater.setOperateType(2);
+						flowWater.setOperateType(CommonStatusContant.DEVICE_INVENTORY_FLOW_WATER_IN);
 					}
 					//鏍规嵁鍚堝悓绫诲瀷 绉熻祦 娴佹按鎿嶄綔绫诲瀷涓哄嚭搴撴搷浣�
 					if (contract!=null&&contract.getType()==0){
-						flowWater.setOperateType(1);
+						flowWater.setOperateType(CommonStatusContant.DEVICE_INVENTORY_FLOW_WATER_OUT);
 					}
 					//璁板綍搴撳瓨娴佹按
 					inventoryFlowWaterMapper.insert(flowWater);
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 339476d..fd7a9c6 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
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.by4cloud.platformx.common.security.util.SecurityUtils;
+import com.by4cloud.platformx.device.constant.CommonStatusContant;
 import com.by4cloud.platformx.device.constant.MaxSizeContant;
 import com.by4cloud.platformx.device.dto.DevicePurchasePlanQueryDTO;
 import com.by4cloud.platformx.device.entity.DevicePurchasePlan;
@@ -39,7 +40,7 @@
 		devicePurchasePlan.setReleaseCompId(SecurityUtils.getUser().getCompId());
 		devicePurchasePlan.setReleaseId(SecurityUtils.getUser().getId());
 		devicePurchasePlan.setReleaseTime(new Date());
-		devicePurchasePlan.setStatus(0);
+		devicePurchasePlan.setStatus(CommonStatusContant.DEVICE_PURCHASE_STATUS_PANDING_APPROVAL);
 		baseMapper.insert(devicePurchasePlan);
 		if (devicePurchasePlan.getPlanItemList() != null&&devicePurchasePlan.getPlanItemList().size()>0) {
 			devicePurchasePlan.getPlanItemList().forEach(item->{
@@ -58,7 +59,7 @@
 	@Override
 	public boolean approved(Long id) {
 		DevicePurchasePlan plan = baseMapper.selectById(id);
-		plan.setStatus(1);
+		plan.setStatus(CommonStatusContant.DEVICE_PURCHASE_STATUS_APPROVED);
 		baseMapper.updateById(plan);
 		return true;
 	}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceRepairServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceRepairServiceImpl.java
index b4d5526..9f287e0 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceRepairServiceImpl.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceRepairServiceImpl.java
@@ -4,6 +4,7 @@
 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.device.constant.CommonStatusContant;
 import com.by4cloud.platformx.device.constant.MaxSizeContant;
 import com.by4cloud.platformx.device.dto.DeviceRepairQueryDTO;
 import com.by4cloud.platformx.device.entity.DeviceInventory;
@@ -33,10 +34,10 @@
 	@Override
 	public R approved(Long id) {
 		DeviceRepair repair = baseMapper.selectById(id);
-		repair.setStatus(2);
+		repair.setStatus(CommonStatusContant.DEVICE_REPAIR_STATUS_REPAIRING);
 		baseMapper.updateById(repair);
 		DeviceInventory inventory = inventoryMapper.selectById(repair.getInventoryId());
-		inventory.setInventoryStatus(3);
+		inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_REPAIRING);
 		inventoryMapper.updateById(inventory);
 		return R.ok();
 	}
@@ -44,10 +45,10 @@
 	@Override
 	public R complete(Long id) {
 		DeviceRepair repair = baseMapper.selectById(id);
-		repair.setStatus(3);
+		repair.setStatus(CommonStatusContant.DEVICE_REPAIR_STATUS_COMPLETE);
 		baseMapper.updateById(repair);
 		DeviceInventory inventory = inventoryMapper.selectById(repair.getInventoryId());
-		inventory.setInventoryStatus(1);
+		inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_USABLE);
 		inventoryMapper.updateById(inventory);
 		return R.ok();
 	}
@@ -64,10 +65,10 @@
 		workOrder.setRepairId(id);
 		workOrder.setWoCode(maxSizeService.nextNo(MaxSizeContant.DEVICE_PURCHASE_CODE));
 		workOrder.setWoDesc(repair.getRepairDesc());
-		workOrder.setWoType(1);
-		workOrder.setWoStatus(1);
+		workOrder.setWoType(CommonStatusContant.WORK_ORDER_TYPE_REPAIR);
+		workOrder.setWoStatus(CommonStatusContant.WORK_ORDER_STATUS_ALLOCATED);
 		workOrderMapper.insert(workOrder);
-		repair.setWoFlag(1);
+		repair.setWoFlag(CommonStatusContant.DEVICE_REPAIR_FLAG_Y);
 		baseMapper.updateById(repair);
 		return R.ok();
 	}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceScrapServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceScrapServiceImpl.java
index b6777a0..c72ff40 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceScrapServiceImpl.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceScrapServiceImpl.java
@@ -4,6 +4,7 @@
 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.device.constant.CommonStatusContant;
 import com.by4cloud.platformx.device.dto.DeviceRepairQueryDTO;
 import com.by4cloud.platformx.device.entity.DeviceInventory;
 import com.by4cloud.platformx.device.entity.DeviceRepair;
@@ -28,10 +29,10 @@
 	@Override
 	public R approved(Long id) {
 		DeviceScrap scrap = baseMapper.selectById(id);
-		scrap.setStatus(2);
+		scrap.setStatus(CommonStatusContant.DEVICE_SCRAP_STATUS_COMPLETE);
 		baseMapper.updateById(scrap);
 		DeviceInventory inventory = inventoryMapper.selectById(scrap.getInventoryId());
-		inventory.setInventoryStatus(4);
+		inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_SCRAPING);
 		inventoryMapper.updateById(inventory);
 		return R.ok();
 	}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InspectionPlanServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InspectionPlanServiceImpl.java
index 4b55f15..7770917 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InspectionPlanServiceImpl.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InspectionPlanServiceImpl.java
@@ -6,6 +6,7 @@
 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.device.constant.CommonStatusContant;
 import com.by4cloud.platformx.device.dto.InspectionPlanQueryDTO;
 import com.by4cloud.platformx.device.entity.*;
 import com.by4cloud.platformx.device.mapper.*;
@@ -63,10 +64,10 @@
 		}
 
 		//鏍规嵁鏄惁鐢熸垚浠诲姟鏍囪瘑鐢熸垚浠诲姟
-		if (inspectionPlan.getTaskFlag()==1){
+		if (inspectionPlan.getTaskFlag()==CommonStatusContant.INSPECTION_PLAN_FLAG_GEN_Y){
 			InspectionTask task = BeanUtil.copyProperties(inspectionPlan, InspectionTask.class);
 			task.setId(null);
-			task.setTaskStatus(0);
+			task.setTaskStatus(CommonStatusContant.INSPECTION_TASK_NO_STARTED);
 			task.setTaskName(inspectionPlan.getPlanName()+"鐨勪换鍔�");
 			task.setPlanId(inspectionPlan.getId());
 			taskMapper.insert(task);
@@ -171,10 +172,10 @@
 		}
 
 		//鏍规嵁鏄惁鐢熸垚浠诲姟鏍囪瘑鐢熸垚浠诲姟
-		if (inspectionPlan.getTaskFlag()==1){
+		if (inspectionPlan.getTaskFlag()==CommonStatusContant.INSPECTION_PLAN_FLAG_GEN_Y){
 			InspectionTask task = BeanUtil.copyProperties(inspectionPlan, InspectionTask.class);
 			task.setId(null);
-			task.setTaskStatus(0);
+			task.setTaskStatus(CommonStatusContant.INSPECTION_TASK_NO_STARTED);
 			task.setTaskName(inspectionPlan.getPlanName()+"鐨勪换鍔�");
 			task.setPlanId(inspectionPlan.getId());
 			taskMapper.insert(task);
@@ -212,7 +213,7 @@
 		InspectionPlan plan = getByIdNew(id);
 		InspectionTask task = BeanUtil.copyProperties(plan, InspectionTask.class);
 		task.setId(null);
-		task.setTaskStatus(0);
+		task.setTaskStatus(CommonStatusContant.INSPECTION_TASK_NO_STARTED);
 		task.setTaskName(plan.getPlanName()+"鐨勪换鍔�");
 		task.setPlanId(plan.getId());
 		taskMapper.insert(task);
@@ -245,7 +246,7 @@
 		}
 
 		//璺熸柊璁″垝鏍囪瘑
-		plan.setTaskFlag(1);
+		plan.setTaskFlag(CommonStatusContant.INSPECTION_PLAN_FLAG_GEN_Y);
 		baseMapper.updateById(plan);
 		return R.ok();
 	}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InspectionTaskServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InspectionTaskServiceImpl.java
index 631c268..de1dcea 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InspectionTaskServiceImpl.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InspectionTaskServiceImpl.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.by4cloud.platformx.admin.api.entity.SysUser;
+import com.by4cloud.platformx.device.constant.CommonStatusContant;
 import com.by4cloud.platformx.device.dto.InspectionTaskQueryDTO;
 import com.by4cloud.platformx.device.entity.InspectionTask;
 import com.by4cloud.platformx.device.entity.InspectionTaskItem;
@@ -48,7 +49,7 @@
 		inspectionTask.getItemList().stream().forEach(item->{
 			itemMapper.updateById(item);
 		});
-		inspectionTask.setTaskStatus(2);
+		inspectionTask.setTaskStatus(CommonStatusContant.INSPECTION_TASK_COMPLETE);
 		baseMapper.updateById(inspectionTask);
 		return true;
 	}
@@ -56,7 +57,7 @@
 	@Override
 	public boolean taskStartById(Long id) {
 		InspectionTask task = baseMapper.selectById(id);
-		task.setTaskStatus(1);
+		task.setTaskStatus(CommonStatusContant.INSPECTION_TASK_DURING_INSPECTION);
 		baseMapper.updateById(task);
 		return true;
 	}
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
index f9bcaa3..beaf1ac 100644
--- 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
@@ -5,6 +5,7 @@
 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.device.constant.CommonStatusContant;
 import com.by4cloud.platformx.device.constant.MaxSizeContant;
 import com.by4cloud.platformx.device.dto.ReceivingNoteQueryDTO;
 import com.by4cloud.platformx.device.entity.*;
@@ -118,12 +119,12 @@
 							inventory.setName(device.getName());
 							inventory.setSerialNo(serialNo);
 							if (contract!=null&&(contract.getType()==1||contract.getType()==2)){
-								inventory.setSource(1);
-								inventory.setInventoryStatus(1);
+								inventory.setSource(CommonStatusContant.DEVICE_INVENTORY_RESOURCE_WAREHOUSE);
+								inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_USABLE);
 							}
 							if (contract!=null&&contract.getType()==0){
-								inventory.setSource(1);
-								inventory.setInventoryStatus(2);
+								inventory.setSource(CommonStatusContant.DEVICE_INVENTORY_RESOURCE_WAREHOUSE);
+								inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_RENTING);
 							}
 							inventoryMapper.insert(inventory);
 							//璁惧搴撳瓨娴佹按鍚屾鏂板
@@ -136,7 +137,7 @@
 								flowWater.setOperateType(2);
 							}
 							if (contract!=null&&contract.getType()==0){
-								flowWater.setOperateType(1);
+								flowWater.setOperateType(CommonStatusContant.DEVICE_INVENTORY_FLOW_WATER_OUT);
 							}
 							inventoryFlowWaterMapper.insert(flowWater);
 						}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ResidualRecycleServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ResidualRecycleServiceImpl.java
new file mode 100644
index 0000000..929d167
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ResidualRecycleServiceImpl.java
@@ -0,0 +1,56 @@
+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.DeviceInventory;
+import com.by4cloud.platformx.device.entity.ResidualRecycle;
+import com.by4cloud.platformx.device.mapper.DeviceInventoryMapper;
+import com.by4cloud.platformx.device.mapper.ResidualRecycleMapper;
+import com.by4cloud.platformx.device.service.ResidualRecycleService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+/**
+ * 娈嬩綋鍥炴敹
+ *
+ * @author syt
+ * @date 2025-04-23 10:28:34
+ */
+@Service
+@AllArgsConstructor
+public class ResidualRecycleServiceImpl extends ServiceImpl<ResidualRecycleMapper, ResidualRecycle> implements ResidualRecycleService {
+
+	private final DeviceInventoryMapper inventoryMapper;
+
+	@Override
+	public R approvedById(Long id) {
+		ResidualRecycle residualRecycle = baseMapper.selectById(id);
+		residualRecycle.setStatus(CommonStatusContant.RESIDUAL_RECYCLE_STATUS_HANDLING);
+		baseMapper.updateById(residualRecycle);
+		return R.ok();
+	}
+
+	@Override
+	public R updateByIdNew(ResidualRecycle residualRecycle) {
+		if (residualRecycle.getStatus()==CommonStatusContant.RESIDUAL_RECYCLE_STATUS_HANDLING){
+			residualRecycle.setStatus(CommonStatusContant.RESIDUAL_RECYCLE_STATUS_COMPLETE);
+			QueryWrapper<DeviceInventory> queryWrapper = new QueryWrapper<>();
+			queryWrapper.eq("device_id",residualRecycle.getDeviceId());
+			queryWrapper.eq("serial_no",residualRecycle.getSerialNo());
+			DeviceInventory inventory = inventoryMapper.selectOne(queryWrapper);
+			if (inventory!=null){
+				if (residualRecycle.getHandleMethod()==CommonStatusContant.RESIDUAL_RECYCLE_METHOD_DISASSEMBE_RECYCLE||
+						residualRecycle.getHandleMethod()==CommonStatusContant.RESIDUAL_RECYCLE_METHOD_TRANSFER_PROFESSIONAL_INSTITUTION){
+					inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_RECYCLE);
+					inventoryMapper.updateById(inventory);
+				}else if (residualRecycle.getHandleMethod()==CommonStatusContant.RESIDUAL_RECYCLE_METHOD_CYCLE_RENTING){
+					inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_USABLE);
+					inventoryMapper.updateById(inventory);
+				}
+			}
+		}
+		baseMapper.updateById(residualRecycle);
+		return R.ok();
+	}
+}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/WorkOrderServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/WorkOrderServiceImpl.java
index 2f05f68..dff8d95 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/WorkOrderServiceImpl.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/WorkOrderServiceImpl.java
@@ -1,9 +1,16 @@
 package com.by4cloud.platformx.device.service.impl;
 
 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.DeviceInventory;
+import com.by4cloud.platformx.device.entity.DeviceRepair;
 import com.by4cloud.platformx.device.entity.WorkOrder;
+import com.by4cloud.platformx.device.mapper.DeviceInventoryMapper;
+import com.by4cloud.platformx.device.mapper.DeviceRepairMapper;
 import com.by4cloud.platformx.device.mapper.WorkOrderMapper;
 import com.by4cloud.platformx.device.service.WorkOrderService;
+import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 /**
  * 宸ュ崟
@@ -12,5 +19,35 @@
  * @date 2025-04-22 16:01:37
  */
 @Service
+@AllArgsConstructor
 public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder> implements WorkOrderService {
+
+	private final DeviceRepairMapper repairMapper;
+	private final DeviceInventoryMapper inventoryMapper;
+
+	@Override
+	public R updateByIdNew(WorkOrder workOrder) {
+		//宸ュ崟澶勭悊
+		if (workOrder.getWoStatus()==2){
+			workOrder.setWoStatus(CommonStatusContant.WORK_ORDER_STATUS_CLOSING);
+		}
+		//浜哄憳鍒嗛厤
+		if (workOrder.getWoStatus()==1&&workOrder.getHandleUserId()!=null){
+			workOrder.setWoStatus(CommonStatusContant.WORK_ORDER_STATUS_HANDLING);
+		}
+
+		baseMapper.updateById(workOrder);
+		//鏇存柊缁翠慨鐘舵��
+		if (workOrder.getRepairId()!=null){
+			DeviceRepair repair = repairMapper.selectById(workOrder.getRepairId());
+			repair.setStatus(CommonStatusContant.DEVICE_REPAIR_STATUS_COMPLETE);
+			repairMapper.updateById(repair);
+			//鏇存柊搴撳瓨鐘舵��
+			DeviceInventory inventory = inventoryMapper.selectById(repair.getInventoryId());
+			inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_USABLE);
+			inventoryMapper.updateById(inventory);
+		}
+
+		return R.ok();
+	}
 }
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/resources/mapper/ResidualRecycleMapper.xml b/platformx-device-biz/src/main/resources/mapper/ResidualRecycleMapper.xml
new file mode 100644
index 0000000..6943087
--- /dev/null
+++ b/platformx-device-biz/src/main/resources/mapper/ResidualRecycleMapper.xml
@@ -0,0 +1,30 @@
+<?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.ResidualRecycleMapper">
+
+  <resultMap id="residualRecycleMap" type="com.by4cloud.platformx.device.entity.ResidualRecycle">
+        <id property="id" column="id"/>
+        <result property="compId" column="comp_id"/>
+        <result property="accumulatedDepreciation" column="accumulated_depreciation"/>
+        <result property="actualResidual" column="actual_residual"/>
+        <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="handleMethod" column="handle_method"/>
+        <result property="handleOrgan" column="handle_organ"/>
+        <result property="initialValue" column="initial_value"/>
+        <result property="meteringUnit" column="metering_unit"/>
+        <result property="registrationDate" column="registration_date"/>
+        <result property="residualCalculation" column="residual_calculation"/>
+        <result property="serialNo" column="serial_no"/>
+        <result property="status" column="status"/>
+        <result property="verificationDate" column="verification_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>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.1