From f32de021e7af1627b6d18e681b46dbc0a5b108f8 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期二, 21 四月 2026 13:33:04 +0800
Subject: [PATCH] feat: 设备台账与工序进行绑定

---
 src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java    |    2 
 src/main/java/com/ruoyi/device/pojo/DeviceLedger.java                    |    7 +++
 src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java |   30 ++++++++++++++
 src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java                  |    6 +++
 src/main/resources/mybatis/mybatis-config.xml                            |   10 ++--
 src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java         |    2 +
 src/main/resources/mapper/device/DeviceLedgerMapper.xml                  |   18 +++++++--
 doc/河南鹤壁天沐钢化玻璃厂.sql                                                      |    5 ++
 8 files changed, 68 insertions(+), 12 deletions(-)

diff --git "a/doc/\346\262\263\345\215\227\351\271\244\345\243\201\345\244\251\346\262\220\351\222\242\345\214\226\347\216\273\347\222\203\345\216\202.sql" "b/doc/\346\262\263\345\215\227\351\271\244\345\243\201\345\244\251\346\262\220\351\222\242\345\214\226\347\216\273\347\222\203\345\216\202.sql"
index 65026b2..3becd82 100644
--- "a/doc/\346\262\263\345\215\227\351\271\244\345\243\201\345\244\251\346\262\220\351\222\242\345\214\226\347\216\273\347\222\203\345\216\202.sql"
+++ "b/doc/\346\262\263\345\215\227\351\271\244\345\243\201\345\244\251\346\262\220\351\222\242\345\214\226\347\216\273\347\222\203\345\216\202.sql"
@@ -154,4 +154,7 @@
     MODIFY COLUMN `heavy_box` decimal(20, 4) NULL DEFAULT NULL COMMENT '閲嶇' AFTER `perimeter`;
 
 ALTER TABLE `product-inventory-management-hbtmblc`.`quality_unqualified`
-    ADD COLUMN `product_model_id` bigint NULL COMMENT '浜у搧瑙勬牸ID' AFTER `inspect_id`;
\ No newline at end of file
+    ADD COLUMN `product_model_id` bigint NULL COMMENT '浜у搧瑙勬牸ID' AFTER `inspect_id`;
+
+ALTER TABLE `product-inventory-management-hbtmblc`.`device_ledger`
+    ADD COLUMN `product_process_id` bigint NULL COMMENT '宸ュ簭ID' AFTER `type`;
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java b/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
index f79d4d2..c206a2a 100644
--- a/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
+++ b/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
@@ -54,7 +54,7 @@
     @ApiOperation("鏍规嵁id鏌ヨ璁惧鍙拌处")
     @GetMapping("/{id}")
     public AjaxResult detail(@PathVariable Long id) {
-        return AjaxResult.success(deviceLedgerService.getById(id));
+        return AjaxResult.success(deviceLedgerService.getDetailById(id));
     }
 
     @PutMapping ()
diff --git a/src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java b/src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java
index c3ad1b1..db112c6 100644
--- a/src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java
+++ b/src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java
@@ -147,4 +147,10 @@
 
     @ApiModelProperty("璁惧绫诲瀷")
     private String type;
+
+    @ApiModelProperty("宸ュ簭ID")
+    private Long productProcessId;
+
+    @ApiModelProperty("宸ュ簭鍚嶇О")
+    private String productProcessName;
 }
diff --git a/src/main/java/com/ruoyi/device/pojo/DeviceLedger.java b/src/main/java/com/ruoyi/device/pojo/DeviceLedger.java
index f8c9e53..75de0d3 100644
--- a/src/main/java/com/ruoyi/device/pojo/DeviceLedger.java
+++ b/src/main/java/com/ruoyi/device/pojo/DeviceLedger.java
@@ -159,4 +159,11 @@
 
     @ApiModelProperty("璁惧绫诲瀷")
     private String type;
