liusheng
2023-08-31 d51450c60f95c7e6fb7034451e9c1f7497b2b116
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -1,21 +1,17 @@
package com.ruoyi.quartz.task;
import com.ruoyi.project.domain.*;
import com.ruoyi.project.domain.vo.DingTalkReqVo;
import com.ruoyi.project.service.*;
import com.ruoyi.project.service.impl.DingTalkServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.util.CollectionUtils;
import java.lang.reflect.Array;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.ReentrantLock;
/**
 * 定时任务调度测试
@@ -29,10 +25,16 @@
    private DingTalkService dingTalkService;
    @Autowired
    private IServiceTasknumService ServiceTasknumService;
    @Autowired
    private IServiceReimbursementSharedService serviceReimbursementSharedService;
    @Autowired
    private IServiceFundSharedService serviceFundSharedService;
    @Autowired
    private IServiceFunddetailSharedService serviceFunddetailSharedService;
    @Autowired
@@ -80,10 +82,15 @@
            } else {
                //不是退回的操作
                if (StringUtils.isNotBlank(serviceFundShared.getZffs()) && serviceFundShared.getSpjg() == 0) {
                    String bh = myMethod();
                    //钱已经到帐,并且审批结果为0,说明审批结束,但数据还没有同步到fund表和fundflow表;对fund表和fundflow表进行更新,并将0改成1
                    ServiceFund serviceFund = new ServiceFund();
                    serviceFund.setBh(bh);
                    serviceFund.setId(serviceFundShared.getSerfunid());
                    serviceFund.setZffs(serviceFundShared.getZffs());
                    if (StringUtils.isNotBlank(serviceFundShared.getPresident())) {
                        serviceFund.setPresident(serviceFundShared.getPresident());
                    }
                    if (StringUtils.isNotBlank(serviceFundShared.getFinvicepresident())) {
                        serviceFund.setFinvicepresident(serviceFundShared.getFinvicepresident());
                    }
@@ -109,18 +116,18 @@
                    serviceFundflow.setUpdateTime(new Date());
                    //用三个审批人,如果都为空,就为空
                    String spname = "";
                    if (StringUtils.isNotBlank(serviceFundShared.getOpochecker())) {
                        serviceFundflow.setCheckusername(serviceFundShared.getOpochecker().substring(0, serviceFundShared.getOpochecker().indexOf(" ")));
                    if (StringUtils.isNotBlank(serviceFundShared.getPresident())) {
                        serviceFundflow.setCheckusername(serviceFundShared.getPresident().substring(0, serviceFundShared.getPresident().indexOf(" ")));
                        //更新校验时间
                        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                        Date parse = new Date();
                        try {
                            parse = simpleDateFormat.parse(serviceFundShared.getOpochecker().substring(serviceFundShared.getOpochecker().indexOf(" ") + 1, serviceFundShared.getOpochecker().length()));
                            parse = simpleDateFormat.parse(serviceFundShared.getPresident().substring(serviceFundShared.getPresident().indexOf(" ") + 1, serviceFundShared.getPresident().length()));
                        } catch (ParseException e) {
                            e.printStackTrace();
                        }
                        serviceFundflow.setCheckTime(parse);
                        spname = spname + serviceFundShared.getOpochecker() + "  ";
                        spname = spname + serviceFundShared.getPresident() + "  ";
                    }
                    if (StringUtils.isNotBlank(serviceFundShared.getFinvicepresident())) {
                        serviceFundflow.setCheckusername(serviceFundShared.getFinvicepresident().substring(0, serviceFundShared.getFinvicepresident().indexOf(" ")));
@@ -177,15 +184,15 @@
                    Date parse = new Date();
                    if (StringUtils.isNotBlank(serviceFundShared.getOpochecker())) {
                        //先查询一下fund是否已经更新Opochecker,如果没有更新,则进行更新,并往fundflow表里插一条数据
                        if (StringUtils.isEmpty(serviceFunds.get(0).getOpochecker())) {
                    if (StringUtils.isNotBlank(serviceFundShared.getPresident())) {
                        //先查询一下fund是否已经更新President,如果没有更新,则进行更新,并往fundflow表里插一条数据
                        if (StringUtils.isEmpty(serviceFunds.get(0).getPresident())) {
                            try {
                                parse = simpleDateFormat.parse(serviceFundShared.getOpochecker().substring(serviceFundShared.getOpochecker().indexOf(" ") + 1, serviceFundShared.getOpochecker().length()));
                                parse = simpleDateFormat.parse(serviceFundShared.getPresident().substring(serviceFundShared.getPresident().indexOf(" ") + 1, serviceFundShared.getPresident().length()));
                            } catch (ParseException e) {
                                e.printStackTrace();
                            }
                            serviceFund.setOpochecker(serviceFundShared.getOpochecker());
                            serviceFund.setPresident(serviceFundShared.getPresident());
                            serviceFundService.updateById(serviceFund);
                            //将操作保存到fundflow表中
@@ -194,8 +201,8 @@
                            serviceFundflow.setCreateTime(new Date());
                            serviceFundflow.setUpdateBy("admin");
                            serviceFundflow.setUpdateTime(new Date());
                            serviceFundflow.setCheckusername(serviceFundShared.getOpochecker().substring(0, serviceFundShared.getOpochecker().indexOf(" ")));
                            serviceFundflow.setFlowcontent(serviceFundShared.getOpochecker().substring(0, serviceFundShared.getOpochecker().indexOf(" ")) + "审批通过");
                            serviceFundflow.setCheckusername(serviceFundShared.getPresident().substring(0, serviceFundShared.getPresident().indexOf(" ")));
                            serviceFundflow.setFlowcontent(serviceFundShared.getPresident().substring(0, serviceFundShared.getPresident().indexOf(" ")) + "审批通过");
                            serviceFundflow.setFlowconclusion(1);
                            serviceFundflow.setFundtype(1);
                            serviceFundflow.setFlowlevel(999);
@@ -278,7 +285,11 @@
        for (ServiceReimbursementShared serviceReimbursementShared : serviceReimbursementShareds) {
            if (StringUtils.isNotBlank(serviceReimbursementShared.getOabdzt()) && serviceReimbursementShared.getOabdzt().equals("已撤销")) {
                String phone = serviceReimbursementShared.getPhone();
                String[] split = serviceReimbursementShared.getCxrjyj().split("&");
                String[] split = null;
                log.info("serviceReimbursementShared.getCxrjyj(): {}", serviceReimbursementShared.getCxrjyj());
                if (StringUtils.isNotBlank(serviceReimbursementShared.getCxrjyj())) {
                    split = serviceReimbursementShared.getCxrjyj().split("&");
                }
                //将分享里的该数据删除
                serviceReimbursementSharedService.delResharedInfoById(serviceReimbursementShared.getId());
@@ -298,12 +309,16 @@
                //不是退回的操作
                if (StringUtils.isNotBlank(serviceReimbursementShared.getZffs()) && serviceReimbursementShared.getSpjg() == 0) {
                    //钱已经到帐,并且审批结果为0,说明审批结束,但数据还没有同步到fund表和fundflow表;对fund表和fundflow表进行更新,并将0改成1
                    String bh = myMethod();
                    //钱已经到帐,并且审批结果为0(0为审批中),说明审批结束,但数据还没有同步到fund表和fundflow表;对fund表和fundflow表进行更新,并将0改成1(1审批结束)
                    ServiceReimbursement serviceReimbursement = new ServiceReimbursement();
                    serviceReimbursement.setId(serviceReimbursementShared.getReimid());
                    serviceReimbursement.setZffs(serviceReimbursementShared.getZffs());
                    serviceReimbursement.setRiqi(serviceReimbursementShared.getRiqi());
                    serviceReimbursement.setBh(bh);
                    if (StringUtils.isNotBlank(serviceReimbursementShared.getPresident())) {
                        serviceReimbursement.setPresident(serviceReimbursementShared.getPresident());
                    }
                    if (StringUtils.isNotBlank(serviceReimbursementShared.getFinvicepresident())) {
                        serviceReimbursement.setFinvicepresident(serviceReimbursementShared.getFinvicepresident());
                    }
@@ -329,18 +344,18 @@
                    //用三个审批人,如果都为空,就为空
                    String spName = "";
                    if (StringUtils.isNotBlank(serviceReimbursementShared.getOpochecker())) {
                        serviceFundflow.setCheckusername(serviceReimbursementShared.getOpochecker().substring(0, serviceReimbursementShared.getOpochecker().indexOf(" ")));
                    if (StringUtils.isNotBlank(serviceReimbursementShared.getPresident())) {
                        serviceFundflow.setCheckusername(serviceReimbursementShared.getPresident().substring(0, serviceReimbursementShared.getPresident().indexOf(" ")));
                        //更新校验时间
                        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                        Date parse = new Date();
                        try {
                            parse = simpleDateFormat.parse(serviceReimbursementShared.getOpochecker().substring(serviceReimbursementShared.getOpochecker().indexOf(" ") + 1, serviceReimbursementShared.getOpochecker().length()));
                            parse = simpleDateFormat.parse(serviceReimbursementShared.getPresident().substring(serviceReimbursementShared.getPresident().indexOf(" ") + 1, serviceReimbursementShared.getPresident().length()));
                        } catch (ParseException e) {
                            e.printStackTrace();
                        }
                        serviceFundflow.setCheckTime(parse);
                        spName = spName + serviceReimbursementShared.getOpochecker() + "  ";
                        spName = spName + serviceReimbursementShared.getPresident() + "  ";
                    }
                    if (StringUtils.isNotBlank(serviceReimbursementShared.getFinvicepresident())) {
                        serviceFundflow.setCheckusername(serviceReimbursementShared.getFinvicepresident().substring(0, serviceReimbursementShared.getFinvicepresident().indexOf(" ")));
@@ -395,15 +410,15 @@
                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                    Date parse = new Date();
                    if (StringUtils.isNotBlank(serviceReimbursementShared.getOpochecker())) {
                    if (StringUtils.isNotBlank(serviceReimbursementShared.getPresident())) {
                        try {
                            parse = simpleDateFormat.parse(serviceReimbursementShared.getOpochecker().substring(serviceReimbursementShared.getOpochecker().indexOf(" ") + 1, serviceReimbursementShared.getOpochecker().length()));
                            parse = simpleDateFormat.parse(serviceReimbursementShared.getPresident().substring(serviceReimbursementShared.getPresident().indexOf(" ") + 1, serviceReimbursementShared.getPresident().length()));
                        } catch (ParseException e) {
                            e.printStackTrace();
                        }
                        //先查询一下fund是否已经更新Opochecker,如果没有更新,则进行更新,并往fundflow表里插一条数据
                        if (StringUtils.isEmpty(serviceReimbursementList.get(0).getOpochecker())) {
                            reimbursement.setOpochecker(serviceReimbursementShared.getOpochecker());
                        //先查询一下fund是否已经更新President,如果没有更新,则进行更新,并往fundflow表里插一条数据
                        if (StringUtils.isEmpty(serviceReimbursementList.get(0).getPresident())) {
                            reimbursement.setPresident(serviceReimbursementShared.getPresident());
                            serviceReimbursementService.updateById(reimbursement);
@@ -413,8 +428,8 @@
                            serviceFundflow.setCreateTime(new Date());
                            serviceFundflow.setUpdateBy("admin");
                            serviceFundflow.setUpdateTime(new Date());
                            serviceFundflow.setCheckusername(serviceReimbursementShared.getOpochecker().substring(0, serviceReimbursementShared.getOpochecker().indexOf(" ")));
                            serviceFundflow.setFlowcontent(serviceReimbursementShared.getOpochecker().substring(0, serviceReimbursementShared.getOpochecker().indexOf(" ")) + "审批通过");
                            serviceFundflow.setCheckusername(serviceReimbursementShared.getPresident().substring(0, serviceReimbursementShared.getPresident().indexOf(" ")));
                            serviceFundflow.setFlowcontent(serviceReimbursementShared.getPresident().substring(0, serviceReimbursementShared.getPresident().indexOf(" ")) + "审批通过");
                            serviceFundflow.setFlowconclusion(1);
                            serviceFundflow.setFundtype(1);
                            serviceFundflow.setFlowlevel(999);
@@ -511,17 +526,61 @@
        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, 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);
    }
    private ReentrantLock lock = new ReentrantLock();
    public String myMethod() {
        lock.lock();
        String bh = null;
        try {
            // 代码块
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMM");
            String format = simpleDateFormat.format(new Date());
            ServiceTasknum serviceTasknum = new ServiceTasknum();
            serviceTasknum.setYearmonth(format);
            //CW  财务
            serviceTasknum.setApptype("CW");
            List<ServiceTasknum> serviceTasknums = ServiceTasknumService.queryList(serviceTasknum);
            long nums = 1;
            if (CollectionUtils.isEmpty(serviceTasknums)) {
                //进行插入操作
                serviceTasknum.setSerialnumber(nums);
                ServiceTasknumService.save(serviceTasknum);
                bh = serviceTasknum.getYearmonth() + "0" + nums;
            } else {
                //获取唯一值的最大值
                nums = serviceTasknums.stream().mapToLong(ServiceTasknum::getSerialnumber).max().getAsLong() + 1;
                ServiceTasknum serviceTasknum1 = serviceTasknums.get(0);
                serviceTasknum1.setSerialnumber(nums);
                //对该条数据的唯一值加1
                ServiceTasknumService.updateById(serviceTasknum1);
                //将生成的编号返回
                if (nums < 10) {
                    bh = serviceTasknums.get(0).getYearmonth() + "0" + nums;
                } else {
                    bh = serviceTasknums.get(0).getYearmonth() + nums;
                }
            }
        } catch (Exception e) {
            log.error("获取编号失败了{}", e.getStackTrace());
        } finally {
            lock.unlock();
        }
        return bh;
    }
}