This commit is contained in:
2026-09-20 13:16:44 +08:00
parent 380fd117c5
commit a138f3b916
14 changed files with 296 additions and 26 deletions
@@ -13,6 +13,7 @@
<result column="update_time" property="updateTime"/>
<result column="status" property="status"/>
<result column="is_deleted" property="isDeleted"/>
<result column="unit_code" property="unitCode"/>
<result column="unit_name" property="unitName"/>
<result column="dimension" property="dimension"/>
<result column="remark" property="remark"/>
@@ -30,6 +31,7 @@
mmu.update_time,
mmu.status,
mmu.is_deleted,
mmu.unit_code,
mmu.unit_name,
mmu.dimension,
mmu.remark
@@ -39,6 +41,10 @@
LEFT JOIN blade_user uu ON uu.id = mmu.update_user
WHERE
mmu.is_deleted = 0
<if test="measurementUnit.unitCode != null and measurementUnit.unitCode != ''">
<bind name="unitCodeLike" value="'%' + measurementUnit.unitCode + '%'"/>
AND mmu.unit_code LIKE #{unitCodeLike}
</if>
<if test="measurementUnit.unitName != null and measurementUnit.unitName != ''">
<bind name="unitNameLike" value="'%' + measurementUnit.unitName + '%'"/>
AND mmu.unit_name LIKE #{unitNameLike}
@@ -46,6 +46,7 @@ public class MeasurementUnitServiceImpl extends BaseServiceImpl<MeasurementUnitM
private static final int STATUS_ENABLED = 1;
private static final int STATUS_DISABLED = 2;
private static final int UNIT_CODE_MAX_LENGTH = 50;
private static final int UNIT_NAME_MAX_LENGTH = 50;
private static final int DIMENSION_MAX_LENGTH = 20;
private static final int REMARK_MAX_LENGTH = 200;
@@ -85,6 +86,7 @@ public class MeasurementUnitServiceImpl extends BaseServiceImpl<MeasurementUnitM
}
private void prepare(MeasurementUnit measurementUnit) {
measurementUnit.setUnitCode(trimToEmpty(measurementUnit.getUnitCode()));
measurementUnit.setUnitName(trimToEmpty(measurementUnit.getUnitName()));
measurementUnit.setDimension(trimToEmpty(measurementUnit.getDimension()));
measurementUnit.setRemark(trimToNull(measurementUnit.getRemark()));
@@ -94,6 +96,12 @@ public class MeasurementUnitServiceImpl extends BaseServiceImpl<MeasurementUnitM
}
private void validate(MeasurementUnit measurementUnit) {
if (Func.isEmpty(measurementUnit.getUnitCode())) {
throw new ServiceException("计量单位编码不能为空");
}
if (measurementUnit.getUnitCode().length() > UNIT_CODE_MAX_LENGTH) {
throw new ServiceException("计量单位编码不能超过50字");
}
if (Func.isEmpty(measurementUnit.getUnitName())) {
throw new ServiceException("计量单位不能为空");
}
@@ -115,9 +123,22 @@ public class MeasurementUnitServiceImpl extends BaseServiceImpl<MeasurementUnitM
&& !Objects.equals(measurementUnit.getStatus(), STATUS_DISABLED)) {
throw new ServiceException("启停状态不正确");
}
validateUniqueUnitCode(measurementUnit);
validateUniqueUnitName(measurementUnit);
}
private void validateUniqueUnitCode(MeasurementUnit measurementUnit) {
LambdaQueryWrapper<MeasurementUnit> queryWrapper = Wrappers.<MeasurementUnit>lambdaQuery()
.eq(MeasurementUnit::getUnitCode, measurementUnit.getUnitCode())
.eq(MeasurementUnit::getIsDeleted, 0);
if (Func.isNotEmpty(measurementUnit.getId())) {
queryWrapper.ne(MeasurementUnit::getId, measurementUnit.getId());
}
if (count(queryWrapper) > 0L) {
throw new ServiceException("该计量单位编码已存在");
}
}
private void validateUniqueUnitName(MeasurementUnit measurementUnit) {
LambdaQueryWrapper<MeasurementUnit> queryWrapper = Wrappers.<MeasurementUnit>lambdaQuery()
.eq(MeasurementUnit::getUnitName, measurementUnit.getUnitName())