liusheng
2024-08-16 4274addd786ff7b0e6faffb59e90029911b90232
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -1,9 +1,13 @@
package com.ruoyi.quartz.task;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.bean.DtoConversionUtils;
import com.ruoyi.project.domain.*;
import com.ruoyi.project.domain.vo.DingTalkReqVo;
import com.ruoyi.project.service.*;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.service.ISysUserService;
import com.taobao.api.ApiException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -13,6 +17,9 @@
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.ReentrantLock;
@@ -42,16 +49,22 @@
    @Autowired
    private IServiceFundflowruleService iServiceFundflowruleService;
    @Autowired
    @Autowired
    private IServiceFundService serviceFundService;
    @Autowired
    private ISysUserService sysUserService;
    @Autowired
    private IServiceSystemmessageService iServiceSystemmessageService;
    @Autowired
    private IServiceFundflowService fundflowService;
    public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) {
        System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
        System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}" , s, b, l, d, i));
    }
    public void ryParams(String params) {
@@ -62,7 +75,7 @@
        System.out.println("执行无参方法");
    }
    public void checkReportInfo() {
    public void checkReportInfo() throws ApiException {
        //查出所有被医院退回的Fund数据
        List<ServiceFundShared> serviceFundShareds = serviceFundSharedService.queryFundShareList();
        for (ServiceFundShared serviceFundShared : serviceFundShareds) {
@@ -74,18 +87,35 @@
                }
                String phone = serviceFundShared.getPhone();
                //将分享里的该数据删除
                serviceFundSharedService.delfundsharedInfoById(serviceFundShared.getId());
                log.info("checkReportInfo中入参ID为:{}" , serviceFundShared.getId());
                Boolean aBoolean = serviceFundSharedService.delfundsharedInfoById(serviceFundShared.getId(), null);
                log.info("fund分享表里的数据是否删除成功:{}" , aBoolean);
                ServiceFund serviceFund = new ServiceFund();
                serviceFund.setId(serviceFundShared.getSerfunid());
                List<ServiceFund> serviceFunds = serviceFundService.queryList(serviceFund);
                List<ServiceFund> serviceFunds = serviceFundService.queryInfoById(serviceFund);
                ServiceFund serviceFund1 = serviceFunds.get(0);
                serviceFund1.setFlowlevel(100L);
                serviceFund1.setDel_flag(0);
                serviceFund1.setRecordstatus(-1);
                serviceFund1.setBackflowlevel(199);
                serviceFundService.updateById(serviceFund1);
                sendMeg(split, phone, serviceFundShared.getApplytype(), 2, serviceFundShared.getSerfunid());
                SysUser sysUser = sysUserService.selectUserByUserName(serviceFund1.getUserno());
                sendMeg(split, sysUser.getPhonenumber(), serviceFundShared.getApplytype(), 2, serviceFundShared.getSerfunid());
                //发送信息保存
                ServiceSystemmessage serviceSystemmessage = new ServiceSystemmessage();
                serviceSystemmessage.setFundtype(1);
                serviceSystemmessage.setSenduserno(sysUser.getUserName());
                serviceSystemmessage.setSendusername(sysUser.getNickName());
                serviceSystemmessage.setReceiveuserno(serviceFund.getUserno());
                serviceSystemmessage.setReceiveusername(serviceFund.getUsername());
                serviceSystemmessage.setUpdateTime(new Date());
                serviceSystemmessage.setUpdateBy(sysUser.getNickName());
                serviceSystemmessage.setIsread(0);
                serviceSystemmessage.setMessagetype(1);
                serviceSystemmessage.setMessagetitle("财务系统驳回信息");
                serviceSystemmessage.setMessagecontent(serviceFundShared.getCxrjyj());
                iServiceSystemmessageService.save(serviceSystemmessage);
            } else {
                //不是退回的操作
                if (StringUtils.isNotBlank(serviceFundShared.getZffs()) && serviceFundShared.getSpjg() == 0) {
@@ -115,7 +145,7 @@
                    }
                    serviceFund.setRiqi(serviceFundShared.getRiqi());
                    boolean b = serviceFundService.updateById(serviceFund);
                    log.info("更新serviceFund里的zffs表是否成功: {}", b);
                    log.info("更新serviceFund里的zffs表是否成功: {}" , b);
                    ServiceFundflow serviceFundflow = new ServiceFundflow();
                    serviceFundflow.setCreateBy("admin");
                    serviceFundflow.setCreateTime(new Date());
@@ -293,14 +323,14 @@
            if (StringUtils.isNotBlank(serviceReimbursementShared.getOabdzt()) && serviceReimbursementShared.getOabdzt().equals("已撤销")) {
                String phone = serviceReimbursementShared.getPhone();
                String[] split = null;
                log.info("serviceReimbursementShared.getCxrjyj(): {}", serviceReimbursementShared.getCxrjyj());
                log.info("serviceReimbursementShared.getCxrjyj(): {}" , serviceReimbursementShared.getCxrjyj());
                if (StringUtils.isNotBlank(serviceReimbursementShared.getCxrjyj())) {
                    split = serviceReimbursementShared.getCxrjyj().split("&");
                }
                //将分享里的该数据删除
                serviceReimbursementSharedService.delResharedInfoById(serviceReimbursementShared.getId());
                Boolean aBoolean = serviceReimbursementSharedService.delResharedInfoById(serviceReimbursementShared.getId());
                log.info("将分享里的该数据删除: {}" , aBoolean);
                //将Flowlevel 设置为0;
                ServiceReimbursement serviceReimbursement = new ServiceReimbursement();
                serviceReimbursement.setId(serviceReimbursementShared.getReimid());
@@ -312,7 +342,23 @@
                serviceReimbursement1.setBackflowlevel(199L);
                serviceReimbursement1.setRecordstatus(-1);
                serviceReimbursementService.updateById(serviceReimbursement1);
                sendMeg(split, phone, "0", 1, serviceReimbursementShared.getReimid());
                SysUser sysUser = sysUserService.selectUserByUserName(serviceReimbursement1.getUserno());
                //发送信息保存
                sendMeg(split, sysUser.getPhonenumber(), "0" , 1, serviceReimbursementShared.getReimid());
                ServiceSystemmessage serviceSystemmessage = new ServiceSystemmessage();
                serviceSystemmessage.setFundtype(1);
                serviceSystemmessage.setSenduserno(sysUser.getUserName());
                serviceSystemmessage.setSendusername(sysUser.getNickName());
                serviceSystemmessage.setReceiveuserno(serviceReimbursement1.getUserno());
                serviceSystemmessage.setReceiveusername(serviceReimbursement1.getUsername());
                serviceSystemmessage.setUpdateTime(new Date());
                serviceSystemmessage.setUpdateBy(sysUser.getNickName());
                serviceSystemmessage.setIsread(0);
                serviceSystemmessage.setMessagetype(1);
                serviceSystemmessage.setMessagetitle("财务系统驳回信息");
                serviceSystemmessage.setMessagecontent(serviceReimbursementShared.getCxrjyj());
                iServiceSystemmessageService.save(serviceSystemmessage);
            } else {
                //不是退回的操作
@@ -343,7 +389,7 @@
                        serviceReimbursement.setFinancechecher(serviceReimbursementShared.getFinancechecher());
                    }
                    boolean b = serviceReimbursementService.updateById(serviceReimbursement);
                    log.info("更新serviceReimbursement里的zffs表是否成功: {}", b);
                    log.info("更新serviceReimbursement里的zffs表是否成功: {}" , b);
                    ServiceFundflow serviceFundflow = new ServiceFundflow();
                    serviceFundflow.setCreateBy("admin");
                    serviceFundflow.setCreateTime(new Date());
@@ -508,7 +554,6 @@
                            serviceFundflow.setCheckTime(parse);
                            fundflowService.save(serviceFundflow);
                        }
                        //如果已经更新则不在处理
                    }
