package com.panzhihua.sangeshenbian.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.utlis.DateUtils;
import com.panzhihua.sangeshenbian.model.dto.ComplaintCompletionDTO;
import com.panzhihua.sangeshenbian.model.dto.ComplaintProcessDTO;
import com.panzhihua.sangeshenbian.model.entity.Complaint;
import com.panzhihua.sangeshenbian.enums.ProcessStatusEnum;
import com.panzhihua.sangeshenbian.dao.ComplaintMapper;
import com.panzhihua.sangeshenbian.model.query.ComplaintQuery;
import com.panzhihua.sangeshenbian.service.IComplaintService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.sangeshenbian.model.vo.ComplaintVO;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;
import static cn.hutool.core.util.ObjectUtil.isNull;
/**
*
* 问题报告表 服务实现类
*
*
* @author
* @since 2025-02-22
*/
@Service
public class ComplaintServiceImpl extends ServiceImpl implements IComplaintService {
@Override
public void saveComplaint(Complaint complaint,Long userId) {
// 获取当前日期(年月日)
String datePrefix = new SimpleDateFormat("yyyyMMdd").format(new Date());
// 查询当前日期的最大流水号
Complaint lastComplaint = getOne(new LambdaQueryWrapper()
.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);
}
/**
*
* @param query
* @return
*/
@Override
public Page complaintList(ComplaintQuery query) {
//判断当前登录用户级别,查询对应工单
Page page = new Page<>(query.getPageNum(), query.getPageSize());
return page;
}
/**
*办理进度录入
* @param dto
*/
@Override
public void saveProcess(ComplaintProcessDTO dto) {
}
/**
* 办理结果录入
* @param dto
*/
@Override
public void saveResult(ComplaintCompletionDTO dto) {
}
}