package com.panzhihua.sangeshenbian.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.netflix.servo.monitor.LongGauge;
import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.sangeshenbian.enums.ReportTypeEnum;
import com.panzhihua.sangeshenbian.model.entity.*;
import com.panzhihua.sangeshenbian.dao.ComplaintFlowMapper;
import com.panzhihua.sangeshenbian.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
/**
*
* 诉求流转记录表 服务实现类
*
*
* @author
* @since 2025-02-22
*/
@Service
@RequiredArgsConstructor(onConstructor_ = {@Lazy})
public class ComplaintFlowServiceImpl extends ServiceImpl implements IComplaintFlowService {
private final IComplaintService complaintService;
private final IBcRegionService bcRegionService;
private final IComStreetService comStreetService;
private final IComActService comActService;
private final UserService userService;
@Override
public void createFlow(Long complaintId , Long superiorId, Integer reportType, Integer type, Long userId) {
String name = getFlowName(reportType, superiorId);
ComplaintFlow complaintFlow = new ComplaintFlow();
complaintFlow.setComplaintId(complaintId);
complaintFlow.setLevel(reportType);
complaintFlow.setName(name);
complaintFlow.setCreateTime(new Date(System.currentTimeMillis()));
complaintFlow.setType(type);
save(complaintFlow);
}
private String getFlowName(Integer reportType, Long superiorId) {
String name;
if (reportType == ReportTypeEnum.COMMUNITY.getCode()) {
ComAct byId = comActService.getById(superiorId);
name = byId.getName();
}else if (reportType == ReportTypeEnum.STREET.getCode()) {
ComStreet comStreet = comStreetService.getById(superiorId);
name = comStreet.getName();
} else if (reportType == ReportTypeEnum.CITY.getCode() || reportType == ReportTypeEnum.DISTRICT.getCode()){
BcRegion bcRegion = bcRegionService.getOne(new LambdaQueryWrapper()
.eq(BcRegion::getRegionCode, superiorId));
name = bcRegion.getRegionName();
} else {
R userR = userService.getUserInfoByUserId(String.valueOf(superiorId));
if (R.isOk(userR)) {
throw new ServiceException("获取用户信息失败");
}
name = userR.getData().getNickName();
}
return name;
}
}