【工艺路线】编号生成规则
This commit is contained in:
parent
f6c5072ee4
commit
ff4d34744f
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue