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; } }