一、代码
关键实现逻辑
java
/**
* 生成工单编号
*/
@Override
public String genTaskNo(){
// 1.获取当前时间
String currentDate = DateTimeFormatter.ofPattern("yyyyMMdd").format(LocalDate.now());
// 2.查询数据库中该前缀的当前日期的最大单据编号
String prefix = "TNo.";
String maxTaskNo = cmsTaskMapper.findCmsTaskMaxTaskNo(prefix, currentDate);
// 3.初始化单据编号
String newTaskNo = prefix + currentDate + "001";
// 4.判断是否已存在
if (StringUtils.isNotEmpty(maxTaskNo)){
int serialStartIndex = prefix.length() + 8;
String numberPart = maxTaskNo.substring(serialStartIndex);
int number = Integer.parseInt(numberPart);
number++;
newTaskNo = prefix + currentDate + String.format("%03d", number);
}
return newTaskNo;
}
- mapper.xml
sql
<!-- 查询最大单号 -->
<select id="findCmsTaskMaxTaskNo" resultType="String">
select max(t.task_no) from cms_task t
where t.task_no like concat(#{prefix},#{currentDate},'%')
</select>
sql
/**
* 查询工单最大编号
* @param prefix
* @param currentDate
* @return
*/
public String findCmsTaskMaxTaskNo(@Param("prefix") String prefix, @Param("currentDate") String currentDate);
controller层
java
/**
* 获取工单管理详细信息
*/
@PreAuthorize("@ss.hasPermi('cms:task:query')")
@GetMapping(value = {"/","/{id}"})
public AjaxResult getInfo(@PathVariable(value = "id", required = false) Long id)
{
AjaxResult ajax = AjaxResult.success();
ajax.put("tts",cmsTasktypeService.selectCmsTasktypeAll());
ajax.put("taskNo",cmsTaskService.genTaskNo());
if (StringUtils.isNotNull(id)){
ajax.put(AjaxResult.DATA_TAG, cmsTaskService.selectCmsTaskById(id));
}
logger.info("查询工单管理信息:{}", JSON.toJSONString(ajax, JSONWriter.Feature.PrettyFormat));
return ajax;
}
结果:
