1.
luofl
2025-02-23 6094a745707dcc2bacdf5c33b65ebff991eff014
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package com.panzhihua.sangeshenbian.service.impl;
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.panzhihua.common.utlis.DateUtils;
import com.panzhihua.sangeshenbian.entity.Complaint;
import com.panzhihua.sangeshenbian.enums.ProcessStatusEnum;
import com.panzhihua.sangeshenbian.dao.ComplaintMapper;
import com.panzhihua.sangeshenbian.service.IComplaintService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
 
import java.text.SimpleDateFormat;
import java.util.Date;
 
import static cn.hutool.core.util.ObjectUtil.isNull;
 
/**
 * <p>
 * 问题报告表 服务实现类
 * </p>
 *
 * @author
 * @since 2025-02-22
 */
@Service
public class ComplaintServiceImpl extends ServiceImpl<ComplaintMapper, Complaint> implements IComplaintService {
 
    @Override
    public void saveComplaint(Complaint complaint,Long userId) {
        // 获取当前日期(年月日)
        String datePrefix = new SimpleDateFormat("yyyyMMdd").format(new Date());
 
        // 查询当前日期的最大流水号
        Complaint lastComplaint = getOne(new LambdaQueryWrapper<Complaint>()
                .likeRight(Complaint::getSerialNumber, datePrefix) // 查询以当前日期开头的流水号
                .orderByDesc(Complaint::getSerialNumber)
                .last("limit 1"));
 
        String serialNumber;
        if (isNull(lastComplaint)) {
            // 如果当天没有记录,从 0001 开始
            serialNumber = datePrefix + "0001";
        } else {
            // 获取当前日期的最大流水号,并递增
            String lastSerialNumber = lastComplaint.getSerialNumber();
            int num = Integer.parseInt(lastSerialNumber.substring(lastSerialNumber.length() - 4)); // 提取后4位数字
            serialNumber = datePrefix + String.format("%04d", num + 1); // 递增并格式化为4位
        }
 
        // 设置流水号
        complaint.setSerialNumber(serialNumber);
 
        // 设置其他字段
        complaint.setStatus(ProcessStatusEnum.PROCESSING.getCode());
        complaint.setCreateTime(DateUtils.getCurrentDate());
        complaint.setCreateBy(userId);
        complaint.setUpdateBy(userId);
        complaint.setUpdateTime(DateUtils.getCurrentDate());
 
        // 保存诉求记录
        save(complaint);
    }
}