ZQN
2024-06-22 30a8692a3aa23118d7c7c33c6d84327e5e199612
project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java
@@ -8,29 +8,27 @@
import com.project.common.core.domain.entity.SysUser;
import com.project.common.enums.OrderPre;
import com.project.common.exception.base.BaseException;
import com.project.common.sms.YPSmsApi;
import com.project.common.utils.DateUtils;
import com.project.common.utils.JsonUtils;
import com.project.common.utils.SecurityUtils;
import com.project.common.utils.StringUtils;
import com.project.enforce.domain.EnforceCheckLog;
import com.project.enforce.domain.EnforceOrder;
import com.project.enforce.domain.EnforcePeer;
import com.project.enforce.domain.*;
import com.project.enforce.domain.bo.editBo.EnforceComplaintLogBo;
import com.project.enforce.domain.bo.editBo.EnforceOrderBo;
import com.project.enforce.domain.bo.editBo.OrderComplaintBo;
import com.project.enforce.domain.bo.editBo.OrderResultBo;
import com.project.enforce.domain.bo.queryBo.EnforceOrderQueryBo;
import com.project.enforce.domain.bo.queryBo.OrderCheckedQueryBo;
import com.project.enforce.domain.vo.EnforceEvaluateVo;
import com.project.enforce.domain.vo.EnforceOrderVo;
import com.project.enforce.domain.vo.OrderNodeVo;
import com.project.enforce.mapper.EnforceOrderMapper;
import com.project.enforce.service.IEnforceCheckLogService;
import com.project.enforce.service.IEnforceOrderService;
import com.project.enforce.service.IEnforcePeerService;
import com.project.enforce.service.*;
import com.project.system.service.ISysDeptService;
import com.project.system.service.ISysOrderNoService;
import com.project.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -52,6 +50,26 @@
    private final ISysOrderNoService orderNoService;
    private final IEnforcePeerService peerService;
    private final IEnforceCheckLogService checkLogService;
    private final IEnforceComplaintLogService complaintLogService;
    private final IEnforceEvaluateLogService evaluateLogService;
    private final YPSmsService smsService;
    @Override//通用列表
    public List<EnforceOrderVo> queryCommonList(EnforceOrderQueryBo bo)
    {
        QueryWrapper<EnforceOrder> qw = getQw(bo);
        List<EnforceOrder> list = this.list(qw);
        return Convert.toList(EnforceOrderVo.class , list);
    }
    @Override//企业列表
    public List<EnforceOrderVo> queryCompanyList(EnforceOrderQueryBo bo)
    {
        QueryWrapper<EnforceOrder> qw = getQw(bo);
        qw.ge("order_status",2);
        List<EnforceOrder> list = this.list(qw);
        return Convert.toList(EnforceOrderVo.class , list);
    }
    @Override//列表查询
    @DataScope(deptAlias = "apply_dept_id", userAlias = "apply_id")
@@ -96,7 +114,10 @@
    @Override//信息公式列表
    public List<EnforceOrderVo> showList()
    {
        List<EnforceOrder> list = this.list(lq().eq(EnforceOrder::getIsShow, 1));
        List<EnforceOrder> list = this.list(lq()
                .eq(EnforceOrder::getIsShow, 1)
                .eq(EnforceOrder::getOrderStatus, 4)
        );
        return Convert.toList(EnforceOrderVo.class, list);
    }
@@ -107,6 +128,20 @@
        EnforceOrderVo vo = Convert.convert(EnforceOrderVo.class, db);
        List<EnforcePeer> peers = peerService.list(peerService.lq().eq(EnforcePeer::getOrderId, orderId).eq(EnforcePeer::getPeerType,2));
        vo.setPeers(peers);
        if (db.getIsEva()==1){
            EnforceEvaluateLog one = evaluateLogService.getOne(evaluateLogService.lq().eq(EnforceEvaluateLog::getOrderId, orderId));
            if (one!=null){
                String questionStatic = one.getQuestionStatic();
                if (StringUtils.isNotEmpty(questionStatic)){
                    try {
                        EnforceEvaluateVo evaluateVo = JsonUtils.jsonToPojo(questionStatic, EnforceEvaluateVo.class);
                        vo.setEvaluateVo(evaluateVo);
                    } catch (Exception e) {
                        throw new BaseException("评价问券解析异常!");
                    }
                }
            }
        }
        return vo;
    }
