package cn.huge.module.cases.service; import cn.huge.base.common.exception.ServiceException; import cn.huge.base.common.utils.DateUtils; import cn.huge.base.common.utils.IdUtils; import cn.huge.base.common.utils.ObjectUtils; import cn.huge.module.cases.domain.po.CaseSupervise; import cn.huge.module.cases.utils.TaskUsetimeUtils; import cn.huge.module.client.api.impl.CustClientImpl; import cn.huge.module.client.api.impl.UtilsClientImpl; import cn.huge.module.cases.dao.mapper.CaseUrgingMapper; import cn.huge.module.cases.domain.po.CaseUrging; import cn.huge.module.cust.dto.CtUserDTO; import cn.huge.module.cust.dto.PaUserDTO; import cn.huge.module.sy.service.SyHolidayService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import java.util.Date; import java.util.List; import java.util.Map; /** * @title: 纠纷催办信息表业务逻辑处理 * @Description 纠纷催办信息表业务逻辑处理 * @company hugeinfo * @author zhouxt * @Time 2024-09-08 10:39:38 * @version 1.0.0 */ @Slf4j @Service @Transactional(rollbackFor = Exception.class) public class CaseUrgingService extends ServiceImpl{ @Autowired private CaseUrgingMapper mapper; @Autowired private UtilsClientImpl utilsClient; @Autowired private CustClientImpl custClient; @Autowired private SyHolidayService syHolidayService; /** * 更新对象 * @param entity 对象 */ public void updateCaseUrging(CaseUrging entity){ try{ mapper.updateCaseUrging(entity); }catch (Exception e){ log.error("[CaseUrgingService.updateCaseUrging]调用失败,异常信息:"+e, e); throw new ServiceException("CaseUrgingService.updateCaseUrging", e); } } /** * 条件更新对象 * @param entity 对象 * @param terms 条件 */ public void updateCaseUrgingTerms(CaseUrging entity, Map terms){ try{ mapper.updateCaseUrgingTerms(entity, terms); }catch (Exception e){ log.error("[CaseUrgingService.updateCaseUrgingTerms]调用失败,异常信息:"+e, e); throw new ServiceException("CaseUrgingService.updateCaseUrgingTerms", e); } } /** * 根据编号物理删除 * @param id 查询条件集合 */ public void deleteCaseUrging(String id){ try{ mapper.deleteCaseUrging(id); }catch (Exception e){ log.error("[CaseUrgingService.deleteCaseUrging]调用失败,异常信息:"+e, e); throw new ServiceException("CaseUrgingService.deleteCaseUrging", e); } } /** * 按条件查询 * @param terms 条件 * @return List */ public List listTerms(Map terms){ return mapper.listTerms(terms); } /** * 按条件统计 * @param terms 条件 * @return long */ public long countTerms(Map terms){ return mapper.countTerms(terms); } /** * 按条件分页查询 * @param page 分页对象 * @param terms 条件 * @return Page */ public Page pageQuery(PageRequest page, Map terms){ long total = mapper.countTerms(terms); List content = mapper.pageTerms(page, terms); return new PageImpl(content, page, total); } /** * 新增或更新对象 * @param caseUrging 实体对象 */ public void saveCaseUrging(CaseUrging caseUrging){ try{ Date nowDate = DateUtils.getNowDate(); // 判断是否新增 if (IdUtils.checkNewId(caseUrging.getId())){ caseUrging.setId(utilsClient.getNewTimeId()); caseUrging.setCreateTime(nowDate); caseUrging.setReplyTerm(24); } caseUrging.setUpdateTime(nowDate); this.saveOrUpdate(caseUrging); }catch (Exception e){ log.error("[CaseUrgingService.saveCaseUrging]调用失败,异常信息:"+e, e); throw new ServiceException("CaseUrgingService.saveCaseUrging", e); } } /** * 新增或更新对象 * @param caseUrging 实体对象 */ public String saveCaseUrgingWechat(String userId,CaseUrging caseUrging){ try{ //查询是否已经有催办 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("case_id", caseUrging.getCaseId()); queryWrapper.orderByDesc("create_time"); queryWrapper.last("limit 1"); CaseUrging caseUrgingOld = mapper.selectOne(queryWrapper); if(ObjectUtils.isNotEmpty(caseUrgingOld)){ //计算创建时间和当前时间是否超过24小时 Integer differHour = DateUtils.getDifferHour(new Date(), caseUrgingOld.getCreateTime()); if(differHour < 24){ return "催办间隔时间不能小于24小时"; } } // 获取当前登录用户 PaUserDTO loginUser = custClient.paclientGetUser(userId); Date nowDate = DateUtils.getNowDate(); // 判断是否新增 if (IdUtils.checkNewId(caseUrging.getId())){ caseUrging.setId(utilsClient.getNewTimeId()); caseUrging.setCreateTime(nowDate); } caseUrging.setUpdateTime(nowDate); caseUrging.setUrgingUserId(loginUser.getId()); caseUrging.setUrgingUserName(loginUser.getTrueName()); caseUrging.setCustId(loginUser.getCustId()); caseUrging.setUrgingTime(nowDate); this.saveOrUpdate(caseUrging); }catch (Exception e){ log.error("[CaseUrgingService.saveCaseUrging]调用失败,异常信息:"+e, e); throw new ServiceException("CaseUrgingService.saveCaseUrging", e); } return null; } public Integer countByCaseId(String caseId){ Integer count = 0; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("case_id", caseId); queryWrapper.isNotNull("reply_user_id"); Integer number = mapper.selectCount(queryWrapper); if(ObjectUtils.isNotEmpty(number)){ count = number; } return count; } public List listByCaseId(String caseId){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("case_id", caseId); queryWrapper.isNotNull("reply_user_id"); queryWrapper.orderByDesc("reply_time"); List caseUrgings = mapper.selectList(queryWrapper); return caseUrgings; } /** * 回复催办 */ public void replyCaseUrging(CaseUrging caseUrging, String userId){ try{ CaseUrging caseUrging1 = mapper.selectById(caseUrging.getId()); // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); Date now = DateUtils.getNowDate(); caseUrging1.setUrgingStatus(1); caseUrging1.setReplyUserId(loginUser.getId()); caseUrging1.setReplyUserName(loginUser.getTrueName()); caseUrging1.setReplyContent(caseUrging.getReplyContent()); caseUrging1.setReplyTime(now); caseUrging1.setUpdateTime(now); caseUrging1.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(caseUrging1.getReplyTime(), caseUrging1.getUrgingTime())); caseUrging1.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(caseUrging1.getReplyTime(), syHolidayService.getExpiryHour(caseUrging1.getUrgingTime(), caseUrging1.getReplyTerm()))); caseUrging1.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(caseUrging1.getReplyTime(), syHolidayService.getExpiryHour(caseUrging1.getUrgingTime(), caseUrging1.getReplyTerm()))); mapper.updateCaseUrging(caseUrging1); }catch (Exception e){ log.error("[CaseSuperviseService.replyCaseSupervise]调用失败,异常信息:"+e, e); throw new ServiceException("CaseSuperviseService.replyCaseSupervise", e); } } }