From c2e58f7e1554cb23cb63877517b072942735bfdf Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 01 三月 2024 19:26:51 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java |  535 ++++++++++++++++++++++++++--------------------------------
 1 files changed, 239 insertions(+), 296 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java
index 7218186..bbad96d 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java
@@ -1,9 +1,5 @@
 package com.ruoyi.web.controller.project;
 
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.config.RuoYiConfig;
@@ -15,9 +11,7 @@
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.HttpClientKit;
 import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.bean.DtoConversionUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.project.domain.*;
 import com.ruoyi.project.domain.dto.ServiceReimbursementDto;
@@ -25,6 +19,7 @@
 import com.ruoyi.project.domain.vo.SpFinancialExpensesIn;
 import com.ruoyi.project.domain.vo.SpFinancialExpensesReimbursementOut;
 import com.ruoyi.project.service.*;
+import com.ruoyi.system.service.ISysDeptService;
 import com.ruoyi.system.service.ISysPostService;
 import com.ruoyi.web.controller.enums.PersonType;
 import freemarker.template.Configuration;
@@ -32,7 +27,7 @@
 import freemarker.template.TemplateException;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.commons.lang.ObjectUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.apache.ibatis.annotations.Options;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -41,9 +36,9 @@
 
 import java.io.*;
 import java.math.BigDecimal;
-import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 
@@ -53,12 +48,16 @@
  * @author ruoyi
  * @date 2022-01-24
  */
+@Slf4j
 @Api("鎶ラ攢鐢宠")
 @RestController
 @RequestMapping("/project/reimbursement")
 public class ServiceReimbursementController extends BaseController {
     @Autowired
     private IServiceReimbursementService serviceReimbursementService;
+
+//    @Autowired
+//    private MergeFilesToPDFUtils mergeFilesToPDFUtils;
 
     @Autowired
     private IServiceReimbursementSharedService serviceReimbursementSharedService;
@@ -76,7 +75,10 @@
     private IServiceFundflowService serviceFundflowService;
 
     @Autowired
-    private IServiceFundService serviceFundService;
+    private ISysDeptService sysDeptService;
+
+    @Autowired
+    private IBaseOnlyvalueService baseOnlyvalueService;
 
     @Autowired
     private ISysPostService postService;
@@ -105,6 +107,7 @@
     public TableDataInfo list(ServiceReimbursement serviceReimbursement) {
         SysUser user = SecurityUtils.getLoginUser().getUser();
         serviceReimbursement.setCreateBy(user.getUserName());
+        serviceReimbursement.setUsername(user.getNickName());
         startPage();
         List<ServiceReimbursement> list = serviceReimbursementService.queryList(serviceReimbursement);
         return getDataTable(list);
@@ -135,8 +138,10 @@
         String APPLICATIONENDTIME = spFinancialExpensesIn.getAPPLICATIONENDTIME();
         Integer CHECKFLAG = spFinancialExpensesIn.getCHECKFLAG();
         Integer APPLYTYPE = spFinancialExpensesIn.getAPPLYTYPE();
+        Integer checkstatus = spFinancialExpensesIn.getCheckstatus();
         Integer pageNum = spFinancialExpensesIn.getPageNum();
         Integer pageSize = spFinancialExpensesIn.getPageSize();
+        String donorname = spFinancialExpensesIn.getDonorname();
 
         if (pageNum == null) {
             pageNum = 1;
@@ -158,11 +163,21 @@
             APPLICATIONENDTIME = "";
         }
         //startPage();
-        List<SpFinancialExpensesReimbursementOut> list = serviceReimbursementService.getListBypower(loginUser.getUsername(), 1, APPLICANT, APPLICATIONBEGTIME, APPLICATIONENDTIME, loginUser.getDeptId().toString(), CHECKFLAG, APPLYTYPE);
+        List<SpFinancialExpensesReimbursementOut> list = serviceReimbursementService.getListBypower(loginUser.getUsername(), 1, APPLICANT, APPLICATIONBEGTIME, APPLICATIONENDTIME, loginUser.getDeptId().toString(), CHECKFLAG, APPLYTYPE, checkstatus, donorname);
+        //鏍规嵁缁忓姙浜虹瓫閫�
+        if (StringUtils.isNotBlank(spFinancialExpensesIn.getUsername())) {
+            list = list.stream().filter(reimbursementOut -> reimbursementOut.getUsername().contains(spFinancialExpensesIn.getUsername())).collect(Collectors.toList()); // 鎸塶ame瀛楁杩囨护
+        }
+        //鏍规嵁閲戦绛涢��
+        if (spFinancialExpensesIn.getMoney() != null) {
+            list = list.stream().filter(reimbursementOut -> new BigDecimal(reimbursementOut.getAmountrequested()).compareTo(new BigDecimal(spFinancialExpensesIn.getMoney())) == 0).collect(Collectors.toList());
+
+        }
+        //鏍规嵁鍒涘缓鏃堕棿鎺掑簭
         Collections.sort(list, new Comparator<SpFinancialExpensesReimbursementOut>() {
             @Override
             public int compare(SpFinancialExpensesReimbursementOut o1, SpFinancialExpensesReimbursementOut o2) {
-                return o2.getCreateTime().compareTo(o1.getCreateTime());
+                return o1.getCreateTime().compareTo(o2.getCreateTime());
             }
         });
         return getCustomDataTable(list, pageNum, pageSize);
@@ -207,241 +222,30 @@
     @ApiOperation("鏂板鎶ラ攢鐢宠")
     //@PreAuthorize("@ss.hasPermi('project:reimbursement:add')")
     @Log(title = "鎶ラ攢鐢宠", businessType = BusinessType.INSERT)
-    @PostMapping
+    @PostMapping("/add")
     @RepeatSubmit
     @Options(useGeneratedKeys = true, keyProperty = "id")
     public AjaxResult add(@RequestBody ServiceReimbursement serviceReimbursement) {
-
-        boolean b = serviceReimbursementService.save(serviceReimbursement);
-//        if (b) {
-//            addReiSharedDatd(serviceReimbursement, 1);
-//        }
-        Long id = serviceReimbursement.getId();
-        return AjaxResult.success(id);
+        if (!Objects.isNull(serviceReimbursement)) {
+            serviceReimbursement.setCreateTime(new Date());
+            serviceReimbursement.setCheckstatus(serviceReimbursement.getCheckstatus() == null ? 1 : serviceReimbursement.getCheckstatus());
+            serviceReimbursement.setUploadStates(0);
+            boolean b = serviceReimbursementService.save(serviceReimbursement);
+            Long id = serviceReimbursement.getId();
+            return AjaxResult.success(id);
+        }
+        return error();
     }
 
-//    public int addReiSharedDatd(ServiceReimbursement serviceReimbursement, int nType) {
-//        //remShare = ;
-//        ServiceReimbursementShared remShare = new ServiceReimbursementShared();
-//        if (nType == 1) {
-//            // remShare = new ServiceReimbursementShared();
-//            remShare.setReimid(serviceReimbursement.getId());
-//        } else //modify
-//        {
-//            List<ServiceReimbursementShared> remlist = serviceReimbursementServiceShare.getRemShareInfoByRemId(serviceReimbursement.getId());
-//            if (!CollectionUtils.isEmpty(remlist)) remShare = remlist.get(0);
-//        }
-//
-//        remShare.setUserno(serviceReimbursement.getUserno());
-//        remShare.setUsername(serviceReimbursement.getUsername());
-//        remShare.setTravelers(serviceReimbursement.getTravelers());
-//        remShare.setIdcardtype(serviceReimbursement.getIdcardtype());
-//        remShare.setIdcardno(serviceReimbursement.getIdcardno());
-//        remShare.setPhone(serviceReimbursement.getPhone());
-//        remShare.setDepositbank(serviceReimbursement.getDepositbank());
-//        remShare.setBankcardno(serviceReimbursement.getBankcardno());
-//        remShare.setBranchbankname(serviceReimbursement.getBranchbankname());
-//        remShare.setAnnexbankcard(serviceReimbursement.getAnnexbankcard());
-//        remShare.setAnnexfiles(serviceReimbursement.getAnnexfiles());
-//        //remShare.setAnnexfiles(serviceReimbursement.getAnnexfiles());
-//        // remShare.setAmountrequested(BigDecimal.valueOf(serviceReimbursement.getAmountrequested()));
-//
-//        Double nTemp = serviceReimbursement.getAmountrequested();
-//        if (nTemp == null) nTemp = 0d;
-//        remShare.setAmountrequested(BigDecimal.valueOf(nTemp));
-//
-//        nTemp = serviceReimbursement.getPrepaidamount();
-//        if (nTemp == null) nTemp = 0.0;
-//        remShare.setPrepaidamount(BigDecimal.valueOf(nTemp));
-//
-//        remShare.setInvoicecount(serviceReimbursement.getInvoicecount());
-//        remShare.setAttachcount(serviceReimbursement.getAttachcount());
-//        remShare.setManagerno(serviceReimbursement.getManagerno());
-//        remShare.setManagername(serviceReimbursement.getManagername());
-//        remShare.setDeptmentno(serviceReimbursement.getDeptmentno());
-//        remShare.setDeptmentname(serviceReimbursement.getDeptmentname());
-//        remShare.setOpochecker(serviceReimbursement.getOpochecker());
-//        remShare.setFinvicepresident(serviceReimbursement.getFinvicepresident());
-//        remShare.setBusvicepresident(serviceReimbursement.getBusvicepresident());
-//        remShare.setOfficedirector(serviceReimbursement.getOfficedirector());
-//        remShare.setFinancedirector(serviceReimbursement.getFinancedirector());
-//        remShare.setFinancechecher(serviceReimbursement.getFinancechecher());
-//        remShare.setInfoid(serviceReimbursement.getInfoid());
-//        remShare.setDonorno(serviceReimbursement.getDonorno());
-//
-//        remShare.setDonorname(serviceReimbursement.getDonorname());
-//        remShare.setReason(serviceReimbursement.getReason());
-//        remShare.setRecordstatus(serviceReimbursement.getRecordstatus());
-//        remShare.setUploadflag(serviceReimbursement.getUploadflag());
-//        remShare.setUploadtime(serviceReimbursement.getUploadtime());
-//
-//        nTemp = serviceReimbursement.getTotalamount();
-//        if (nTemp == null) nTemp = 0.0;
-//        remShare.setTotalamount(BigDecimal.valueOf(nTemp));
-//
-//        remShare.setBigstrmoney(serviceReimbursement.getBigstrmoney());
-//        remShare.setFlowlevel(serviceReimbursement.getFlowlevel());
-//        remShare.setCosttype(serviceReimbursement.getCosttype());
-//        remShare.setCosttypename(serviceReimbursement.getCosttypename());
-//        remShare.setFileurl(serviceReimbursement.getAnnexfiles());
-//        remShare.setDonorbank(serviceReimbursement.getDonorbank());
-//        remShare.setDonorbankcard(serviceReimbursement.getDonorbankcard());
-//        remShare.setDonorremark(serviceReimbursement.getDonorremark());
-//
-//        nTemp = serviceReimbursement.getDonoramount();
-//        if (nTemp == null) nTemp = 0.0;
-//        remShare.setDonoramount(nTemp);
-//        remShare.setDonorrelatives(serviceReimbursement.getDonorrelatives());
-//        //remShare.setOaid(serviceReimbursement.getOaid());
-//        //remShare.setDonorno(serviceReimbursement.getDonorno());
-//
-//        boolean bRet = false;
-//        if (nType == 1) {
-//            bRet = serviceReimbursementServiceShare.save(remShare);
-//        } else {
-//            //remShare.setId(serviceReimbursement.);
-//            bRet = serviceReimbursementServiceShare.updateById(remShare);
-//        }
-//
-//        //if(!bRet) return -1;
-//        String strMutfileUrl = remShare.getFileurl();
-//        //鏈夐檮浠舵椂鎵嶈皟鐢ㄧ涓夋柟杩涜涓婁紶
-//        if (strMutfileUrl == null) return 0;
-//        if (strMutfileUrl.isEmpty()) return 0;
-//
-//        try {
-//            uploadOAFileAndUpdateDb(remShare);
-//        } catch (Exception e) {
-//            logger.error("璋冪敤绗笁鏂规帴鍙e嚭閿�!");
-//            e.printStackTrace();
-//        }
-//
-//        //姝ゅ淇濆瓨鎴愬姛鍚庤涓婁紶OA锛屼繚瀛樿繑鍥炲��
-//
-//        return 0;
-//    }
-
-
-//    int uploadOAFileAndUpdateDb(ServiceReimbursementShared remShare) {
-//        //涓婁紶OA鏂囦欢
-//        //String strUrl = "http://129.88.242.39:8899/seeyon/rest/token?userName=opo&password=127814f8-84e8-4304-84a5-a71573567efd&loginName=demo3";
-//        String strUrl = "http://129.88.242.39:8899/seeyon/rest/token";
-//        //String strUrl = "http://slb.hospitalstar.com:8899/seeyon/rest/token";
-//        //涓婁紶鏂囦欢鎴愬姛鍚庯紝鍘绘洿鏂扮浉鍏崇殑鏁版嵁搴�
-//
-//
-//        Map<String, Object> map = new HashMap<String, Object>();
-//        map.put("userName", "opo");
-//        map.put("password", "4126407a-9821-4874-be41-6568abd6dbe5");
-//        map.put("loginName", "demo3");
-//
-//        JSONObject jsonObj = new JSONObject(map);
-//
-//        System.out.println("uploadOAFileAndUpdateDb + jsonObject" + jsonObj.toString() + "\r\n" + jsonObj.toJSONString());
-//        String strRes = HttpClientKit.postOpr(strUrl, jsonObj.toString());//
-//        //String strRes = HttpClientKit.postMsg(strUrl,jsonObj);//寰楀埌杩斿洖鐨則oken?
-//
-//        JSONObject json1 = JSONObject.parseObject(strRes);
-//        strRes = json1.get("id").toString();
-//
-//        ///if(strRes.isEmpty() || "" == strRes) return -1;// 涓虹┖浠h〃澶辫触
-//
-//        //涓嬮潰闇�姹傝皟鐢ㄦ枃浠剁殑鎺ュ彛锛岃皟鐢ㄦ垚鍔熻繑鍥炲悗锛屽緱鍒癴ilename鍜宖ileid 鐢ㄨ繖浜屼釜鍊煎幓鏇存柊鏁版嵁
-//
-//        String filePath = RuoYiConfig.getUploadPath();
-//        String strMutfileUrl = remShare.getFileurl();//鍙兘瀛樺湪澶氫釜鍦板潃锛屼互,鍒嗗紑
-//
-//        String strFUrl = "http://129.88.242.39:8899/seeyon/rest/attachment?token=" + strRes;
-//        //String strFUrl = "http://slb.hospitalstar.com:8899/seeyon/rest/attachment?token="+strRes;
-//        //strFUrl = String.format(strFUrl, strRes);
-//
-//        /*File test = null;
-//        File file = new File("E:\\YYJQ\\OPO\\WEB\\Upload\\upload\\2023\\02\\17");
-//        if (file.exists() && file.isDirectory()) {
-//            // 鑾峰彇鎵�鏈夌洸鐩掓枃浠跺す
-//            File[] ones = file.listFiles();
-//            for (File one : ones) {
-//                test = one;
-//            }
-//        }*/
-//
-//        String filename = "";
-//        String fileid = "";
-//
-//        String[] urlArray = strMutfileUrl.split(",");
-//        for (int i = 0; i < urlArray.length; i++) {
-//            String strOneFileName = urlArray[i];
-//            String strTemp = strOneFileName.substring(15);
-//            String strFile = filePath + strTemp;
-//            //FileUploadUtils.getAbsoluteFile(filePath,strOneFileName);
-//            String struploadResult = "";
-//            File filetest = new File(strFile);
-//            try {
-//                struploadResult = HttpClientKit.sendPostWithFile(filetest, strFUrl);
-//            } catch (Exception e) {
-//                e.printStackTrace();
-//            }
-//
-//
-//            /*CloseableHttpClient httpClient = HttpClients.createDefault();
-//            //鍒涘缓post鏂规硶杩炴帴瀹炰緥锛屽湪post鏂规硶涓紶鍏ュ緟杩炴帴鍦板潃
-//            HttpPost httpPost = new HttpPost(strFUrl);
-//            CloseableHttpResponse response = null;
-//
-//            String struploadResult = "";
-//            try {
-//                //璁剧疆璇锋眰鍙傛暟锛堢被浼糷tml椤甸潰涓璶ame灞炴�э級
-//                MultipartEntityBuilder entity = MultipartEntityBuilder.create();
-//                //entity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
-//                entity.setCharset(Charset.forName("UTF-8"));
-//
-//                byte[] fileBytes = Files.readAllBytes(Paths.get(strFile));
-//                if (fileBytes != null) {
-//                    //鍐呭绫诲瀷锛岀敤浜庡畾涔夌綉缁滄枃浠剁殑绫诲瀷鍜岀綉椤电殑缂栫爜锛屽喅瀹氭枃浠舵帴鏀舵柟灏嗕互浠�涔堝舰寮忋�佷粈涔堢紪鐮佽鍙栬繖涓枃浠�
-//                    ContentType OCTEC_STREAM = ContentType.create("application/octet-stream", Charset.forName("UTF-8"));
-//                    //娣诲姞鏂囦欢
-//                    entity.addBinaryBody("file", fileBytes, OCTEC_STREAM, strTemp);
-//                }
-//
-//                httpPost.setEntity(entity.build());
-//                //鍙戣捣璇锋眰锛屽苟杩斿洖璇锋眰鍝嶅簲
-//                response = httpClient.execute(httpPost);
-//                struploadResult = EntityUtils.toString(response.getEntity(), "utf-8");
-//            }
-//            catch (Exception e)
-//            {
-//                e.printStackTrace();
-//            }*/
-//
-//            //String strFRes = HttpClientKit.postMsg(strFUrl,jsonFObj);
-//            if (struploadResult == null) return 0;
-//            if (struploadResult.isEmpty()) return 0;
-//
-//            JSONObject jsonR = JSONObject.parseObject(struploadResult);
-//
-//            JSONArray jsonArr = jsonR.getJSONArray("atts");
-//            for (int j = 0; j < jsonArr.size(); j++) {
-//                JSONObject jsonRet = jsonArr.getJSONObject(j);
-//                String name1 = jsonRet.get("filename").toString();
-//                String id1 = jsonRet.get("fileUrl").toString();
-//                filename += name1;
-//                fileid += id1;
-//                if (i != urlArray.length - 1) {
-//                    filename += ",";
-//                    fileid += ",";
-//                }
-//            }
-//
-//        }
-//
-////        long nId = remShare.getId();
-////        remShare.setId(nId);
-////        remShare.setFilename(filename);
-////        remShare.setFileid(fileid);
-////        boolean bRet = serviceReimbursementServiceShare.updateById(remShare);
-////        if (!bRet) return -1;
-//
-//        return 0;
+//    /**
+//     * 宸梾璐逛笂鎶�
+//     */
+//    @ApiOperation("宸梾璐逛笂鎶�")
+//    @Log(title = "宸梾璐逛笂鎶�", businessType = BusinessType.OTHER)
+//    @PostMapping("/test")
+//    public AjaxResult test(@RequestBody CheckFundVO checkFundVO) {
+//        mergeFilesToPDFUtils.generatePdf(checkFundVO.getFileNames(), checkFundVO.getOutputFile());
+//        return AjaxResult.success(200);
 //    }
 
 
@@ -453,40 +257,66 @@
     @PostMapping("/travelexpensereport")
     public AjaxResult travelexpensereport(@RequestBody CheckFundVO checkFundVO) {
         ServiceReimbursement serviceReimbursement = serviceReimbursementService.getById(checkFundVO.getFundid());
-        //濡傛灉绛変簬100锛岃鏄庡凡缁忚蛋鍒板尰闄㈣储鍔¢偅杈逛簡锛涜储鍔¢偅杈瑰彇鏁版嵁鏄粠鍒嗕韩琛ㄥ彇锛屾墍浠ワ紝杩欓噷鐩存帴寰�鍒嗕韩琛ㄩ噷娣诲姞鏁版嵁灏辫浜�
-        if (serviceReimbursement.getBackflowlevel() == 100 || serviceReimbursement.getBackflowlevel() == 199) {
+        serviceReimbursement.setApplyTime(new Date());
+        Long flowLavel = null;
 
-            //灏嗕慨鏀圭殑涓婃姤鏁版嵁 鏂板涓�鏉�
-            ServiceReimbursementShared serviceReimbursementShared = DtoConversionUtils.sourceToTarget(serviceReimbursement, ServiceReimbursementShared.class);
-            serviceReimbursementShared.setId(null);
-            serviceReimbursementShared.setDelFlag(0L);
-            serviceReimbursementShared.setReimid(serviceReimbursement.getId());
-            serviceReimbursementSharedService.save(serviceReimbursementShared);
+        LoginUser loginUser = getLoginUser();
+        SysUser user = loginUser.getUser();
 
-            //灏嗛��鍥為樁娈佃缃垚100
-            serviceReimbursement.setBackflowlevel(100L);     
-            serviceReimbursement.setFlowlevel(100L);
-            serviceReimbursement.setRecordstatus(0);
-            serviceReimbursementService.updateById(serviceReimbursement);
-            return success();
+        //鏌ヨ蹇呭浜�
+        ServiceFundflowrule serviceFundflowrule = new ServiceFundflowrule();
+        serviceFundflowrule.setApplytype("0");
+        serviceFundflowrule.setMustAudite(1);
+        serviceFundflowrule.setDel_flag(0);
+        List<ServiceFundflowrule> serviceFundflowrules = serviceFundflowruleService.queryList(serviceFundflowrule);
+        log.info("reimbursement蹇呭浜虹殑绛夌骇涓猴細{}", serviceFundflowrules.get(0).getFlowlevel());
+
+        //濡傛灉绛変簬100锛岃鏄庡凡缁忚蛋鍒板尰闄㈣储鍔¢偅杈逛簡锛涜储鍔¢偅杈瑰彇鏁版嵁鏄粠鍒嗕韩琛ㄥ彇锛屾墍浠ワ紝杩欓噷鐩存帴寰�鍒嗕韩琛ㄩ噷娣诲姞鏁版嵁灏辫浜�;
+        if (!Objects.isNull(serviceReimbursement) && serviceReimbursement.getBackflowlevel() != null) {
+            if (serviceReimbursement.getBackflowlevel() == 100 || serviceReimbursement.getBackflowlevel() == 199) {
+                //灏嗛��鍥為樁娈佃缃垚100
+                serviceReimbursement.setBackflowlevel(100L);
+                //閫�鍥炲啀鎻愪氦锛岄渶瑕佸啀鍒板嚭绾抽偅閲�
+                serviceReimbursement.setFlowlevel(Long.valueOf(serviceFundflowrules.get(0).getFlowlevel() - 1));
+                serviceReimbursement.setRecordstatus(2);
+                serviceReimbursementService.updateById(serviceReimbursement);
+
+                //灏嗕慨鏀圭殑涓婃姤鏁版嵁 鏂板涓�鏉�
+//                serviceReimbursementService.addSharedData(checkFundVO.getFundid());
+
+                return success();
+            } else if (serviceReimbursement.getBackflowlevel() >= Long.valueOf(serviceFundflowrules.get(0).getFlowlevel())) {
+                //蹇呭浜洪瀵奸��鍥炵殑锛屼篃闇�瑕佽蛋蹇呭浜洪偅閲�
+                serviceReimbursement.setFlowlevel(Long.valueOf(serviceFundflowrules.get(0).getFlowlevel() - 1));
+                serviceReimbursement.setRecordstatus(2);
+                serviceReimbursementService.updateById(serviceReimbursement);
+                return success();
+            }
         }
         if (serviceReimbursement != null) {
             Integer TotalLevel = 0;
-            LoginUser loginUser = getLoginUser();
-            SysUser user = loginUser.getUser();
             List<Integer> postids = postService.selectPostListByUserId(loginUser.getUserId());
 
             if (!postids.contains(2)) {
-                serviceReimbursement.setFlowlevel(1L);
-                serviceReimbursement.setBackflowlevel(1L);
                 serviceReimbursement.setRecordstatus(2);
+                if (serviceReimbursement.getBackflowlevel() != null) {
+                    serviceReimbursement.setFlowlevel(serviceReimbursement.getBackflowlevel());
+                } else {
+                    serviceReimbursement.setBackflowlevel(Long.valueOf(serviceFundflowrules.get(0).getFlowlevel() - 1));
+                    serviceReimbursement.setFlowlevel(Long.valueOf(serviceFundflowrules.get(0).getFlowlevel() - 1));
+                }
             } else {
-                serviceReimbursement.setFlowlevel(0L);
                 serviceReimbursement.setRecordstatus(0);
-                serviceReimbursement.setBackflowlevel(0L);
+                if (serviceReimbursement.getBackflowlevel() != null) {
+                    serviceReimbursement.setFlowlevel(serviceReimbursement.getBackflowlevel());
+                } else {
+                    serviceReimbursement.setFlowlevel(0L);
+                    serviceReimbursement.setBackflowlevel(0L);
+                }
+
             }
 
-            if (!postids.contains(2)) {
+            if (!postids.contains(2) && (serviceReimbursement.getBackflowlevel() == null || serviceReimbursement.getBackflowlevel() == 0)) {
                 ServiceFundflow serviceFundflow = new ServiceFundflow();
                 serviceFundflow.setFundid(serviceReimbursement.getId());
                 serviceFundflow.setCheckuserno(user.getUserName());
@@ -495,7 +325,8 @@
                 serviceFundflow.setApplytype("0");
                 serviceFundflow.setFlowconclusion(1);
                 serviceFundflow.setFlowcontent("闈炰笓鑱屼汉鍛樼洿鎺ヨ繘鍏ヤ簩绾у鏍�");
-                serviceFundflow.setFlowlevel(1);
+
+                serviceFundflow.setFlowlevel(serviceFundflowrules.get(0).getFlowlevel() - 1);
                 serviceFundflowService.save(serviceFundflow);
             }
 
@@ -515,8 +346,9 @@
     @Log(title = "瀹℃牳璐圭敤", businessType = BusinessType.OTHER)
     @PostMapping("/checkfund")
     public AjaxResult checkFund(@RequestBody CheckFundVO checkFundVO) {
+        log.info("瀹℃牳璐圭敤鐨勫叆鍙� : {}", checkFundVO);
         ServiceReimbursement serviceReimbursement = serviceReimbursementService.getById(checkFundVO.getFundid());
-
+        log.info("瀹℃牳璐圭敤鐨剆erviceReimbursementService.getById杩斿弬 : {}", serviceReimbursement);
         if (serviceReimbursement != null) {
             Integer totalLevel = 0;
             LoginUser loginUser = getLoginUser();
@@ -525,7 +357,7 @@
             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) {
                 return AjaxResult.error(HttpStatus.ERROR, "褰撳墠浜哄憳鏃犳璁板綍瀹℃牳鏉冮檺");
             }
@@ -552,19 +384,49 @@
                     //99 鍙栨秷
                     RecordStatus = 99;
                 } else {
+
                     if (totalLevel == FlowLevel + 1) {
                         RecordStatus = 99;
                     } else {
                         RecordStatus = (FlowLevel + 1) * 2;
                     }
                 }
+
+                if (serviceReimbursement.getFlowlevel() == 1 && serviceReimbursement.getBackflowlevel() == 100) {
+                    log.info("鍑哄樊琛ヨ创琚� 璐㈠姟閫�鍥炲啀鎻愪氦锛屽嚭绾冲啀娆″鎵癸紝涔嬪悗鎻愪氦鍒拌储鍔�:{}", serviceReimbursement.getId());
+                    //璇存槑鏄储鍔¢��鍥炲啀鎻愪氦鐨�.闇�瑕佸嚭绾冲啀鐪嬩竴閬嶏紝娌¢棶棰樹箣鍚庯紝寰�鍒嗕韩琛ㄩ噷鏂板
+//                    serviceReimbursementService.addSharedData(serviceReimbursement.getId());
+
+                    serviceReimbursement.setFlowlevel(serviceFundflowrules.get(0).getTotallevel().longValue());
+                    serviceReimbursement.setRecordstatus(99);
+                    serviceReimbursement.setUploadStates(1);
+                    boolean b = serviceReimbursementService.updateById(serviceReimbursement);
+                    log.info("鏄惁淇敼鎴愬姛:{}", b);
+
+                    //淇濆瓨瀹℃壒娴佺▼琛�
+                    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);
+                    serviceFundflow.setFlowcontent("閫氳繃");
+                    serviceFundflow.setFlowlevel(OriginalFlowLevel + 1);
+                    Boolean aBoolean = serviceFundflowService.save(serviceFundflow);
+                    return AjaxResult.success();
+                }
+
                 FlowLevel = FlowLevel + 1;
+                serviceReimbursement.setBackflowlevel(Long.valueOf(FlowLevel));
             } else {
                 CheckFlag = 2;
 
                 if (CheckFlag == 2) {
                     //搴斿尰闄㈣姹傚鏋滃嚭鐜伴��鍥烇紝鐩存帴閫�鍒板彂璧疯��
                     FlowLevel = 0;
+                    RecordStatus = -1;
                 } else {
                     //涓嬮潰鏄師鏉ョ殑鍐欐硶锛屼竴绾т竴绾х殑寰�涓嬮��锛屽尰闄㈢幇鍦ㄤ笉瑕佽繖鏍锋悶浜嗭紝涓嬮潰杩欐浠g爜鍏堜繚鐣欙紝绛夊尰闄㈠洖蹇冭浆鎰忥紝鍐嶇粰鏀惧紑
                     RecordStatus = (FlowLevel + 1) * 2 - 1;
@@ -573,6 +435,8 @@
                         FlowLevel = 0;
                     }
                 }
+
+
             }
 
             serviceReimbursement.setRecordstatus(RecordStatus);
@@ -585,13 +449,17 @@
             serviceFundflow.setFundtype(1);
             serviceFundflow.setApplytype("0");
             serviceFundflow.setFlowconclusion(CheckFlag);
-            serviceFundflow.setFlowcontent(checkFundVO.getFlowcontent());
+            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());
-
-            if (!postids.contains(2)) {
+            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());
@@ -603,9 +471,14 @@
                     serviceFundflowAuto.setFlowcontent("闈炰笓鑱屼汉鍛樹簩绾у鏍告嫆缁濆悗鐩存帴閫�鍥炲埌淇敼鐘舵��");
                     serviceFundflowAuto.setFlowlevel(1);
                     serviceFundflowService.save(serviceFundflowAuto);
-
                     serviceReimbursement.setRecordstatus(1);
                 }
+
+            }
+            //001瀹℃壒閫氳繃涔嬪悗锛屽氨闇�瑕佹妸鈥滃姙鍏涓讳换鈥濈殑鍚嶅瓧濉笂
+            if (checkFundVO.getFlowconclusion() == 1 && user.getUserName().equals("001")) {
+                serviceReimbursement.setOfficedirector(user.getNickName());
+                serviceReimbursement.setUploadStates(1);
             }
 
             serviceReimbursementService.updateById(serviceReimbursement);
