From a516af063218f1f1b2c49174f79713ba2d9ea9d4 Mon Sep 17 00:00:00 2001 From: HuangHuiKang Date: Wed, 25 Feb 2026 17:36:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E5=B7=B2=E7=9F=A5bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/MoldTicketResultsRespVO.java | 7 ++ .../vo/MoldTicketResultsSaveReqVO.java | 5 ++ .../MoldTicketResultsDO.java | 10 +++ .../vo/check/ErpStockCheckPageReqVO.java | 2 + .../stock/vo/in/ErpStockInPageReqVO.java | 2 + .../stock/vo/move/ErpStockMovePageReqVO.java | 4 + .../stock/vo/out/ErpStockOutPageReqVO.java | 2 + .../vo/record/ErpStockRecordPageReqVO.java | 3 + .../stock/vo/stock/ErpStockPageReqVO.java | 3 + .../vo/warehouse/ErpWarehousePageReqVO.java | 2 + .../dal/mysql/stock/ErpStockCheckMapper.java | 18 ++++ .../erp/dal/mysql/stock/ErpStockInMapper.java | 17 ++++ .../erp/dal/mysql/stock/ErpStockMapper.java | 22 ++++- .../dal/mysql/stock/ErpStockMoveMapper.java | 19 +++++ .../dal/mysql/stock/ErpStockOutMapper.java | 14 ++++ .../dal/mysql/stock/ErpStockRecordMapper.java | 23 ++++- .../dal/mysql/stock/ErpWarehouseMapper.java | 19 ++++- .../DeviceModelAttributeController.java | 6 +- .../DeviceModelAttributeServiceImpl.java | 84 +++++++++++++++---- .../coretask/GenerateWorkOrderTask.java | 1 + .../TicketResultsController.java | 2 +- .../ticketresults/vo/TicketResultsRespVO.java | 8 ++ .../vo/TicketResultsSaveReqVO.java | 7 ++ .../zjtaskresults/vo/ZjTaskResultsRespVO.java | 4 + .../vo/ZjTaskResultsSaveReqVO.java | 3 + .../ticketresults/TicketResultsDO.java | 14 ++++ .../zjtaskresults/ZjTaskResultsDO.java | 5 ++ .../CriticalComponentServiceImpl.java | 54 ++++++++---- .../MoldTaskManagementServiceImpl.java | 1 + .../TaskManagementServiceImpl.java | 1 + 30 files changed, 319 insertions(+), 43 deletions(-) diff --git a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldticketresults/vo/MoldTicketResultsRespVO.java b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldticketresults/vo/MoldTicketResultsRespVO.java index 9d82e4c83..c98bc06b3 100644 --- a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldticketresults/vo/MoldTicketResultsRespVO.java +++ b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldticketresults/vo/MoldTicketResultsRespVO.java @@ -53,4 +53,11 @@ public class MoldTicketResultsRespVO { @Schema(description = "模具Id") private Long moldId; + + @Schema(description = "值类型") + private String valueType; + + @Schema(description = "输入值") + private String textInput; + } \ No newline at end of file diff --git a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldticketresults/vo/MoldTicketResultsSaveReqVO.java b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldticketresults/vo/MoldTicketResultsSaveReqVO.java index 675e1f6c1..135ccd39c 100644 --- a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldticketresults/vo/MoldTicketResultsSaveReqVO.java +++ b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldticketresults/vo/MoldTicketResultsSaveReqVO.java @@ -39,4 +39,9 @@ public class MoldTicketResultsSaveReqVO { @Schema(description = "检验人") private String inspector; + @Schema(description = "值类型") + private String valueType; + + @Schema(description = "输入值") + private String textInput; } \ No newline at end of file diff --git a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/dataobject/moldticketresults/MoldTicketResultsDO.java b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/dataobject/moldticketresults/MoldTicketResultsDO.java index 95d78b7fe..726825e5f 100644 --- a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/dataobject/moldticketresults/MoldTicketResultsDO.java +++ b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/dataobject/moldticketresults/MoldTicketResultsDO.java @@ -66,6 +66,16 @@ public class MoldTicketResultsDO extends BaseDO { */ private Long moldId; + /** + * 值类型 + */ + private String valueType; + + /** + * 输入值 + */ + private String textInput; + /** * 作业时间 */ diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckPageReqVO.java index 2bae14c1e..41c23bc9d 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckPageReqVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckPageReqVO.java @@ -42,4 +42,6 @@ public class ErpStockCheckPageReqVO extends PageParam { @Schema(description = "产品编号", example = "1") private Long productId; + @Schema(description = "id集合导出用") + private String ids; } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInPageReqVO.java index d9adaf541..44972ce91 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInPageReqVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInPageReqVO.java @@ -51,4 +51,6 @@ public class ErpStockInPageReqVO extends PageParam { @Schema(description = "仓库编号", example = "1") private Long warehouseId; + @Schema(description = "id集合导出用") + private String ids; } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMovePageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMovePageReqVO.java index 98a1fe95e..7816e8670 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMovePageReqVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMovePageReqVO.java @@ -42,4 +42,8 @@ public class ErpStockMovePageReqVO extends PageParam { @Schema(description = "调出仓库编号", example = "1") private Long fromWarehouseId; + + @Schema(description = "id集合导出用") + private String ids; + } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutPageReqVO.java index fe6970bcc..21677e526 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutPageReqVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutPageReqVO.java @@ -52,4 +52,6 @@ public class ErpStockOutPageReqVO extends PageParam { @Schema(description = "仓库编号", example = "1") private Long warehouseId; + @Schema(description = "id集合导出用") + private String ids; } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordPageReqVO.java index 1104c31b7..28f947586 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordPageReqVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordPageReqVO.java @@ -37,4 +37,7 @@ public class ErpStockRecordPageReqVO extends PageParam { @Schema(description = "出入库时间", requiredMode = Schema.RequiredMode.REQUIRED) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] recordTime; + + @Schema(description = "id集合导出用") + private String ids; } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockPageReqVO.java index 052266a4e..1ae954bc6 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockPageReqVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockPageReqVO.java @@ -20,4 +20,7 @@ public class ErpStockPageReqVO extends PageParam { @Schema(description = "产品分类", example = "2802") private Long categoryId; + + @Schema(description = "id集合导出用") + private String ids; } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehousePageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehousePageReqVO.java index 2accf9a0f..11f97e4fc 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehousePageReqVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehousePageReqVO.java @@ -21,4 +21,6 @@ public class ErpWarehousePageReqVO extends PageParam { @InEnum(CommonStatusEnum.class) private Integer status; + @Schema(description = "id集合导出用") + private String ids; } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockCheckMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockCheckMapper.java index dd976df3d..6db811513 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockCheckMapper.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockCheckMapper.java @@ -6,9 +6,15 @@ import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckPageReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckItemDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO; +import com.alibaba.excel.util.StringUtils; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.ibatis.annotations.Mapper; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + /** * ERP 库存调拨单 Mapper * @@ -31,6 +37,18 @@ public interface ErpStockCheckMapper extends BaseMapperX { .eq(reqVO.getProductId() != null, ErpStockCheckItemDO::getProductId, reqVO.getProductId()) .groupBy(ErpStockCheckDO::getId); // 避免 1 对多查询,产生相同的 1 } + + + // 单独处理 ids 条件 + if (StringUtils.isNotBlank(reqVO.getIds())) { + List idList = Arrays.stream(reqVO.getIds().split(",")) + .map(String::trim) + .map(Long::valueOf) + .collect(Collectors.toList()); + query.in(ErpStockCheckDO::getId, idList); + } + + return selectJoinPage(reqVO, ErpStockCheckDO.class, query); } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInMapper.java index d32cd8b9b..c47b360e8 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInMapper.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInMapper.java @@ -6,9 +6,14 @@ import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO; +import com.alibaba.excel.util.StringUtils; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.ibatis.annotations.Mapper; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + /** * ERP 其它入库单 Mapper * @@ -34,6 +39,18 @@ public interface ErpStockInMapper extends BaseMapperX { .eq(reqVO.getProductId() != null, ErpStockInItemDO::getProductId, reqVO.getProductId()) .groupBy(ErpStockInDO::getId); // 避免 1 对多查询,产生相同的 1 } + + // 单独处理 ids 条件 + if (StringUtils.isNotBlank(reqVO.getIds())) { + List idList = Arrays.stream(reqVO.getIds().split(",")) + .map(String::trim) + .map(Long::valueOf) + .collect(Collectors.toList()); + query.in(ErpStockInDO::getId, idList); + } + + + return selectJoinPage(reqVO, ErpStockInDO.class, query); } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java index 9a562ebc3..0885a69e9 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java @@ -7,13 +7,17 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock.ErpStockPageReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO; +import com.alibaba.excel.util.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.ibatis.annotations.Mapper; import java.math.BigDecimal; +import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * ERP 产品库存 Mapper @@ -24,11 +28,25 @@ import java.util.Map; public interface ErpStockMapper extends BaseMapperX { default PageResult selectPage(ErpStockPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() + + LambdaQueryWrapperX erpStockDOLambdaQueryWrapperX = new LambdaQueryWrapperX() .eqIfPresent(ErpStockDO::getProductId, reqVO.getProductId()) .eqIfPresent(ErpStockDO::getWarehouseId, reqVO.getWarehouseId()) .eqIfPresent(ErpStockDO::getCategoryId, reqVO.getCategoryId()) - .orderByDesc(ErpStockDO::getId)); + .orderByDesc(ErpStockDO::getId); + + // 单独处理 ids 条件 + if (StringUtils.isNotBlank(reqVO.getIds())) { + List idList = Arrays.stream(reqVO.getIds().split(",")) + .map(String::trim) + .map(Long::valueOf) + .collect(Collectors.toList()); + erpStockDOLambdaQueryWrapperX.in(ErpStockDO::getId, idList); + } + + + + return selectPage(reqVO,erpStockDOLambdaQueryWrapperX); } default ErpStockDO selectByProductIdAndWarehouseId(Long productId, Long warehouseId) { diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMoveMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMoveMapper.java index 9a8ce0b64..d31f1f998 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMoveMapper.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMoveMapper.java @@ -6,9 +6,15 @@ import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move.ErpStockMovePageReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveItemDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockRecordDO; +import com.alibaba.excel.util.StringUtils; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.ibatis.annotations.Mapper; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + /** * ERP 库存调拨单 Mapper * @@ -31,6 +37,19 @@ public interface ErpStockMoveMapper extends BaseMapperX { .eq(reqVO.getProductId() != null, ErpStockMoveItemDO::getProductId, reqVO.getProductId()) .groupBy(ErpStockMoveDO::getId); // 避免 1 对多查询,产生相同的 1 } + + + // 单独处理 ids 条件 + if (StringUtils.isNotBlank(reqVO.getIds())) { + List idList = Arrays.stream(reqVO.getIds().split(",")) + .map(String::trim) + .map(Long::valueOf) + .collect(Collectors.toList()); + query.in(ErpStockMoveDO::getId, idList); + } + + + return selectJoinPage(reqVO, ErpStockMoveDO.class, query); } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutMapper.java index 1fb9b962a..aeb99e6d0 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutMapper.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutMapper.java @@ -5,13 +5,17 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO; +import com.alibaba.excel.util.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.ibatis.annotations.Mapper; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; /** * ERP 其它出库单 Mapper @@ -39,6 +43,16 @@ public interface ErpStockOutMapper extends BaseMapperX { .eq(reqVO.getProductId() != null, ErpStockOutItemDO::getProductId, reqVO.getProductId()) .groupBy(ErpStockOutDO::getId); // 避免 1 对多查询,产生相同的 1 } + + // 单独处理 ids 条件 + if (StringUtils.isNotBlank(reqVO.getIds())) { + List idList = Arrays.stream(reqVO.getIds().split(",")) + .map(String::trim) + .map(Long::valueOf) + .collect(Collectors.toList()); + query.in(ErpStockInDO::getId, idList); + } + return selectJoinPage(reqVO, ErpStockOutDO.class, query); } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockRecordMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockRecordMapper.java index 23470fbe4..1bb74c5a2 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockRecordMapper.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockRecordMapper.java @@ -4,9 +4,15 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record.ErpStockRecordPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockRecordDO; +import com.alibaba.excel.util.StringUtils; import org.apache.ibatis.annotations.Mapper; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + /** * ERP 产品库存明细 Mapper * @@ -16,7 +22,8 @@ import org.apache.ibatis.annotations.Mapper; public interface ErpStockRecordMapper extends BaseMapperX { default PageResult selectPage(ErpStockRecordPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() + + LambdaQueryWrapperX erpStockRecordDOLambdaQueryWrapperX = new LambdaQueryWrapperX() .eqIfPresent(ErpStockRecordDO::getProductId, reqVO.getProductId()) .eqIfPresent(ErpStockRecordDO::getCategoryId, reqVO.getCategoryId()) .eqIfPresent(ErpStockRecordDO::getWarehouseId, reqVO.getWarehouseId()) @@ -24,7 +31,19 @@ public interface ErpStockRecordMapper extends BaseMapperX { .likeIfPresent(ErpStockRecordDO::getBizNo, reqVO.getBizNo()) .betweenIfPresent(ErpStockRecordDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(ErpStockRecordDO::getRecordTime, reqVO.getRecordTime()) - .orderByDesc(ErpStockRecordDO::getId)); + .orderByDesc(ErpStockRecordDO::getId); + + // 单独处理 ids 条件 + if (StringUtils.isNotBlank(reqVO.getIds())) { + List idList = Arrays.stream(reqVO.getIds().split(",")) + .map(String::trim) + .map(Long::valueOf) + .collect(Collectors.toList()); + erpStockRecordDOLambdaQueryWrapperX.in(ErpStockRecordDO::getId, idList); + } + + + return selectPage(reqVO,erpStockRecordDOLambdaQueryWrapperX); } } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpWarehouseMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpWarehouseMapper.java index 0442011f2..792610dd4 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpWarehouseMapper.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpWarehouseMapper.java @@ -5,9 +5,12 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehousePageReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO; +import com.alibaba.excel.util.StringUtils; import org.apache.ibatis.annotations.Mapper; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; /** * ERP 仓库 Mapper @@ -18,10 +21,22 @@ import java.util.List; public interface ErpWarehouseMapper extends BaseMapperX { default PageResult selectPage(ErpWarehousePageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() + + LambdaQueryWrapperX erpWarehouseDOLambdaQueryWrapperX = new LambdaQueryWrapperX() .likeIfPresent(ErpWarehouseDO::getName, reqVO.getName()) .eqIfPresent(ErpWarehouseDO::getStatus, reqVO.getStatus()) - .orderByDesc(ErpWarehouseDO::getId)); + .orderByDesc(ErpWarehouseDO::getId); + + // 单独处理 ids 条件 + if (StringUtils.isNotBlank(reqVO.getIds())) { + List idList = Arrays.stream(reqVO.getIds().split(",")) + .map(String::trim) + .map(Long::valueOf) + .collect(Collectors.toList()); + erpWarehouseDOLambdaQueryWrapperX.in(ErpWarehouseDO::getId, idList); + } + + return selectPage(reqVO,erpWarehouseDOLambdaQueryWrapperX); } default ErpWarehouseDO selectByDefaultStatus() { diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelattribute/DeviceModelAttributeController.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelattribute/DeviceModelAttributeController.java index 71bfb7a49..55368ab0f 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelattribute/DeviceModelAttributeController.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelattribute/DeviceModelAttributeController.java @@ -135,11 +135,11 @@ public class DeviceModelAttributeController { // 准备模板数据 List list = new ArrayList<>(); list.add(DeviceModelAttributeImportExcelVO.builder() - .attributeCode("test") + .attributeCode("temperature_001") .attributeName("温度") // .attributeType("1") .typeName("报警信息") - .dataType("int64") + .dataType("float") .address("AI0") .dataUnit("s") .ratio(1.0) @@ -150,7 +150,7 @@ public class DeviceModelAttributeController { .attributeName("湿度") // .attributeType("2") .typeName("能源参数") - .dataType("int64") + .dataType("double") .address("AI1") .dataUnit("s") .ratio(1.0) diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelattribute/DeviceModelAttributeServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelattribute/DeviceModelAttributeServiceImpl.java index 9b80ac4e5..90b8973e9 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelattribute/DeviceModelAttributeServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelattribute/DeviceModelAttributeServiceImpl.java @@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils; import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO; import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService; +import cn.iocoder.yudao.module.iot.controller.admin.device.enums.JavaToTdengineTypeEnum; import cn.iocoder.yudao.module.iot.dal.dataobject.deviceattributetype.DeviceAttributeTypeDO; import cn.iocoder.yudao.module.iot.dal.mysql.deviceattributetype.DeviceAttributeTypeMapper; import cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants; @@ -234,7 +235,7 @@ import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*; @Override - @Transactional(rollbackFor = Exception.class) // 完全复用你的事务注解,异常回滚所有导入 +// @Transactional(rollbackFor = Exception.class) // 完全复用你的事务注解,异常回滚所有导入 public DeviceModelAttributeImportRespVO importAttributeList(List importAttributes, Long deviceModelId, boolean isUpdateSupport) { // 1.1 参数校验 - 完全复刻 User 的空列表校验逻辑 if (CollUtil.isEmpty(importAttributes)) { @@ -250,6 +251,7 @@ import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*; Map typeNameToIdMap = attributeTypes.stream() .collect(Collectors.toMap(DeviceAttributeTypeDO::getName, type -> String.valueOf(type.getId()))); + // 3. 初始化返回 VO - 完全复刻 User 的 builder 方式,使用 LinkedHashMap 保持顺序 DeviceModelAttributeImportRespVO respVO = DeviceModelAttributeImportRespVO.builder() .createCodes(new ArrayList<>()) @@ -264,18 +266,40 @@ import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*; // 4.2 处理点位类型转换 String typeName = importAttribute.getTypeName(); + + // 不能为空 if (StringUtils.isBlank(typeName)) { respVO.getFailureCodes().put(importAttribute.getAttributeCode(), "点位类型名称不能为空"); return; } - String attributeTypeId = typeNameToIdMap.get(typeName); - if (StringUtils.isBlank(attributeTypeId)) { - respVO.getFailureCodes().put(importAttribute.getAttributeCode(), "点位类型名称无效: " + typeName); + // 必须存在于数据库类型列表中(防止乱填) + if (!typeNameToIdMap.containsKey(typeName)) { + respVO.getFailureCodes().put(importAttribute.getAttributeCode(), + "点位类型名称不存在: " + typeName); return; } + String attributeTypeId = typeNameToIdMap.get(typeName); // 设置点位类型ID importAttribute.setAttributeType(attributeTypeId); + //dataType校验 + String dataType = importAttribute.getDataType(); + + if (StringUtils.isBlank(dataType)) { + respVO.getFailureCodes().put(importAttribute.getAttributeCode(), + "数据类型 不能为空"); + return; + } + dataType = StringUtils.trim(dataType); + + // 必须在枚举中存在 + JavaToTdengineTypeEnum typeEnum = JavaToTdengineTypeEnum.fromJavaType(dataType); + if (typeEnum == null) { + respVO.getFailureCodes().put(importAttribute.getAttributeCode(), + "数据类型 非法,仅支持: byte, short, int, long, float, double, boolean, char"); + return; + } + // 4.3.1 校验字段是否符合要求 - 完全复刻 User 的 ValidationUtils.validate 调用 try { // 注意:如果有 DeviceModelAttributeSaveReqVO,替换为该 VO;无则直接校验 importAttribute @@ -293,27 +317,53 @@ import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*; return; } - // 4.4.1 判断如果不存在,进行插入 - 完全复刻 User 的 selectByUsername 逻辑 - DeviceModelAttributeDO existAttribute = deviceModelAttributeMapper.selectByAttributeCode(importAttribute.getAttributeCode()); - if (existAttribute == null) { - // 创建DO对象并设置点位类型名称 - DeviceModelAttributeDO deviceModelAttribute = BeanUtils.toBean(importAttribute, DeviceModelAttributeDO.class); - deviceModelAttribute.setTypeName(typeName); // 设置点位类型名称 + // 4.4 查询数据库是否已存在 + DeviceModelAttributeDO existAttribute = + deviceModelAttributeMapper.selectOne( + Wrappers.lambdaQuery() + .eq(DeviceModelAttributeDO::getDeviceModelId, deviceModelId) + .eq(DeviceModelAttributeDO::getAttributeCode, importAttribute.getAttributeCode()) + ); + + // ===== 不允许覆盖 ===== + if (!isUpdateSupport) { + + // 如果已存在 → 直接失败 + if (existAttribute != null) { + respVO.getFailureCodes().put(importAttribute.getAttributeCode(), + "点位编码 已存在,不允许重复"); + return; + } + + // 不存在 → 新增 + DeviceModelAttributeDO deviceModelAttribute = + BeanUtils.toBean(importAttribute, DeviceModelAttributeDO.class); + deviceModelAttribute.setTypeName(typeName); + deviceModelAttributeMapper.insert(deviceModelAttribute); respVO.getCreateCodes().add(importAttribute.getAttributeCode()); return; } - // 4.4.2 如果存在,判断是否允许更新 - 完全复刻 User 的更新逻辑 - if (!isUpdateSupport) { - respVO.getFailureCodes().put(importAttribute.getAttributeCode(), DEVICE_MODEL_ATTRIBUTE_NOT_EXISTS.getMsg()); + // ===== 允许覆盖 ===== + + // 不存在 → 新增 + if (existAttribute == null) { + DeviceModelAttributeDO deviceModelAttribute = + BeanUtils.toBean(importAttribute, DeviceModelAttributeDO.class); + deviceModelAttribute.setTypeName(typeName); + + deviceModelAttributeMapper.insert(deviceModelAttribute); + respVO.getCreateCodes().add(importAttribute.getAttributeCode()); return; } - // 创建更新对象并设置点位类型名称 - DeviceModelAttributeDO updateAttribute = BeanUtils.toBean(importAttribute, DeviceModelAttributeDO.class); - updateAttribute.setId(existAttribute.getId()); // 复用已有数据的 ID - updateAttribute.setTypeName(typeName); // 设置点位类型名称 + // 已存在 → 更新 + DeviceModelAttributeDO updateAttribute = + BeanUtils.toBean(importAttribute, DeviceModelAttributeDO.class); + updateAttribute.setId(existAttribute.getId()); + updateAttribute.setTypeName(typeName); + deviceModelAttributeMapper.updateById(updateAttribute); respVO.getUpdateCodes().add(importAttribute.getAttributeCode()); }); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/taskmanagement/scheduled/coretask/GenerateWorkOrderTask.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/taskmanagement/scheduled/coretask/GenerateWorkOrderTask.java index e7d8d66ee..1d23529cb 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/taskmanagement/scheduled/coretask/GenerateWorkOrderTask.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/taskmanagement/scheduled/coretask/GenerateWorkOrderTask.java @@ -120,6 +120,7 @@ public class GenerateWorkOrderTask implements Task { ticketResultsDO.setJudgmentCriteria(dvSubjectDO.getJudgmentCriteria()); ticketResultsDO.setManagementId(ticketManagementDO.getId()); ticketResultsDO.setDeviceId(deviceId); + ticketResultsDO.setValueType(dvSubjectDO.getValueType()); // TODO 默认为内置管理员Id ticketResultsDO.setCreator("1"); ticketResultsDO.setUpdater("1"); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/ticketresults/TicketResultsController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/ticketresults/TicketResultsController.java index 0aa036688..9aa226a3f 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/ticketresults/TicketResultsController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/ticketresults/TicketResultsController.java @@ -75,7 +75,7 @@ public class TicketResultsController { @Operation(summary = "获得工单检验结果分页") @PreAuthorize("@ss.hasPermission('mes:ticket-results:query')") public CommonResult> getTicketResultsPage(@Valid TicketResultsPageReqVO pageReqVO) { - PageResult pageResult = ticketResultsService.getTicketResultsPage(pageReqVO); + PageResult pageResult = ticketResultsService.getTicketResultsPage(pageReqVO); return success(BeanUtils.toBean(pageResult, TicketResultsRespVO.class)); } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/ticketresults/vo/TicketResultsRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/ticketresults/vo/TicketResultsRespVO.java index b3c88ab1a..612515e8c 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/ticketresults/vo/TicketResultsRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/ticketresults/vo/TicketResultsRespVO.java @@ -53,4 +53,12 @@ public class TicketResultsRespVO { @Schema(description = "设备Id") private Long deviceId; + + + @Schema(description = "值类型0-数值 1-布尔值 2-文本") + private String valueType; + + @Schema(description = "输入值") + private String textInput; + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/ticketresults/vo/TicketResultsSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/ticketresults/vo/TicketResultsSaveReqVO.java index 0a90b76d0..fc411663b 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/ticketresults/vo/TicketResultsSaveReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/ticketresults/vo/TicketResultsSaveReqVO.java @@ -41,4 +41,11 @@ public class TicketResultsSaveReqVO { @Schema(description = "检验人") private String inspector; + @Schema(description = "值类型0-数值 1-布尔值 2-文本") + private String valueType; + + @Schema(description = "输入值") + private String textInput; + + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/zjtaskresults/vo/ZjTaskResultsRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/zjtaskresults/vo/ZjTaskResultsRespVO.java index 033c75046..bfa0c582b 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/zjtaskresults/vo/ZjTaskResultsRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/zjtaskresults/vo/ZjTaskResultsRespVO.java @@ -80,4 +80,8 @@ public class ZjTaskResultsRespVO { @ExcelProperty("设备id") private Long deviceId; + @Schema(description = "输入值") + private String textInput; + + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/zjtaskresults/vo/ZjTaskResultsSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/zjtaskresults/vo/ZjTaskResultsSaveReqVO.java index 89a480544..1225d5d22 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/zjtaskresults/vo/ZjTaskResultsSaveReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/zjtaskresults/vo/ZjTaskResultsSaveReqVO.java @@ -54,4 +54,7 @@ public class ZjTaskResultsSaveReqVO { @Schema(description = "设备id", example = "23960") private Long deviceId; + @Schema(description = "输入值") + private String textInput; + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/ticketresults/TicketResultsDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/ticketresults/TicketResultsDO.java index 298de190d..4a23bb6f9 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/ticketresults/TicketResultsDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/ticketresults/TicketResultsDO.java @@ -65,6 +65,18 @@ public class TicketResultsDO extends BaseDO { */ private Long deviceId; + /** + * 值类型 0-数值 1-布尔值 2-文本 + */ + private String valueType; + + + /** + * 输入值 + */ + private String textInput; + + /** * 作业时间 */ @@ -75,4 +87,6 @@ public class TicketResultsDO extends BaseDO { private String operator; + + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/zjtaskresults/ZjTaskResultsDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/zjtaskresults/ZjTaskResultsDO.java index 4972dab24..e233be3f0 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/zjtaskresults/ZjTaskResultsDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/zjtaskresults/ZjTaskResultsDO.java @@ -81,4 +81,9 @@ public class ZjTaskResultsDO extends BaseDO { */ private Long deviceId; + /** + * 输入值 + */ + private String textInput; + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/criticalcomponent/CriticalComponentServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/criticalcomponent/CriticalComponentServiceImpl.java index d25d0630e..a156c7ceb 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/criticalcomponent/CriticalComponentServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/criticalcomponent/CriticalComponentServiceImpl.java @@ -230,27 +230,49 @@ public class CriticalComponentServiceImpl implements CriticalComponentService { return; } - // 3.2 检查是否已存在 - CriticalComponentDO existComponent = criticalComponentMapper.selectByCode(importComponent.getCode()); + // 3.2 查询数据库是否已存在 + CriticalComponentDO existComponent = + criticalComponentMapper.selectByCode(importComponent.getCode()); + + // ===== 不允许覆盖 ===== + if (!isUpdateSupport) { + + // 已存在 → 失败(必须唯一) + if (existComponent != null) { + respVO.getFailureCodes().put(importComponent.getCode(), + "编码 已存在,不允许重复"); + return; + } + + // 不存在 → 新增 + CriticalComponentDO newComponent = + BeanUtils.toBean(importComponent, CriticalComponentDO.class); + newComponent.setCreateTime(LocalDateTime.now()); + + criticalComponentMapper.insert(newComponent); + respVO.getCreateCodes().add(importComponent.getCode()); + return; + } + + // ===== 允许覆盖 ===== + // 不存在 → 新增 if (existComponent == null) { - // 3.3 创建新记录 - CriticalComponentDO newComponent = BeanUtils.toBean(importComponent, CriticalComponentDO.class); - // 设置创建时间为当前时间 + CriticalComponentDO newComponent = + BeanUtils.toBean(importComponent, CriticalComponentDO.class); newComponent.setCreateTime(LocalDateTime.now()); + criticalComponentMapper.insert(newComponent); respVO.getCreateCodes().add(importComponent.getCode()); - } else if (isUpdateSupport) { - // 3.4 更新已有记录 - CriticalComponentDO updateComponent = BeanUtils.toBean(importComponent, CriticalComponentDO.class); - updateComponent.setId(existComponent.getId()); - // 保持原有创建时间不变 - updateComponent.setCreateTime(existComponent.getCreateTime()); - criticalComponentMapper.updateById(updateComponent); - respVO.getUpdateCodes().add(importComponent.getCode()); - } else { - // 3.5 已存在且不支持更新 - respVO.getFailureCodes().put(importComponent.getCode(), "该关键件已存在"); + return; } + // 已存在 → 更新 + CriticalComponentDO updateComponent = + BeanUtils.toBean(importComponent, CriticalComponentDO.class); + updateComponent.setId(existComponent.getId()); + updateComponent.setCreateTime(existComponent.getCreateTime()); + + criticalComponentMapper.updateById(updateComponent); + respVO.getUpdateCodes().add(importComponent.getCode()); }); return respVO; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldtaskmanagement/MoldTaskManagementServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldtaskmanagement/MoldTaskManagementServiceImpl.java index bae116c8f..7afb38b16 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldtaskmanagement/MoldTaskManagementServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldtaskmanagement/MoldTaskManagementServiceImpl.java @@ -200,6 +200,7 @@ public PageResult getMoldTaskManagementPage(MoldTaskManage moldticketResultsDO.setJudgmentCriteria(moldSubjectDO.getJudgmentCriteria()); moldticketResultsDO.setManagementId(moldticketManagementDO.getId()); moldticketResultsDO.setMoldId(moldId); + moldticketResultsDO.setValueType(moldSubjectDO.getValueType()); moldticketResultsMapper.insert(moldticketResultsDO); } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/taskmanagement/TaskManagementServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/taskmanagement/TaskManagementServiceImpl.java index 035dd4214..73a35282a 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/taskmanagement/TaskManagementServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/taskmanagement/TaskManagementServiceImpl.java @@ -205,6 +205,7 @@ public class TaskManagementServiceImpl implements TaskManagementService { ticketResultsDO.setJudgmentCriteria(dvSubjectDO.getJudgmentCriteria()); ticketResultsDO.setManagementId(ticketManagementDO.getId()); ticketResultsDO.setDeviceId(deviceId); + ticketResultsDO.setValueType(dvSubjectDO.getValueType()); ticketResultsMapper.insert(ticketResultsDO); }