@@ -518,15 +563,30 @@
    }
    public void sendMeg(String[] split, String phone, String applyType, Integer fundType, Long fundId) {
    public void sendMeg(String[] split, String phone, String applyType, Integer fundType, Long fundId) throws ApiException {
        String content = null;
        String time = null;
        String people = null;
        if (split.length >= 1) {
            people = split[0];
        }
        if (split.length >= 2) {
            time = split[1];
        }
        if (split.length >= 3) {
            content = split[2];
        }
        //记录操作记录
        ServiceFundflow serviceFundflow = new ServiceFundflow();
        serviceFundflow.setCreateBy("admin");
        serviceFundflow.setCreateBy(people);
        serviceFundflow.setUpdateBy(people);
        serviceFundflow.setCheckusername(people);
        serviceFundflow.setCreateTime(new Date());
        serviceFundflow.setUpdateBy("admin");
        serviceFundflow.setUpdateTime(new Date());
        serviceFundflow.setCheckusername(split[0]);
        serviceFundflow.setFlowcontent(split[2]);
        serviceFundflow.setFlowcontent(content);
        serviceFundflow.setFlowconclusion(2);
        serviceFundflow.setFundtype(fundType);
        serviceFundflow.setFlowlevel(100);
@@ -534,17 +594,34 @@
        serviceFundflow.setFundid(fundId);
        fundflowService.save(serviceFundflow);
//        ArrayList<ConcurrentHashMap<String, String>> contentList = new ArrayList<>();
//        ConcurrentHashMap map = new ConcurrentHashMap();
//        map.put("审批人", split[0]);
//        map.put("审批时间", split[1]);
//        map.put("意见", split[2]);
//        contentList.add(map);
//        DingTalkReqVo dingTalkReqVo = new DingTalkReqVo();
//        dingTalkReqVo.setTitle("财务系统驳回信息");
//        dingTalkReqVo.setNumber(phone);
//        dingTalkReqVo.setContents(contentList);
//        dingTalkService.sendNotification(dingTalkReqVo);
        ArrayList<ConcurrentHashMap<String, Object>> contentList = new ArrayList<>();
        ConcurrentHashMap map = new ConcurrentHashMap();
        map.put("审批人:" , people);
        try {
            boolean validDateTime = isValidDateTime(time);
            if (validDateTime) map.put("审批时间:" , new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time));
            else map.put("审批时间:" , new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time + ":00"));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        map.put("意见:" , content);
        contentList.add(map);
        DingTalkReqVo dingTalkReqVo = new DingTalkReqVo();
        dingTalkReqVo.setTitle("财务系统驳回信息");
        dingTalkReqVo.setNumber(phone);
        dingTalkReqVo.setContents(contentList);
        log.info("钉钉发送消息:{}" , dingTalkReqVo);
        dingTalkService.sendNotification(dingTalkReqVo);
    }
    public boolean isValidDateTime(String dateTime) {
        try {
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            LocalDateTime.parse(dateTime, formatter);
            return true;
        } catch (DateTimeParseException e) {
            return false;
        }
    }
    private ReentrantLock lock = new ReentrantLock();