@@ -620,14 +493,18 @@
             serviceSystemmessage.setIsread(0);
             serviceSystemmessage.setMessagetype(1);
             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()) + "鎻愪氦鐨勫叧浜庢崘鐚渚嬨��" + serviceReimbursement.getDonorname() + "銆戠殑宸梾璐圭敵璇峰凡閫氳繃" + (OriginalFlowLevel + 1) + "绾у鏍�");
-                if (totalLevel == OriginalFlowLevel + 1) {
-                    //鎵�鏈夋暟鎹柊澧炲埌澶囦唤琛�
-                    serviceReimbursementService.addSharedData(checkFundVO.getFundid());
-                }
+                log.info("totalLevel鐨勫�� : {},  OriginalFlowLevel鐨勫��:{}", totalLevel, OriginalFlowLevel);
+
+                //杩欎竴鍧楁斁瀹氭椂浠诲姟閲屽仛
+//                if (totalLevel == OriginalFlowLevel + 1) {
+//                    //鎵�鏈夋暟鎹柊澧炲埌澶囦唤琛�
+//                    serviceReimbursementService.addSharedData(checkFundVO.getFundid());
+//                }
             } else {
                 //椹冲洖
                 serviceSystemmessage.setMessagetitle("" + (OriginalFlowLevel + 1) + "绾у鏍搁┏鍥�");
@@ -648,7 +525,7 @@
     @ApiOperation("淇敼鎶ラ攢鐢宠")
     //@PreAuthorize("@ss.hasPermi('project:reimbursement:edit')")
     @Log(title = "鎶ラ攢鐢宠", businessType = BusinessType.UPDATE)
-    @PutMapping
+    @PostMapping("/reimbursementEdit")
     @RepeatSubmit
     public AjaxResult edit(@RequestBody ServiceReimbursement serviceReimbursement) {
         boolean b = serviceReimbursementService.updateById(serviceReimbursement);
@@ -678,8 +555,8 @@
      */
     @ApiOperation("鍒犻櫎鎶ラ攢鐢宠")
     //@PreAuthorize("@ss.hasPermi('project:reimbursement:remove')")
-    @Log(title = "鎶ラ攢鐢宠", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{ids}")
+    @Log(title = "鎶ラ攢鐢宠")
+    @GetMapping("/remove/{ids}")
     public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(serviceReimbursementService.removeByIds(Arrays.asList(ids)));
     }
@@ -693,6 +570,7 @@
         Map dataMap = new HashMap();
         getData(dataMap, id);
         String filePath = getClass().getResource("/template/").getPath();
+        log.info("涓嬭浇鍦板潃鏄暐锛燂紵锛焮}", filePath);
         System.out.println(filePath);
         //璁剧疆妯℃湰瑁呯疆鏂规硶鍜岃矾寰�,FreeMarker鏀寔澶氱妯℃澘瑁呰浇鏂规硶銆傚彲浠ラ噸servlet锛宑lasspath锛屾暟鎹簱鏁欑▼瑁呰浇锛�
         configuration.setDirectoryForTemplateLoading(new File(filePath));
@@ -705,7 +583,7 @@
             e.printStackTrace();
         }
         String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis());
