同一流程不重复生成编号

兼容军工类型资质申请
This commit is contained in:
dxfeng 2025-04-16 18:09:34 +08:00
parent 75c8a0b561
commit 4f28855752
2 changed files with 50 additions and 6 deletions

View File

@ -4,9 +4,11 @@ import cn.hutool.core.convert.Convert;
import com.engine.secret.entity.autonumber.AcceptanceNumber;
import com.engine.secret.exception.CustomizeRunTimeException;
import com.engine.secret.util.ModeUtil;
import weaver.common.DateUtil;
import weaver.conn.RecordSetTrans;
import weaver.formmode.IgnoreCaseHashMap;
import weaver.general.Util;
import weaver.hrm.User;
import java.time.LocalDate;
import java.util.Map;
@ -19,18 +21,25 @@ import java.util.UUID;
*/
public class AutoGenerateNumberInstance {
private static final String TABLE_NAME = "uf_sldh";
private static final String RECORD_TABLE_NAME = "uf_sldh_dt1";
private static AutoGenerateNumberInstance instance = new AutoGenerateNumberInstance();
private static final AutoGenerateNumberInstance INSTANCE = new AutoGenerateNumberInstance();
private AutoGenerateNumberInstance() {
// 私有化构造方法
}
public static AutoGenerateNumberInstance getInstance() {
return instance;
return INSTANCE;
}
public synchronized String getAcceptanceNumber(Map<String, Object> param) {
/**
* 集成印制受理编号
*
* @param param
* @return
*/
public synchronized String getAcceptanceNumber(User user, Map<String, Object> param) {
RecordSetTrans rs = new RecordSetTrans();
rs.setAutoCommit(false);
try {
@ -72,6 +81,8 @@ public class AutoGenerateNumberInstance {
String num = formattedYear + formattedMonth + formattedMonthlySerial + formattedGlobalSerial;
rs.writeLog("requestId===" + requestId + ",secretType===" + secretType + ",num===" + num);
insertGenerateRecord(rs, requestId, num, user.getUID());
// 插入编号生成记录
rs.commit();
return num;
} catch (Exception e) {
@ -81,7 +92,13 @@ public class AutoGenerateNumberInstance {
}
}
public synchronized String getWarIndustryAcceptanceNumber(Map<String, Object> param) {
/**
* 军工受理单号
*
* @param param
* @return
*/
public synchronized String getWarIndustryAcceptanceNumber(User user, Map<String, Object> param) {
RecordSetTrans rs = new RecordSetTrans();
rs.setAutoCommit(false);
try {
@ -109,6 +126,7 @@ public class AutoGenerateNumberInstance {
String num = "JS" + formattedYear + formattedGlobalSerial;
rs.writeLog("requestId===" + requestId + ",secretType===" + secretType + ",num===" + num);
insertGenerateRecord(rs, requestId, num, user.getUID());
rs.commit();
return num;
} catch (Exception e) {
@ -196,4 +214,21 @@ public class AutoGenerateNumberInstance {
dataMap.put("secret_type", number.getSecretType());
return dataMap;
}
/**
* 插入编号生成记录
*
* @param requestId
* @param num
* @param userId
*/
private void insertGenerateRecord(RecordSetTrans rs, String requestId, String num, int userId) throws Exception {
IgnoreCaseHashMap<String, Object> dataMap = new IgnoreCaseHashMap<>();
dataMap.put("request_id", requestId);
dataMap.put("num", num);
dataMap.put("operate_user", userId);
dataMap.put("operate_time", DateUtil.getFullDate());
ModeUtil.insertData(rs, dataMap, RECORD_TABLE_NAME);
}
}

View File

@ -5,6 +5,7 @@ import com.engine.core.impl.Service;
import com.engine.secret.exception.CustomizeRunTimeException;
import com.engine.secret.instance.AutoGenerateNumberInstance;
import com.engine.secret.service.AutoGenerateNumberService;
import weaver.conn.RecordSet;
import java.util.Map;
@ -18,16 +19,24 @@ public class AutoGenerateNumberServiceImpl extends Service implements AutoGenera
@Override
public String getAcceptanceNumber(Map<String, Object> param) {
Integer secretType = Convert.toInt(param.get("secretType"));
Integer requestId = Convert.toInt(param.get("requestId"));
if (null == secretType) {
throw new CustomizeRunTimeException("未获取到[保密资质(资格)类型],请检查表单数据");
}
// 查询当前请求是否已经生成单号如已生成过直接取原来单号不重新生成
RecordSet rs = new RecordSet();
rs.executeQuery("select num from uf_sldh_dt1 where request_id = ? ", requestId);
if (rs.next()) {
return rs.getString("num");
}
AutoGenerateNumberInstance instance = AutoGenerateNumberInstance.getInstance();
if (0 == secretType || 1 == secretType) {
// 集成印制
return instance.getAcceptanceNumber(param);
return instance.getAcceptanceNumber(user, param);
} else {
// 军工
return instance.getWarIndustryAcceptanceNumber(param);
return instance.getWarIndustryAcceptanceNumber(user, param);
}
}
}