郑永安
2023-06-19 2fcd97552d16718cc7997629fd637a73a5a4483f
src/main/java/com/gk/firework/Service/ServiceImpl/AssessApplyServiceImpl.java
对比新文件
@@ -0,0 +1,286 @@
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.AssessApply;
import com.gk.firework.Domain.Enterprise;
import com.gk.firework.Domain.Enum.AssessApplyStatus;
import com.gk.firework.Domain.Enum.AssessPunishment;
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.AssessApplyMapper;
import com.gk.firework.Service.AssessApplyService;
import com.gk.firework.Service.EnterpriseService;
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("assessApplyService")
public class AssessApplyServiceImpl extends ServiceImpl<AssessApplyMapper, AssessApply> implements AssessApplyService {
    @Autowired
    private AssessApplyMapper assessApplyMapper;
    @Autowired
    private UserService userService;
    @Autowired
    private EnterpriseService enterpriseService;
    @Override
    public void addSaleAssessApply(AssessApply assessApply, UserInfo user)  {
        if (StringUtils.isBlank(assessApply.getEnterprisename())
                || StringUtils.isBlank(assessApply.getEnterprisenumber()))
            throw new BusinessException("请选择企业信息");
        if (assessApply.getPunishmentmeasure() == null)
            throw new BusinessException("请选择处罚措施");
        if (StringUtils.isBlank(assessApply.getPunishmentreason()))
            throw new BusinessException("请填写处罚原因");
        assessApply.setValidflag(true);
        assessApply.setCode("SA-" + System.currentTimeMillis());
        assessApply.setCreatetime(new Date());
        assessApply.setRequestor(user.getUsername());
        assessApply.setRequestorid(user.getId());
        assessApply.setPunishstatus(PunishStatus.UNPUNISH);
        assessApply.setStatus(AssessApplyStatus.TOSUBMIT);
        assessApply.setType(AssessType.SALE);
        if (assessApply.getFile() != null) {
            try {
                String filename = UploadUtil.uploadFile(assessApply.getFile(), Properties.assessApplyPath);
                assessApply.setPath1(Properties.assessApply + filename);
            } catch (Exception e) {
                e.printStackTrace();
                throw new BusinessException("上传文件出现问题,请联系管理员");
            }
        }
        this.save(assessApply);
    }
    @Override
    public void modSaleAssessApply(AssessApply assessApply, UserInfo user) {
        AssessApply aa = this.getById(assessApply.getId());
        if (aa == null)
            throw new BusinessException("单子不存在,请联系管理员");
        if (aa.getStatus() != AssessApplyStatus.TOSUBMIT
                && aa.getStatus() != AssessApplyStatus.REJECT)
            throw new BusinessException("提交后的单子不能修改");
        if (StringUtils.isBlank(assessApply.getEnterprisename())
                || StringUtils.isBlank(assessApply.getEnterprisenumber()))
            throw new BusinessException("请选择企业信息");
        if (assessApply.getPunishmentmeasure() == null)
            throw new BusinessException("请选择处罚措施");
        if (StringUtils.isBlank(assessApply.getPunishmentreason()))
            throw new BusinessException("请填写处罚原因");
        if (assessApply.getFile() != null) {
            try {
                String filename = UploadUtil.uploadFile(assessApply.getFile(), Properties.assessApplyPath);
                aa.setPath1(Properties.assessApply + filename);
            } catch (Exception e) {
                e.printStackTrace();
                throw new BusinessException("上传文件出现问题,请联系管理员");
            }
        }
        aa.setPunishmentmeasure(assessApply.getPunishmentmeasure());
        aa.setPunishmentreason(assessApply.getPunishmentreason());
        aa.setModifytime(new Date());
        aa.setEnterprisename(assessApply.getEnterprisename());
        aa.setEnterprisenumber(assessApply.getEnterprisenumber());
        this.updateById(aa);
    }
    @Override
    public void submitSaleAssessApply(Long id, UserInfo user) {
        AssessApply assessApply = this.getById(id);
        if (assessApply.getStatus() != AssessApplyStatus.REJECT
                && assessApply.getStatus() != AssessApplyStatus.TOSUBMIT) {
            throw new BusinessException("当前状态不能提交");
        }
        assessApply.setStatus(AssessApplyStatus.PENDING);
        assessApply.setSubmittime(new Date());
        this.updateById(assessApply);
    }
    /**
     * @Description: 审批通过,直接停用
     * @date 2021/7/12 8:47
     */
    @Override
    @Transactional
    public void approveSaleAssessApply(JSONObject entity, UserInfo user) {
        Long id = entity.getLong("id");
//        String approvenote = entity.getString("approvenote");
        if (id == null ) throw new BusinessException("传参有误,请联系管理员");
        AssessApply assessApply = this.getById(id);
        if (assessApply == null) throw new BusinessException("传参有误或者单子不存在");
        assessApply.setApprover(user.getUsername());
        assessApply.setApprovetime(new Date());
        assessApply.setStatus(AssessApplyStatus.APPROVED);
//        assessApply.setApprovenote(StringUtils.isBlank(approvenote) ? null : approvenote);
        assessApply.setPunishstatus(PunishStatus.PUNISHING);
        this.updateById(assessApply);
        //直接执行处罚 先停用
        enterpriseService.deactivateEnterprise(null,assessApply.getEnterprisenumber(), user);
    }
    @Override
    public void rejectSaleAssessApply(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("请填写拒绝理由");
        AssessApply assessApply = this.getById(id);
        if (assessApply == null) throw new BusinessException("传参有误或者单子不存在");
        Date now = new Date();
        assessApply.setApprover(user.getUsername());
        assessApply.setApprovetime(now);
        assessApply.setLastrejecttime(now);
        assessApply.setStatus(AssessApplyStatus.REJECT);
        assessApply.setLastrejectreason(lastrejectreason);
        this.updateById(assessApply);
    }
    /**
     * @Description: 销售评定分页查询
     * @date 2021/7/5 14:30
     */
    @Override
    public IPage selectSalePages(Page<AssessApply> page, Map filter, UserInfo user) {
        Map<String, Object> params = new HashMap<>();
        params.put("type", AssessType.SALE);
        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<AssessApply> data = assessApplyMapper.selectPages(params, page);
        return page.setRecords(data);
    }
    @Override
    public void addAccessAssessApply(AssessApply assessApply, UserInfo user) {
        if (StringUtils.isBlank(assessApply.getEnterprisename())
                || StringUtils.isBlank(assessApply.getEnterprisenumber()))
            throw new BusinessException("请选择企业信息");
        if (assessApply.getPunishmentmeasure() == null)
            throw new BusinessException("请选择处罚措施");
        if (StringUtils.isBlank(assessApply.getPunishmentreason()))
            throw new BusinessException("请填写处罚意见");
        if (assessApply.getFile() == null)
            throw new BusinessException("请上传处罚凭证");
        assessApply.setValidflag(true);
        assessApply.setPunishstatus(PunishStatus.UNPUNISH);
        assessApply.setCode("AA-" + System.currentTimeMillis());
        assessApply.setCreatetime(new Date());
        assessApply.setRequestor(user.getUsername());
        assessApply.setRequestorid(user.getId());
        assessApply.setStatus(AssessApplyStatus.TOSUBMIT);
        assessApply.setType(AssessType.ACCESS);
        try {
            String filename = UploadUtil.uploadFile(assessApply.getFile(), Properties.assessApplyPath);
            assessApply.setPath1(Properties.assessApply + filename);
        } catch (Exception e) {
            e.printStackTrace();
            throw new BusinessException("上传文件出现问题,请联系管理员");
        }
        this.save(assessApply);
    }
    @Override
    public void modAccessAssessApply(AssessApply assessApply, UserInfo user) {
        AssessApply aa = this.getById(assessApply.getId());
        if (aa == null)
            throw new BusinessException("单子不存在,请联系管理员");
        if (aa.getStatus() != AssessApplyStatus.TOSUBMIT
                && aa.getStatus() != AssessApplyStatus.REJECT)
            throw new BusinessException("提交后的单子不能修改");
        if (StringUtils.isBlank(assessApply.getEnterprisename())
                || StringUtils.isBlank(assessApply.getEnterprisenumber()))
            throw new BusinessException("请选择企业信息");
        if (StringUtils.isBlank(assessApply.getPunishmentreason()))
            throw new BusinessException("请填写处罚意见");
        if (assessApply.getFile() == null)
            throw new BusinessException("请上传处罚凭证");
        try {
            String filename = UploadUtil.uploadFile(assessApply.getFile(), Properties.assessApplyPath);
            aa.setPath1(Properties.assessApply + filename);
        } catch (Exception e) {
            e.printStackTrace();
            throw new BusinessException("上传文件出现问题,请联系管理员");
        }
        aa.setPunishmentmeasure(assessApply.getPunishmentmeasure());
        aa.setPunishmentreason(assessApply.getPunishmentreason());
        aa.setModifytime(new Date());
        aa.setEnterprisename(assessApply.getEnterprisename());
        aa.setEnterprisenumber(assessApply.getEnterprisenumber());
        //处罚的信息
        this.updateById(aa);
    }
    @Override
    public void submitAccessAssessApply(Long id, UserInfo user) {
        AssessApply assessApply = this.getById(id);
        if (assessApply.getStatus() != AssessApplyStatus.REJECT
                && assessApply.getStatus() != AssessApplyStatus.TOSUBMIT) {
            throw new BusinessException("当前状态不能提交");
        }
        assessApply.setStatus(AssessApplyStatus.PENDING);
        assessApply.setSubmittime(new Date());
        this.updateById(assessApply);
    }
    @Override
    public List<AssessApply> selectAllPunishingSaleAssessApply() {
        //条件一:type为sale 销售评定
        //条件二:处罚中的单子 punishing
        return assessApplyMapper.selectAllPunishingSaleAssessApply(AssessType.SALE, PunishStatus.PUNISHING);
    }
}