-        String name = "宸梾璐规姤閿�鐢宠鍗昣" + dataMap.get("XM") + "_" + newTime;
+        String name = "宸梾璐规姤閿�鐢宠鍗昣" + dataMap.get("JSR") + "_" + newTime;
 
         //杈撳嚭鏂囨。璺緞鍙婂悕绉�
         File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc");
@@ -738,6 +616,7 @@
         }
         Map<String, Object> map = new HashMap<>();
         map.put("downloadUrl", "/profile/download/wordtemplate/" + name + ".doc");
+        map.put("downloadName", name + ".doc");
         return map;
     }
 
@@ -748,9 +627,15 @@
         ServiceReimbursementEo serviceReimbursementEo = new ServiceReimbursementEo();
         serviceReimbursementEo.setId(id);
         List<ServiceReimbursementEo> rdInfoByItem = serviceReimbursementService.getRDInfoByItem(serviceReimbursementEo);
+        log.info("rdInfoByItem鏄惁涓虹┖ :{}", CollectionUtils.isEmpty(rdInfoByItem) ? null : rdInfoByItem.size());
+        for (int i = 0; i < rdInfoByItem.size(); i++) {
+            ServiceReimbursementEo serviceReimbursementEo1 = rdInfoByItem.get(i);
+            String codeByInfo = PersonType.getCodeByInfo(serviceReimbursementEo1.getPersontype());
+            serviceReimbursementEo1.setPersontype(codeByInfo);
+        }
         //鑾峰彇鎶ラ攢鏀粯淇℃伅
         List<ServiceReimbursementpayee> reimbursementpayeeInfo = reimbursementpayeeService.getReimbursementpayeeInfo(serviceReimbursementEo);
