|
@@ -0,0 +1,455 @@
|
|
|
+/*
|
|
|
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
|
|
|
+ *
|
|
|
+ * Redistribution and use in source and binary forms, with or without
|
|
|
+ * modification, are permitted provided that the following conditions are met:
|
|
|
+ *
|
|
|
+ * Redistributions of source code must retain the above copyright notice,
|
|
|
+ * this list of conditions and the following disclaimer.
|
|
|
+ * Redistributions in binary form must reproduce the above copyright
|
|
|
+ * notice, this list of conditions and the following disclaimer in the
|
|
|
+ * documentation and/or other materials provided with the distribution.
|
|
|
+ * Neither the name of the dreamlu.net developer nor the names of its
|
|
|
+ * contributors may be used to endorse or promote products derived from
|
|
|
+ * this software without specific prior written permission.
|
|
|
+ * Author: Chill 庄骞 (smallchill@163.com)
|
|
|
+ */
|
|
|
+package org.springblade.business.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import org.jsoup.Jsoup;
|
|
|
+import org.jsoup.nodes.Document;
|
|
|
+import org.jsoup.nodes.Element;
|
|
|
+import org.jsoup.select.Elements;
|
|
|
+import org.springblade.business.entity.TrialAutoNumber;
|
|
|
+import org.springblade.business.entity.TrialNumberRule;
|
|
|
+import org.springblade.business.vo.TrialNumberRuleVO;
|
|
|
+import org.springblade.business.mapper.TrialNumberRuleMapper;
|
|
|
+import org.springblade.business.service.ITrialNumberRuleService;
|
|
|
+import org.springblade.business.vo.TrialNumberRuleVO1;
|
|
|
+import org.springblade.common.constant.CommonConstant;
|
|
|
+import org.springblade.common.utils.CommonUtil;
|
|
|
+import org.springblade.common.utils.SnowFlakeUtil;
|
|
|
+import org.springblade.core.log.exception.ServiceException;
|
|
|
+import org.springblade.core.mp.base.BaseServiceImpl;
|
|
|
+import org.springblade.core.redis.cache.BladeRedis;
|
|
|
+import org.springblade.core.secure.BladeUser;
|
|
|
+import org.springblade.core.tool.api.R;
|
|
|
+import org.springblade.core.tool.utils.IoUtil;
|
|
|
+import org.springblade.core.tool.utils.ResourceUtil;
|
|
|
+import org.springblade.manager.entity.ContractInfo;
|
|
|
+import org.springblade.manager.entity.WbsTreePrivate;
|
|
|
+import org.springblade.manager.feign.WbsTreePrivateClient;
|
|
|
+import org.springblade.system.cache.ParamCache;
|
|
|
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
+import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
+import org.springframework.jdbc.core.SingleColumnRowMapper;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.io.File;
|
|
|
+import java.io.FileInputStream;
|
|
|
+import java.io.FileNotFoundException;
|
|
|
+import java.io.InputStream;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 服务实现类
|
|
|
+ *
|
|
|
+ * @author BladeX
|
|
|
+ * @since 2025-06-10
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class TrialNumberRuleServiceImpl extends BaseServiceImpl<TrialNumberRuleMapper, TrialNumberRule> implements ITrialNumberRuleService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private JdbcTemplate jdbcTemplate;
|
|
|
+ @Resource
|
|
|
+ private BladeRedis bladeRedis;
|
|
|
+ @Resource
|
|
|
+ private TrialAutoNumberServiceImpl trialAutoNumberService;
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<TrialNumberRuleVO> selectTrialNumberRulePage(IPage<TrialNumberRuleVO> page, TrialNumberRuleVO trialNumberRule) {
|
|
|
+ return page.setRecords(baseMapper.selectTrialNumberRulePage(page, trialNumberRule));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String,String> getTrialNumber(Long projectId,Long contractId, Integer type,Long nodeId,Boolean isSaveRedis) {
|
|
|
+ HashMap<String, String> map = new HashMap<>();
|
|
|
+ StringBuilder trialNumber = new StringBuilder();
|
|
|
+ List<TrialNumberRule> rules;
|
|
|
+ if(contractId==null||contractId==0L){
|
|
|
+ rules = baseMapper.selectList(Wrappers.<TrialNumberRule>query().lambda().eq(TrialNumberRule::getProjectId, projectId).eq(TrialNumberRule::getType, type).eq(TrialNumberRule::getStatus,1).orderByAsc(TrialNumberRule::getSort));
|
|
|
+ }else {
|
|
|
+ rules = baseMapper.selectList(Wrappers.<TrialNumberRule>query().lambda().eq(TrialNumberRule::getContractId, contractId).eq(TrialNumberRule::getType, type).eq(TrialNumberRule::getStatus,2).orderByAsc(TrialNumberRule::getSort));
|
|
|
+ }
|
|
|
+ boolean flag=true;
|
|
|
+ int i=1;
|
|
|
+ do {
|
|
|
+ for (TrialNumberRule rule : rules) {
|
|
|
+ if(rule.getRule()==1){
|
|
|
+ trialNumber.append(rule.getData());
|
|
|
+ } else if (rule.getRule()==2) {
|
|
|
+ if(contractId!=null&&contractId!=0L){
|
|
|
+ String sql1="select contract_number from m_contract_info where id="+contractId;
|
|
|
+ String result = jdbcTemplate.query(sql1, rs -> {
|
|
|
+ if (rs.next()) {
|
|
|
+ return rs.getString(1);
|
|
|
+ } else {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ });
|
|
|
+ trialNumber.append(result==null?"":result);
|
|
|
+ }else {
|
|
|
+ trialNumber.append("TJ01");
|
|
|
+ }
|
|
|
+ } else if (rule.getRule()==3) {
|
|
|
+ if (nodeId!=null) {
|
|
|
+ String sql2="select unique_code from m_wbs_tree_private where p_key_id="+nodeId+" and is_deleted=0";
|
|
|
+ String result = jdbcTemplate.query(sql2, rs -> {
|
|
|
+ if (rs.next()) {
|
|
|
+ return rs.getString(1);
|
|
|
+ } else {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ });
|
|
|
+ trialNumber.append(result==null?"":result);
|
|
|
+ }else {
|
|
|
+ trialNumber.append("SNY");
|
|
|
+ }
|
|
|
+ } else if (rule.getRule()==4) {
|
|
|
+ String currentYearStr = String.valueOf(LocalDate.now().getYear());
|
|
|
+ trialNumber.append(currentYearStr);
|
|
|
+ } else if (rule.getRule()==5) {
|
|
|
+ int currentMonthValue = LocalDate.now().getMonthValue();
|
|
|
+ String currentMonthStr = String.format("%02d", currentMonthValue);
|
|
|
+ trialNumber.append(currentMonthStr);
|
|
|
+ } else if (rule.getRule()==6) {
|
|
|
+ if(StringUtils.isEmpty(rule.getData())){
|
|
|
+ trialNumber.append("");
|
|
|
+ map.put("autoIncrementNumber","");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(!isSaveRedis){
|
|
|
+ trialNumber.append(rule.getData());
|
|
|
+ map.put("autoIncrementNumber",rule.getData());
|
|
|
+ }
|
|
|
+ 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()) {
|
|
|
+ return rs.getObject(1, String.class);
|
|
|
+ } else {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if(StringUtils.isEmpty(maxNumber)){
|
|
|
+ autoIncrementNumber=rule.getData();
|
|
|
+ }else {
|
|
|
+ autoIncrementNumber=incrementFormattedNumberWithCheck(maxNumber,i);
|
|
|
+ }
|
|
|
+//
|
|
|
+// 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);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ map.put("autoIncrementNumber","");
|
|
|
+ trialNumber.append(rule.getData());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(isSaveRedis){
|
|
|
+ flag=checkTrialNumberIsExist(trialNumber.toString(),type,contractId);
|
|
|
+ i++;
|
|
|
+ if(!flag){
|
|
|
+ trialNumber.setLength(0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }while (!flag);
|
|
|
+ map.put("trialNumber",trialNumber.toString());
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String incrementFormattedNumberWithCheck(String data,int i) {
|
|
|
+ if (data == null || data.isEmpty()) {
|
|
|
+ return "0";
|
|
|
+ }
|
|
|
+
|
|
|
+ int length = data.length();
|
|
|
+ int number = Integer.parseInt(data);
|
|
|
+ number += i;
|
|
|
+
|
|
|
+ // 检查自增后的数字位数是否超过原始数据的长度
|
|
|
+ if (String.valueOf(number).length() > length) {
|
|
|
+ throw new ServiceException("自增后的编号超出原始格式位数限制:" + data);
|
|
|
+ }
|
|
|
+
|
|
|
+ return String.format("%0" + length + "d", number);
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<String> findMissingNumberPatterns(List<String> autoNumbersStr) {
|
|
|
+ if (autoNumbersStr == null || autoNumbersStr.size() <= 1) {
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 提取数字和最大长度
|
|
|
+ List<Long> numbers = new ArrayList<>();
|
|
|
+ int maxLength = 0;
|
|
|
+
|
|
|
+ for (String s : autoNumbersStr) {
|
|
|
+ try {
|
|
|
+ Long num = Long.parseLong(s);
|
|
|
+ numbers.add(num);
|
|
|
+ maxLength = Math.max(maxLength, s.length());
|
|
|
+ } catch (NumberFormatException ignored) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (numbers.size() <= 1) {
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 排序
|
|
|
+ numbers.sort(Long::compareTo);
|
|
|
+
|
|
|
+ long start = numbers.get(0);
|
|
|
+ long end = numbers.get(numbers.size() - 1);
|
|
|
+ Set<Long> numberSet = new HashSet<>(numbers);
|
|
|
+
|
|
|
+ List<String> missing = new ArrayList<>();
|
|
|
+
|
|
|
+ for (long i = start; i <= end; i++) {
|
|
|
+ if (!numberSet.contains(i)) {
|
|
|
+ // 使用原始最长字符串的长度进行格式化
|
|
|
+ String formatted = String.format("%0" + maxLength + "d", i);
|
|
|
+ missing.add(formatted);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return missing;
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public boolean checkTrialNumberIsExist(String trialNumber,Integer type,Long contractId){
|
|
|
+ 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 and contract_id="+contractId;
|
|
|
+ System.out.println(sql);
|
|
|
+ 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) {
|
|
|
+ TrialNumberRuleVO1 vo1 = new TrialNumberRuleVO1();
|
|
|
+ List<TrialNumberRule> trialNumberRules;
|
|
|
+ if(contractId==0L){
|
|
|
+ trialNumberRules = baseMapper.selectList(Wrappers.<TrialNumberRule>query().lambda().eq(TrialNumberRule::getProjectId, projectId).eq(TrialNumberRule::getType, type).eq(TrialNumberRule::getStatus,1).orderByAsc(TrialNumberRule::getSort));
|
|
|
+ }else {
|
|
|
+ trialNumberRules = baseMapper.selectList(Wrappers.<TrialNumberRule>query().lambda().eq(TrialNumberRule::getContractId, contractId).eq(TrialNumberRule::getType, type).eq(TrialNumberRule::getStatus,2).orderByAsc(TrialNumberRule::getSort));
|
|
|
+ }
|
|
|
+ if(trialNumberRules.size()>0){
|
|
|
+ for (TrialNumberRule rule : trialNumberRules) {
|
|
|
+ if(rule.getRule()==2){
|
|
|
+ if(rule.getContractId()==null||rule.getContractId()==0L){
|
|
|
+ rule.setData("TJ01");
|
|
|
+ }else {
|
|
|
+ String sql1="select contract_number from m_contract_info where id="+contractId;
|
|
|
+ String result = jdbcTemplate.query(sql1, rs -> {
|
|
|
+ if (rs.next()) {
|
|
|
+ return rs.getString(1);
|
|
|
+ } else {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ });
|
|
|
+ rule.setData(result);
|
|
|
+ }
|
|
|
+ } else if (rule.getRule()==3) {
|
|
|
+ rule.setData("SNY");
|
|
|
+ } else if (rule.getRule()==4) {
|
|
|
+ String currentYearStr = String.valueOf(LocalDate.now().getYear());
|
|
|
+ rule.setData(currentYearStr);
|
|
|
+ } else if (rule.getRule()==5) {
|
|
|
+ int currentMonthValue = LocalDate.now().getMonthValue();
|
|
|
+ String currentMonthStr = String.format("%02d", currentMonthValue);
|
|
|
+ rule.setData(currentMonthStr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(trialNumberRules!=null){
|
|
|
+ Map<String, String> map = getTrialNumber(projectId,contractId, type, null, false);
|
|
|
+ vo1.setList(trialNumberRules);
|
|
|
+ vo1.setTrialNumber(map.get("trialNumber"));
|
|
|
+ return vo1;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * type 1材料 2样品 3委托单 4记录表 5报告表
|
|
|
+ * @param projectId
|
|
|
+ * @param contractId
|
|
|
+ * @param type
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public boolean clearTrialNumber(Long projectId, Long contractId, Integer type) {
|
|
|
+ if(contractId!=null&&contractId!=0L){
|
|
|
+// String update;
|
|
|
+// if(type==1){
|
|
|
+// update="update u_trial_material_mobilization set material_number = NULL where contract_id="+contractId;
|
|
|
+// } else if (type==2) {
|
|
|
+// update="update u_trial_sample_info set specification_number = NULL where contract_id="+contractId;
|
|
|
+// } else if (type==3) {
|
|
|
+// update="update u_entrust_info set entrust_no = NULL where contract_id="+contractId+" and status=1";
|
|
|
+// } else if (type==4) {
|
|
|
+// update="update u_trial_self_inspection_record set record_no = NULL where contract_id="+contractId+" and task_status='未上报'";
|
|
|
+// }else{
|
|
|
+// update="update u_trial_self_inspection_record set report_no = NULL where contract_id="+contractId+" and task_status='未上报'";
|
|
|
+// }
|
|
|
+// jdbcTemplate.execute(update);
|
|
|
+ List<TrialNumberRule> trialNumberRules;
|
|
|
+ trialNumberRules = baseMapper.selectList(Wrappers.<TrialNumberRule>query().lambda().eq(TrialNumberRule::getContractId, contractId).eq(TrialNumberRule::getType, type).eq(TrialNumberRule::getStatus,2).orderByAsc(TrialNumberRule::getSort));
|
|
|
+ if(!trialNumberRules.isEmpty()){
|
|
|
+ boolean b = trialNumberRules.stream().anyMatch(t -> t.getRule() == 6);
|
|
|
+ if(b){
|
|
|
+ String sql="update u_trial_auto_number set is_deleted=1 where contract_id="+contractId+" and type="+ type;
|
|
|
+ jdbcTemplate.update(sql);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, String> getEntrustNumber(Long pkeyId,Long contractId) throws FileNotFoundException {
|
|
|
+ final Long nodeId=pkeyId;
|
|
|
+ // 合同段信息
|
|
|
+ String sql="select * from m_contract_info where id="+contractId;
|
|
|
+ ContractInfo contractInfo =jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(ContractInfo.class));
|
|
|
+ String sql1="select * from m_wbs_tree_private where p_key_id="+pkeyId;
|
|
|
+ // 节点数
|
|
|
+ WbsTreePrivate treePrivate = jdbcTemplate.queryForObject(sql1,new BeanPropertyRowMapper<>(WbsTreePrivate.class));
|
|
|
+ if (contractInfo == null) {
|
|
|
+ throw new ServiceException("合同段信息为null");
|
|
|
+ }
|
|
|
+ if (contractInfo.getContractType() == 2) { //3 监理
|
|
|
+ pkeyId = treePrivate.getJlerTreeId();
|
|
|
+ } else if (contractInfo.getContractType() == 3 || contractInfo.getContractType() == 8) { //业主
|
|
|
+ pkeyId = treePrivate.getYzerTreeId();
|
|
|
+ }else {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ String sql2="select * from m_wbs_tree_private where p_key_id="+pkeyId;
|
|
|
+ WbsTreePrivate wbsTreePrivate1 = jdbcTemplate.queryForObject(sql2, new BeanPropertyRowMapper<>(WbsTreePrivate.class));
|
|
|
+ String fileUrl = wbsTreePrivate1.getHtmlUrl();
|
|
|
+ String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
|
|
|
+ String sys_file_net_url = ParamCache.getValue(CommonConstant.SYS_FILE_NET_URL);
|
|
|
+ File file1 = ResourceUtil.getFile(fileUrl);
|
|
|
+ InputStream fileInputStream;
|
|
|
+ if (file1.exists()) {
|
|
|
+ fileInputStream = new FileInputStream(file1);
|
|
|
+ } else {
|
|
|
+ String path = sys_file_net_url + fileUrl.replaceAll("//", "/").replaceAll(file_path, "");
|
|
|
+ fileInputStream = CommonUtil.getOSSInputStream(path);
|
|
|
+ }
|
|
|
+ String htmlString = IoUtil.readToString(fileInputStream);
|
|
|
+ Document doc = Jsoup.parse(htmlString);
|
|
|
+ Elements elementsWithPlaceholderxx = doc.select("el-input[placeholder*=委托单编号]");
|
|
|
+ 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.put(key,map.get("trialNumber"));
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ public void checkSave(Long contractId,int type,Long formDataId,String autoNumber){
|
|
|
+ List<TrialNumberRule> list = baseMapper.selectList(Wrappers.<TrialNumberRule>query().lambda().eq(TrialNumberRule::getContractId, contractId).eq(TrialNumberRule::getType, type).eq(TrialNumberRule::getStatus,2).orderByAsc(TrialNumberRule::getSort));
|
|
|
+ if(list!=null&&list.size()>0){
|
|
|
+ List<TrialNumberRule> collect = list.stream().filter(o -> o.getRule() == 6 && o.getIsAutoIncrement() == 1).collect(Collectors.toList());
|
|
|
+ if(!collect.isEmpty()){
|
|
|
+ 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);
|
|
|
+ trialAutoNumber.setAutoIncrementNumber(autoNumber);
|
|
|
+ trialAutoNumberService.save(trialAutoNumber);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|