| | |
| | | package com.ruoyi.web.controller.project; |
| | | |
| | | import java.io.*; |
| | | import java.text.DecimalFormat; |
| | | 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.SecurityUtils; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | 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.SpFinancialExpensesIn; |
| | | import com.ruoyi.project.domain.vo.SpFinancialExpensesReimbursementOut; |
| | | import com.ruoyi.project.service.*; |
| | | import com.ruoyi.system.domain.SysPost; |
| | | import com.ruoyi.system.service.ISysPostService; |
| | | import freemarker.template.Configuration; |
| | | import freemarker.template.Template; |
| | | import freemarker.template.TemplateException; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.apache.commons.lang.ArrayUtils; |
| | | 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 freemarker.template.Configuration; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.io.*; |
| | | import java.math.BigDecimal; |
| | | import java.text.DecimalFormat; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 报销申请Controller |
| | |
| | | { |
| | | @Autowired |
| | | private IServiceReimbursementService serviceReimbursementService; |
| | | |
| | | @Autowired |
| | | private IServiceReimbursementSharedService serviceReimbursementServiceShare; |
| | | |
| | | @Autowired |
| | | private IServiceReimbursementdetailService serviceReimbursementdetailService; |
| | |
| | | @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); |
| | | } |
| | | |
| | | public int addReiSharedDatd(ServiceReimbursement serviceReimbursement,int nType) |
| | | { |
| | | //remShare = ; |
| | | ServiceReimbursementShared remShare = null; |
| | | if(nType == 1) |
| | | { |
| | | remShare = new ServiceReimbursementShared(); |
| | | remShare.setReimid(serviceReimbursement.getId()); |
| | | } |
| | | else //modify |
| | | { |
| | | List<ServiceReimbursementShared> remlist = serviceReimbursementServiceShare.getRemShareInfoByRemId(serviceReimbursement.getId()); |
| | | if(remlist!=null) |
| | | 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.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.getFileurl()); |
| | | //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.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);//得到返回的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.getFileurl();//可能存在多个地址,以,分开 |
| | | |
| | | String strFUrl = "http://129.88.242.39:8899/seeyon/rest/attachment?token=%s"+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 { |
| | | //设置请求参数(类似html页面中name属性) |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | |
| | | |
| | | if(!postids.contains(2)) |
| | | { |
| | | serviceReimbursement.setFlowlevel(1); |
| | | serviceReimbursement.setFlowlevel(1L); |
| | | serviceReimbursement.setRecordstatus(2); |
| | | } |
| | | else |
| | | { |
| | | serviceReimbursement.setFlowlevel(0); |
| | | serviceReimbursement.setFlowlevel(0L); |
| | | serviceReimbursement.setRecordstatus(0); |
| | | } |
| | | |
| | |
| | | } |
| | | Integer CheckFlag=0; |
| | | Integer RecordStatus=serviceReimbursement.getRecordstatus(); |
| | | Integer FlowLevel=serviceReimbursement.getFlowlevel(); |
| | | Integer FlowLevel = Integer.valueOf(serviceReimbursement.getFlowlevel().toString()); |
| | | Integer OriginalFlowLevel=FlowLevel; |
| | | if(checkFundVO.getFlowconclusion()==1) |
| | | { |
| | |
| | | } |
| | | |
| | | serviceReimbursement.setRecordstatus(RecordStatus); |
| | | serviceReimbursement.setFlowlevel(FlowLevel); |
| | | serviceReimbursement.setFlowlevel(Long.valueOf(FlowLevel.toString())); |
| | | |
| | | ServiceFundflow serviceFundflow=new ServiceFundflow(); |
| | | SysUser user = loginUser.getUser(); |
| | |
| | | @RepeatSubmit |
| | | public AjaxResult edit(@RequestBody ServiceReimbursement serviceReimbursement) |
| | | { |
| | | return toAjax(serviceReimbursementService.updateById(serviceReimbursement)); |
| | | boolean b= serviceReimbursementService.updateById(serviceReimbursement); |
| | | if(b) |
| | | { |
| | | addReiSharedDatd(serviceReimbursement,2); |
| | | } |
| | | return toAjax(b); |
| | | } |
| | | |
| | | /** |