From 65314b14210a175bae095649584614973b3619df Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 12 八月 2025 13:48:14 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java |  611 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 576 insertions(+), 35 deletions(-)

diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java
index bd69001..6ff7672 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java
@@ -1,36 +1,43 @@
 package com.ruoyi.project.service.impl;
 
 import java.io.File;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.ruoyi.common.config.RuoYiConfig;
+import com.ruoyi.common.constant.HttpStatus;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.utils.HttpClientKit;
 import com.ruoyi.common.utils.bean.DtoConversionUtils;
+import com.ruoyi.common.utils.uuid.IdUtils;
 import com.ruoyi.project.domain.*;
 import com.ruoyi.project.domain.dto.ServiceReimbursementDto;
+import com.ruoyi.project.domain.vo.CheckFundVO;
+import com.ruoyi.project.domain.vo.DingTalkReqVo;
 import com.ruoyi.project.domain.vo.SpFinancialExpensesReimbursementOut;
 import com.ruoyi.project.mapper.*;
-import com.ruoyi.project.service.IServiceReimbursementSharedService;
-import com.ruoyi.project.service.IServiceReimbursementdetailSharedService;
-import com.ruoyi.project.service.IServiceReimbursementpayeeSharedService;
+import com.ruoyi.project.service.*;
+import com.ruoyi.system.domain.SysUserRole;
+import com.ruoyi.system.mapper.SysUserRoleMapper;
+import com.ruoyi.system.service.ISysPostService;
+import com.ruoyi.system.service.ISysUserService;
+import com.sun.org.apache.bcel.internal.generic.NEW;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
-import java.util.Map;
-
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.project.service.IServiceReimbursementService;
 import org.springframework.transaction.annotation.Transactional;
 
 /**
@@ -67,6 +74,40 @@
     @Autowired
     IServiceReimbursementpayeeSharedService payeeSharedService;
 
+    @Autowired
+    IServiceFundflowruleService serviceFundflowruleService;
+
+    @Autowired
+    IServiceFundflowService serviceFundflowService;
+
+    @Autowired
+    ISysUserService sysUserService;
+
+    @Autowired
+    private DingTalkService dingTalkService;
+
+    @Autowired
+    private ISysPostService postService;
+
+    @Autowired
+    private SysUserRoleMapper sysUserRoleMapper;
+
+    @Autowired
+    private IServiceSystemmessageService serviceSystemmessageService;
+
+    @Value("${xyurl}")
+    private String xyurl;
+
+    @Value("${rexyurl}")
+    private String rexyurl;
+
+    @Value("${newSwitch}")
+    private Integer newSwitch;
+
+    @Value("${spring.profiles.active}")
+    private String active;
+
+
     /**
      * 鏌ヨ鎶ラ攢鐢宠鍒楄〃
      *
@@ -100,8 +141,14 @@
         if (serviceReimbursement.getRecordstatus() != null) {
             wrappers.eq(ServiceReimbursement::getRecordstatus, serviceReimbursement.getRecordstatus());
         }
+        if (serviceReimbursement.getUploadStates() != null) {
+            wrappers.eq(ServiceReimbursement::getUploadStates, serviceReimbursement.getUploadStates());
+        }
         if (StringUtils.isNotBlank(serviceReimbursement.getUploadflag())) {
             wrappers.eq(ServiceReimbursement::getUploadflag, serviceReimbursement.getUploadflag());
+        }
+        if (serviceReimbursement.getFlowlevel() != null) {
+            wrappers.eq(ServiceReimbursement::getFlowlevel, serviceReimbursement.getFlowlevel());
         }
 
        /* if (serviceReimbursement.getStarttime()!=null && serviceReimbursement.getEndtime()!=null){
@@ -125,6 +172,7 @@
         for (int j = 0; j < rbDetailList.size(); j++) {
             ServiceReimbursementdetail serviceReimbursementdetail = rbDetailList.get(j);
             String annexfiles = serviceReimbursementdetail.getAnnexfiles();
+            String invoicefiles = serviceReimbursementdetail.getInvoicefiles();
             ServiceReimbursementdetailVO serviceReimbursementdetailVO = DtoConversionUtils.sourceToTarget(serviceReimbursementdetail, ServiceReimbursementdetailVO.class);
             if (StringUtils.isNotBlank(annexfiles)) {
                 try {
@@ -135,15 +183,34 @@
                     }
                 }
             }
+            if (StringUtils.isNotBlank(invoicefiles)) {
+                try {
+                    serviceReimbursementdetailVO.setInvoicefilesList(JSON.parseArray(invoicefiles));
+                } catch (Exception e) {
+                    if (e.getMessage().equals("invalid comment")) {
+                    }
+                }
+            }
             serviceReimbursementdetailVOS.add(serviceReimbursementdetailVO);
         }
         return serviceReimbursementdetailVOS;
     }
 
     @Override
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public Boolean addSharedData(Long id) {
         log.info("addSharedData鏂规硶鐨勫叆鍙俰d :{}", id);
+        //鍏堝垽鏂竴涓媠hare琛ㄦ槸鍚﹀凡缁忔彃鍏�
+        ServiceReimbursementShared reimbursementShared1 = new ServiceReimbursementShared();
+        reimbursementShared1.setReimid(id);
+        reimbursementShared1.setDelFlag(0L);
+        List<ServiceReimbursementShared> serviceReimbursementShareds = sharedService.queryList(reimbursementShared1);
+        log.info("serviceReimbursementShareds鐨勬煡璇㈢粨鏋� :{}", serviceReimbursementShareds.size());
+        if (!CollectionUtils.isEmpty(serviceReimbursementShareds)) {
+            return true;
+        }
+
+        //濡傛灉娌℃湁鎻掑叆锛屽垯璧颁笅闈㈢殑娴佺▼
         ServiceReimbursement serviceReimbursement = serviceReimbursementMapper.selectById(id);
         Map<String, Object> columnMap = new HashMap<>();
         columnMap.put("rbid", id);
@@ -162,7 +229,6 @@
         //灏嗙粍瑁呭ソ鐨勬暟鎹彃鍏ュ埌鍒嗕韩琛ㄤ腑
         sharedService.save(serviceReimbursementShared);
 //        //涓婁紶OA鏂囦欢
-//        uploadOAFileAndUpdateDb(serviceReimbursementShared);
         //灏唖erviceReimbursementdetail琛ㄩ噷鐨刬d璧嬪�肩粰Rdid; 灏唖erviceReimbursementShared閲岀殑ID璧嬪�肩粰RBID,骞跺皢serviceReimbursementdetailShared琛ㄩ噷鐨刬d缃┖锛岀敱鏁版嵁搴撻噸鏂扮敓鎴�
         for (int i = 0; i < details.size(); i++) {
             serviceReimbursementdetailShareds.get(i).setRdid(serviceReimbursementdetailShareds.get(i).getId());
@@ -170,10 +236,29 @@
             serviceReimbursementdetailShareds.get(i).setId(null);
             //涓婁紶OA鏂囦欢
             log.info("涓婁紶OA鏂囦欢鏂规硶鐨勫叆鍙�:{}", serviceReimbursementdetailShareds.get(i));
-            uploadOAFileAndUpdateDb(serviceReimbursementdetailShareds.get(i));
+            try {
+                //濡傛灉鏄湰鍦扮幆澧冿紝灏变笉璋冭繖涓簡
+                if (!active.equals("druid")) uploadOAFileAndUpdateDb(serviceReimbursementdetailShareds.get(i));
+            } catch (Exception e) {
+                log.error("Exception涓璻eimShare鐨勫叆鍙俰d涓猴細{}", serviceReimbursementShared.getId());
+                if (serviceReimbursementShared.getId() != null) {
+                    Boolean aBoolean = sharedService.delResharedInfoById(serviceReimbursementShared.getId());
+                    log.error("鏂囦欢涓婁紶澶辫触锛屽皢鍒嗕韩琛ㄦ暟鎹洖婊氾細{}", aBoolean);
+                }
+                e.getMessage();
+                return false;
+            }
+
         }
 
-        detailSharedService.saveBatch(serviceReimbursementdetailShareds);
+//        detailSharedService.saveBatch(serviceReimbursementdetailShareds);
+        for (ServiceReimbursementdetailShared serviceReimbursementdetailShared : serviceReimbursementdetailShareds) {
+            if (ObjectUtils.isNotEmpty(serviceReimbursementdetailShared)) {
+                detailSharedService.save(serviceReimbursementdetailShared);
+            } else {
+                log.info("serviceReimbursementdetailShared涓虹┖浜�");
+            }
+        }
 
         //灏唖erviceReimbursementpayee琛ㄩ噷鐨刬d璧嬪�肩粰Rpid; 灏唖erviceReimbursementShared閲岀殑ID璧嬪�肩粰RBID,骞跺皢serviceReimbursementpayeeShared琛ㄩ噷鐨刬d缃┖锛岀敱鏁版嵁搴撻噸鏂扮敓鎴�
         for (int i = 0; i < serviceReimbursementpayees.size(); i++) {
@@ -181,8 +266,14 @@
             serviceReimbursementpayeeShareds.get(i).setRbid(serviceReimbursementShared.getId());
             serviceReimbursementpayeeShareds.get(i).setId(null);
         }
-        payeeSharedService.saveBatch(serviceReimbursementpayeeShareds);
 
+        for (ServiceReimbursementpayeeShared serviceReimbursementpayeeShared : serviceReimbursementpayeeShareds) {
+            if (ObjectUtils.isNotEmpty(serviceReimbursementpayeeShared)) {
+                payeeSharedService.save(serviceReimbursementpayeeShared);
+            } else {
+                log.info("serviceReimbursementpayeeShared涓虹┖浜嗭紒");
+            }
+        }
         return true;
     }
 
@@ -192,8 +283,8 @@
     }
 
     @Override
-    public List<SpFinancialExpensesReimbursementOut> getListBypower(String PAUSERNO, Integer PAFUNDTYPE, String PAAPPLICANT, String PAAPPLICATIONBEGTIME, String PAAPPLICATIONENDTIME, String PADEPARTMENT, Integer CHECKFLAG, Integer APPLYTYPE) {
-        return serviceReimbursementMapper.getListBypower(PAUSERNO, PAFUNDTYPE, PAAPPLICANT, PAAPPLICATIONBEGTIME, PAAPPLICATIONENDTIME, PADEPARTMENT, CHECKFLAG, APPLYTYPE);
+    public List<SpFinancialExpensesReimbursementOut> getListBypower(String PAUSERNO, Integer PAFUNDTYPE, String PAAPPLICANT, String PAAPPLICATIONBEGTIME, String PAAPPLICATIONENDTIME, String PADEPARTMENT, Integer CHECKFLAG, Integer APPLYTYPE, Integer CHECKSTATUS, String donorname) {
+        return serviceReimbursementMapper.getListBypower(PAUSERNO, PAFUNDTYPE, PAAPPLICANT, PAAPPLICATIONBEGTIME, PAAPPLICATIONENDTIME, PADEPARTMENT, CHECKFLAG, APPLYTYPE, CHECKSTATUS, donorname);
     }
 
     @Override
@@ -211,8 +302,442 @@
         return serviceReimbursementMapper.getRDInfoByItem(serviceReimbursementEo);
     }
 
+    @Override
+    public Map<String, String> checkFund(LoginUser loginUser, CheckFundVO checkFundVO) {
+        Map<String, String> allMap = new HashMap<>();
 
-    public int uploadOAFileAndUpdateDb(ServiceReimbursementdetailShared remShare) {
+        ServiceReimbursement serviceReimbursement = getById(checkFundVO.getFundid());
+        log.info("瀹℃牳璐圭敤鐨剆erviceReimbursementService.getById杩斿弬 : {}", serviceReimbursement);
+        if (serviceReimbursement != null) {
+            Integer totalLevel = 0;
+            ServiceFundflowrule serviceFundflowrule = new ServiceFundflowrule();
+            serviceFundflowrule.setFundtype(1);
+            serviceFundflowrule.setApplytype("0");
+            serviceFundflowrule.setCheckuserno(loginUser.getUsername());
+            List<ServiceFundflowrule> serviceFundflowrules = serviceFundflowruleService.queryList(serviceFundflowrule);
+            log.info("瀹℃牳璐圭敤鐨剆erviceFundflowruleService.queryList杩斿弬 : {}", serviceFundflowrules.size());
+            if (serviceFundflowrules == null || serviceFundflowrules.stream().count() == 0) {
+                allMap.put(HttpStatus.ERROR + "", "褰撳墠浜哄憳鏃犳璁板綍瀹℃牳鏉冮檺");
+                return allMap;
+            }
+
+            if (serviceFundflowrules.get(0).getFlowlevel() - 1 != serviceReimbursement.getFlowlevel()) {
+                allMap.put(HttpStatus.ERROR + "", "褰撳墠浜哄憳涓庢璁板綍鐨勫鏍哥骇鍒笉绗�");
+                return allMap;
+            }
+
+            if (serviceFundflowrules != null && serviceFundflowrules.stream().count() > 0) {
+                totalLevel = serviceFundflowrules.get(0).getTotallevel();
+
+            }
+            Integer CheckFlag = 0;
+            Integer RecordStatus = serviceReimbursement.getRecordstatus();
+            Integer FlowLevel = Integer.valueOf(serviceReimbursement.getFlowlevel().toString());
+            if (Objects.isNull(serviceReimbursement.getBackflowlevel()) && !Objects.isNull(serviceReimbursement.getFlowlevel())) {
+                serviceReimbursement.setBackflowlevel(Long.valueOf(FlowLevel.toString()));
+            }
+            Integer OriginalFlowLevel = FlowLevel;
+            if (checkFundVO.getFlowconclusion() == 1) {
+                CheckFlag = 1;
+                if (totalLevel == 0) {
+                    //99 鍙栨秷
+                    RecordStatus = 99;
+                } else {
+
+                    if (totalLevel == FlowLevel + 1) {
+                        RecordStatus = 99;
+                    } else {
+                        RecordStatus = (FlowLevel + 1) * 2;
+                    }
+                }
+
+                SysUser user = loginUser.getUser();
+                if (serviceReimbursement.getFlowlevel() == 1 && serviceReimbursement.getBackflowlevel() == 100) {
+                    log.info("鍑哄樊琛ヨ创琚� 璐㈠姟閫�鍥炲啀鎻愪氦锛屽嚭绾冲啀娆″鎵癸紝涔嬪悗鎻愪氦鍒拌储鍔�:{}", serviceReimbursement.getId());
+                    //璇存槑鏄储鍔¢��鍥炲啀鎻愪氦鐨�.闇�瑕佸嚭绾冲啀鐪嬩竴閬嶏紝娌¢棶棰樹箣鍚庯紝寰�鍒嗕韩琛ㄩ噷鏂板
+//                    serviceReimbursementService.addSharedData(serviceReimbursement.getId());
+                    serviceReimbursement.setFinancechecher("瀹℃壒浜猴細" + user.getUserName() + " & 瀹℃壒鏃堕棿" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + " & 瀹℃壒缁撴灉锛氶�氳繃");
+                    serviceReimbursement.setFlowlevel(serviceFundflowrules.get(0).getTotallevel().longValue());
+                    serviceReimbursement.setRecordstatus(99);
+                    serviceReimbursement.setUploadStates(1);
+                    boolean b = updateById(serviceReimbursement);
+                    log.info("鏄惁淇敼鎴愬姛:{}", b);
+                    Boolean aBoolean1 = null;
+                    if (newSwitch == 1) {
+                        aBoolean1 = sendData(serviceReimbursement);
+                        if (!aBoolean1) {
+                            allMap.put("500", "鍙戦�佸け璐�");
+                            return allMap;
+                        }
+                    }
+                    //淇濆瓨瀹℃壒娴佺▼琛�
+                    ServiceFundflow serviceFundflow = new ServiceFundflow();
+                    serviceFundflow.setFundid(serviceReimbursement.getId());
+                    serviceFundflow.setCheckuserno(user.getUserName());
+                    serviceFundflow.setCheckusername(user.getNickName());
+                    serviceFundflow.setFundtype(1);
+                    serviceFundflow.setApplytype("0");
+                    serviceFundflow.setFlowconclusion(CheckFlag);
+                    serviceFundflow.setFlowcontent("閫氳繃");
+                    serviceFundflow.setFlowlevel(OriginalFlowLevel + 1);
+                    Boolean aBoolean = serviceFundflowService.save(serviceFundflow);
+                    allMap.put("200", "success");
+                    return allMap;
+                }
+
+                FlowLevel = FlowLevel + 1;
+                serviceReimbursement.setBackflowlevel(Long.valueOf(FlowLevel));
+                //濡傛灉褰撳墠鐧婚檰鏄储鍔★紝鍒�
+                List<Integer> roleIds = sysUserRoleMapper.getUserRoleByUserId(user.getUserId());
+                if (roleIds != null && roleIds.contains(11)) {
+                    //11涓鸿储鍔�
+                    serviceReimbursement.setFinancechecher("瀹℃壒浜猴細" + user.getUserName() + " & 瀹℃壒鏃堕棿" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + " & 瀹℃壒缁撴灉锛氶�氳繃");
+                }
+
+            } else {
+                CheckFlag = 2;
+
+                if (CheckFlag == 2) {
+                    //搴斿尰闄㈣姹傚鏋滃嚭鐜伴��鍥烇紝鐩存帴閫�鍒板彂璧疯��
+                    FlowLevel = 0;
+                    RecordStatus = -1;
+                } else {
+                    //涓嬮潰鏄師鏉ョ殑鍐欐硶锛屼竴绾т竴绾х殑寰�涓嬮��锛屽尰闄㈢幇鍦ㄤ笉瑕佽繖鏍锋悶浜嗭紝涓嬮潰杩欐浠g爜鍏堜繚鐣欙紝绛夊尰闄㈠洖蹇冭浆鎰忥紝鍐嶇粰鏀惧紑
+                    RecordStatus = (FlowLevel + 1) * 2 - 1;
+                    FlowLevel = (FlowLevel - 1);
+                    if (FlowLevel < 0) {
+                        FlowLevel = 0;
+                    }
+                }
+                SysUser sysUser = sysUserService.selectUserByUserName(serviceReimbursement.getUserno());
+                ArrayList<ConcurrentHashMap<String, Object>> contentList = new ArrayList<>();
+                ConcurrentHashMap map = new ConcurrentHashMap();
+                map.put("瀹℃壒浜猴細", loginUser.getUser().getUserName());
+                map.put("瀹℃壒鏃堕棿锛�", new Date());
+                map.put("鎰忚锛�", "涓嶉�氳繃");
+                if (StringUtils.isNotBlank(checkFundVO.getFlowcontent())) map.put("鎰忚锛�", checkFundVO.getFlowcontent());
+                contentList.add(map);
+                DingTalkReqVo dingTalkReqVo = new DingTalkReqVo();
+                dingTalkReqVo.setTitle("璐㈠姟绯荤粺椹冲洖淇℃伅");
+                dingTalkReqVo.setNumber(sysUser.getPhonenumber());
+                dingTalkReqVo.setContents(contentList);
+                dingTalkService.sendNotification(dingTalkReqVo);
+            }
+
+            serviceReimbursement.setRecordstatus(RecordStatus);
+            serviceReimbursement.setFlowlevel(Long.valueOf(FlowLevel.toString()));
+            ServiceFundflow serviceFundflow = new ServiceFundflow();
+            SysUser user = loginUser.getUser();
+            serviceFundflow.setFundid(serviceReimbursement.getId());
+            serviceFundflow.setCheckuserno(user.getUserName());
+            serviceFundflow.setCheckusername(user.getNickName());
+            serviceFundflow.setFundtype(1);
+            serviceFundflow.setApplytype("0");
+            serviceFundflow.setFlowconclusion(CheckFlag);
+            if (StringUtils.isNotBlank(checkFundVO.getFlowcontent())) {
+                serviceFundflow.setFlowcontent(checkFundVO.getFlowcontent());
+            } else {
+                serviceFundflow.setFlowcontent(checkFundVO.getFlowconclusion() == 1 ? "閫氳繃" : "涓嶉�氳繃");
+            }
+            serviceFundflow.setFlowlevel(OriginalFlowLevel + 1);
+            serviceFundflowService.save(serviceFundflow);
+
+            List<Integer> postids = postService.selectPostListByUserId(loginUser.getUserId());
+            log.info("postService.selectPostListByUserId : {}", postids.size());
+            if (!postids.contains(2) && !postids.contains(6) && (serviceReimbursement.getBackflowlevel() == null || serviceReimbursement.getBackflowlevel() == 0)) {
+                if (CheckFlag == 2 && OriginalFlowLevel == 1) {
+                    ServiceFundflow serviceFundflowAuto = new ServiceFundflow();
+                    serviceFundflowAuto.setFundid(serviceReimbursement.getId());
+                    serviceFundflowAuto.setCheckuserno(user.getUserName());
+                    serviceFundflowAuto.setCheckusername(user.getNickName());
+                    serviceFundflowAuto.setFundtype(1);
+                    serviceFundflowAuto.setApplytype("0");
+                    serviceFundflowAuto.setFlowconclusion(CheckFlag);
+                    serviceFundflowAuto.setFlowcontent("闈炰笓鑱屼汉鍛樹簩绾у鏍告嫆缁濆悗鐩存帴閫�鍥炲埌淇敼鐘舵��");
+                    serviceFundflowAuto.setFlowlevel(1);
+                    serviceFundflowService.save(serviceFundflowAuto);
+                    serviceReimbursement.setRecordstatus(1);
+                }
+
+            }
+            //053瀹℃壒閫氳繃涔嬪悗锛屽氨闇�瑕佹妸鈥滃姙鍏涓讳换鈥濈殑鍚嶅瓧濉笂
+            if (checkFundVO.getFlowconclusion() == 1 && user.getUserName().equals("053")) {
+                serviceReimbursement.setOfficedirector(user.getNickName());
+                serviceReimbursement.setUploadStates(1);
+
+                Boolean aBoolean1 = null;
+                if (newSwitch == 1) {
+                    aBoolean1 = sendData(serviceReimbursement);
+                    if (!aBoolean1) {
+                        allMap.put("500", "鍙戦�佸け璐�");
+                        return allMap;
+                    }
+                }
+            }
+
+            updateById(serviceReimbursement);
+
+            ServiceSystemmessage serviceSystemmessage = new ServiceSystemmessage();
+            serviceSystemmessage.setFundtype(1);
+            serviceSystemmessage.setApplytype("0");
+            serviceSystemmessage.setSenduserno(user.getUserName());
+            serviceSystemmessage.setSendusername(user.getNickName());
+            serviceSystemmessage.setReceiveuserno(serviceReimbursement.getUserno());
+            serviceSystemmessage.setReceiveusername(serviceReimbursement.getUsername());
+            serviceSystemmessage.setIsread(0);
+            serviceSystemmessage.setMessagetype(1);
+            serviceSystemmessage.setUpdateTime(new Date());
+            serviceSystemmessage.setUpdateBy(user.getNickName());
+            serviceSystemmessage.setRelevantno(serviceReimbursement.getId());
+            log.info("CheckFlag鐨勫�� : {}", CheckFlag);
+            if (CheckFlag == 1) {
+                //閫氳繃
+                serviceSystemmessage.setMessagetitle("" + (OriginalFlowLevel + 1) + "绾у鏍搁�氳繃");
+                serviceSystemmessage.setMessagecontent("鎮�" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(serviceReimbursement.getCreateTime()) + "鎻愪氦鐨勫樊鏃呮姤閿�鍗曠敵璇峰凡閫氳繃");
+                log.info("totalLevel鐨勫�� : {},  OriginalFlowLevel鐨勫��:{}", totalLevel, OriginalFlowLevel);
+
+            } else {
+                //椹冲洖
+                serviceSystemmessage.setMessagetitle("" + (OriginalFlowLevel + 1) + "绾у鏍搁┏鍥�");
+                serviceSystemmessage.setMessagecontent("鎮�" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(serviceReimbursement.getCreateTime()) + "鎻愪氦鐨勫樊鏃呮姤閿�鍗曠敵璇疯椹冲洖锛屽師鍥�:" + checkFundVO.getFlowcontent() + "");
+            }
+            serviceSystemmessageService.save(serviceSystemmessage);
+
+            allMap.put("200", "success");
+        } else {
+            allMap.put(HttpStatus.NO_CONTENT + "", "璐圭敤缂栧彿涓嶆纭�");
+        }
+
+
+        return allMap;
+    }
+
+
+    public Boolean sendData(ServiceReimbursement serviceReimbursement) {
+        // fund鍜宖unddetail鐨勬暟鎹幏鍙�
+        addSharedData(serviceReimbursement.getId());
+        List<ServiceReimbursementShared> serviceReimbursementSharedList = sharedService.getRemShareInfoByRemId(serviceReimbursement.getId());
+        if (org.springframework.util.CollectionUtils.isEmpty(serviceReimbursementSharedList)) return false;
+
+        log.info("serviceReimbursementSharedList鐨勬暟鎹噺涓猴細{}", serviceReimbursementSharedList.size());
+
+        //detail璇︽儏
+        ServiceReimbursementdetailShared serviceReimbursementdetailShared = new ServiceReimbursementdetailShared();
+        serviceReimbursementdetailShared.setRbid(serviceReimbursementSharedList.get(0).getId());
+        List<ServiceReimbursementdetailShared> serviceReimbursementdetailShareds = detailSharedService.queryList(serviceReimbursementdetailShared);
+
+        //payee璇︽儏
+        ServiceReimbursementpayeeShared serviceReimbursementpayeeShared = new ServiceReimbursementpayeeShared();
+        serviceReimbursementpayeeShared.setRbid(serviceReimbursementSharedList.get(0).getId());
+        List<ServiceReimbursementpayeeShared> serviceReimbursementpayeeShareds = payeeSharedService.queryList(serviceReimbursementpayeeShared);
+
+
+        // 鏁版嵁鐨勫皝瑁�
+        Map<String, Object> map = new HashMap<>();
+        Map<String, Object> data = new HashMap<>();
+        //搴旂敤绫诲瀷 鍥哄畾鍊�
+        map.put("appName", "collaboration");
+
+        // 涓昏〃瀛楁鏁版嵁
+        Map<String, Object> data2 = new HashMap<>();
+        data2.put("formmain_1209", formmain_1209(serviceReimbursementSharedList.get(0)));
+
+        // 鏄庣粏琛ㄥ瓧娈垫暟鎹紝涓庨檮浠剁殑澶勭悊
+        Map<String, List<Map<String, Object>>> map1 = formson_1210(serviceReimbursementdetailShareds);
+        data2.put("formson_1210", map1.get("formson_1210"));
+        data2.put("thirdAttachments", map1.get("annexfilesList"));
+        data2.put("formson_1211", formson_1211(serviceReimbursementpayeeShareds));
+
+        data.put("data", data2);
+        //妯℃澘缂栧彿锛岀敱鑷磋繙鏂规彁渚涳紝璇ュ弬鏁板喅瀹氬彂璧峰崗鍚岀郴缁熶腑鍝釜娴佺▼
+        data.put("templateCode", "001");
+        //鏄惁涓哄緟鍙戯細0:鏂板缓-鍙戦�侊紱1:鏂板缓-淇濆瓨寰呭彂
+        data.put("draft", "0");
+        //鍗忓悓鏍囬鍖洪檮浠讹紝Long鍨婰ist锛屽�间负闄勪欢鐨処d銆侷d鏄檮浠舵帴鍙e搷搴旂粨鏋滀腑fileUrl瀛楁鐨勫��
+        data.put("attachments", null);
+        //鍗忓悓鍏枃鐨刬d
+        data.put("relateDoc", "col|123,456;doc|321,654");
+        //鏈缃彇妯℃澘璁剧疆鐨勬爣棰�
+        data.put("subject", "null");
+
+        map.put("data", data);
+        String strRes = null;
+        if (!active.equals("druid")) {
+            //濡傛灉鏄湰鍦扮幆澧冿紝灏变笉璋冭繖涓簡
+            if (serviceReimbursement.getBackflowlevel() == 100L) {
+                strRes = HttpClientKit.postOpr(rexyurl, map.toString());
+            } else {
+                strRes = HttpClientKit.postOpr(xyurl, map.toString());
+            }
+        }
+        com.alibaba.fastjson2.JSONObject jsonObject = com.alibaba.fastjson2.JSONObject.parseObject(strRes);
+        String code = jsonObject.getJSONObject("code").toString();
+        if (!code.equals("0")) {
+            return false;
+        }
+
+        return true;
+    }
+
+    private Map<String, List<Map<String, Object>>> formson_1210(List<ServiceReimbursementdetailShared> serviceReimbursementdetailSharedList) {
+        Map<String, List<Map<String, Object>>> allMap = new HashMap<>();
+
+        List<Map<String, Object>> list = new ArrayList<>();
+        List<Map<String, Object>> annexfilesList = new ArrayList<>();
+        for (ServiceReimbursementdetailShared reimbursementdetailShared : serviceReimbursementdetailSharedList) {
+            Map<String, Object> map = new HashMap<>();
+            map.put("浜ら�氬伐鍏�", reimbursementdetailShared.getTraffictype());
+            map.put("浜ら�氳垂", reimbursementdetailShared.getTrafficexpense());
+            map.put("甯傚唴浜ら��", reimbursementdetailShared.getTraffictype2());
+            map.put("浣忓璐�", reimbursementdetailShared.getHotelexpense());
+            map.put("鏉傝垂", reimbursementdetailShared.getOtherexpense());
+            map.put("浼欓璐规姤閿�", reimbursementdetailShared.getFoodexpenses());
+            map.put("浼欓璐硅ˉ鍔�", reimbursementdetailShared.getFoodallowance());
+            map.put("鍏朵粬璐圭敤", reimbursementdetailShared.getOtherfeeamount());
+            map.put("鍏朵粬璐圭敤璇存槑", reimbursementdetailShared.getOtherfeedesc());
+            map.put("閲戦鍚堣", null);
+            map.put("鍑哄樊鏃堕棿璧�", reimbursementdetailShared.getStarttime());
+            map.put("鍑哄彂鍦扮偣", reimbursementdetailShared.getDeparture());
+            map.put("鍑哄樊鏃堕棿姝�", reimbursementdetailShared.getEndtime());
+            map.put("鍑哄樊鐩殑鍦�", reimbursementdetailShared.getDestination());
+            map.put("澶╂暟", reimbursementdetailShared.getDays());
+            map.put("瀹為檯鎶ラ攢閲戦", null);
+            map.put("璐㈠姟澶囨敞", reimbursementdetailShared.getRemark());
+            map.put("id", reimbursementdetailShared.getRdid());
+            map.put("鍑哄樊浜�", reimbursementdetailShared.getPersonname());
+            map.put("鍥炰氦閫氬伐鍏�", null);
+            map.put("浜哄憳绫诲埆", reimbursementdetailShared.getPersontype());
+            map.put("浣忓璐规爣鍑�", null);
+            map.put("浣忓璐规爣鍑嗗悎璁�", reimbursementdetailShared.getHotelexpense());
+            String fpuuid = IdUtils.simpleUUID();
+            map.put("鍙戠エ闄勪欢", fpuuid);
+            map.put("绁ㄦ嵁璇嗗埆", null);
+            map.put("璇嗗埆浜�", null);
+            map.put("搴忓彿1", null);
+            String qtuuid = IdUtils.simpleUUID();
+            map.put("鍏朵粬闄勪欢", qtuuid);
+            map.put("涓汉绁ㄥす鐢ㄦ埛", null);
+            map.put("璇嗗埆绁ㄦ嵁", null);
+
+            list.add(map);
+
+            //闄勪欢澶勭悊
+            String annexfiles = reimbursementdetailShared.getAnnexfiles();
+            String invoicefiles = reimbursementdetailShared.getInvoicefiles();
+
+            int i = 0;
+            if (StringUtils.isNotEmpty(annexfiles)) {
+                List<RbDetailFile> parseArray = JSON.parseArray(annexfiles, RbDetailFile.class);
+                for (RbDetailFile rbDetailFile : parseArray) {
+                    Map<String, Object> thirdAttachments = new HashMap<>();
+                    thirdAttachments.put("subReference", qtuuid);
+                    thirdAttachments.put("fileUrl", rbDetailFile.getFileid());
+                    thirdAttachments.put("sort", i++);
+                    annexfilesList.add(thirdAttachments);
+                }
+            }
+
+            if (StringUtils.isNotEmpty(invoicefiles)) {
+                List<RbDetailFile> parseArray = JSON.parseArray(invoicefiles, RbDetailFile.class);
+                for (RbDetailFile rbDetailFile : parseArray) {
+                    Map<String, Object> thirdAttachments = new HashMap<>();
+                    thirdAttachments.put("subReference", fpuuid);
+                    thirdAttachments.put("fileUrl", rbDetailFile.getFileid());
+                    thirdAttachments.put("sort", i++);
+                    annexfilesList.add(thirdAttachments);
+                }
+            }
+
+        }
+        allMap.put("formson_1210", list);
+        allMap.put("annexfilesList", annexfilesList);
+        return allMap;
+    }
+
+    private List<Map<String, Object>> formson_1211(List<ServiceReimbursementpayeeShared> serviceReimbursementpayeeShareds) {
+        Map<String, List<Map<String, Object>>> allMap = new HashMap<>();
+
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (ServiceReimbursementpayeeShared serviceReimbursementpayeeShared : serviceReimbursementpayeeShareds) {
+            Map<String, Object> map = new HashMap<>();
+
+            map.put("鏀舵浜�", serviceReimbursementpayeeShared.getPersonname());
+            map.put("鍗″彿", serviceReimbursementpayeeShared.getBankcardno());
+            map.put("寮�鎴烽摱琛�", serviceReimbursementpayeeShared.getBankname());
+            map.put("鎵撴閲戦", serviceReimbursementpayeeShared.getAmount());
+            map.put("浜哄憳绫诲埆鎵撴", serviceReimbursementpayeeShared.getPersontype());
+            map.put("鏍哥畻椤圭洰", null);
+            map.put("棰勭畻椤圭洰", null);
+            map.put("鍊熸柟鎽樿", null);
+            map.put("璐锋柟鎽樿", null);
+            list.add(map);
+        }
+        return list;
+    }
+
+    private Map<String, Object> formmain_1209(ServiceReimbursementShared serviceReimbursementShared) {
+        Map<String, Object> formmain_1209 = new HashMap<>();
+
+        formmain_1209.put("鎶ラ攢鏃ユ湡", serviceReimbursementShared.getApplyTime());
+        formmain_1209.put("鍑哄樊浜�-浣滃簾", null);
+        formmain_1209.put("鎶ラ攢浜�", serviceReimbursementShared.getUsername());
+        formmain_1209.put("鍖哄煙缁勯暱", serviceReimbursementShared.getManagername());
+        formmain_1209.put("鍑哄樊浜嬬敱", serviceReimbursementShared.getReason());
+        formmain_1209.put("澶╂暟鍚堣", null);
+        formmain_1209.put("浜ら�氳垂鍚堣", serviceReimbursementShared.getTotalamount());
+        formmain_1209.put("甯傚唴浜ら�氬悎璁�", null);
+        formmain_1209.put("浣忓璐瑰悎璁�", null);
+        formmain_1209.put("鏉傝垂鍚堣", null);
+        formmain_1209.put("浼欓璐规姤閿�鍚堣", null);
+        formmain_1209.put("浼欓璐硅ˉ鍔╁悎璁�", null);
+        formmain_1209.put("鍏朵粬璐圭敤鍚堣", null);
+        formmain_1209.put("棰嗘閲戦澶у啓", serviceReimbursementShared.getBigstrmoney());
+        formmain_1209.put("棰嗘閲戦", serviceReimbursementShared.getTotalamount());
+        formmain_1209.put("璐㈠姟瀹℃壒", serviceReimbursementShared.getFinancechecher());
+        formmain_1209.put("璐㈠姟閮ㄨ礋璐d汉瀹℃壒", serviceReimbursementShared.getFinancedirector());
+        formmain_1209.put("鍔炲叕瀹や富浠诲鎵�", serviceReimbursementShared.getOfficedirector());
+        formmain_1209.put("澶囨敞", serviceReimbursementShared.getRemark());
+        formmain_1209.put("涓氬姟鍓櫌闀垮鎵�", serviceReimbursementShared.getBusvicepresident());
+        formmain_1209.put("璐㈠姟鍓櫌闀垮鎵�", serviceReimbursementShared.getFinvicepresident());
+        formmain_1209.put("涓績璐熻矗浜哄鎵�", serviceReimbursementShared.getOpochecker());
+        formmain_1209.put("寮�鎴烽摱琛�-浣滃簾", null);
+        formmain_1209.put("鍗″彿-浣滃簾", null);
+        formmain_1209.put("鏀粯鏂瑰紡", serviceReimbursementShared.getZffs());
+        formmain_1209.put("缁勯暱", null);
+        formmain_1209.put("瀹℃壒浜哄憳", null);
+        formmain_1209.put("鏀粯鏃ユ湡", serviceReimbursementShared.getRiqi());
+        formmain_1209.put("涓婁紶闄勪欢", null);
+        formmain_1209.put("鎵撴鍚堣", null);
+        formmain_1209.put("鍙戠エ璇嗗埆-浣滃簾", null);
+        formmain_1209.put("璇嗗埆浜�-浣滃簾", null);
+        formmain_1209.put("璐㈠姟瀹℃壒绛惧瓧", null);
+        formmain_1209.put("璐㈠姟閮ㄨ礋璐d汉瀹℃壒绛惧瓧", serviceReimbursementShared.getFinancedirector());
+        formmain_1209.put("琛ㄥ崟缂栧彿1", null);
+        formmain_1209.put("CIF璐﹀閰嶇疆1", null);
+        formmain_1209.put("闄㈠尯", null);
+        formmain_1209.put("涓氬姟鍖哄煙", null);
+        formmain_1209.put("璐锋柟绉戠洰", null);
+        formmain_1209.put("缂栫爜", null);
+        formmain_1209.put("鏄惁鏀粯", null);
+        formmain_1209.put("鍑瘉鍙�", null);
+        formmain_1209.put("閾惰鍥炲崟", null);
+        formmain_1209.put("OFD", null);
+        formmain_1209.put("琛ㄥ崟闄勪欢", null);
+        formmain_1209.put("10204", null);
+        formmain_1209.put("鐜伴噾娴侀噺鍒嗘瀽", null);
+        formmain_1209.put("鎹愮尞鑰�", serviceReimbursementShared.getDonorname());
+        formmain_1209.put("鍑瘉绫诲埆", null);
+        formmain_1209.put("鍚堣", null);
+        formmain_1209.put("瀹為檯鍚堣", null);
+        formmain_1209.put("浼欓琛ュ姪鍚堣", null);
+        formmain_1209.put("鍘嗗彶瀹℃壒璁板綍", null);
+        formmain_1209.put("琛ㄥ崟缂栧彿", serviceReimbursementShared.getBh());
+        formmain_1209.put("鍘嗗彶瀹℃壒宸ㄩ箍鏌ヨ", null);
+        return formmain_1209;
+    }
+
+
+    public int uploadOAFileAndUpdateDb(ServiceReimbursementdetailShared remShare) throws Exception {
         log.info("uploadOAFileAndUpdate鏂规硶鐨勫叆鍙�:{}", remShare);
         System.out.println("uploadOAFileAndUpdate鏂规硶鐨勫叆鍙�:" + remShare);
         //涓婁紶OA鏂囦欢
@@ -238,23 +763,35 @@
         String strFUrl = "http://129.88.242.39:8899/seeyon/rest/attachment?token=" + strRes;
 
         List<RbDetailFile> parseArray2 = new ArrayList<>();
-        List<RbDetailFile> parseArray = JSON.parseArray(remShare.getAnnexfiles(), RbDetailFile.class);
-        for (int i = 0; i < parseArray.size(); i++) {
-            RbDetailFile rbDetailFile = parseArray.get(i);
+        List<RbDetailFile> invoicefilesList = new ArrayList<>();
 
-            log.info("filePath鐨勪慨鏀�:{}", filePath);
-            String url = rbDetailFile.getUrl();
-            //file鐢ㄧ殑鏄粷瀵逛綅缃�
-            String substring = url.substring(url.indexOf("/profile/upload") + "/profile/upload".length());
-            String strFile = rbDetailFile.getUrl().replace(filePath, "/profile/upload");
-            File filetest = new File(filePath + substring);
-            try {
+        //鏅�氭枃浠朵笂浼�
+        List<RbDetailFile> parseArray = JSON.parseArray(remShare.getAnnexfiles(), RbDetailFile.class);
+        //鍙戠エ鏂囦欢涓婁紶
+        List<RbDetailFile> invoicefilesArray = JSON.parseArray(remShare.getInvoicefiles(), RbDetailFile.class);
+        //鏅�氶檮浠�
+        uploadFile(filePath, strFUrl, parseArray2, parseArray, remShare, "1");
+        //鍙戠エ闄勪欢
+        uploadFile(filePath, strFUrl, invoicefilesList, invoicefilesArray, remShare, "2");
+        return 0;
+    }
+
+    private Integer uploadFile(String filePath, String strFUrl, List<RbDetailFile> parseArray2, List<RbDetailFile> parseArray, ServiceReimbursementdetailShared remShare, String flag) throws Exception {
+        if (!CollectionUtils.isEmpty(parseArray)) {
+            for (int i = 0; i < parseArray.size(); i++) {
+                RbDetailFile rbDetailFile = parseArray.get(i);
+
+                log.info("filePath鐨勪慨鏀�:{}", filePath);
+                String url = rbDetailFile.getUrl();
+                //file鐢ㄧ殑鏄粷瀵逛綅缃�
+                String fileName = url.substring(url.indexOf("/profile/upload") + "/profile/upload".length());
+                String strFile = rbDetailFile.getUrl().replace(filePath, "/profile/upload");
+                File fileUpload = new File(filePath + fileName);
                 log.info("璇锋眰绗笁鏂圭殑鍏ュ弬strFile : {}, strFUrl : {}", strFile, filePath);
-                System.out.println("璇锋眰绗笁鏂圭殑鍏ュ弬:" + filePath + substring);
-                String struploadResult = HttpClientKit.sendPostWithFile(filetest, strFUrl);
+                String struploadResult = HttpClientKit.sendPostWithFile(fileUpload, strFUrl);
                 log.info("绗笁鏂逛紶鍥炵殑鏁版嵁: {}", struploadResult);
                 if (StringUtils.isEmpty(struploadResult)) {
-                    log.info("HttpClientKit.sendPostWithFile 璇锋眰涓虹┖浜� filetest:{},  strFUrl:{} ", filetest, strFUrl);
+                    log.info("HttpClientKit.sendPostWithFile 璇锋眰涓虹┖浜� struploadResult:{},  strFUrl:{} ", struploadResult, strFUrl);
                     return 0;
                 }
 
@@ -266,13 +803,17 @@
                     JSONObject jsonRet = jsonArr.getJSONObject(j);
                     rbDetailFile.setFileid(jsonRet.get("fileUrl").toString());
                 }
-            } catch (Exception e) {
-                e.printStackTrace();
-                log.error("HttpClientKit.sendPostWithFile 鎶ラ敊浜� : " + e.getMessage());
+                parseArray2.add(rbDetailFile);
             }
-            parseArray2.add(rbDetailFile);
         }
-        remShare.setAnnexfiles(JSON.toJSONString(parseArray2));
+        if (flag.equals("1")) {
+            //濡傛灉flag涓�1,鍒欐槸鏅��
+            remShare.setAnnexfiles(JSON.toJSONString(parseArray2));
+
+        } else if (flag.equals("2")) {
+            //濡傛灉flag涓�2,鍒欐槸鍙戠エ
+            remShare.setInvoicefiles(JSON.toJSONString(parseArray2));
+        }
         log.info("ServiceReimbursementdetailShared 鏄惁鍔犱笂浜唂ileid : {}", remShare);
         return 0;
     }

--
Gitblit v1.9.3