【工艺路线】编号生成规则

This commit is contained in:
10001392 2024-12-05 16:02:27 +08:00
parent f6c5072ee4
commit ff4d34744f
1 changed files with 43 additions and 1 deletions

View File

@ -23,6 +23,7 @@ import com.nflg.product.technology.pojo.entity.*;
import com.nflg.product.technology.pojo.query.ProcessRouteTaskQuery;
import com.nflg.product.technology.pojo.vo.*;
import nflg.product.common.constant.STATE;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -32,6 +33,7 @@ import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.ForkJoinTask;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@ -46,6 +48,8 @@ import java.util.stream.Collectors;
@Service
public class ProcessRouteTaskService extends ServiceImpl<ProcessRouteTaskMapper, ProcessRouteTaskEntity> {
private static final String TASK_CODE_KEY = "processRouteTaskCode";
@Resource
private ProcessRouteTaskProcessesService processRouteTaskProcessesService;
@Resource
@ -60,6 +64,8 @@ public class ProcessRouteTaskService extends ServiceImpl<ProcessRouteTaskMapper,
private ProcessRouteTaskProcessesMapper processRouteTaskProcessesMapper;
@Resource
private ProcessRouteTaskAssemblyMapper processRouteTaskAssemblyMapper;
@Resource
private RedisTemplate<String, List<String>> redisTemplate;
public IPage<ProcessRouteTaskVO> selectPageByCondition(ProcessRouteTaskQuery query) {
//设置分页
@ -185,7 +191,7 @@ public class ProcessRouteTaskService extends ServiceImpl<ProcessRouteTaskMapper,
// 新增
if (ObjectUtil.isEmpty(processRouteTaskVO.getRowId())) {
taskEntity.setRowId(IdWorker.getId());
taskEntity.setTaskCode(RandomUtil.randomString(8));
taskEntity.setTaskCode(generateRandomTaskCode());
taskEntity.setCreatedByName(SessionUtil.getRealName());
taskEntity.setExpireStartTime(firstDay);
taskEntity.setExpireEndTime(lastDay);
@ -245,6 +251,42 @@ public class ProcessRouteTaskService extends ServiceImpl<ProcessRouteTaskMapper,
}
}
/**
* 随机不重复编号格式yymmdd随机四位数字
* @return 随机编号
*/
private synchronized String generateRandomTaskCode() {
List<String> processRouteTaskCode = redisTemplate.opsForValue().get(TASK_CODE_KEY);
// 第一次生成
if (CollUtil.isEmpty(processRouteTaskCode)) {
String randomNumbers = getRandomNumbers();
List<String> randomList = new ArrayList<>();
randomList.add(randomNumbers);
redisTemplate.opsForValue().set(TASK_CODE_KEY, randomList);
redisTemplate.expire(TASK_CODE_KEY, 1, TimeUnit.DAYS); // 有效期1天
return randomNumbers;
} else {
String randomNumbers = loopGenerate(processRouteTaskCode);
processRouteTaskCode.add(randomNumbers);
redisTemplate.opsForValue().set(TASK_CODE_KEY, processRouteTaskCode);
return randomNumbers;
}
}
private String loopGenerate(List<String> processRouteTaskCode) {
String randomNumbers = getRandomNumbers();
if (processRouteTaskCode.contains(randomNumbers)) {
randomNumbers = loopGenerate(processRouteTaskCode);
}
return randomNumbers;
}
private String getRandomNumbers() {
String today = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMdd"));
String randomNumbers = RandomUtil.randomNumbers(4);
return today + randomNumbers;
}
public List<BomNewPBomVO> getPBomAllTree(ProcessRouteTaskQuery query) {
if (ObjectUtil.isEmpty(query.getMaterialNo())) {
return null;