Ver código fonte

试验编号bug

cr 2 meses atrás
pai
commit
bba5669313

+ 3 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/TrialNumberRuleController.java

@@ -68,6 +68,7 @@ public class TrialNumberRuleController extends BladeController {
 
 
 	private final ITrialNumberRuleService trialNumberRuleService;
 	private final ITrialNumberRuleService trialNumberRuleService;
     private final TrialNumberRuleMapper  trialNumberRuleMapper;
     private final TrialNumberRuleMapper  trialNumberRuleMapper;
+    private final JdbcTemplate jdbcTemplate;
 
 
 	/**
 	/**
 	 * 详情
 	 * 详情
@@ -341,4 +342,6 @@ public class TrialNumberRuleController extends BladeController {
 
 
 
 
 
 
+
+
 }
 }

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/ITrialNumberRuleService.java

@@ -50,6 +50,8 @@ public interface ITrialNumberRuleService extends BaseService<TrialNumberRule> {
     //编号规则发生改变,清空对应的编号
     //编号规则发生改变,清空对应的编号
     boolean clearTrialNumber(Long projectId, Long contractId, Integer type);
     boolean clearTrialNumber(Long projectId, Long contractId, Integer type);
 
 
+	boolean checkTrialNumberIsExist(String trialNumber,Integer type);
+
 
 
     Map<String, String> getEntrustNumber(Long pkeyId,Long contractId) throws FileNotFoundException;
     Map<String, String> getEntrustNumber(Long pkeyId,Long contractId) throws FileNotFoundException;
 }
 }

+ 6 - 2
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/EntrustInfoServiceImpl.java

@@ -196,7 +196,11 @@ public class EntrustInfoServiceImpl extends BaseServiceImpl<EntrustInfoMapper, E
         if(dataInfo.containsKey("id")){
         if(dataInfo.containsKey("id")){
             entrustInfo.setId(Long.parseLong(dataInfo.get("id").toString()));
             entrustInfo.setId(Long.parseLong(dataInfo.get("id").toString()));
         }
         }
-        this.saveOrUpdate(entrustInfo);
+		boolean b = trialNumberRuleService.checkTrialNumberIsExist(entrustInfo.getEntrustNo(), 3);
+		if(!b){
+			throw new ServiceException("委托单编号已存在");
+		}
+		this.saveOrUpdate(entrustInfo);
         String autoIncrementNumber=dataInfo.get("autoIncrementNumber")==null?"":dataInfo.get("autoIncrementNumber").toString();
         String autoIncrementNumber=dataInfo.get("autoIncrementNumber")==null?"":dataInfo.get("autoIncrementNumber").toString();
         String trialAutoNumber=dataInfo.get("trialNumber")==null?"":dataInfo.get("trialNumber").toString();
         String trialAutoNumber=dataInfo.get("trialNumber")==null?"":dataInfo.get("trialNumber").toString();
         String entrustNo=entrustInfo.getEntrustNo()==null?"":entrustInfo.getEntrustNo();
         String entrustNo=entrustInfo.getEntrustNo()==null?"":entrustInfo.getEntrustNo();
@@ -204,7 +208,7 @@ public class EntrustInfoServiceImpl extends BaseServiceImpl<EntrustInfoMapper, E
             if(trialAutoNumber.equals(entrustNo)){
             if(trialAutoNumber.equals(entrustNo)){
                 trialNumberRuleService.checkSave(Long.parseLong(entrustInfo.getContractId()), 3, entrustInfo.getId(), autoIncrementNumber);
                 trialNumberRuleService.checkSave(Long.parseLong(entrustInfo.getContractId()), 3, entrustInfo.getId(), autoIncrementNumber);
             }
             }
-            bladeRedis.del("trialAutoNumber:" + entrustInfo.getContractId() + ":" + 3 + ":" + entrustInfo.getId() + ":" + "lock:" + autoIncrementNumber);
+            //bladeRedis.del("trialAutoNumber:" + entrustInfo.getContractId() + ":" + 3 + ":" + entrustInfo.getId() + ":" + "lock:" + autoIncrementNumber);
         }
         }
 		dataInfo.put("groupId",entrustInfo.getId());
 		dataInfo.put("groupId",entrustInfo.getId());
 		dataInfo.put("pkeyId", dataInfo.getString("nodeErTreeId"));
 		dataInfo.put("pkeyId", dataInfo.getString("nodeErTreeId"));

+ 5 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialMaterialMobilizationServiceImpl.java

@@ -95,13 +95,17 @@ public class TrialMaterialMobilizationServiceImpl extends BaseServiceImpl<TrialM
         if (ObjectUtil.isEmpty(SecureUtil.getUserId())) {
         if (ObjectUtil.isEmpty(SecureUtil.getUserId())) {
             throw new ServiceException("获取用户信息失败");
             throw new ServiceException("获取用户信息失败");
         }
         }
+        boolean b = trialNumberRuleService.checkTrialNumberIsExist(obj.getMaterialNumber(), 1);
+        if(!b){
+            throw new ServiceException("编号已存在");
+        }
         obj.setUserId(SecureUtil.getUserId());
         obj.setUserId(SecureUtil.getUserId());
         this.saveOrUpdate(obj);
         this.saveOrUpdate(obj);
         if(StringUtils.isNotEmpty(obj.getAutoIncrementNumber())){
         if(StringUtils.isNotEmpty(obj.getAutoIncrementNumber())){
             if(obj.getTrialNumber().equals(obj.getMaterialNumber())){
             if(obj.getTrialNumber().equals(obj.getMaterialNumber())){
                 trialNumberRuleService.checkSave(obj.getContractId(), 1, obj.getId(), obj.getAutoIncrementNumber());
                 trialNumberRuleService.checkSave(obj.getContractId(), 1, obj.getId(), obj.getAutoIncrementNumber());
             }
             }
-            bladeRedis.del("trialAutoNumber:" + obj.getContractId() + ":" + 1 + ":" + obj.getId() + ":" + "lock:" + obj.getAutoIncrementNumber());
+            //bladeRedis.del("trialAutoNumber:" + obj.getContractId() + ":" + 1 + ":" + obj.getId() + ":" + "lock:" + obj.getAutoIncrementNumber());
         }
         }
 
 
         return true;
         return true;

+ 80 - 50
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialNumberRuleServiceImpl.java

@@ -127,14 +127,9 @@ public class TrialNumberRuleServiceImpl extends BaseServiceImpl<TrialNumberRuleM
                 String currentMonthStr = String.format("%02d", currentMonthValue);
                 String currentMonthStr = String.format("%02d", currentMonthValue);
                 trialNumber.append(currentMonthStr);
                 trialNumber.append(currentMonthStr);
             } else if (rule.getRule()==6) {
             } else if (rule.getRule()==6) {
-                if(!isSaveRedis){
-                    trialNumber.append(rule.getData());
-                    continue;
-                }
                 if(rule.getIsAutoIncrement()!=null&&rule.getIsAutoIncrement()==1){
                 if(rule.getIsAutoIncrement()!=null&&rule.getIsAutoIncrement()==1){
                     String autoIncrementNumber="";
                     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 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 -> {
                     String maxNumber = jdbcTemplate.query(sql3, rs -> {
                         if (rs.next()) {
                         if (rs.next()) {
@@ -143,42 +138,44 @@ public class TrialNumberRuleServiceImpl extends BaseServiceImpl<TrialNumberRuleM
                             return rule.getData();
                             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);
                     map.put("autoIncrementNumber",autoIncrementNumber);
                     trialNumber.append(autoIncrementNumber);
                     trialNumber.append(autoIncrementNumber);
                 }
                 }
@@ -250,6 +247,38 @@ public class TrialNumberRuleServiceImpl extends BaseServiceImpl<TrialNumberRuleM
 
 
         return missing;
         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
     @Override
     public TrialNumberRuleVO1 getTrialNumberRule(Long projectId,Long contractId, Integer type) {
     public TrialNumberRuleVO1 getTrialNumberRule(Long projectId,Long contractId, Integer type) {
@@ -321,13 +350,13 @@ public class TrialNumberRuleServiceImpl extends BaseServiceImpl<TrialNumberRuleM
             }
             }
             jdbcTemplate.execute(update);
             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;
         String sql="update u_trial_auto_number set is_deleted=0 where contract_id="+contractId+" and type="+ type;
         jdbcTemplate.update(sql);
         jdbcTemplate.update(sql);
         return true;
         return true;
@@ -335,7 +364,6 @@ public class TrialNumberRuleServiceImpl extends BaseServiceImpl<TrialNumberRuleM
 
 
     @Override
     @Override
     public Map<String, String> getEntrustNumber(Long pkeyId,Long contractId) throws FileNotFoundException {
     public Map<String, String> getEntrustNumber(Long pkeyId,Long contractId) throws FileNotFoundException {
-        Long nodeId=pkeyId;
         // 合同段信息
         // 合同段信息
         String sql="select * from m_contract_info where id="+contractId;
         String sql="select * from m_contract_info where id="+contractId;
         ContractInfo contractInfo =jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(ContractInfo.class));
         ContractInfo contractInfo =jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(ContractInfo.class));
@@ -371,7 +399,7 @@ public class TrialNumberRuleServiceImpl extends BaseServiceImpl<TrialNumberRuleM
         if(!elementsWithPlaceholderxx.isEmpty()){
         if(!elementsWithPlaceholderxx.isEmpty()){
             Element first = elementsWithPlaceholderxx.first();
             Element first = elementsWithPlaceholderxx.first();
             String key = first.attr("id");
             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"));
             map.put(key,map.get("trialNumber"));
             return map;
             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));
                     TrialAutoNumber one = trialAutoNumberService.getOne(Wrappers.lambdaQuery(TrialAutoNumber.class).eq(TrialAutoNumber::getFormDataId, formDataId).eq(TrialAutoNumber::getType, type));
                     if(one==null){
                     if(one==null){
                         TrialAutoNumber trialAutoNumber = new TrialAutoNumber();
                         TrialAutoNumber trialAutoNumber = new TrialAutoNumber();
+                        trialAutoNumber.setId(SnowFlakeUtil.getId());
+                        trialAutoNumber.setContractId(contractId);
                         trialAutoNumber.setType(type);
                         trialAutoNumber.setType(type);
                         trialAutoNumber.setNumberRuleId(collect.get(0).getId());
                         trialAutoNumber.setNumberRuleId(collect.get(0).getId());
                         trialAutoNumber.setFormDataId(formDataId);
                         trialAutoNumber.setFormDataId(formDataId);

+ 5 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSampleInfoServiceImpl.java

@@ -147,12 +147,16 @@ public class TrialSampleInfoServiceImpl extends BaseServiceImpl<TrialSampleInfoM
             if (ObjectUtils.isEmpty(trialSampleInfo.getRepresentativeCount())) {
             if (ObjectUtils.isEmpty(trialSampleInfo.getRepresentativeCount())) {
                 trialSampleInfo.setRepresentativeCount("0");
                 trialSampleInfo.setRepresentativeCount("0");
             }
             }
+            boolean b = trialNumberRuleService.checkTrialNumberIsExist(obj.getSpecificationNumber(), 2);
+            if(!b){
+                throw new ServiceException("样品编号已存在");
+            }
             this.saveOrUpdate(trialSampleInfo);
             this.saveOrUpdate(trialSampleInfo);
             if(StringUtils.isNotEmpty(obj.getAutoIncrementNumber())){
             if(StringUtils.isNotEmpty(obj.getAutoIncrementNumber())){
                 if(obj.getTrialNumber().equals(obj.getSpecificationNumber())){
                 if(obj.getTrialNumber().equals(obj.getSpecificationNumber())){
                     trialNumberRuleService.checkSave(obj.getContractId(), 2, obj.getId(), obj.getAutoIncrementNumber());
                     trialNumberRuleService.checkSave(obj.getContractId(), 2, obj.getId(), obj.getAutoIncrementNumber());
                 }
                 }
-                bladeRedis.del("trialAutoNumber:" + obj.getContractId() + ":" + 2 + ":" + obj.getId() + ":" + "lock:" + obj.getAutoIncrementNumber());
+                //bladeRedis.del("trialAutoNumber:" + obj.getContractId() + ":" + 2 + ":" + obj.getId() + ":" + "lock:" + obj.getAutoIncrementNumber());
             }
             }
 
 
             if (trialSampleInfo.getId() != null && obj.getMobilizationId() != null && obj.getMobilizationId() != -1) {
             if (trialSampleInfo.getId() != null && obj.getMobilizationId() != null && obj.getMobilizationId() != -1) {

+ 31 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSelfInspectionRecordServiceImpl.java

@@ -1152,6 +1152,37 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
             //修改项目节点基础信息
             //修改项目节点基础信息
             jdbcTemplate.update("update u_entrust_info set sample_status=4 where id ='"+dto.getEntrustId()+"'");
             jdbcTemplate.update("update u_entrust_info set sample_status=4 where id ='"+dto.getEntrustId()+"'");
         }
         }
+        String[] strings = dto.getTableType().split(",");
+        if(StringUtils.isNotEmpty(dto.getRecordAutoNumber())||StringUtils.isNotEmpty(dto.getReportAutoNumber())){
+            if (dto.getOldRecordNumber()!=null&&dto.getOldRecordNumber().equals(dto.getRecordNo())||dto.getOldReportNumber()!=null&&dto.getOldReportNumber().equals(dto.getReportNo())) {
+                if(strings.length==1){
+                    if(strings[0].equals("1")){
+                        if(StringUtils.isNotEmpty(dto.getRecordAutoNumber())){
+                            trialNumberRuleService.checkSave(Long.valueOf(dto.getProjectId()),4,dto.getId(),dto.getRecordAutoNumber());
+                        }
+                    }else {
+                        if(StringUtils.isNotEmpty(dto.getReportAutoNumber())){
+                            trialNumberRuleService.checkSave(Long.valueOf(dto.getProjectId()),5,dto.getId(),dto.getReportAutoNumber());
+                        }
+                    }
+                }else {
+                    if(StringUtils.isNotEmpty(dto.getRecordAutoNumber())){
+                        trialNumberRuleService.checkSave(Long.valueOf(dto.getProjectId()),4,dto.getId(),dto.getRecordAutoNumber());
+                    }
+                    if(StringUtils.isNotEmpty(dto.getReportAutoNumber())){
+                        trialNumberRuleService.checkSave(Long.valueOf(dto.getProjectId()),5,dto.getId(),dto.getReportAutoNumber());
+                    }
+                }
+            }
+//            if(strings.length==1&&strings[0].equals("1")){
+//                bladeRedis.del("trialAutoNumber:" + dto.getContractId() + ":" + 4 + ":" + dto.getId() + ":" + "lock:" + dto.getRecordAutoNumber());
+//            }else if(strings.length==1&&strings[0].equals("2")){
+//                bladeRedis.del("trialAutoNumber:" + dto.getContractId() + ":" + 5 + ":" + dto.getId() + ":" + "lock:" + dto.getReportAutoNumber());
+//            }else {
+//                bladeRedis.del("trialAutoNumber:" + dto.getContractId() + ":" + 4 + ":" + dto.getId() + ":" + "lock:" + dto.getRecordAutoNumber());
+//                bladeRedis.del("trialAutoNumber:" + dto.getContractId() + ":" + 5 + ":" + dto.getId() + ":" + "lock:" + dto.getReportAutoNumber());
+//            }
+        }
         return dto.getId().toString();
         return dto.getId().toString();
     }
     }