diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/plate/PlateSaveReqVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/plate/PlateSaveReqVO.java index b15336b84..fba7850d9 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/plate/PlateSaveReqVO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/plate/PlateSaveReqVO.java @@ -1,6 +1,7 @@ package com.cf.imes.module.manage.controller.admin.plate.vo.plate; import com.cf.imes.module.manage.validation.length.ValidLength; +import com.cf.imes.module.manage.validation.longConvert.ValidLong; import com.cf.imes.module.manage.validation.texture.ValidBoolean; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -70,5 +71,6 @@ public class PlateSaveReqVO { @Size(max = 255, message = "备注长度不能超过255个字符") private String remark; + @ValidLong private Long organId; } \ No newline at end of file diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlateSaveReqVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlateSaveReqVO.java index 13de27021..8671590b2 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlateSaveReqVO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlateSaveReqVO.java @@ -2,6 +2,7 @@ package com.cf.imes.module.manage.controller.admin.plate.vo.remain; import com.cf.imes.module.manage.validation.common.ValidCommonStatus; import com.cf.imes.module.manage.validation.length.ValidLength; +import com.cf.imes.module.manage.validation.nonZero.ValidNonZero; import com.cf.imes.module.manage.validation.placeStyle.ValidPlaceStyle; import com.cf.imes.module.manage.validation.type.ValidTypeField; import io.swagger.v3.oas.annotations.media.Schema; @@ -11,7 +12,7 @@ import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.math.BigDecimal; -@Schema(description = "管理后台 - 生产单余料板表 order_remain_plate_{N}新增/修改 Request VO") +@Schema(description = "管理后台 - 生产单余料板表 Request VO") @Data public class RemainPlateSaveReqVO { @@ -35,7 +36,7 @@ public class RemainPlateSaveReqVO { @NotNull(message = "是否为开料添加,0否,1是") private Boolean isCutting; - @Schema(description = "使用类型,0核销,1排单,2补板", example = "0") + @Schema(description = "使用类型,0核销,1排单,2补板", example = "1") @ValidTypeField private Integer useType; @@ -63,23 +64,26 @@ public class RemainPlateSaveReqVO { @Schema(description = "宽度", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "宽度不能为空") @ValidLength + @ValidNonZero private BigDecimal width; @Schema(description = "长度", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "长度不能为空") @ValidLength + @ValidNonZero private BigDecimal length; @Schema(description = "厚度", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "厚度不能为空") @ValidLength + @ValidNonZero private BigDecimal thickness; @Schema(description = "品牌") @Size(max = 50, message = "品牌长度不能超过50个字符") private String brand; - @Schema(description = "放置样式,0正面,1正面右转,2正面后转,3正面左转,4反面,5反面右转,6反面后转,7反面左转") + @Schema(description = "放置样式,0正面,1正面右转,2正面后转,3正面左转,4反面,5反面右转,6反面后转,7反面左转", example = "0") @ValidPlaceStyle private Integer placeStyle; diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/plate/PlateMapper.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/plate/PlateMapper.java index 78d0cfca9..397b89c47 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/plate/PlateMapper.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/plate/PlateMapper.java @@ -1,5 +1,6 @@ package com.cf.imes.module.manage.dal.mysql.plate; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; @@ -81,4 +82,11 @@ public interface PlateMapper extends BaseMapperX { default Boolean isByGoodID(String goodId , Long organId) { return selectList(PlateDO::getGoodsId, goodId, PlateDO::getOrganId, organId).size() > 0; } + + default Boolean isByGoodIDAndId(String goodId , Long organId , Long id) { + return selectCount(new LambdaQueryWrapper() + .ne(PlateDO::getId, id) + .eq(PlateDO::getGoodsId, goodId) + .eq(PlateDO::getOrganId, organId)) > 0; + } } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateServiceImpl.java index 9dccccb53..e4dfc58b5 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateServiceImpl.java @@ -71,11 +71,11 @@ public class PlateServiceImpl implements PlateService { @Transactional(rollbackFor = Exception.class) public void updatePlate(PlateSaveReqVO updateReqVO) { // 校验存在 - validatePlateExists(updateReqVO.getId(), + validatePlateExists(Long.valueOf(updateReqVO.getId()), getOrganId(BASE_PLATE_UPDATE_PERMISSION, getLoginUser().getId(), updateReqVO.getOrganId())); PlateDO updateObj = BeanUtils.toBean(updateReqVO, PlateDO.class); // 校验板材goods_id是否相同 - if (plateMapper.isByGoodID(updateReqVO.getGoodsId(), getLoginUser().getId())) { + if (plateMapper.isByGoodIDAndId(updateReqVO.getGoodsId(), getLoginUser().getId(), Long.valueOf(updateReqVO.getId()))) { throw exception(PLATE_GOODS_ID_NOT_SAME); } plateMapper.updateById(updateObj); diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/common/CommonStatusValidator.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/common/CommonStatusValidator.java index 4ffa0f106..f015d62ab 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/common/CommonStatusValidator.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/common/CommonStatusValidator.java @@ -10,6 +10,6 @@ public class CommonStatusValidator implements ConstraintValidator { + + @Override + public boolean isValid(String value, ConstraintValidatorContext context) { + if (value == null) { + return true; // 允许 null 值 + } + try { + Long.parseLong(value); + return true; + } catch (NumberFormatException e) { + return false; + } + } +} diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/longConvert/ValidLong.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/longConvert/ValidLong.java new file mode 100644 index 000000000..ddd545c7c --- /dev/null +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/longConvert/ValidLong.java @@ -0,0 +1,20 @@ +package com.cf.imes.module.manage.validation.longConvert; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + + +@Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = LongValidator.class) +@Documented +public @interface ValidLong { + + String message() default "ID参数类型有误"; + + Class[] groups() default {}; + + Class[] payload() default {}; + +} diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/nonZero/NonNegativeValidator.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/nonZero/NonNegativeValidator.java new file mode 100644 index 000000000..f19524408 --- /dev/null +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/nonZero/NonNegativeValidator.java @@ -0,0 +1,16 @@ +package com.cf.imes.module.manage.validation.nonZero; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; +import java.math.BigDecimal; + +/** + * 数值大于0校验 + */ +public class NonNegativeValidator implements ConstraintValidator { + + @Override + public boolean isValid(BigDecimal value, ConstraintValidatorContext context) { + return value == null || value.signum() >= 0; + } +} diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/nonZero/ValidNonZero.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/nonZero/ValidNonZero.java new file mode 100644 index 000000000..a83dbb1ca --- /dev/null +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/nonZero/ValidNonZero.java @@ -0,0 +1,21 @@ +package com.cf.imes.module.manage.validation.nonZero; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +/** + * 数值大于0校验注解 + */ +@Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = NonNegativeValidator.class) +@Documented +public @interface ValidNonZero { + + String message() default "长度数值必须大于等于0"; + + Class[] groups() default {}; + + Class[] payload() default {}; +} diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/placeStyle/PlaceStyleValidator.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/placeStyle/PlaceStyleValidator.java index bd024d984..71ee85a55 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/placeStyle/PlaceStyleValidator.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/placeStyle/PlaceStyleValidator.java @@ -10,7 +10,7 @@ public class PlaceStyleValidator implements ConstraintValidator { +public class BooleanTypeValidator implements ConstraintValidator { @Override - public boolean isValid(Object value, ConstraintValidatorContext context) { - return value instanceof Boolean; + public boolean isValid(String value, ConstraintValidatorContext context) { + if (value == null) { + return true; // 允许 null 值 + } + return value.equalsIgnoreCase("true") || + value.equalsIgnoreCase("false") || + value.equals("0") || + value.equals("1"); } } \ No newline at end of file diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/texture/ValidBoolean.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/texture/ValidBoolean.java index e580c24ae..b4b36c5d3 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/texture/ValidBoolean.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/texture/ValidBoolean.java @@ -6,7 +6,7 @@ import java.lang.annotation.*; /** * 纹理校验注解 */ -@Target({ElementType.FIELD, ElementType.PARAMETER}) +@Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = BooleanTypeValidator.class) @Documented diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/type/TypeFieldValidator.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/type/TypeFieldValidator.java index 81bf7b520..a28bac4e5 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/type/TypeFieldValidator.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/validation/type/TypeFieldValidator.java @@ -10,6 +10,6 @@ public class TypeFieldValidator implements ConstraintValidator { }else{ lambdaQueryWrapperX.eqIfPresent(PostDO::getOrganId, loginUser.getOrganId()); } - return selectPage(reqVO, lambdaQueryWrapperX + // 获取分页结果 + PageResult pageResult = selectPage(reqVO, lambdaQueryWrapperX .likeIfPresent(PostDO::getCode, reqVO.getCode()) .likeIfPresent(PostDO::getName, reqVO.getName()) .eqIfPresent(PostDO::getStatus, reqVO.getStatus()) .orderByDesc(PostDO::getId)); + + // 重新设置 id 值 + List records = pageResult.getList(); + for (int i = 0; i < records.size(); i++) { + PostDO postDO = records.get(i); + postDO.setId((long) (i + 1)); + } + + return pageResult; } default PostDO selectByName(String name) { diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/user/AdminUserServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/user/AdminUserServiceImpl.java index 9eb38dd04..d4cecfcd8 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/user/AdminUserServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/user/AdminUserServiceImpl.java @@ -393,6 +393,9 @@ public class AdminUserServiceImpl implements AdminUserService { if (StringUtils.isNotBlank(reqVO.getNickname())) { reqVO.setPyFirstChar(PinYinUtils.convertFirstChar(reqVO.getNickname())); reqVO.setPyAll(PinYinUtils.convertToPinyin(reqVO.getNickname()).replace(" ", "")); + } else if (StringUtils.isNotBlank((reqVO.getUsername()))) { + reqVO.setPyFirstChar(PinYinUtils.convertFirstChar(reqVO.getUsername())); + reqVO.setPyAll(PinYinUtils.convertToPinyin(reqVO.getUsername()).replace(" ", "")); } else { // 避免name为空外部传入拼音查询字段 reqVO.setPyFirstChar(null);