+
+    @ApiModelProperty("宸ュ簭ID")
+    private Long productProcessId;
+
+    @TableField(exist = false)
+    @ApiModelProperty("宸ュ簭鍚嶇О")
+    private String productProcessName;
 }
diff --git a/src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java b/src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java
index 0d6493e..9295799 100644
--- a/src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java
+++ b/src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java
@@ -18,6 +18,8 @@
 
     AjaxResult updateDeviceLedger(DeviceLedger deviceLedger);
 
+    DeviceLedger getDetailById(Long id);
+
     void export(HttpServletResponse response, Long[] ids);
 
     Boolean importData(MultipartFile file) throws IOException;
diff --git a/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
index b614149..f9ed796 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
@@ -12,6 +12,8 @@
 import com.ruoyi.device.mapper.DeviceLedgerMapper;
 import com.ruoyi.device.pojo.DeviceLedger;
 import com.ruoyi.device.service.IDeviceLedgerService;
+import com.ruoyi.production.mapper.ProductProcessMapper;
+import com.ruoyi.production.pojo.ProductProcess;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.mapper.SysUserMapper;
@@ -36,15 +38,21 @@
     private DeviceLedgerMapper deviceLedgerMapper;
     @Autowired
     private SysUserMapper sysUserMapper;
+    @Autowired
+    private ProductProcessMapper productProcessMapper;
 
     @Override