@@ -583,7 +660,7 @@
                }
            }
        } catch (Exception e) {
            log.error("获取编号失败了{}", e.getStackTrace());
            log.error("获取编号失败了{}" , e.getStackTrace());
        } finally {
            lock.unlock();
        }
@@ -599,22 +676,22 @@
        //处理差旅报销
        serviceFundflowrule.setApplytype("0");
        List<ServiceFundflowrule> serviceFundflowrules = iServiceFundflowruleService.queryList(serviceFundflowrule);
        log.info("差旅的最高等级:{}", serviceFundflowrules.get(0).getTotallevel());
        log.info("差旅的最高等级:{}" , serviceFundflowrules.get(0).getTotallevel());
        ServiceReimbursement serviceReimbursement = new ServiceReimbursement();
        serviceReimbursement.setFlowlevel(serviceFundflowrules.get(0).getTotallevel().longValue());
        serviceReimbursement.setUploadStates(0);
        serviceReimbursement.setUploadStates(1);
        serviceReimbursement.setDelFlag(0);
        List<ServiceReimbursement> serviceReimbursementList = serviceReimbursementService.queryList(serviceReimbursement);
        for (ServiceReimbursement serviceReimbursement1 : serviceReimbursementList) {
            try {
                log.info("插入分享表的ID为:{}", serviceReimbursement1.getId());
                log.info("插入分享表的ID为:{}" , serviceReimbursement1.getId());
                Boolean aBoolean = serviceReimbursementService.addSharedData(serviceReimbursement1.getId());
                if (aBoolean) {
                    ServiceReimbursement serviceReimbursement3 = new ServiceReimbursement();
                    serviceReimbursement3.setId(serviceReimbursement1.getId());
                    serviceReimbursement3.setUploadStates(1);
                    serviceReimbursement3.setUploadStates(2);
                    boolean b = serviceReimbursementService.updateById(serviceReimbursement3);
                    log.info("serviceReimbursement是否插入成功{},{}", aBoolean, b);
                    log.info("serviceReimbursement是否插入成功{},{}" , aBoolean, b);
                }
            } catch (Exception e) {
                ServiceReimbursement serviceReimbursement2 = new ServiceReimbursement();
@@ -627,56 +704,59 @@
        //专家劳务费申请
        serviceFundflowrule.setApplytype("1");
        List<ServiceFundflowrule> serviceFundflowrules2 = iServiceFundflowruleService.queryList(serviceFundflowrule);
        log.info("专家劳务的最高等级:{}", serviceFundflowrules2.get(0).getTotallevel());
        addFunfShared(serviceFundflowrules2.get(0).getTotallevel().longValue(), "1");
        log.info("专家劳务的最高等级:{}" , serviceFundflowrules2.get(0).getTotallevel());
        addFundShared(serviceFundflowrules2.get(0).getTotallevel().longValue(), "1");
        //伦理专家劳务费申请
        serviceFundflowrule.setApplytype("2");
        List<ServiceFundflowrule> serviceFundflowrules3 = iServiceFundflowruleService.queryList(serviceFundflowrule);
        log.info("伦理专家劳务费申请:{}", serviceFundflowrules3.get(0).getTotallevel());
        addFunfShared(serviceFundflowrules3.get(0).getTotallevel().longValue(), "2");
        log.info("伦理专家劳务费申请:{}" , serviceFundflowrules3.get(0).getTotallevel());
        addFundShared(serviceFundflowrules3.get(0).getTotallevel().longValue(), "2");
        //医学成本报销
        serviceFundflowrule.setApplytype("3");
        List<ServiceFundflowrule> serviceFundflowrules4 = iServiceFundflowruleService.queryList(serviceFundflowrule);
        log.info("医学成本报销:{}", serviceFundflowrules4.get(0).getTotallevel());
        addFunfShared(serviceFundflowrules4.get(0).getTotallevel().longValue(), "3");
        log.info("医学成本报销:{}" , serviceFundflowrules4.get(0).getTotallevel());
        addFundShared(serviceFundflowrules4.get(0).getTotallevel().longValue(), "3");
        //办公费用报销
        serviceFundflowrule.setApplytype("4");
        List<ServiceFundflowrule> serviceFundflowrules5 = iServiceFundflowruleService.queryList(serviceFundflowrule);
        log.info("办公费用报销:{}", serviceFundflowrules5.get(0).getTotallevel());
        addFunfShared(serviceFundflowrules5.get(0).getTotallevel().longValue(), "4");
        log.info("办公费用报销:{}" , serviceFundflowrules5.get(0).getTotallevel());
        addFundShared(serviceFundflowrules5.get(0).getTotallevel().longValue(), "4");
        //绩效审批报销
        serviceFundflowrule.setApplytype("5");
        List<ServiceFundflowrule> serviceFundflowrules6 = iServiceFundflowruleService.queryList(serviceFundflowrule);
        log.info("办公费用报销:{}", serviceFundflowrules6.get(0).getTotallevel());
        addFunfShared(serviceFundflowrules6.get(0).getTotallevel().longValue(), "5");
        log.info("办公费用报销:{}" , serviceFundflowrules6.get(0).getTotallevel());
        addFundShared(serviceFundflowrules6.get(0).getTotallevel().longValue(), "5");
    }
    private void addFunfShared(Long totallevel, String applyType) {
    private void addFundShared(Long totallevel, String applyType) {
        ServiceFund serviceFund = new ServiceFund();
        serviceFund.setFlowlevel(totallevel);
        serviceFund.setUploadStates(0);
        serviceFund.setUploadStates(1);
        serviceFund.setDel_flag(0);
        serviceFund.setApplytype(applyType);
        List<ServiceFund> serviceFundList = serviceFundService.queryList(serviceFund);
        for (ServiceFund serviceFund1 : serviceFundList) {
            try {
                log.info("插入分享表的FundID为:{}", serviceFund1.getId());
                log.info("插入分享表的FundID为:{}" , serviceFund1.getId());
                Boolean aBoolean = serviceFundService.addFundSharedInfo(serviceFund1.getId());
                if (aBoolean) {
                    ServiceFund serviceFund2 = new ServiceFund();
                    serviceFund2.setId(serviceFund1.getId());
                    serviceFund2.setUploadStates(1);
                    serviceFund2.setUploadStates(2);
                    serviceFund2.setUpdateTime(new Date());
                    boolean b = serviceFundService.updateById(serviceFund2);
                    log.info("serviceReimbursement是否插入成功{},{}", aBoolean, b);
                    log.info("serviceReimbursement是否插入成功{},{}" , aBoolean, b);
                }
            } catch (Exception e) {
                e.printStackTrace();
                ServiceFund serviceFund2 = new ServiceFund();
                serviceFund2.setId(serviceFund1.getId());
                serviceFund2.setUploadStates(1);
                serviceFund2.setNotes("插入fund分享表失败");
                serviceFundService.updateById(serviceFund2);
            }