Browse Source

2026-09-10

保存”编码“时校验编码是否已生成,排除首字母F和R;
master
fengyuan_yang 2 weeks ago
parent
commit
2f4d2035c9
  1. 3
      src/main/java/com/spring/modules/code/mapper/CodeDrawingMapper.java
  2. 27
      src/main/java/com/spring/modules/part/service/impl/PartInformationServiceImpl.java
  3. 12
      src/main/resources/mapper/code/CodeDrawingMapper.xml

3
src/main/java/com/spring/modules/code/mapper/CodeDrawingMapper.java

@ -6,6 +6,7 @@ import com.spring.modules.code.entity.CodeDrawingDetail;
import com.spring.modules.code.vo.CodeDrawingVo;
import com.spring.modules.part.entity.MasterPartInformationEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -16,4 +17,6 @@ public interface CodeDrawingMapper extends BaseMapper<CodeDrawing> {
MasterPartInformationEntity queryErpPart(CodeDrawing codeDrawing);
List<CodeDrawingVo> queryCodeDrawingList(CodeDrawingVo codeDrawing);
int countGeneratedDrawingNo(@Param("site") String site, @Param("normalizedDrawingNo") String normalizedDrawingNo);
}

27
src/main/java/com/spring/modules/part/service/impl/PartInformationServiceImpl.java

@ -35,6 +35,7 @@ import com.spring.modules.change.entity.TechnicalSpecificationData;
import com.spring.modules.change.mapper.ChangeManagementMapper;
import com.spring.modules.change.vo.ChangeRequestDetailVo;
import com.spring.modules.change.vo.ChangeRequestVo;
import com.spring.modules.code.mapper.CodeDrawingMapper;
import com.spring.modules.customer.entity.CustomerGroupInformationEntity;
import com.spring.modules.oss.dao.SysOssDao;
import com.spring.modules.oss.entity.SysOssEntity;
@ -117,6 +118,9 @@ public class PartInformationServiceImpl extends ServiceImpl<PartInformationMappe
@Autowired
private PartInformationMapper partInformationMapper;
@Autowired
private CodeDrawingMapper codeDrawingMapper;
@Autowired
private UmInformationMapper umInformationMapper;
@ -1281,6 +1285,7 @@ public class PartInformationServiceImpl extends ServiceImpl<PartInformationMappe
if (!StringUtils.hasText(drawingNo) || "NA".equalsIgnoreCase(drawingNo)) {
throw new RuntimeException("编码为空,无法自动保存!");
}
assertDrawingNoGenerated(site, drawingNo);
PartInformationEntity partData = partInformationMapper.selectOne(
new QueryWrapper<PartInformationEntity>()
.eq("site", site)
@ -1356,6 +1361,28 @@ public class PartInformationServiceImpl extends ServiceImpl<PartInformationMappe
}
}
private void assertDrawingNoGenerated(String site, String drawingNo) {
String normalizedDrawingNo = stripLeadingFrPrefix(drawingNo);
if (!StringUtils.hasText(normalizedDrawingNo)) {
throw new RuntimeException("该编码尚未生成,不能保存");
}
Integer count = codeDrawingMapper.countGeneratedDrawingNo(site, normalizedDrawingNo);
if (count == null || count <= 0) {
throw new RuntimeException("该编码尚未生成,不能保存");
}
}
private String stripLeadingFrPrefix(String drawingNo) {
String text = normalizePartAndDrawingText(drawingNo);
if (text.length() > 1) {
char first = Character.toUpperCase(text.charAt(0));
if (first == 'F' || first == 'R') {
return text.substring(1);
}
}
return text;
}
private String normalizePartAndDrawingText(String text) {
if (text == null) {
return "";

12
src/main/resources/mapper/code/CodeDrawingMapper.xml

@ -74,4 +74,16 @@
</if>
</where>
</select>
<select id="countGeneratedDrawingNo" resultType="int">
select count(1)
from DC_PartList
where site = #{site}
and UPPER(
case
when UPPER(LEFT(drawing_no, 1)) in ('F', 'R') then SUBSTRING(drawing_no, 2, LEN(drawing_no))
else drawing_no
end
) = UPPER(#{normalizedDrawingNo})
</select>
</mapper>
Loading…
Cancel
Save