-    public IPage<DeviceLedgerDto> queryPage(Page page, DeviceLedgerDto deviceLedger) {
+    public IPage<DeviceLedgerDto> queryPage(Page<?> page, DeviceLedgerDto deviceLedger) {
 
         return deviceLedgerMapper.queryPage(page, deviceLedger);
     }
 
     @Override
     public AjaxResult saveDeviceLedger(DeviceLedger deviceLedger) {
+        AjaxResult processCheckResult = validateProductProcess(deviceLedger.getProductProcessId());
+        if (processCheckResult != null) {
+            return processCheckResult;
+        }
         LambdaQueryWrapper<DeviceLedger> deviceLedgerLambdaQueryWrapper = new LambdaQueryWrapper<>();
         deviceLedgerLambdaQueryWrapper.eq(DeviceLedger::getDeviceName,deviceLedger.getDeviceName());
         if (this.count(deviceLedgerLambdaQueryWrapper) > 0) {
@@ -59,6 +67,10 @@
 
     @Override
     public AjaxResult updateDeviceLedger(DeviceLedger deviceLedger) {
+        AjaxResult processCheckResult = validateProductProcess(deviceLedger.getProductProcessId());
+        if (processCheckResult != null) {
+            return processCheckResult;
+        }
         if (this.updateById(deviceLedger)) {
             return AjaxResult.success();
         }
@@ -66,6 +78,22 @@
     }
 
     @Override
+    public DeviceLedger getDetailById(Long id) {
+        return deviceLedgerMapper.selectById1(id);
+    }
+
+    private AjaxResult validateProductProcess(Long productProcessId) {
+        if (productProcessId == null) {
+            return null;
+        }
+        ProductProcess productProcess = productProcessMapper.selectById(productProcessId);
+        if (productProcess == null) {
+            return AjaxResult.error("宸ュ簭涓嶅瓨鍦紝璇烽噸鏂伴�夋嫨");
+        }
+        return null;
+    }
+
+    @Override
     public void export(HttpServletResponse response, Long[] ids) {
 
         if (ids == null || ids.length == 0) {
diff --git a/src/main/resources/mapper/device/DeviceLedgerMapper.xml b/src/main/resources/mapper/device/DeviceLedgerMapper.xml
index c980120..c4a9616 100644
--- a/src/main/resources/mapper/device/DeviceLedgerMapper.xml
+++ b/src/main/resources/mapper/device/DeviceLedgerMapper.xml
@@ -31,9 +31,12 @@
         dl.tenant_id,
         dl.is_depr,
         dl.annual_depreciation_amount,
-        dl.type
+        dl.type,
+        dl.product_process_id,
+        pp.name AS productProcessName
         FROM device_ledger dl
         left join sys_user su on dl.create_user = su.user_id
+        left join product_process pp on dl.product_process_id = pp.id
         <where>
             <!-- 璁惧鍚嶇О -->
             <if test="deviceLedger.deviceName != null and deviceLedger.deviceName != ''">
@@ -43,6 +46,11 @@
             <!-- 瑙勬牸鍨嬪彿 -->
             <if test="deviceLedger.deviceModel != null and deviceLedger.deviceModel != ''">
                 AND device_model LIKE CONCAT('%', #{deviceLedger.deviceModel}, '%')
+            </if>
+
+            <!-- 宸ュ簭鍚嶇О -->
+            <if test="deviceLedger.productProcessName != null and deviceLedger.productProcessName != ''">
+                AND pp.name LIKE CONCAT('%', #{deviceLedger.productProcessName}, '%')
             </if>
 
             <!-- 渚涘簲鍟嗗悕绉� -->
@@ -83,9 +91,11 @@
 
     </select>
     <select id="selectById1" resultType="com.ruoyi.device.pojo.DeviceLedger">
-        select *
-        from device_ledger
-        where id = #{id}
+        select dl.*,
+               pp.name as productProcessName
+        from device_ledger dl
+                 left join product_process pp on dl.product_process_id = pp.id
+        where dl.id = #{id}
     </select>
     <select id="getDeviceTypeDistributionByYear"
             resultType="com.ruoyi.account.dto.DeviceTypeDetail"
diff --git a/src/main/resources/mybatis/mybatis-config.xml b/src/main/resources/mybatis/mybatis-config.xml
index fac793a..2552373 100644
--- a/src/main/resources/mybatis/mybatis-config.xml
+++ b/src/main/resources/mybatis/mybatis-config.xml
@@ -6,14 +6,14 @@
     <!-- 鍏ㄥ眬鍙傛暟 -->
     <settings>
         <!-- 浣垮叏灞�鐨勬槧灏勫櫒鍚敤鎴栫鐢ㄧ紦瀛� -->
-        <setting name="cacheEnabled"             value="true"   />
+        <setting name="cacheEnabled" value="true"/>
         <!-- 鍏佽JDBC 鏀寔鑷姩鐢熸垚涓婚敭 -->
-        <setting name="useGeneratedKeys"         value="true"   />
+        <setting name="useGeneratedKeys" value="true"/>
         <!-- 閰嶇疆榛樿鐨勬墽琛屽櫒.SIMPLE灏辨槸鏅�氭墽琛屽櫒;REUSE鎵ц鍣ㄤ細閲嶇敤棰勫鐞嗚鍙�(prepared statements);BATCH鎵ц鍣ㄥ皢閲嶇敤璇彞骞舵墽琛屾壒閲忔洿鏂� -->
-        <setting name="defaultExecutorType"      value="SIMPLE" />
+        <setting name="defaultExecutorType" value="SIMPLE"/>
         <!-- 鎸囧畾 MyBatis 鎵�鐢ㄦ棩蹇楃殑鍏蜂綋瀹炵幇 -->
-        <setting name="logImpl"                  value="SLF4J"  />
-        <!--        <setting name="logImpl"                  value="org.apache.ibatis.logging.stdout.StdOutImpl"  />-->
+        <!--        <setting name="logImpl"                  value="SLF4J"  />-->
+        <setting name="logImpl" value="org.apache.ibatis.logging.stdout.StdOutImpl"/>
         <!-- 浣跨敤椹煎嘲鍛藉悕娉曡浆鎹㈠瓧娈� -->
         <!-- <setting name="mapUnderscoreToCamelCase" value="true"/> -->
     </settings>

--
Gitblit v1.9.3