package com.by4cloud.platformx.device.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.by4cloud.platformx.common.data.mybatis.BaseModel;
|
import com.by4cloud.platformx.common.security.service.PlatformxUser;
|
import com.by4cloud.platformx.common.security.util.SecurityUtils;
|
import com.by4cloud.platformx.device.entity.MaxSize;
|
import com.by4cloud.platformx.device.mapper.JcMaxSizeMapper;
|
import com.by4cloud.platformx.device.service.JcMaxSizeService;
|
import lombok.AllArgsConstructor;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.validation.constraints.Max;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.Random;
|
|
/**
|
* 最大号表
|
*
|
* @author kdq
|
* @date 2025-03-25 16:24:34
|
*/
|
@Service
|
@AllArgsConstructor
|
@Transactional
|
public class JcMaxSizeServiceImpl extends ServiceImpl<JcMaxSizeMapper, MaxSize> implements JcMaxSizeService {
|
private final JcMaxSizeMapper maxSizeMapper;
|
@Override
|
public String nextNo(String type) {
|
synchronized (this) {
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
|
String format = sdf.format(new Date());
|
MaxSize maxSize = maxSizeMapper.selectOne(new QueryWrapper<MaxSize>().lambda().eq(MaxSize::getSign, type).eq(MaxSize::getType,0));
|
if (maxSize == null) {
|
return null;
|
}else {
|
MaxSize dayMax = maxSizeMapper.selectOne(new QueryWrapper<MaxSize>().lambda()
|
.eq(MaxSize::getSign, type)
|
.eq(MaxSize::getDay,format));
|
Random random = new Random();
|
int randomNumber = random.nextInt(99);
|
if(dayMax == null){
|
MaxSize maxSize1 = new MaxSize();
|
maxSize1.setSign(type);
|
maxSize1.setDay(format);
|
maxSize1.setType(1);
|
int current = 1;
|
String n = padStart(current, maxSize.getLength());
|
String pre = (maxSize.getUsePrefix() == 0 ? "" : maxSize.getPrefixName());
|
String suf = (maxSize.getUseSuffix() == 0 ? "" : maxSize.getSuffixName());
|
maxSize1.setCurrentNumber(current);
|
save(maxSize1);
|
String s = pre+format+suf+randomNumber+n;
|
return s;
|
}else {
|
Integer currentNumber = dayMax.getCurrentNumber();
|
int current = currentNumber+1;
|
String n = padStart(current, maxSize.getLength());
|
String pre = (maxSize.getUsePrefix() == 0 ? "" : maxSize.getPrefixName());
|
String suf = (maxSize.getUseSuffix() == 0 ? "" : maxSize.getSuffixName());
|
dayMax.setCurrentNumber(current);
|
updateById(dayMax);
|
String s = pre+format+suf+randomNumber+n;
|
return s;
|
}
|
}
|
}
|
}
|
|
private String padStart(int num, int len) {
|
String v = "000000000000000" + num;
|
return v.substring(v.length() - len);
|
}
|
}
|