k94314517
2024-09-12 ffa2aeb2e9f4024600e82f1dfe872db2ee39487a
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -4,6 +4,10 @@
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.CarChargeAddRequest;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
@@ -27,10 +31,13 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.service.business.impl.hksync.HkSyncParkServiceImpl;
import com.doumee.service.business.impl.hksync.fhk.HkSyncVehicleFromHKServiceImpl;
import com.doumee.service.system.NoticesService;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.swagger.models.auth.In;
import javafx.application.Platform;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.xpath.operations.Bool;
@@ -95,7 +102,15 @@
    private PlatformJobMapper platformJobMapper;
    @Autowired
    private PlatformLogMapper platformLogMapper;
    @Autowired
    private PlatformReasonMapper platformReasonMapper;
    @Autowired
    private ParksMapper parksMapper;
    @Autowired
    private ParkBookMapper parkBookMapper;
    @Override
@@ -388,6 +403,52 @@
    }
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void createApproveForPlatfrom(Integer tempId,Integer businessId,Integer createMemberId){
        //查询处理模板
        ApproveTempl approveTempl = approveTemplMapper.selectById(tempId);
        if(Objects.isNull(approveTempl)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到审批流配置模板");
        }
        //查询配置流程
        List<ApproveParam> approveParamAllList = approveParamMapper.selectList(new QueryWrapper<ApproveParam>()
                .lambda().eq(ApproveParam::getIsdeleted,Constants.ZERO)
                .eq(ApproveParam::getTemplId,approveTempl.getId())
                .orderByAsc(ApproveParam::getType)
                .orderByAsc(ApproveParam::getLevel)
        );
        if(Objects.isNull(approveParamAllList)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未配置审批流程");
        }
        //审批配置
        List<ApproveParam> approveParamList = approveParamAllList.stream().filter(i->i.getType().equals(Constants.ZERO)).collect(Collectors.toList());
        if(Objects.isNull(approveParamList)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未配置审批流程");
        }
        List<ApproveParam> approveCopyList = approveParamAllList.stream().filter(i->i.getType().equals(Constants.ONE)).collect(Collectors.toList());
        Member createMember = memberMapper.selectById(createMemberId);
        if(Objects.isNull(createMember)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"申请人组织信息异常");
        }
        List<Approve> approveList = new ArrayList<>();
        this.organizeApproveData(approveTempl,approveParamList,createMember,businessId,approveList);
        if(CollectionUtils.isEmpty(approveList)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流配置错误");
        }
        //处理抄送数据
        if(CollectionUtils.isNotEmpty(approveCopyList)){
            this.organizeApproveCopyData(approveTempl,approveCopyList,businessId,approveList);
        }
        approveJoinMapper.insert(approveList);
    }
    /**
     * 组织审批流数据
     * @param approveTempl
@@ -429,7 +490,7 @@
            List<String> memberNameList =memberList.stream().map(m->m.getName()).collect(Collectors.toList());
            String memberNames = String.join(",",memberNameList);
            Integer noticeType = Constants.approveTypeToNoticeType(approveTempl.getType());
            String title = "【访客申请】申请人 - ";
            String title = "[访客申请]申请人-";
            Map<String,Object> jsonMap = new HashMap<>();
            for (int j = 0; j < memberList.size(); j++) {
                Member member = memberList.get(j);
@@ -491,8 +552,8 @@
                approve.setTemplatId(approveTempl.getId());
                approve.setChekorId(memberId);
                approve.setStatus(i==0?Constants.ONE:Constants.ZERO);
                approve.setStatusInfo(i==0?"审批中":"待审批");
                approve.setTitle("审批人");
                approve.setStatusInfo(i==0?"审批中":"处理中");
                approve.setTitle(StringUtils.isBlank(approveParam.getRemark())?"审批中":approveParam.getRemark());
                approve.setIsEndCheck((i+1) == approveParamList.size()?Constants.ONE:Constants.ZERO);
                approve.setObjId(businessId);
                approve.setLevel(i+1);
@@ -528,7 +589,7 @@
            if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.visit)){
                title = title + visits.getName();
            }else{
                title = "【访客报备】申请人 - " + visits.getName();
                title = "[访客报备]申请人-" + visits.getName();
            }
            jsonMap.put("name", "访问人:" + visits.getCompanyName() + " - " + visits.getReceptMemberName());
            jsonMap.put("sTime", "入园时间:" + DateUtil.DateToStr(visits.getStarttime() , "yyyy-MM-dd HH:mm"));
@@ -549,14 +610,23 @@
            if(Objects.isNull(carUseBook)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到业务数据信息");
            }
            title = "【用车申请】申请人 - " + carUseBook.getMemberName();
            title = "[用车申请]申请人-" + carUseBook.getMemberName();
            jsonMap.put("name", "申请人:" + carUseBook.getCompanyName() + " - " + carUseBook.getMemberName());
            jsonMap.put("sTime", "开始时间:" + DateUtil.DateToStr(carUseBook.getStartTime() , "yyyy-MM-dd HH:mm"));
            jsonMap.put("eTime", "结束时间:" + DateUtil.DateToStr(carUseBook.getEndTime() , "yyyy-MM-dd HH:mm"));
            jsonMap.put("usrNum", StringUtils.isBlank(carUseBook.getMemberIds())?"乘车人数: 0人": "乘车人数: " +carUseBook.getMemberIds().split(",").length +"人");
            jsonMap.put("mdd", StringUtils.isBlank(carUseBook.getAddr())?"目的地: - ": "目的地:" +carUseBook.getAddr());
        }else {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED);
        }else if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.reason)){
            //物流车预约
            PlatformBooks platformBooks = platformBooksMapper.selectById(businessId);
            if(Objects.isNull(platformBooks)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到业务数据信息");
            }
            title = "[物流车入园预约]申请人-" + platformBooks.getDriverName();
            jsonMap.put("inType", "入库类型:"+(Constants.equalsInteger(platformBooks.getInType(),Constants.ZERO)?"整托盘":"件烟"));
            jsonMap.put("totalNum", "总运输量:"+platformBooks.getTotalNum()+"万支");
            jsonMap.put("arriveDate", "到场时间:" + DateUtil.DateToStr(platformBooks.getArriveDate() , "yyyy-MM-dd HH:mm"));
            jsonMap.put("carNum", "车牌照:"+platformBooks.getCarCodeFront());
        }
        return title;
    }
@@ -744,7 +814,7 @@
    private List<Approve> getLevelInfoFromList(Approve level,List<Approve> approveGroupList) {
        List<Approve> list = new ArrayList<>();
        if(Constants.equalsInteger(level.getApproveType(),Constants.TWO)){
            level.setApproveType(Constants.ZERO);
            level.setApproveType(Constants.TWO);
            //如果是单人审批
            list.add(level);
            return list;
@@ -771,11 +841,17 @@
                waitModel.setType(Constants.ZERO);
                waitModel.setTitle(StringUtils.defaultString(level.getTitle(),"审批人"));
                waitModel.setStatus(Constants.equalsInteger(waitList.get(Constants.ZERO).getStatus(),Constants.ONE)?Constants.ONE:Constants.ZERO);
                waitModel.setStatusInfo("处理中");
                if(Constants.equalsInteger(level.getStatus(),Constants.approveStatus.auditIng)
                        ||Constants.equalsInteger(level.getStatus(),Constants.approveStatus.pass)){
                    waitModel.setMemberName(waitList.size() +"人会签");
                if(Constants.equalsInteger(waitModel.getStatus(),Constants.approveStatus.wait)){
                    waitModel.setStatusInfo("待处理");
                }else if(Constants.equalsInteger(waitModel.getStatus(),Constants.approveStatus.auditIng)){
                    waitModel.setStatusInfo("处理中");
                }
                waitModel.setMemberName(waitList.size() +"人会签");
//                if(Constants.equalsInteger(level.getStatus(),Constants.approveStatus.auditIng)
//                        ||Constants.equalsInteger(level.getStatus(),Constants.approveStatus.pass)){
//                    waitModel.setMemberName(waitList.size() +"人会签");
//                }
                if(CollectionUtils.isNotEmpty(waitList)){
                    waitModel.setCreateDate(waitList.get(Constants.ZERO).getCreateDate());
                }
@@ -790,15 +866,17 @@
        }else {
            if((waitList.size()> 0 || otherPassList.size()>0)){
                Approve waitModel = new Approve();
                waitModel.setApproveType(Constants.ONE);
                waitModel.setApproveType(Constants.ZERO);
                if(Constants.equalsInteger(level.getStatus(),Constants.approveStatus.pass)){
                    waitModel.setStatus(Constants.approveStatus.pass);
                    waitModel.setStatus(level.getStatus());
                    waitModel.setType(Constants.ONE);
                    waitModel.setTitle("审批人(抄送或签审批人)");
                }else{
                    waitModel.setStatus(level.getStatus());
                    waitModel.setType(Constants.ZERO);
                    waitModel.setStatusInfo(passList.size()<=0?StringUtils.defaultString(level.getTitle(),"审批人"):"抄送或签审批人");
                    waitModel.setStatus(passList.size()>0?Constants.ONE:Constants.ZERO);
                    //waitModel.setStatusInfo(passList.size()<=0?StringUtils.defaultString(level.getTitle(),"审批人"):"抄送或签审批人");
                    waitModel.setTitle(passList.size()<=0?StringUtils.defaultString(level.getTitle(),"审批人"):"抄送或签审批人");
                }
                List<Approve> approveList = new ArrayList<>();
                approveList.addAll(waitList);
@@ -812,7 +890,11 @@
                if(Constants.equalsInteger(waitModel.getStatus(),Constants.approveStatus.pass)){
                    waitModel.setMemberName("已抄送"+ approveList.size() +"人");
                }else if(Constants.equalsInteger(waitModel.getStatus(),Constants.approveStatus.wait)){
                    waitModel.setMemberName("处理中");
                    waitModel.setMemberName(waitList.size() +"人或签");
                    waitModel.setStatusInfo("待处理");
                }else{
                    waitModel.setMemberName(waitList.size() +"人或签");
                    waitModel.setStatusInfo("处理中");
                }
                waitModel.setApproveList(approveList);
                list.add(waitModel);
@@ -992,6 +1074,23 @@
        return Constants.ZERO;
    }
    @Override
    public String getApproveUserName(Integer businessId,Integer businessType){
         List<Approve> approveList = approveJoinMapper.selectJoinList(Approve.class,new MPJLambdaWrapper<Approve>()
                 .selectAll(Approve.class)
                 .selectAs(Member::getName,Approve::getMemberName)
                 .leftJoin(Member.class,Member::getId,Approve::getChekorId)
                .eq(Approve::getObjId,businessId)
                .eq(Approve::getObjType,businessType)
                .eq(Approve::getType,Constants.ZERO)
                .eq(Approve::getStatus,Constants.approveStatus.auditIng)
        );
         if(CollectionUtils.isNotEmpty(approveList)){
             List<String> names = approveList.stream().map(m->m.getMemberName()).collect(Collectors.toList());
             return String.join(",",names);
         }
         return null;
    }
@@ -1088,7 +1187,7 @@
            noticesJoinMapper.update(null,new UpdateWrapper<Notices>().lambda()
                    .set(Notices::getEditDate,new Date())
                    .set(Notices::getParam4,approveDTO.getLoginUserInfo().getMemberId())
                    .set(Notices::getInfo,"审批未通过")
                    .set(Notices::getInfo,"已拒绝")
                    .set(Notices::getReaded,Constants.ONE)
                    .set(Notices::getParam2,Constants.TWO)
                    .set(Notices::getStatus,Constants.ONE)
@@ -1101,7 +1200,7 @@
                        .set(Notices::getSendacopy,Constants.ONE)
                        .set(Notices::getStatus,Constants.ONE)
                        .set(Notices::getParam2,Constants.TWO)
                        .set(Notices::getInfo,"审批未通过")
                        .set(Notices::getInfo,"已拒绝")
                        .eq(Notices::getObjId,notices.getObjId())
                        .eq(Notices::getObjType,notices.getObjType())
                        .eq(Notices::getReaded,Constants.ZERO)
@@ -1150,8 +1249,6 @@
                    if(Objects.nonNull(visits)){
                        if(Constants.equalsInteger(visits.getStatus(),Constants.ZERO)){
                             visitsMapper.update(null,new UpdateWrapper<Visits>().lambda().set(Visits::getStatus,Constants.ONE).eq(Visits::getId,visits.getId()));
                        }else{
                            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到业务数据对象!请刷新重试");
                        }
                    }
@@ -1213,6 +1310,7 @@
                .set(Notices::getEditDate,new Date())
                .set(Notices::getReaded,Constants.ONE)
                .set(Notices::getStatus,Constants.ONE)
                .set(Notices::getInfo,Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)?"已通过":"已拒绝")
                .set(dealBusinessBean,Notices::getParam2,Constants.ONE)
                .set(Notices::getParam4,approveDTO.getLoginUserInfo().getMemberId())
                .eq(Notices::getId,notices.getId())
@@ -1254,14 +1352,14 @@
        String info = "";
        List<String> memberNameList = Arrays.asList(memberNames.split(","));
        if(Constants.equalsInteger(memberNameList.size(),Constants.ONE)){
            info = "待 "+memberNameList.get(0)+" 处理中";
            info = "待"+memberNameList.get(0)+"处理中";
        }else{
            info = "待 "+memberNameList.get(0)+" 等"+memberNameList.size()+"人处理中";
            info = "待"+memberNameList.get(0)+"等"+memberNameList.size()+"人处理中";
        }
        //更新该业务数据的所有记录信息
        noticesJoinMapper.update(null,new UpdateWrapper<Notices>().lambda()
                        .set(!dealBusinessBean,Notices::getInfo,info)
                        .set(dealBusinessBean,Notices::getInfo,"审批通过")
                        .set(dealBusinessBean,Notices::getInfo,"已通过")
                        .set(Notices::getParam5,memberNames)
                        .eq(Notices::getObjId,notices.getObjId())
                        .eq(Notices::getObjType,notices.getObjType()));
@@ -1277,7 +1375,7 @@
                    copyNotices.setEditDate(new Date());
                    copyNotices.setParam2("2");
                    copyNotices.setParam3("");
                    copyNotices.setInfo("审批通过");
                    copyNotices.setInfo("已通过");
                    copyNotices.setUserId(copyApprove.getChekorId());
                    copyNotices.setStatus(Constants.ZERO);
                    copyNotices.setSendacopy(Constants.ONE);
@@ -1320,14 +1418,16 @@
            notices.setParam5(memberNames);
            notices.setRemark(nextDealApprove.getMemberName());
            if(Constants.equalsInteger(memberNameList.size(),Constants.ONE)){
                notices.setInfo("待 "+memberNameList.get(0)+" 处理中");
                notices.setInfo("待"+memberNameList.get(0)+"处理中");
            }else{
                notices.setInfo("待 "+memberNameList.get(0)+" 等"+memberNameList.size()+"人处理中");
                notices.setInfo("待"+memberNameList.get(0)+"等"+memberNameList.size()+"人处理中");
            }
            noticesJoinMapper.insert(newNotices);
        }
        return memberNames;
    }
    public void dealBusinessData(ApproveDTO approveDTO,Approve approve){
        if(approveDTO.getObjType().equals(Constants.approveObjectType.unConstructionVisit)
@@ -1341,11 +1441,64 @@
            visits.setStatus(approveDTO.getStatus());
            visits.setEditDate(new Date());
            visits.setEditor(approveDTO.getLoginUserInfo().getMemberId());
            //下发访客报备车辆信息
            if(approveDTO.getObjType().equals(Constants.approveObjectType.visitReporting)){
                Boolean sendStatus = true;
                //查询当前启用的停车场
                List<Parks> parksList = parksMapper.selectList(new QueryWrapper<Parks>()
                        .lambda()
                        .isNotNull(Parks::getHkId)
                        .eq(Parks::getIsdeleted,Constants.ZERO));
                List<ParkBook> parkBookList = new ArrayList<>();
                if(CollectionUtils.isNotEmpty(parksList)){
                    for (Parks parks:parksList) {
                        ParkBook parkBook = new ParkBook();
                        parkBook.setIsdeleted(Constants.ZERO);
                        parkBook.setCreateDate(new Date());
                        parkBook.setVisitId(visits.getId());
                        parkBook.setCarCode(visits.getCarNos());
                        parkBook.setParkId(parks.getId());
                        parkBook.setOrigin(Constants.TWO);
                        parkBook.setStartTime(visits.getStarttime());
                        parkBook.setEndTime(visits.getEndtime());
                        parkBook.setMemberId( visits.getMemberId());
                        parkBook.setTimeType(Constants.ONE);
                        parkBook.setParkHkId(parks.getHkId());
                        CarChargeAddRequest param = new CarChargeAddRequest();
                        param.setPlateNo(parkBook.getCarCode());
                        param.setParkSyscode(parkBook.getParkHkId());
                        param.setStartTime(Objects.isNull(parkBook.getStartTime())?DateUtil.getDate(new Date(),"yyyy-MM-dd"):DateUtil.getShortTimeToNull(parkBook.getStartTime()));
                        param.setEndTime(Objects.isNull(parkBook.getEndTime())?"2999-12-31":DateUtil.getShortTimeToNull(parkBook.getEndTime()));
                        BaseResponse response = HKService.carChargeAddtion(param);
                        parkBook.setHkDate(new Date());
                        if(response!=null
                                && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                            parkBook.setHkStatus(Constants.ONE);
                            parkBook.setRemark("包期成功");
                        }else{
                            parkBook.setHkStatus(Constants.TWO);
                            parkBook.setRemark("包期失败~");
                            //下发失败  标记主业务状态为下发失败
                            sendStatus = false;
                        }
                        parkBookList.add(parkBook);
                    }
                    parkBookMapper.insert(parkBookList);
                }
                if(sendStatus){
                    visits.setStatus(Constants.VisitStatus.xfSuccess);
                }else{
                    visits.setStatus(Constants.VisitStatus.xfFail);
                }
            }
            visitsMapper.updateById(visits);
        }else if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals(
                Constants.approveObjectType.unCityUseCar)){
            this.updDriver(approveDTO,approve,true);
        }else if(approveDTO.getObjType().equals(Constants.approveObjectType.logisticsCarUse)){
        }else if(approveDTO.getObjType().equals(Constants.approveObjectType.reason)){
            //物流车预约
            PlatformBooks platformBooks = platformBooksMapper.selectById(approveDTO.getObjId());
            if(Objects.isNull(platformBooks)){
@@ -1354,9 +1507,13 @@
            platformBooks.setStatus(approveDTO.getStatus());
            platformBooks.setEditDate(new Date());
            platformBooks.setEditor(approveDTO.getLoginUserInfo().getMemberId());
            PlatformReason platformReason = platformReasonMapper.selectById(platformBooks.getReasonId());
            //生成任务记录
            PlatformJob platformJob = platformBooks.toPlatformJob();
            platformJob.setPlatformGroupId(platformReason.getGroupId().intValue());
            platformJob.setType(Constants.platformJobType.sgscxh);
            platformJob.setStatus(Constants.PlatformJobStatus.WART_SIGN_IN.getKey());
            platformJobMapper.insert(platformJob);
            platformBooks.setJobId(platformJob.getId());
            platformBooksMapper.updateById(platformBooks);
@@ -1365,7 +1522,9 @@
            platformLog.setCreateDate(new Date());
            platformLog.setJobId(platformJob.getId());
            platformLog.setIsdeleted(Constants.ZERO);
            platformLog.setObjType(Constants.ZERO);
            platformLog.setParam4(platformJob.getCarCodeFront());
            platformLog.setContent(Constants.PlatformJobLogType.CREATE.getInfo());
            platformLog.setObjType(Constants.PlatformJobLogType.CREATE.getKey());
            platformLog.setObjId(platformJob.getId().toString());
            platformLog.setAfterContent(JSONObject.toJSONString(platformJob));
            platformLogMapper.insert(platformLog);