|
@@ -127,14 +127,9 @@ public class TrialNumberRuleServiceImpl extends BaseServiceImpl<TrialNumberRuleM
|
|
|
String currentMonthStr = String.format("%02d", currentMonthValue);
|
|
|
trialNumber.append(currentMonthStr);
|
|
|
} else if (rule.getRule()==6) {
|
|
|
- if(!isSaveRedis){
|
|
|
- trialNumber.append(rule.getData());
|
|
|
- continue;
|
|
|
- }
|
|
|
if(rule.getIsAutoIncrement()!=null&&rule.getIsAutoIncrement()==1){
|
|
|
String autoIncrementNumber="";
|
|
|
//如果是需要自增的 先要查出当前数据库中自增编号的最大值
|
|
|
-
|
|
|
String sql3 = "SELECT auto_increment_number FROM u_trial_auto_number where type="+type+" and contract_id="+contractId+" and is_deleted=0 ORDER BY auto_increment_number DESC LIMIT 1";
|
|
|
String maxNumber = jdbcTemplate.query(sql3, rs -> {
|
|
|
if (rs.next()) {
|
|
@@ -143,42 +138,44 @@ public class TrialNumberRuleServiceImpl extends BaseServiceImpl<TrialNumberRuleM
|
|
|
return rule.getData();
|
|
|
}
|
|
|
});
|
|
|
- String sql4="select auto_increment_number FROM u_trial_auto_number where type="+type+" and contract_id="+contractId+" and is_deleted=0 ORDER BY auto_increment_number ASC";
|
|
|
- List<String> autoNumbers = jdbcTemplate.query(sql4, new SingleColumnRowMapper<>(String.class));
|
|
|
- //判断自增的流水号是否是连续的 是连续的就在最大值加1,不是连续的先使用缺失的编号
|
|
|
- List<String> missingNumbers = findMissingNumberPatterns(autoNumbers);
|
|
|
- if(missingNumbers.isEmpty()){
|
|
|
- while (true){
|
|
|
- maxNumber=incrementFormattedNumberWithCheck(maxNumber);
|
|
|
- Object o = bladeRedis.get("trialAutoNumber:" + contractId + ":" + type + ":" + nodeId + ":" + "lock:" + maxNumber);
|
|
|
- if(o==null){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- autoIncrementNumber=maxNumber;
|
|
|
- }else {
|
|
|
- for (int i = 0; i < missingNumbers.size(); i++) {
|
|
|
- autoIncrementNumber=missingNumbers.get(i);
|
|
|
- Object o = bladeRedis.get("trialAutoNumber:" + contractId + ":" + type + ":" + nodeId + ":" + "lock:" + autoIncrementNumber);
|
|
|
- if(o==null){
|
|
|
- break;
|
|
|
- }
|
|
|
- autoIncrementNumber="";
|
|
|
- }
|
|
|
- if(autoIncrementNumber.equals("")){
|
|
|
- while (true){
|
|
|
- maxNumber=incrementFormattedNumberWithCheck(maxNumber);
|
|
|
- Object o = bladeRedis.get("trialAutoNumber:" + contractId + ":" + type + ":" + nodeId + ":" + "lock:" + maxNumber);
|
|
|
- if(o==null){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- autoIncrementNumber=String.valueOf(maxNumber);
|
|
|
- }
|
|
|
- }
|
|
|
- if (isSaveRedis) {
|
|
|
- bladeRedis.setEx("trialAutoNumber:" + contractId + ":" + type + ":" + nodeId + ":" + "lock:" + autoIncrementNumber , autoIncrementNumber,2*60L);
|
|
|
- }
|
|
|
+ autoIncrementNumber=incrementFormattedNumberWithCheck(maxNumber);
|
|
|
+//
|
|
|
+// String sql4="select auto_increment_number FROM u_trial_auto_number where type="+type+" and contract_id="+contractId+" and is_deleted=0 ORDER BY auto_increment_number ASC";
|
|
|
+// List<String> autoNumbers = jdbcTemplate.query(sql4, new SingleColumnRowMapper<>(String.class));
|
|
|
+// //判断自增的流水号是否是连续的 是连续的就在最大值加1,不是连续的先使用缺失的编号
|
|
|
+// List<String> missingNumbers = findMissingNumberPatterns(autoNumbers);
|
|
|
+// if(missingNumbers.isEmpty()){
|
|
|
+// while (true){
|
|
|
+// maxNumber=incrementFormattedNumberWithCheck(maxNumber);
|
|
|
+// Object o = bladeRedis.get("trialAutoNumber:" + contractId + ":" + type + ":" + nodeId + ":" + "lock:" + maxNumber);
|
|
|
+// if(o==null){
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// autoIncrementNumber=maxNumber;
|
|
|
+// }else {
|
|
|
+// for (int i = 0; i < missingNumbers.size(); i++) {
|
|
|
+// autoIncrementNumber=missingNumbers.get(i);
|
|
|
+// Object o = bladeRedis.get("trialAutoNumber:" + contractId + ":" + type + ":" + nodeId + ":" + "lock:" + autoIncrementNumber);
|
|
|
+// if(o==null){
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// autoIncrementNumber="";
|
|
|
+// }
|
|
|
+// if(autoIncrementNumber.equals("")){
|
|
|
+// while (true){
|
|
|
+// maxNumber=incrementFormattedNumberWithCheck(maxNumber);
|
|
|
+// Object o = bladeRedis.get("trialAutoNumber:" + contractId + ":" + type + ":" + nodeId + ":" + "lock:" + maxNumber);
|
|
|
+// if(o==null){
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// autoIncrementNumber=String.valueOf(maxNumber);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// if (isSaveRedis) {
|
|
|
+// bladeRedis.setEx("trialAutoNumber:" + contractId + ":" + type + ":" + nodeId + ":" + "lock:" + autoIncrementNumber , autoIncrementNumber,10 * 60 * 1000L);
|
|
|
+// }
|
|
|
map.put("autoIncrementNumber",autoIncrementNumber);
|
|
|
trialNumber.append(autoIncrementNumber);
|
|
|
}
|
|
@@ -250,6 +247,38 @@ public class TrialNumberRuleServiceImpl extends BaseServiceImpl<TrialNumberRuleM
|
|
|
|
|
|
return missing;
|
|
|
}
|
|
|
+ @Override
|
|
|
+ public boolean checkTrialNumberIsExist(String trialNumber,Integer type){
|
|
|
+ String tableName="";
|
|
|
+ String number="";
|
|
|
+ if(type==1){
|
|
|
+ tableName="u_trial_material_mobilization";
|
|
|
+ number="material_number";
|
|
|
+ }
|
|
|
+ if(type==2){
|
|
|
+ tableName="u_trial_sample_info";
|
|
|
+ number="specification_number";
|
|
|
+ }
|
|
|
+ if(type==3){
|
|
|
+ tableName="u_entrust_info";
|
|
|
+ number="entrust_no";
|
|
|
+ }
|
|
|
+ if(type==4){
|
|
|
+ tableName="u_trial_self_inspection_record";
|
|
|
+ number="record_no";
|
|
|
+ }
|
|
|
+ if(type==5){
|
|
|
+ tableName="u_trial_self_inspection_record";
|
|
|
+ number="report_no";
|
|
|
+ }
|
|
|
+ String sql="select count(id) from "+tableName+" where "+number+" = '"+trialNumber+"' and is_deleted=0";
|
|
|
+ Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
|
|
|
+ if(count==0){
|
|
|
+ return true;
|
|
|
+ }else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
public TrialNumberRuleVO1 getTrialNumberRule(Long projectId,Long contractId, Integer type) {
|
|
@@ -321,13 +350,13 @@ public class TrialNumberRuleServiceImpl extends BaseServiceImpl<TrialNumberRuleM
|
|
|
}
|
|
|
jdbcTemplate.execute(update);
|
|
|
}
|
|
|
- String pattern = "trialAutoNumber:" + contractId + ":" + type + ":*:lock:*";
|
|
|
- Set<String> keys = bladeRedis.keys(pattern);
|
|
|
- if (keys != null && !keys.isEmpty()) {
|
|
|
- for (String key : keys) {
|
|
|
- bladeRedis.del(key);
|
|
|
- }
|
|
|
- }
|
|
|
+// String pattern = "trialAutoNumber:" + contractId + ":" + type + ":*:lock:*";
|
|
|
+// Set<String> keys = bladeRedis.keys(pattern);
|
|
|
+// if (keys != null && !keys.isEmpty()) {
|
|
|
+// for (String key : keys) {
|
|
|
+// bladeRedis.del(key);
|
|
|
+// }
|
|
|
+// }
|
|
|
String sql="update u_trial_auto_number set is_deleted=0 where contract_id="+contractId+" and type="+ type;
|
|
|
jdbcTemplate.update(sql);
|
|
|
return true;
|
|
@@ -335,7 +364,6 @@ public class TrialNumberRuleServiceImpl extends BaseServiceImpl<TrialNumberRuleM
|
|
|
|
|
|
@Override
|
|
|
public Map<String, String> getEntrustNumber(Long pkeyId,Long contractId) throws FileNotFoundException {
|
|
|
- Long nodeId=pkeyId;
|
|
|
// 合同段信息
|
|
|
String sql="select * from m_contract_info where id="+contractId;
|
|
|
ContractInfo contractInfo =jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(ContractInfo.class));
|
|
@@ -371,7 +399,7 @@ public class TrialNumberRuleServiceImpl extends BaseServiceImpl<TrialNumberRuleM
|
|
|
if(!elementsWithPlaceholderxx.isEmpty()){
|
|
|
Element first = elementsWithPlaceholderxx.first();
|
|
|
String key = first.attr("id");
|
|
|
- Map<String, String> map = getTrialNumber(Long.valueOf(wbsTreePrivate1.getProjectId()),contractId, 3, nodeId, true);
|
|
|
+ Map<String, String> map = getTrialNumber(Long.valueOf(wbsTreePrivate1.getProjectId()),contractId, 3, pkeyId, true);
|
|
|
map.put(key,map.get("trialNumber"));
|
|
|
return map;
|
|
|
}
|
|
@@ -387,6 +415,8 @@ public class TrialNumberRuleServiceImpl extends BaseServiceImpl<TrialNumberRuleM
|
|
|
TrialAutoNumber one = trialAutoNumberService.getOne(Wrappers.lambdaQuery(TrialAutoNumber.class).eq(TrialAutoNumber::getFormDataId, formDataId).eq(TrialAutoNumber::getType, type));
|
|
|
if(one==null){
|
|
|
TrialAutoNumber trialAutoNumber = new TrialAutoNumber();
|
|
|
+ trialAutoNumber.setId(SnowFlakeUtil.getId());
|
|
|
+ trialAutoNumber.setContractId(contractId);
|
|
|
trialAutoNumber.setType(type);
|
|
|
trialAutoNumber.setNumberRuleId(collect.get(0).getId());
|
|
|
trialAutoNumber.setFormDataId(formDataId);
|