diff --git a/docs/prototype_design/design/2026-08-19-pda-sub-roll-weight-maintenance-design.html b/docs/prototype_design/design/2026-08-19-pda-sub-roll-weight-maintenance-design.html
new file mode 100644
index 00000000..bcc62793
--- /dev/null
+++ b/docs/prototype_design/design/2026-08-19-pda-sub-roll-weight-maintenance-design.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ 子卷重量维护 - PDA 原型
+
+
+
+
+
+
+
diff --git a/nl-module-lms/nl-module-lms-api/src/main/java/cn/code/nl/module/lms/enums/ErrorCodeConstants.java b/nl-module-lms/nl-module-lms-api/src/main/java/cn/code/nl/module/lms/enums/ErrorCodeConstants.java
index ba08f456..6a05d9f7 100644
--- a/nl-module-lms/nl-module-lms-api/src/main/java/cn/code/nl/module/lms/enums/ErrorCodeConstants.java
+++ b/nl-module-lms/nl-module-lms-api/src/main/java/cn/code/nl/module/lms/enums/ErrorCodeConstants.java
@@ -61,6 +61,7 @@ public interface ErrorCodeConstants {
ErrorCode POINT_EXECUTE_REFUGE = new ErrorCode(200008, "{}的点位不允许操作{}");
ErrorCode PACKAGE_POINT_UNQUALIFIED_EMPTY_NOT_EXISTS = new ErrorCode(200009, "没有可用的不合格空位");
ErrorCode PACKAGE_POINT_CHECK_FAILED_TASK_CREATE_FAILED = new ErrorCode(200010, "创建质检不合格AGV任务失败");
+ ErrorCode PACKAGE_SLITTING_PLAN_NOT_EXISTS = new ErrorCode(200011, "未查询到对应的子卷信息");
// ========== 子卷包装关系 ==========
ErrorCode SUB_PACKAGE_RELATION_NOT_EXISTS = new ErrorCode(300001, "子卷包装关系不存在");
diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/PackagePdaController.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/boxpackage/PackagePdaController.java
similarity index 71%
rename from nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/PackagePdaController.java
rename to nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/boxpackage/PackagePdaController.java
index 1e638599..80337740 100644
--- a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/PackagePdaController.java
+++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/boxpackage/PackagePdaController.java
@@ -1,9 +1,10 @@
-package cn.code.nl.module.lms.controller.pda;
+package cn.code.nl.module.lms.controller.pda.boxpackage;
import cn.code.nl.framework.common.pojo.CommonResult;
-import cn.code.nl.module.lms.controller.pda.vo.ManaQualityCheckPdaReqVO;
-import cn.code.nl.module.lms.controller.pda.vo.PackagePointPdaRespVO;
-import cn.code.nl.module.lms.controller.pda.vo.QueryPackagePointInfoReqVO;
+import cn.code.nl.module.lms.controller.pda.boxpackage.vo.ManaQualityCheckPdaReqVO;
+import cn.code.nl.module.lms.controller.pda.boxpackage.vo.PackagePointPdaRespVO;
+import cn.code.nl.module.lms.controller.pda.boxpackage.vo.QueryPackagePointInfoReqVO;
+import cn.code.nl.module.lms.controller.pda.boxpackage.vo.UpdateWeightPdaReqVO;
import cn.code.nl.module.lms.service.packagepoint.PackagePdaService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -33,12 +34,6 @@ public class PackagePdaController {
@Resource
private PackagePdaService packagePdaService;
- /**
- * 根据点位编码查询装箱区点位信息
- *
- * @param manaQualityCheckPdaReqVO 查询参数
- * @return 点位编码、子卷号和载具号
- */
@PostMapping("/query-point-info")
@Operation(summary = "查询点位信息")
@PermitAll
@@ -48,8 +43,6 @@ public class PackagePdaController {
return success(packagePoint);
}
-
-
@PostMapping("/quality-check")
@Operation(summary = "人工质检")
@PermitAll
@@ -58,4 +51,12 @@ public class PackagePdaController {
return success("操作成功!");
}
+ @PostMapping("/update-weight")
+ @Operation(summary = "维护重量")
+ @PermitAll
+ public CommonResult executeUpdateWeight(@Valid @RequestBody UpdateWeightPdaReqVO weightPdaReqVO) {
+ packagePdaService.executeUpdateWeight(weightPdaReqVO);
+ return success("操作成功!");
+ }
+
}
diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/vo/ManaQualityCheckPdaReqVO.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/boxpackage/vo/ManaQualityCheckPdaReqVO.java
similarity index 90%
rename from nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/vo/ManaQualityCheckPdaReqVO.java
rename to nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/boxpackage/vo/ManaQualityCheckPdaReqVO.java
index abf2862f..284ec8a7 100644
--- a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/vo/ManaQualityCheckPdaReqVO.java
+++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/boxpackage/vo/ManaQualityCheckPdaReqVO.java
@@ -1,4 +1,4 @@
-package cn.code.nl.module.lms.controller.pda.vo;
+package cn.code.nl.module.lms.controller.pda.boxpackage.vo;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/vo/PackagePointPdaRespVO.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/boxpackage/vo/PackagePointPdaRespVO.java
similarity index 93%
rename from nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/vo/PackagePointPdaRespVO.java
rename to nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/boxpackage/vo/PackagePointPdaRespVO.java
index 969c1144..efe3e54e 100644
--- a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/vo/PackagePointPdaRespVO.java
+++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/boxpackage/vo/PackagePointPdaRespVO.java
@@ -1,4 +1,4 @@
-package cn.code.nl.module.lms.controller.pda.vo;
+package cn.code.nl.module.lms.controller.pda.boxpackage.vo;
import lombok.Data;
diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/vo/QueryPackagePointInfoReqVO.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/boxpackage/vo/QueryPackagePointInfoReqVO.java
similarity index 82%
rename from nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/vo/QueryPackagePointInfoReqVO.java
rename to nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/boxpackage/vo/QueryPackagePointInfoReqVO.java
index ea23e8a3..fa88d176 100644
--- a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/vo/QueryPackagePointInfoReqVO.java
+++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/boxpackage/vo/QueryPackagePointInfoReqVO.java
@@ -1,4 +1,4 @@
-package cn.code.nl.module.lms.controller.pda.vo;
+package cn.code.nl.module.lms.controller.pda.boxpackage.vo;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/boxpackage/vo/UpdateWeightPdaReqVO.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/boxpackage/vo/UpdateWeightPdaReqVO.java
new file mode 100644
index 00000000..1097cde9
--- /dev/null
+++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/boxpackage/vo/UpdateWeightPdaReqVO.java
@@ -0,0 +1,27 @@
+package cn.code.nl.module.lms.controller.pda.boxpackage.vo;
+
+import jakarta.validation.constraints.NotEmpty;
+import lombok.Data;
+
+/**
+ *
+ * 重量维护
+ * @Author: liyongde
+ * @Date: 2026/8/19 9:36
+ */
+@Data
+public class UpdateWeightPdaReqVO {
+
+ /** 点位编码 */
+ private String pointCode;
+
+ /** 子卷号 */
+ @NotEmpty(message = "子卷号不能为空")
+ private String containerName;
+
+ /** 子卷重量 */
+ private String rollWeight;
+
+ /** 管芯重量 */
+ private String tubeWeight;
+}
diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/package-info.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/package-info.java
new file mode 100644
index 00000000..cb4f02a0
--- /dev/null
+++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/package-info.java
@@ -0,0 +1,6 @@
+/**
+ *
+ * @Author: liyongde
+ * @Date: 2026/8/19 9:32
+ */
+package cn.code.nl.module.lms.controller.pda;
\ No newline at end of file
diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/packagepoint/PackagePdaService.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/packagepoint/PackagePdaService.java
index de7da0ad..4f4b53b5 100644
--- a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/packagepoint/PackagePdaService.java
+++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/packagepoint/PackagePdaService.java
@@ -1,7 +1,8 @@
package cn.code.nl.module.lms.service.packagepoint;
-import cn.code.nl.module.lms.controller.pda.vo.ManaQualityCheckPdaReqVO;
-import cn.code.nl.module.lms.controller.pda.vo.PackagePointPdaRespVO;
+import cn.code.nl.module.lms.controller.pda.boxpackage.vo.ManaQualityCheckPdaReqVO;
+import cn.code.nl.module.lms.controller.pda.boxpackage.vo.PackagePointPdaRespVO;
+import cn.code.nl.module.lms.controller.pda.boxpackage.vo.UpdateWeightPdaReqVO;
import jakarta.validation.Valid;
/**
@@ -24,4 +25,10 @@ public interface PackagePdaService {
* @param manaQualityCheckPdaReqVO
*/
void executeManualQualityCheck(@Valid ManaQualityCheckPdaReqVO manaQualityCheckPdaReqVO);
+
+ /**
+ * 维护重量
+ * @param weightPdaReqVO
+ */
+ void executeUpdateWeight(@Valid UpdateWeightPdaReqVO weightPdaReqVO);
}
diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/packagepoint/PackagePdaServiceImpl.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/packagepoint/PackagePdaServiceImpl.java
index 7c2d2fee..4db976d3 100644
--- a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/packagepoint/PackagePdaServiceImpl.java
+++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/packagepoint/PackagePdaServiceImpl.java
@@ -2,8 +2,10 @@ package cn.code.nl.module.lms.service.packagepoint;
import cn.code.nl.framework.common.exception.ServiceException;
import cn.code.nl.framework.common.pojo.CommonResult;
-import cn.code.nl.module.lms.controller.pda.vo.ManaQualityCheckPdaReqVO;
-import cn.code.nl.module.lms.controller.pda.vo.PackagePointPdaRespVO;
+import cn.code.nl.framework.security.core.util.SecurityFrameworkUtils;
+import cn.code.nl.module.lms.controller.pda.boxpackage.vo.ManaQualityCheckPdaReqVO;
+import cn.code.nl.module.lms.controller.pda.boxpackage.vo.PackagePointPdaRespVO;
+import cn.code.nl.module.lms.controller.pda.boxpackage.vo.UpdateWeightPdaReqVO;
import cn.code.nl.module.lms.dal.dataobject.packagepoint.PackagePointDO;
import cn.code.nl.module.lms.dal.dataobject.slittingproductionplan.SlittingproductionplanDO;
import cn.code.nl.module.lms.dal.mysql.packagepoint.PackagePointMapper;
@@ -24,6 +26,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
+import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
@@ -44,7 +47,7 @@ public class PackagePdaServiceImpl implements PackagePdaService {
private static final String NO_TASK = "无任务";
/** 无重量信息 */
- private static final String NO_WEIGHT_INFO = "无信息";
+ private static final String NO_WEIGHT_INFO = "0.0";
/** 未绑定子卷信息 */
private static final String UNBOUND_CONTAINER_INFO = "未绑定子卷信息";
@@ -175,6 +178,35 @@ public class PackagePdaServiceImpl implements PackagePdaService {
}
}
+ @Override
+ public void executeUpdateWeight(UpdateWeightPdaReqVO weightPdaReqVO) {
+ log.info("用户给 {} 修改重量 {}", SecurityFrameworkUtils.getLoginUserNickname(), weightPdaReqVO);
+ // 根据子卷号或 ERP 子卷号查询分切生产计划
+ SlittingproductionplanDO slittingPlan = slittingproductionplanMapper
+ .selectByContainerName(weightPdaReqVO.getContainerName());
+ if (slittingPlan == null) {
+ throw exception(PACKAGE_SLITTING_PLAN_NOT_EXISTS);
+ }
+
+ // 只维护用户输入且大于零的重量
+ SlittingproductionplanDO updatePlan = new SlittingproductionplanDO();
+ updatePlan.setWorkorderId(slittingPlan.getWorkorderId());
+ boolean needUpdate = false;
+ if (StrUtil.isNotBlank(weightPdaReqVO.getRollWeight())
+ && new BigDecimal(weightPdaReqVO.getRollWeight()).compareTo(BigDecimal.ZERO) > 0) {
+ updatePlan.setWeight(weightPdaReqVO.getRollWeight());
+ needUpdate = true;
+ }
+ if (StrUtil.isNotBlank(weightPdaReqVO.getTubeWeight())
+ && new BigDecimal(weightPdaReqVO.getTubeWeight()).compareTo(BigDecimal.ZERO) > 0) {
+ updatePlan.setPaperWeight(weightPdaReqVO.getTubeWeight());
+ needUpdate = true;
+ }
+ if (needUpdate) {
+ slittingproductionplanMapper.updateById(updatePlan);
+ }
+ }
+
/**
* 执行人工质检合格操作
*