|  |  | 
 |  |  | package com.ruoyi.web.controller.project; | 
 |  |  |  | 
 |  |  | import java.io.*; | 
 |  |  | import java.text.SimpleDateFormat; | 
 |  |  | import java.util.*; | 
 |  |  |  | 
 |  |  | import com.alibaba.fastjson.JSONArray; | 
 |  |  | import com.alibaba.fastjson.JSONObject; | 
 |  |  | import com.ruoyi.common.annotation.Log; | 
 |  |  | import com.ruoyi.common.annotation.RepeatSubmit; | 
 |  |  | import com.ruoyi.common.config.RuoYiConfig; | 
 |  |  | import com.ruoyi.common.constant.HttpStatus; | 
 |  |  | import com.ruoyi.common.core.controller.BaseController; | 
 |  |  | import com.ruoyi.common.core.domain.AjaxResult; | 
 |  |  | import com.ruoyi.common.core.domain.entity.SysUser; | 
 |  |  | import com.ruoyi.common.core.domain.model.LoginUser; | 
 |  |  | 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.poi.ExcelUtil; | 
 |  |  | import com.ruoyi.project.domain.*; | 
 |  |  | import com.ruoyi.project.domain.vo.*; | 
 |  |  | import com.ruoyi.project.service.*; | 
 |  |  | 
 |  |  | import io.swagger.annotations.Api; | 
 |  |  | import io.swagger.annotations.ApiOperation; | 
 |  |  | import org.apache.ibatis.annotations.Options; | 
 |  |  | import org.springframework.security.access.prepost.PreAuthorize; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.web.bind.annotation.GetMapping; | 
 |  |  | import org.springframework.web.bind.annotation.PostMapping; | 
 |  |  | import org.springframework.web.bind.annotation.PutMapping; | 
 |  |  | import org.springframework.web.bind.annotation.DeleteMapping; | 
 |  |  | import org.springframework.web.bind.annotation.PathVariable; | 
 |  |  | import org.springframework.web.bind.annotation.RequestBody; | 
 |  |  | import org.springframework.web.bind.annotation.RequestMapping; | 
 |  |  | import org.springframework.web.bind.annotation.RestController; | 
 |  |  | import com.ruoyi.common.annotation.Log; | 
 |  |  | import com.ruoyi.common.annotation.RepeatSubmit; | 
 |  |  | import com.ruoyi.common.core.controller.BaseController; | 
 |  |  | import com.ruoyi.common.core.domain.AjaxResult; | 
 |  |  | import com.ruoyi.common.enums.BusinessType; | 
 |  |  | import com.ruoyi.common.utils.poi.ExcelUtil; | 
 |  |  | import com.ruoyi.common.core.page.TableDataInfo; | 
 |  |  | import org.springframework.web.bind.annotation.*; | 
 |  |  |  | 
 |  |  | import java.io.*; | 
 |  |  | import java.math.BigDecimal; | 
 |  |  | import java.text.SimpleDateFormat; | 
 |  |  | import java.util.*; | 
 |  |  |  | 
 |  |  | import static com.ruoyi.web.controller.project.ServiceReimbursementController.convert; | 
 |  |  |  | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private IServiceSystemmessageService ServiceSystemmessage; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private IServiceFundSharedService fundServiceShare; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public ServiceFundController() { | 
 |  |  | 
 |  |  |         return AjaxResult.success(serviceFundService.getFundId(infoid)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @GetMapping("/addFundSharedInfo/{id}") | 
 |  |  |     public AjaxResult addFundSharedInfo(@PathVariable("id") Long id){ | 
 |  |  |         return AjaxResult.success(serviceFundService.addFundSharedInfo(id)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @GetMapping("/getFundDetail/{id}") | 
 |  |  |     public AjaxResult getFundDetail(@PathVariable("id") Long id){ | 
 |  |  |         return AjaxResult.success(serviceFundService.getFundDetail(id)); | 
 |  |  | 
 |  |  |     { | 
 |  |  |         boolean b = serviceFundService.save(serviceFund); | 
 |  |  |         Long id = serviceFund.getId(); | 
 |  |  |         if(b) | 
 |  |  |         { | 
 |  |  |             addReiSharedDatd(serviceFund,1); | 
 |  |  |         } | 
 |  |  |         return AjaxResult.success(id); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public  int addReiSharedDatd(ServiceFund serviceFund,int nType) | 
 |  |  |     { | 
 |  |  |         //remShare = ; | 
 |  |  |         ServiceFundShared remShare = null; | 
 |  |  |         if(nType == 1) | 
 |  |  |         { | 
 |  |  |             remShare = new ServiceFundShared(); | 
 |  |  |             remShare.setSerfunid(serviceFund.getId()); | 
 |  |  |         } | 
 |  |  |         else //modify | 
 |  |  |         { | 
 |  |  |             List<ServiceFundShared> remlist = fundServiceShare.getFundShareInfoById(serviceFund.getId()); | 
 |  |  |             if(remlist!=null) | 
 |  |  |                 remShare =remlist.get(0); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         remShare.setDonorno(serviceFund.getDonorno()); | 
 |  |  |         remShare.setDonorname(serviceFund.getDonorname()); | 
 |  |  |         remShare.setUserno(serviceFund.getUserno()); | 
 |  |  |         remShare.setUsername(serviceFund.getUsername()); | 
 |  |  |         remShare.setUnitname(serviceFund.getUnitname()); | 
 |  |  |         remShare.setUnitno(serviceFund.getUnitno()); | 
 |  |  |         remShare.setUnituserno(serviceFund.getUnituserno()); | 
 |  |  |         remShare.setPhone(serviceFund.getPhone()); | 
 |  |  |         remShare.setAnnexbankcard(serviceFund.getAnnexbankcard()); | 
 |  |  |         remShare.setAnnexregistform(serviceFund.getAnnexregistform()); | 
 |  |  |         Double nTemp= serviceFund.getPretaxcost(); | 
 |  |  |         if( nTemp == null) nTemp = 0d; | 
 |  |  |         remShare.setPretaxcost(BigDecimal.valueOf(nTemp)); | 
 |  |  |         //remShare.setAnnexfiles(serviceReimbursement.getAnnexfiles()); | 
 |  |  |         // remShare.setAmountrequested(BigDecimal.valueOf(serviceReimbursement.getAmountrequested())); | 
 |  |  |  | 
 |  |  |         nTemp= serviceFund.getTaxedcost(); | 
 |  |  |         if( nTemp == null) nTemp = 0d; | 
 |  |  |         remShare.setTaxedcost(BigDecimal.valueOf(nTemp)); | 
 |  |  |  | 
 |  |  |         nTemp = serviceFund.getTotalcost(); | 
 |  |  |         if( nTemp == null) nTemp = 0d; | 
 |  |  |         remShare.setTotalcost(BigDecimal.valueOf(nTemp)); | 
 |  |  |  | 
 |  |  |         nTemp = serviceFund.getExpertcost(); | 
 |  |  |         if(nTemp == null) nTemp = 0.0; | 
 |  |  |         remShare.setExpertcost(BigDecimal.valueOf(nTemp)); | 
 |  |  |  | 
 |  |  |         nTemp = serviceFund.getEthicscost(); | 
 |  |  |         if(nTemp == null) nTemp = 0.0; | 
 |  |  |         remShare.setEthicscost(BigDecimal.valueOf(nTemp)); | 
 |  |  |  | 
 |  |  |         nTemp = serviceFund.getMedicalcost(); | 
 |  |  |         if(nTemp == null) nTemp = 0.0; | 
 |  |  |         remShare.setMedicalcost(BigDecimal.valueOf(nTemp)); | 
 |  |  |  | 
 |  |  |         nTemp = serviceFund.getFamilycost(); | 
 |  |  |         if(nTemp == null) nTemp = 0.0; | 
 |  |  |         remShare.setFamilycost(BigDecimal.valueOf(nTemp)); | 
 |  |  |  | 
 |  |  |         nTemp = serviceFund.getAftercarecost(); | 
 |  |  |         if(nTemp == null) nTemp = 0.0; | 
 |  |  |         remShare.setAftercarecost(BigDecimal.valueOf(nTemp)); | 
 |  |  |  | 
 |  |  |         nTemp = serviceFund.getAmountrequested(); | 
 |  |  |         if(nTemp == null) nTemp = 0.0; | 
 |  |  |         remShare.setAmountrequested(BigDecimal.valueOf(nTemp)); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         remShare.setApplytype(serviceFund.getApplytype()); | 
 |  |  |  | 
 |  |  |         nTemp = serviceFund.getPrepaidamount(); | 
 |  |  |         if(nTemp == null) nTemp = 0.0; | 
 |  |  |         remShare.setPrepaidamount(BigDecimal.valueOf(nTemp)); | 
 |  |  |  | 
 |  |  |         remShare.setInvoicecount(serviceFund.getInvoicecount()); | 
 |  |  |         remShare.setAttachcount(serviceFund.getAttachcount()); | 
 |  |  |         remShare.setManagerno(serviceFund.getManagerno()); | 
 |  |  |         remShare.setManagername(serviceFund.getManagername()); | 
 |  |  |         remShare.setDeptmentno(serviceFund.getDeptmentno()); | 
 |  |  |         remShare.setDeptmentname(serviceFund.getDeptmentname()); | 
 |  |  |         remShare.setOpochecker(serviceFund.getOpochecker()); | 
 |  |  |         remShare.setFinvicepresident(serviceFund.getFinvicepresident()); | 
 |  |  |         remShare.setBusvicepresident(serviceFund.getBusvicepresident()); | 
 |  |  |         remShare.setOfficedirector(serviceFund.getOfficedirector()); | 
 |  |  |         remShare.setFinancedirector(serviceFund.getFinancedirector()); | 
 |  |  |         remShare.setFinancechecher(serviceFund.getFinancechecher()); | 
 |  |  |         //remShare.setIsdistribute(serviceFund.getIsdistribute()); | 
 |  |  |         remShare.setRecordstatus(serviceFund.getRecordstatus()); | 
 |  |  |         remShare.setUploadflag(serviceFund.getUploadflag()); | 
 |  |  |         remShare.setUploadtime(serviceFund.getUploadtime()); | 
 |  |  |         long nLevel = serviceFund.getFlowlevel(); | 
 |  |  |         remShare.setFlowlevel(nLevel); | 
 |  |  |  | 
 |  |  |         remShare.setInfoid(serviceFund.getInfoid()); | 
 |  |  |  | 
 |  |  |         //remShare.setOaid(serviceReimbursement.getOaid()); | 
 |  |  |         //remShare.setDonorno(serviceReimbursement.getDonorno()); | 
 |  |  |  | 
 |  |  |         boolean bRet = false; | 
 |  |  |         if(nType==1) | 
 |  |  |         { | 
 |  |  |             bRet = fundServiceShare.save(remShare); | 
 |  |  |         } | 
 |  |  |         else | 
 |  |  |         { | 
 |  |  |             //remShare.setId(serviceReimbursement.); | 
 |  |  |             bRet = fundServiceShare.updateById(remShare); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         //if(!bRet) return -1; | 
 |  |  |         String strMutfileUrl = remShare.getAnnexbankcard(); | 
 |  |  |         //有附件时才调用第三方进行上传 | 
 |  |  |         if(strMutfileUrl == null) return 0; | 
 |  |  |         if(strMutfileUrl.isEmpty()) return 0; | 
 |  |  |  | 
 |  |  |         try | 
 |  |  |         { | 
 |  |  |             uploadOAFileAndUpdateDb(remShare); | 
 |  |  |         } | 
 |  |  |         catch (Exception e) | 
 |  |  |         { | 
 |  |  |             logger.error("调用第三方接口出错!"); | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         //此处保存成功后要上传OA,保存返回值 | 
 |  |  |  | 
 |  |  |         return  0; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     int uploadOAFileAndUpdateDb(ServiceFundShared 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);//得到返回的token? | 
 |  |  |  | 
 |  |  |         JSONObject json1 = JSONObject.parseObject(strRes); | 
 |  |  |         strRes = json1.get("id").toString(); | 
 |  |  |  | 
 |  |  |         ///if(strRes.isEmpty() || "" == strRes) return -1;// 为空代表失败 | 
 |  |  |  | 
 |  |  |         //下面需求调用文件的接口,调用成功返回后,得到filename和fileid 用这二个值去更新数据 | 
 |  |  |  | 
 |  |  |         String filePath = RuoYiConfig.getUploadPath(); | 
 |  |  |         String strMutfileUrl = remShare.getAnnexbankcard();//可能存在多个地址,以,分开 | 
 |  |  |  | 
 |  |  |         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(); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             //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 = fundServiceShare.updateById(remShare); | 
 |  |  |         if(!bRet) return -1; | 
 |  |  |  | 
 |  |  |         return 0; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  | 
 |  |  |     { | 
 |  |  |         boolean b = serviceFundService.save(serviceFundVO); | 
 |  |  |         Long id = serviceFundVO.getId(); | 
 |  |  |         if(b) | 
 |  |  |         { | 
 |  |  |             addReiSharedDatd(serviceFundVO,1); | 
 |  |  |         } | 
 |  |  |         List<ServiceFunddetail> serviceFunddetails=serviceFundVO.getServiceFunddetails(); | 
 |  |  |         serviceFunddetails.forEach(item->item.setFundid(id)); | 
 |  |  |         serviceFunddetailService.saveBatch(serviceFunddetails); | 
 |  |  | 
 |  |  |     @RepeatSubmit     | 
 |  |  |     public AjaxResult edit(@RequestBody ServiceFund serviceFund) | 
 |  |  |     { | 
 |  |  |         return toAjax(serviceFundService.updateById(serviceFund)); | 
 |  |  |         boolean bret = serviceFundService.updateById(serviceFund); | 
 |  |  |         if(bret) | 
 |  |  |         { | 
 |  |  |             addReiSharedDatd(serviceFund,2); | 
 |  |  |         } | 
 |  |  |         return toAjax(bret); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** |