ZQN
2024-06-24 b4b2b63345961884c8a9dd95ca1f32c0ea1123e5
project-enforce/src/main/java/com/project/enforce/service/impl/EnforceComplaintLogServiceImpl.java
@@ -4,18 +4,26 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.project.common.core.domain.entity.SysUser;
import com.project.common.exception.base.BaseException;
import com.project.common.utils.DateUtils;
import com.project.common.utils.SecurityUtils;
import com.project.common.utils.StringUtils;
import com.project.enforce.domain.EnforceComplaintLog;
import com.project.enforce.domain.bo.editBo.ComplaintResultBo;
import com.project.enforce.domain.bo.editBo.EnforceComplaintLogBo;
import com.project.enforce.domain.bo.queryBo.EnforceComplaintLogQueryBo;
import com.project.enforce.domain.vo.EnforceComplaintLogVo;
import com.project.enforce.domain.vo.OrderNodeVo;
import com.project.enforce.mapper.EnforceComplaintLogMapper;
import com.project.enforce.service.IEnforceComplaintLogService;
import com.project.system.service.ISysDeptService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -28,6 +36,7 @@
@RequiredArgsConstructor(onConstructor_ = @Autowired)
public class EnforceComplaintLogServiceImpl extends ServiceImpl<EnforceComplaintLogMapper, EnforceComplaintLog> implements IEnforceComplaintLogService {
    private final ISysDeptService deptService;
    @Override//列表查询
@@ -74,13 +83,96 @@
        return this.removeByIds(ids);
    }
    @Override//投诉单节点
    public List<OrderNodeVo> orderNodeList(Long id)
    {
        List<OrderNodeVo> vos = new ArrayList<>();
        EnforceComplaintLog order = this.getById(id);
        if (order.getComplaintTime()!=null){
            vos.add(new OrderNodeVo("发起投诉",order.getCompanyUser(),order.getComplaintTime(), null));
        }
        if (order.getInTime()!=null){
            vos.add(new OrderNodeVo("处理中",order.getInUser(),order.getInTime(), null));
        }
        if (order.getResultTime()!=null){
            if (order.getComplaintStatus()==-1){
                vos.add(new OrderNodeVo("已驳回",order.getExecuteUser(),order.getResultTime(), order.getComplaintResult()));
            } else {
                vos.add(new OrderNodeVo("已办结",order.getExecuteUser(),order.getResultTime(), order.getComplaintResult()));
            }
        }
        return vos;
    }
    @Override//响应投诉
    @Transactional
    public Boolean inComplaint(ComplaintResultBo bo)
    {
        SysUser loginUser = SecurityUtils.getLoginUser().getUser();
        return this.update(lu()
                .set(EnforceComplaintLog::getInId,loginUser.getUserId())
                .set(EnforceComplaintLog::getInUser,loginUser.getNickName())
                .set(EnforceComplaintLog::getInTime, DateUtils.getNowDate())
                .set(EnforceComplaintLog::getComplaintStatus, 1)
                .eq(EnforceComplaintLog::getId, bo.getId())
        );
    }
    @Override//处理结果
    @Transactional
    public Boolean doComplaint(ComplaintResultBo bo)
    {
        if (StringUtils.isEmpty(bo.getResult())){
            throw new BaseException("请填写处理结果");
        }
        SysUser loginUser = SecurityUtils.getLoginUser().getUser();
        return this.update(lu()
                .set(EnforceComplaintLog::getResultId,loginUser.getUserId())
                .set(EnforceComplaintLog::getResultUser,loginUser.getNickName())
                .set(EnforceComplaintLog::getResultTime, DateUtils.getNowDate())
                .set(EnforceComplaintLog::getComplaintStatus, bo.getComplaintStatus())
                .set(EnforceComplaintLog::getComplaintResult, bo.getResult())
                .eq(EnforceComplaintLog::getId, bo.getId())
        );
    }
//-------------------------------------------------------------------------------------
    //保存前校验
    private void validEntityBeforeSave(EnforceComplaintLog entity)
    {
        //做一些数据校验,如唯一约束
        if (StringUtils.isEmpty(entity.getExecuteDeptName()) && entity.getExecuteDeptName()!=null){
            entity.setExecuteDeptName(deptService.getDeptAllName(entity.getExecuteDeptId()));
        }
        if (entity.getId()==null){
            if (entity.getCompanyId()==null
                    || StringUtils.isEmpty(entity.getCompanyName())
                    || StringUtils.isEmpty(entity.getCompanyUser())
                    || StringUtils.isEmpty(entity.getCompanyPhone())
            ){
                throw new BaseException("投诉企业不能为空!");
            }
            if (entity.getExecuteDeptId() == null
                    || StringUtils.isEmpty(entity.getExecuteDeptName())
            ){
                throw new BaseException("投诉单位不能为空!");
            }
            if (StringUtils.isEmpty(entity.getComplaintType())){
                throw new BaseException("请选择要投诉类型!");
            }
            if (StringUtils.isEmpty(entity.getComplaintReason())){
                throw new BaseException("请填写投诉内容!");
            }
            if (entity.getOrderId()!=null){ //执法单投诉
                int count = this.count(lq().eq(EnforceComplaintLog::getOrderId, entity.getOrderId()));
                if (count >0){
                    throw new BaseException("该执法单已投诉!");
                }
            }
            entity.setComplaintTime(DateUtils.getNowDate());
        }
    }
    //获取查询参数