-
+        log.info("reimbursementpayeeInfo鏄惁涓虹┖ :{}", CollectionUtils.isEmpty(reimbursementpayeeInfo) ? null : reimbursementpayeeInfo.size());
         Map<String, List<ServiceReimbursementEo>> listMap = rdInfoByItem.stream().collect(Collectors.groupingBy(ServiceReimbursementEo::getPersontype));
         List<Map<String, BigDecimal>> list = new ArrayList<>();
         StringBuffer FYXM1 = new StringBuffer();
@@ -767,28 +652,76 @@
             BigDecimal keyOneMoney = new BigDecimal(0.00);
             BigDecimal keyTwoMoney = new BigDecimal(0.00);
             for (ServiceReimbursementEo serviceReimbursementEo1 : values) {
-                otherMoney = otherMoney.add(serviceReimbursementEo1.getTrafficexpense()).add(serviceReimbursementEo1.getHotelexpense()).add(serviceReimbursementEo1.getFoodexpenses()).add(serviceReimbursementEo1.getFoodallowance()).add(serviceReimbursementEo1.getOtherexpense()).add(serviceReimbursementEo1.getOtherfeeamount());
+                otherMoney = otherMoney.add(serviceReimbursementEo1.getTrafficexpense()).add(serviceReimbursementEo1.getHotelexpense()).add(serviceReimbursementEo1.getCityfee()).add(serviceReimbursementEo1.getFoodexpenses()).add(serviceReimbursementEo1.getFoodallowance()).add(serviceReimbursementEo1.getOtherexpense()).add(serviceReimbursementEo1.getOtherfeeamount());
             }
             map.put(key, otherMoney);
             list.add(map);
