From cfa51be0ceb9a04a1e20b4fba3b4f897c60b611b Mon Sep 17 00:00:00 2001 From: 刘小明 <liuxm_a@163.com> Date: 星期三, 19 六月 2024 09:49:39 +0800 Subject: [PATCH] 工站编码自动生成 --- pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPlt/PltStation.java | 4 ++-- pms-parent/pms-web-platform/src/main/java/com/dy/pmsPlatform/station/StationSv.java | 47 ++++++++++++++++++++++++++++++++++++++++------- pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPlt/PltStationMapper.java | 2 ++ pms-parent/pms-global/src/main/resources/mapper/PltStationMapper.xml | 3 +++ 4 files changed, 47 insertions(+), 9 deletions(-) diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPlt/PltStationMapper.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPlt/PltStationMapper.java index da96e81..eadc2a7 100644 --- a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPlt/PltStationMapper.java +++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPlt/PltStationMapper.java @@ -30,4 +30,6 @@ int deleteLogicById(Long id); List<PltStation> selectAll(); + + String selectMaxCode(); } diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPlt/PltStation.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPlt/PltStation.java index 3798a85..ebdd309 100644 --- a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPlt/PltStation.java +++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPlt/PltStation.java @@ -41,8 +41,8 @@ /** * 缂栧彿 */ - @NotEmpty(message = "缂栧彿涓嶈兘涓虹┖") - @Length(message = "缂栧彿蹇呴』{max}浣嶆暟鎹�", min = 4, max = 4) +// @NotEmpty(message = "缂栧彿涓嶈兘涓虹┖") +// @Length(message = "缂栧彿蹇呴』{max}浣嶆暟鎹�", min = 4, max = 4) public String code; /** diff --git a/pms-parent/pms-global/src/main/resources/mapper/PltStationMapper.xml b/pms-parent/pms-global/src/main/resources/mapper/PltStationMapper.xml index 3f19405..5e4c28c 100644 --- a/pms-parent/pms-global/src/main/resources/mapper/PltStationMapper.xml +++ b/pms-parent/pms-global/src/main/resources/mapper/PltStationMapper.xml @@ -119,6 +119,9 @@ <include refid="Base_Column_List" /> from plt_station where deleted!=1 </select> + <select id="selectMaxCode" resultType="java.lang.String"> + select max(code) from plt_station + </select> <update id="deleteLogicById" parameterType="java.lang.Long"> update plt_station set deleted = 1 diff --git a/pms-parent/pms-web-platform/src/main/java/com/dy/pmsPlatform/station/StationSv.java b/pms-parent/pms-web-platform/src/main/java/com/dy/pmsPlatform/station/StationSv.java index f3c52cd..3890a5a 100644 --- a/pms-parent/pms-web-platform/src/main/java/com/dy/pmsPlatform/station/StationSv.java +++ b/pms-parent/pms-web-platform/src/main/java/com/dy/pmsPlatform/station/StationSv.java @@ -1,6 +1,7 @@ package com.dy.pmsPlatform.station; import cn.hutool.core.codec.Base64; +import com.alibaba.excel.util.StringUtils; import com.dy.common.webUtil.QueryResultVo; import com.dy.pmsGlobal.daoPlt.PltStationMapper; import com.dy.pmsGlobal.pojoPlt.PltProduct; @@ -10,6 +11,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.common.utils.PojoUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -23,6 +25,8 @@ private PltStationMapper dao; private static final String stationPrefix = "103" ; + private static final String DEFAULT_CODE = "0001"; + private static final String CODE_FORMAT = "%04d"; @Autowired public void setDao(PltStationMapper dao) { @@ -31,11 +35,40 @@ @Transactional public int save(PltStation station) throws RuntimeException { - if(dao.selectByCodeId(station.id,station.code)>0){ - throw new RuntimeException("宸ョ珯缂栧彿宸插瓨鍦�"); - } - int count = dao.insertSelective(station); + +// if(dao.selectByCodeId(station.id,station.code)>0){ +// throw new RuntimeException("宸ョ珯缂栧彿宸插瓨鍦�"); +// } + int count = 0; + int flag=0; + do { + station.code = getNextCode(); + try { + count = dao.insertSelective(station); + return count; + } catch (DuplicateKeyException e) { + // 濡傛灉鍑虹幇鍞竴绾︽潫杩濆弽寮傚父锛屽皾璇曡幏鍙栨柊鐨刢ode骞堕噸璇� + log.warn("鎻掑叆宸ョ珯鏃堕亣鍒板敮涓�绾︽潫寮傚父锛屽皾璇曡幏鍙栨柊鐨刢ode", e); + } + flag++; + } while (flag<5); + return count; + } + + private String getNextCode(){ + log.info("鑾峰彇宸ョ珯缂栧彿"); + String maxCode = dao.selectMaxCode(); + if (StringUtils.isBlank(maxCode)) { + return DEFAULT_CODE; + } else { + int nextCode = Integer.parseInt(maxCode) + 1; + // 妫�鏌ユ孩鍑� + if (nextCode > 9999) { + throw new RuntimeException("宸ョ珯缂栧彿婧㈠嚭"); + } + return String.format(CODE_FORMAT, nextCode); + } } /** @@ -52,9 +85,9 @@ @Transactional public int update(PltStation station) throws RuntimeException { - if(dao.selectByCodeId(station.id,station.code)>0){ - throw new RuntimeException("宸ョ珯缂栧彿宸插瓨鍦�"); - } +// if(dao.selectByCodeId(station.id,station.code)>0){ +// throw new RuntimeException("宸ョ珯缂栧彿宸插瓨鍦�"); +// } int count = dao.updateByPrimaryKeySelective(station); return count; } -- Gitblit v1.8.0