@@ -140,7 +175,7 @@
        }
        boolean savePeers = peerService.saveOrUpdateBatch(bo.getPeers());
        if (savePeers && StringUtils.isNotEmpty(phones)) {
            sendApplyMsg(phones, add.getApplyUser());
            smsService.sendApplyMsg(phones, add.getApplyUser());
        }
        return savePeers;
    }
@@ -223,7 +258,8 @@
        return this.updateById(order);
    }
    @Override
    @Override//上报结果
    @Transactional
    public Boolean doResultOrder(OrderResultBo resultBo)
    {
        if (resultBo.getRegionStatus()==null){
@@ -238,25 +274,56 @@
                .set(StringUtils.isNotEmpty(resultBo.getRegionReason()), EnforceOrder::getRegionReason, resultBo.getRegionReason())
                .set(StringUtils.isNotEmpty(resultBo.getRegionImgs()), EnforceOrder::getRegionImgs, resultBo.getRegionImgs())
                .set(StringUtils.isNotEmpty(resultBo.getRegionVideos()), EnforceOrder::getRegionVideos, resultBo.getRegionVideos())
                .set( EnforceOrder::getOrderStatus, 4)
                .set( EnforceOrder::getExecuteTime, DateUtils.getNowDate())
        );
    }
    @Override//执法单投诉
    @Transactional
    public Boolean orderComplaint(OrderComplaintBo bo)
    {
        if (bo.getOrderId()==null){
            throw new BaseException("请选择要投诉的执法单!");
        }
        if (StringUtils.isEmpty(bo.getComplaintType())){
            throw new BaseException("请选择要投诉类型!");
        }
        if (StringUtils.isEmpty(bo.getComplaintReason())){
            throw new BaseException("请填写投诉内容!");
        }
        EnforceOrder order = this.getById(bo.getOrderId());
        //添加投诉记录
        EnforceComplaintLogBo complaintLogBo = Convert.convert(EnforceComplaintLogBo.class, order);
        complaintLogBo.setComplaintType(bo.getComplaintType());
        complaintLogBo.setComplaintReason(bo.getComplaintReason());
        Boolean addLog = complaintLogService.insertByBo(complaintLogBo);
        if (addLog){
            return this.update(lu()
                    .set(EnforceOrder::getIsComplaint,1)
                    .set(EnforceOrder::getComplaintType,bo.getComplaintType())
                    .set(EnforceOrder::getComplaintReason,bo.getComplaintReason())
                    .eq(EnforceOrder::getOrderId,bo.getOrderId())
            );
        }
        return false;
    }
    @Override//执法单投诉节点
    public List<OrderNodeVo> orderComplaintNodeList(Long orderId)
    {
        EnforceComplaintLog log = complaintLogService.getOne(complaintLogService.lq().eq(EnforceComplaintLog::getOrderId, orderId));
        if (log==null){
            return null;
        }
        return complaintLogService.orderNodeList(log.getId());
    }
//-------------------------------------------------------------------------------------
    /**
     * 发送审批短信
     * @param phones    手机号
     * @param applyUser 申请人
     */
    @Async
    public void sendApplyMsg(List<String> phones, String applyUser)
    {
        String applyMsg = StringUtils.format(StringUtils.format(YPSmsApi.APPLY_TMP, applyUser));
        phones.forEach(phone-> YPSmsApi.sendSms(phone, applyMsg));
    }
    //保存前校验
    private void validEntityBeforeSave(EnforceOrder entity)