-            // 涓嶄负涓撳鎴栧灞�
-            if (!key.equals("3") && !key.equals("4")) {
-                //灏嗕笂涓�娆$殑娓呯┖
-                FYXM1.delete(0, FYXM1.length());
-                //鍐嶆柊澧�
-                otherMoneyall = otherMoneyall.add(otherMoney);
-                FYXM1.append("OPO宸ヤ綔浜哄憳" + ":" + otherMoneyall + " ");
-            } else {
-                if (flag == 0) {
-                    key1 = key;
-                    flag = 1;
-                }
-                if (key1 == key) {
-                    FYXM2.append(PersonType.getInfoByCode(key) + ":" + otherMoney);
-                    allMoney = allMoney.add(otherMoney);
+            // 涓嶄负涓撳鎴栧灞烇紝key鏈夊彲鑳芥槸鏁板瓧锛屾湁鍙兘鏄眽瀛�
+            Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
+            boolean matches = pattern.matcher(key).matches();
+            if (matches) {
+                if (!key.equals("3") && !key.equals("4")) {
+                    //灏嗕笂涓�娆$殑娓呯┖
+                    FYXM1.delete(0, FYXM1.length());
+                    //鍐嶆柊澧�
+                    otherMoneyall = otherMoneyall.add(otherMoney);
+                    FYXM1.append("OP0 宸ヤ綔浜哄憳鎶ラ攢宸梾璐�" + ":" + otherMoneyall + " ");
                 } else {
-                    FYXM3.append(PersonType.getInfoByCode(key) + ":" + otherMoney);
-                    allMoney = allMoney.add(otherMoney);
+                    if (flag == 0) {
+                        key1 = key;
+                        flag = 1;
+                    }
+                    if (key1 == key) {
+                        if (key.equals("3")) {
+//                        FYXM2.append(PersonType.getInfoByCode(key) + ":" + otherMoney);
+                            FYXM2.append("涓撳鎶ラ攢宸梾璐� :" + otherMoney);
+                            allMoney = allMoney.add(otherMoney);
+                        } else {
+                            FYXM2.append("瀹跺睘鎶ラ攢宸梾璐瑰強璇伐璐圭敤 : " + otherMoney);
+                            allMoney = allMoney.add(otherMoney);
+                        }
+                    } else {
+                        if (key.equals("3")) {
+//                        FYXM2.append(PersonType.getInfoByCode(key) + ":" + otherMoney);
+                            FYXM3.append("涓撳鎶ラ攢宸梾璐� :" + otherMoney);
+                            allMoney = allMoney.add(otherMoney);
+                        } else {
+                            FYXM3.append("瀹跺睘鎶ラ攢宸梾璐瑰強璇伐璐圭敤 : " + otherMoney);
+                            allMoney = allMoney.add(otherMoney);
+                        }
+                    }
+                }
+            } else {
+                if (!key.equals("涓撳") && !key.equals("瀹跺睘")) {
+                    //灏嗕笂涓�娆$殑娓呯┖
+                    FYXM1.delete(0, FYXM1.length());
+                    //鍐嶆柊澧�
+                    otherMoneyall = otherMoneyall.add(otherMoney);
+                    FYXM1.append("OP0 宸ヤ綔浜哄憳鎶ラ攢宸梾璐�" + ":" + otherMoneyall + " ");
+                } else {
+                    if (flag == 0) {
+                        key1 = key;
+                        flag = 1;
+                    }
+                    if (key1 == key) {
+                        if (key.equals("涓撳")) {
+//                        FYXM2.append(PersonType.getInfoByCode(key) + ":" + otherMoney);
+                            FYXM2.append("涓撳鎶ラ攢宸梾璐� :" + otherMoney);
+                            allMoney = allMoney.add(otherMoney);
+                        } else {
+                            FYXM2.append("瀹跺睘鎶ラ攢宸梾璐瑰強璇伐璐圭敤 : " + otherMoney);
+                            allMoney = allMoney.add(otherMoney);
+                        }
+                    } else {
+                        if (key.equals("涓撳")) {
+//                        FYXM2.append(PersonType.getInfoByCode(key) + ":" + otherMoney);
+                            FYXM3.append("涓撳鎶ラ攢宸梾璐� :" + otherMoney);
+                            allMoney = allMoney.add(otherMoney);
+                        } else {
+                            FYXM3.append("瀹跺睘鎶ラ攢宸梾璐瑰強璇伐璐圭敤 : " + otherMoney);
+                            allMoney = allMoney.add(otherMoney);
+                        }
+                    }
                 }
             }
         }
@@ -818,6 +751,8 @@
         String date = formatter.format(dt);
         String time = date.substring(0, 10);
 
+        dataMap.put("ZB", rdInfoByItem.get(0).getDeptmentname() == null ? "" : rdInfoByItem.get(0).getDeptmentname());
+        dataMap.put("XZBH", rdInfoByItem.get(0).getBh() == null ? "" : rdInfoByItem.get(0).getBh());
         dataMap.put("TBYYMMDD", time);
         dataMap.put("BXDFJ", rdInfoByItem.get(0).getAttachcount() == null ? "   " : "" + rdInfoByItem.get(0).getAttachcount());
         dataMap.put("JXZXM", rdInfoByItem.get(0).getDonorname() == null ? "" : rdInfoByItem.get(0).getDonorname());
@@ -854,6 +789,14 @@
         }
         dataMap.put("BXBZ", remark);
 
+        dataMap.put("ZXFZR", StringUtils.isEmpty(rdInfoByItem.get(0).getOpochecker()) ? "" : rdInfoByItem.get(0).getOpochecker());
+//
+        dataMap.put("CWFYZ", StringUtils.isEmpty(rdInfoByItem.get(0).getFinvicepresident()) ? "" : rdInfoByItem.get(0).getFinvicepresident());
+        dataMap.put("YWFYZ", StringUtils.isEmpty(rdInfoByItem.get(0).getBusvicepresident()) ? "" : rdInfoByItem.get(0).getBusvicepresident());
+        dataMap.put("BGSZR", StringUtils.isEmpty(rdInfoByItem.get(0).getOfficedirector()) ? "" : rdInfoByItem.get(0).getOfficedirector());
+        dataMap.put("CWBZR", StringUtils.isEmpty(rdInfoByItem.get(0).getFinancedirector()) ? "" : rdInfoByItem.get(0).getFinancedirector());
+        dataMap.put("CWSH", StringUtils.isEmpty(rdInfoByItem.get(0).getFinancechecher()) ? "" : rdInfoByItem.get(0).getFinancechecher());
+
 
         dataMap.put("YYMMDD", time);
 

--
Gitblit v1.9.3