jiangping
2025-03-19 833abe347c2bc71bd98abc7cfa4b29ae1f6fd564
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -57,6 +57,7 @@
import com.doumee.service.business.third.EmayService;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -74,6 +75,7 @@
 * @date 2023/11/30 15:33
 */
@Service
@Slf4j
public class VisitsServiceImpl implements VisitsService {
    @Autowired
@@ -84,6 +86,8 @@
    private UserActionMapper userActionMapper;
    @Autowired
    private ApproveMapper approveMapper;
    @Autowired
    private NoticesJoinMapper noticesJoinMapper;
    @Autowired
    private ApproveParamMapper approveParamMapper;
    @Autowired
@@ -118,8 +122,6 @@
    private SystemUserMapper systemUserMapper;
    @Autowired
    private ApproveService approveService;
    @Autowired
    private NoticesJoinMapper noticesJoinMapper;
    @Autowired
    private InoutDayCountMapper inoutDayCountMapper;
    @Autowired
@@ -412,7 +414,7 @@
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批记录已处理!");
        }
        Visits visits = visitsMapper.selectById(approve.getObjId());
        if(Objects.isNull(visits)){
        if(Objects.isNull(visits)||Constants.equalsInteger(visits.getIsdeleted(),Constants.ONE)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(!auditApproveDTO.getMemberId().equals(approve.getChekorId())){
@@ -977,6 +979,7 @@
        }
        //根据手机号和身份证号码查询 当前预约的时间是否与其他预约记录有冲突
        if (visitsMapper.selectCount(new QueryWrapper<Visits>().lambda()
                        .eq(Visits::getIsdeleted,Constants.ZERO)
                        .notIn(Visits::getStatus,Constants.VisitStatus.cancel
                                ,Constants.VisitStatus.noPass
                                ,Constants.VisitStatus.xfFail
@@ -1002,6 +1005,7 @@
     */
    private void isExsitNoOutVisisRecord(Member member) {
        Visits v = visitsMapper.selectOne(new QueryWrapper<Visits>().lambda()
                .eq(Visits::getIsdeleted,Constants.ZERO)
                .eq(Visits::getPhone, member.getPhone())
                .eq(Visits::getStatus,Constants.VisitStatus.xfSuccess)
                .last(" limit 1" )
@@ -1153,11 +1157,11 @@
        params[0] = user.getRealname();
        params[1]=DateUtil.getPlusTime2(date);
        if(Constants.equalsInteger(model.getType(),Constants.TWO)){
            params[2]=model.getCarNos()+"-【单位:"+model.getCompanyName()+" "+model.getName()+" "+model.getPhone()+"】-【时间:"+DateUtil.getPlusTime2(model.getStarttime())+"-"+DateUtil.getPlusTime2(model.getEndtime())+"】";
            params[2]="【车牌号:"+model.getCarNos()+"】-【单位:"+model.getCompanyName()+" "+model.getName()+" "+model.getPhone()+"】-【时间:"+DateUtil.getPlusTime2(model.getStarttime())+"-"+DateUtil.getPlusTime2(model.getEndtime())+"】";
            //记录删除访客报备日志
            UserActionServiceImpl.saveUserActionBiz(user,id,Constants.UserActionType.VISIT_DEL,userActionMapper,date,params, JSONObject.toJSONString(model));
            UserActionServiceImpl.saveUserActionBiz(user,id,Constants.UserActionType.VISIT_CAR_DEL,userActionMapper,date,params, JSONObject.toJSONString(model));
        }else{
            params[2]=model.getCompanyName()+"-【访客:"+model.getName()+" "+model.getPhone()+"】-【时间:"+DateUtil.getPlusTime2(model.getStarttime())+"-"+DateUtil.getPlusTime2(model.getEndtime())+"】";
            params[2]="【单位:"+model.getCompanyName()+"】-【访客:"+model.getName()+" "+model.getPhone()+"】-【时间:"+DateUtil.getPlusTime2(model.getStarttime())+"-"+DateUtil.getPlusTime2(model.getEndtime())+"】";
            //记录删除访客申请日志
            UserActionServiceImpl.saveUserActionBiz(user,id,Constants.UserActionType.VISIT_DEL,userActionMapper,date,params, JSONObject.toJSONString(model));
        }
@@ -1884,22 +1888,52 @@
    }
    @Override
    public void visitNoCheckCancel(){
        log.info("===============待审批记录超时自动取消预约===========start=======");
        List<Visits> visitsList = visitsMapper.selectList(new QueryWrapper<Visits>().lambda()
                .eq(Visits::getIsdeleted,Constants.ONE)
                .eq(Visits::getIsdeleted,Constants.ZERO)
                .eq(Visits::getStatus,Constants.VisitStatus.waitCheck)
                .apply(" now() >=  ENDTIME ")
        );
        if(visitsList!=null){
            Date date =new Date();
            for(Visits s :visitsList){
                    visitsMapper.update(null,new UpdateWrapper<Visits>().lambda()
                            .set(Visits::getIsdeleted,Constants.VisitStatus.cancel)
                            .set(Visits::getEditDate,date)
                            .set(Visits::getRemark,"预约截止时间已过未审批,系统自动取消")
                            .eq(Visits::getId,s.getId()));
                dealAutoCancelBiz(s,date);
             }
        }
        log.info("===============待审批记录超时自动取消预约===========end=======");
    }
    @Transactional
    private void dealAutoCancelBiz(Visits s, Date date) {
        visitsMapper.update(null,new UpdateWrapper<Visits>().lambda()
                .set(Visits::getStatus,Constants.VisitStatus.cancel)
                .set(Visits::getEditDate,date)
                .set(Visits::getRemark,"预约截止时间已过未审批,系统自动取消")
                .eq(Visits::getId,s.getId()));
        //更新审批中的记录为取消
        approveMapper.update(null,
                new UpdateWrapper<Approve>().lambda()
                        .set(Approve::getEditDate,date)
                        .set(Approve::getStatus,Constants.approveStatus.cancel)
                        .set(Approve::getStatusInfo,"系统已取消")
                        .set(Approve::getCheckInfo,"访问时间已过,系统自动取消")
                        .eq(Approve::getIsdeleted,Constants.ZERO)
                        .in(Approve::getStatus,Constants.approveStatus.auditIng,Constants.approveStatus.wait)
                        .eq(Approve::getObjId,s.getId())
                        .eq(Approve::getObjType,s.getType()));
        //更新待办消息状态
        noticesJoinMapper.update(null,
                new UpdateWrapper<Notices>().lambda()
                        .set(Notices::getEditDate,date)
                        .set(Notices::getInfo,"已取消")
//                        .set(Notices::getStatus,Constants.ONE)
                        .set(Notices::getParam2,Constants.FOUR)//已取消
                        .eq(Notices::getIsdeleted,Constants.ZERO)
                        .eq(Notices::getStatus,Constants.ZERO)
                        .eq(Notices::getParam2,Constants.ZERO)//待处理
                        .eq(Notices::getObjId,s.getId())
                        .eq(Notices::getObjType,Constants.equalsInteger(s.getType(),Constants.ZERO)?Constants.noticesObjectType.visit:Constants.noticesObjectType.visitReporting)
        );
    }