package com.gk.firework.Service.ServiceImpl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gk.firework.Domain.AccessAssessApply; import com.gk.firework.Domain.AssessApply; import com.gk.firework.Domain.Enum.AssessAppealStatus; import com.gk.firework.Domain.Enum.AssessApplyStatus; import com.gk.firework.Domain.Enum.AssessType; import com.gk.firework.Domain.Enum.PunishStatus; import com.gk.firework.Domain.Exception.BusinessException; import com.gk.firework.Domain.UserInfo; import com.gk.firework.Domain.Utils.Properties; import com.gk.firework.Domain.Utils.StringUtils; import com.gk.firework.Domain.Utils.UploadUtil; import com.gk.firework.Domain.Vo.AssessApplyAppealVo; import com.gk.firework.Mapper.AccessAssessApplyMapper; import com.gk.firework.Service.AccessAssessApplyService; import com.gk.firework.Service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; @Service("accessAssessApplyService") public class AccessAssessApplyServiceImpl extends ServiceImpl implements AccessAssessApplyService { @Autowired private AccessAssessApplyMapper accessAssessApplyMapper; @Autowired private UserService userService; /** * @Description: 准入评定分页查询 * @date 2021/7/5 14:30 */ @Override public IPage selectAccessPages(Page page, Map filter, UserInfo user) { Map params = new HashMap<>(); params.put("type", AssessType.ACCESS); params.put("code", filter.get("code")); params.put("enterprisename", filter.get("enterprisename")); params.put("status", filter.get("status")); //不是超级管理员只能看到自己的 if (user.getType() != 1 && user.getType()!= 2) { params.put("requestorid", user.getId()); } List data = accessAssessApplyMapper.selectPages(params, page); return page.setRecords(data); } @Override public void AccessAppeal(AccessAssessApply accessAccessApply, UserInfo user) { Long id = accessAccessApply.getId(); if (id == null) throw new BusinessException("参数传递错误,请联系管理员"); String appealcontent = accessAccessApply.getAppealcontent(); AccessAssessApply aa = this.getById(id); assert aa.getDeadline() != null; Date now = new Date(); //时间检查 if (now.after(aa.getDeadline())) throw new BusinessException("已超过截止日期,不可申诉"); //处罚状态 if (aa.getPunishstatus() != PunishStatus.UNPUNISH) throw new BusinessException("处罚已经执行,不能申诉"); //状态变更为申诉中 if (aa.getAppealstatus() != AssessAppealStatus.UNAPPEALED) throw new BusinessException("单子已经在申诉中或者已经完成,无法再次申诉"); if (accessAccessApply.getFile() == null) throw new BusinessException("请上传申诉文件"); try { String filename = UploadUtil.uploadFile(accessAccessApply.getFile(), com.gk.firework.Domain.Utils.Properties.assessApplyPath); aa.setPath2(Properties.assessApply + filename); } catch (Exception e) { e.printStackTrace(); throw new BusinessException("上传文件出现问题,请联系管理员"); } aa.setAppealstatus(AssessAppealStatus.APPEALING); aa.setAppealtime(now); aa.setAppealcontent(StringUtils.isBlank(appealcontent) ? null : appealcontent); this.updateById(aa); } @Override public void approveAccessAssessApply(JSONObject entity, UserInfo user) { Long id = entity.getLong("id"); if (id == null ) throw new BusinessException("传参有误,请联系管理员"); AccessAssessApply accessAssessApply = this.getById(id); if (accessAssessApply == null) throw new BusinessException("传参有误或者单子不存在"); accessAssessApply.setApprover(user.getUsername()); Date approveDate = new Date(); accessAssessApply.setApprovetime(approveDate); //往后推两周 后的晚上零点为截止日期 Calendar calendar = Calendar.getInstance(); calendar.setTime(approveDate); calendar.add(Calendar.WEEK_OF_YEAR, 2); calendar.add(Calendar.DATE,1); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); accessAssessApply.setDeadline(calendar.getTime()); accessAssessApply.setStatus(AssessApplyStatus.APPROVED); accessAssessApply.setAppealstatus(AssessAppealStatus.UNAPPEALED); this.updateById(accessAssessApply); } @Override public void rejectAccessAssessApply(JSONObject entity, UserInfo user) { Long id = entity.getLong("id"); String lastrejectreason = entity.getString("lastrejectreason"); if (id == null ) throw new BusinessException("传参有误,请联系管理员"); if (StringUtils.isBlank(lastrejectreason)) throw new BusinessException("请填写拒绝理由"); AccessAssessApply accessAssessApply = this.getById(id); if (accessAssessApply == null) throw new BusinessException("传参有误或者单子不存在"); Date now = new Date(); accessAssessApply.setApprover(user.getUsername()); accessAssessApply.setApprovetime(now); accessAssessApply.setLastrejecttime(now); accessAssessApply.setStatus(AssessApplyStatus.REJECT); accessAssessApply.setLastrejectreason(lastrejectreason); this.updateById(accessAssessApply); } /** * @Description: 申诉通过 * @date 2021/7/9 9:11 */ @Override @Transactional public void appealAccessPass(Long id, UserInfo user) { if (id == null) throw new BusinessException("参数传递错误,请联系管理员"); AccessAssessApply accessAssessApply = this.getById(id); if (accessAssessApply == null) throw new BusinessException("参数传递错误或者申请单不存在"); if (accessAssessApply.getAppealstatus() == AssessAppealStatus.UNPASSED) throw new BusinessException("申请单已被拒绝,不能再次审批"); if (accessAssessApply.getAppealstatus() == AssessAppealStatus.PASSED) throw new BusinessException("申诉已通过,请勿再次审批"); //通过 accessAssessApply.setAppealstatus(AssessAppealStatus.PASSED); accessAssessApply.setAppealapprovetime(new Date()); accessAssessApply.setAppealapprover(user.getUsername()); this.updateById(accessAssessApply); } @Override public void appealAccessReject(JSONObject entity, UserInfo user) { Long id = entity.getLong("id"); if (id == null) throw new BusinessException("参数传递错误,请联系管理员"); AccessAssessApply accessAssessApply = this.getById(id); if (accessAssessApply == null) throw new BusinessException("参数传递错误或者申请单不存在"); AssessAppealStatus appealstatus = accessAssessApply.getAppealstatus(); if (appealstatus != AssessAppealStatus.APPEALING) throw new BusinessException("当前申请单状态为"+appealstatus.getMsg()+",不可以拒绝"); String appealrejectreason = entity.getString("appealrejectreason"); accessAssessApply.setAppealstatus(AssessAppealStatus.UNPASSED); accessAssessApply.setAppealrejectreason(StringUtils.isBlank(appealrejectreason) ? null : appealrejectreason); this.updateById(accessAssessApply); } /** * @Description: 获取所有超过14日公示日的未申诉的准入评定信息 * @date 2021/7/12 13:56 */ @Override public List selectAllOverTimeAccessAssessApply() { //条件一:type准入 //条件二:不是申诉通过的 //条件三:未惩罚的 return accessAssessApplyMapper.selectAllOverTimeAccessAssessApply(AssessType.ACCESS,AssessAppealStatus.PASSED,PunishStatus.UNPUNISH); } @Override public List selectAllPunishingAccessAssessApply() { //条件一:type准入 //条件二:惩罚中的 return accessAssessApplyMapper.selectAllPunishingAccessAssessApply(AssessType.ACCESS,PunishStatus.PUNISHING); } @Override public IPage selectAccessAppealPages(Page page, Map filter, UserInfo user) { UserInfo userInfo = userService.getById(user.getId()); Map params = new HashMap<>(); //判断参数 参数-未申诉 params.put("unappealed", AssessAppealStatus.UNAPPEALED); params.put("passed", AssessAppealStatus.PASSED); params.put("unpunish", PunishStatus.UNPUNISH); //固定页面变量 params.put("type", AssessType.ACCESS); params.put("status", AssessApplyStatus.APPROVED); //页面过滤条件 params.put("code", filter.get("code")); params.put("enterprisename", filter.get("enterprisename")); params.put("appealstatus", filter.get("appealstatus")); //只看到自己的 if (user.getType() != 1 && user.getType()!= 2) { params.put("enterprisenumber", userInfo.getCompanynumber()); } List data = accessAssessApplyMapper.selectAppealPages(params,page); return page.setRecords(data); } }