| | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | 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.utils.StringUtils; |
| | | import com.ruoyi.project.service.IServiceFundService; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | /** |
| | | * 费用申请主Service业务层处理 |
| | |
| | | ServiceFundShared serviceFundShared = DtoConversionUtils.sourceToTarget(serviceFund, ServiceFundShared.class); |
| | | serviceFundShared.setSerfunid(serviceFundShared.getId()); |
| | | serviceFundShared.setId(null); |
| | | log.info("数据都插进去了吗? {}", serviceFundShared); |
| | | sharedService.save(serviceFundShared); |
| | | //数据发送给财务 |
| | | uploadOAFileAndUpdateDb(serviceFundShared); |
| | | |
| | | //fundId为主表的ID |
| | | Map<String, Object> columnMap = new HashMap<>(); |
| | | columnMap.put("fundid", id); |
| | |
| | | //fundID为service_fund_shared表的主键ID |
| | | serviceFunddetailShareds.get(i).setFundid(serviceFundShared.getId()); |
| | | serviceFunddetailShareds.get(i).setId(null); |
| | | //数据发送给财务 |
| | | uploadOAFileAndUpdateDb(serviceFunddetailShareds.get(i)); |
| | | } |
| | | boolean result = detailSharedService.saveBatch(serviceFunddetailShareds); |
| | | return result; |
| | |
| | | @Override |
| | | public List<ServiceFund> selectServiceFundList(ServiceFund serviceFund) { |
| | | return serviceFundMapper.selectServiceFundList(serviceFund); |
| | | } |
| | | |
| | | @Override |
| | | public List<ServiceFunddetail> getFundDetail(Long id) { |
| | | return serviceFunddetailMapper.selectFundDetailListById(id); |
| | | } |
| | | |
| | | @Override |
| | |
| | | @Transactional |
| | | public Long addOrUpdateNew(ServiceFundVO serviceFundVO) { |
| | | Long id = null; |
| | | //将数据保存到fund表 |
| | | if (serviceFundVO.getId() == null) { |
| | | save(serviceFundVO); |
| | | id = serviceFundVO.getId(); |
| | |
| | | updateById(serviceFundVO); |
| | | id = serviceFundVO.getId(); |
| | | } |
| | | List<ServiceFunddetail> serviceFunddetails = serviceFundVO.getServiceFunddetails(); |
| | | |
| | | // 用于记录税前、税后的总和 |
| | | double taxBefore = 0.0; |
| | | double taxAfter = 0.0; |
| | | |
| | | for (ServiceFunddetail serviceFunddetail : serviceFunddetails) { |
| | | serviceFunddetail.setFundid(id); |
| | | if (serviceFunddetail.getTaxedamount() != null && serviceFunddetail.getAmount() != null && serviceFunddetail.getTaxedamount() != 0.0 && serviceFunddetail.getAmount() != 0.0) { |
| | | // 税前税后都不为空 |
| | | if (serviceFunddetail.getId() == null) { |
| | | serviceFunddetailService.save(serviceFunddetail); |
| | | } else { |
| | | serviceFunddetailService.updateById(serviceFunddetail); |
| | | } |
| | | continue; |
| | | } else if (serviceFunddetail.getTaxedamount() != null && serviceFunddetail.getTaxedamount() != 0.0) { |
| | | // 税后求税前,如果是专家费申请 或 伦理专家费申请 才会计算税前税后 |
| | | if (StringUtils.isNotEmpty(serviceFundVO.getApplytype()) && serviceFundVO.getApplytype().equals("1") || serviceFundVO.getApplytype().equals("2")) { |
| | | Double taxationBefore = Double.valueOf(TaxtUtils.getTaxationBefore(BigDecimal.valueOf(serviceFunddetail.getTaxedamount()))); |
| | | // 税金 |
| | | String taxation = TaxtUtils.getTaxation(BigDecimal.valueOf(taxationBefore)); |
| | | serviceFunddetail.setAmount(Double.valueOf(taxationBefore)); |
| | | serviceFunddetail.setTaxamount(Double.parseDouble(taxation)); |
| | | } |
| | | } else if (serviceFunddetail.getAmount() != null && serviceFunddetail.getAmount() != 0.0) { |
| | | // 税前求税后,如果是专家费申请 或 伦理专家费申请 才会计算税前税后 |
| | | if (StringUtils.isNotEmpty(serviceFundVO.getApplytype()) && serviceFundVO.getApplytype().equals("1") || serviceFundVO.getApplytype().equals("2")) { |
| | | double tax = Double.parseDouble(TaxtUtils.getTaxation(BigDecimal.valueOf(serviceFunddetail.getAmount()))); |
| | | BigDecimal taxAfterMoney = BigDecimal.valueOf(serviceFunddetail.getAmount()).subtract(BigDecimal.valueOf(tax)); |
| | | serviceFunddetail.setTaxamount(tax); |
| | | serviceFunddetail.setTaxedamount(taxAfterMoney.doubleValue()); |
| | | } |
| | | List<ServiceFunddetailVO> serviceFunddetails = serviceFundVO.getServiceFunddetails(); |
| | | if (CollectionUtils.isEmpty(serviceFunddetails)) { |
| | | System.out.println("serviceFunddetails为空喽"); |
| | | return null; |
| | | } |
| | | // 保存详情数据 |
| | | for (ServiceFunddetailVO serviceFunddetailVO : serviceFunddetails) { |
| | | serviceFunddetailVO.setFundid(id); |
| | | //將附件转成json |
| | | if (!CollectionUtils.isEmpty(serviceFunddetailVO.getAnnexfilesList())) { |
| | | serviceFunddetailVO.setAnnexfiles(JSON.toJSONString(serviceFunddetailVO.getAnnexfilesList())); |
| | | } |
| | | ServiceFunddetail serviceFunddetail = DtoConversionUtils.sourceToTarget(serviceFunddetailVO, ServiceFunddetail.class); |
| | | |
| | | //根据id判断是新增还是修改 |
| | | if (serviceFunddetail.getId() == null) { |
| | | if (serviceFunddetailVO.getId() == null) { |
| | | serviceFunddetailService.save(serviceFunddetail); |
| | | } else { |
| | | serviceFunddetailService.updateById(serviceFunddetail); |
| | | } |
| | | if (serviceFundVO.getApplytype().equals("1") || serviceFundVO.getApplytype().equals("2")) { |
| | | //如果是专家费申请 或 伦理专家费申请 才会计算税前税后 |
| | | taxBefore = taxBefore + serviceFunddetail.getAmount(); |
| | | taxAfter = taxAfter + serviceFunddetail.getTaxedamount(); |
| | | } |
| | | } |
| | | //将税前、税后金额更新到fund表中 |
| | | serviceFundVO.setPretaxcost(taxBefore); |
| | | serviceFundVO.setTaxedcost(taxAfter); |
| | | updateById(serviceFundVO); |
| | | |
| | | return id; |
| | | } |
| | | |
| | | int uploadOAFileAndUpdateDb(ServiceFundShared remShare) { |
| | | int uploadOAFileAndUpdateDb(ServiceFunddetailShared 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"); |
| | |
| | | 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); |
| | | List<RbDetailFile> parseArray2 = new ArrayList<>(); |
| | | List<RbDetailFile> parseArray = JSON.parseArray(remShare.getAnnexfiles(), RbDetailFile.class); |
| | | log.info("parseArray的值 : {}", parseArray); |
| | | 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 substring = url.substring(url.indexOf("/profile/upload") + "/profile/upload".length()); |
| | | // String strFile = rbDetailFile.getUrl().replace(filePath, "/profile/upload"); |
| | | System.out.println("fund服务的filePath + substring: " + filePath + substring); |
| | | File filetest = new File(filePath + substring); |
| | | |
| | | /*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 += ","; |
| | | try { |
| | | String struploadResult = HttpClientKit.sendPostWithFile(filetest, strFUrl); |
| | | log.info("第三方传回的数据: {}", struploadResult); |
| | | if (StringUtils.isEmpty(struploadResult)) { |
| | | log.info("HttpClientKit.sendPostWithFile 请求为空了 filetest:{}, strFUrl:{} ", filetest, strFUrl); |
| | | return 0; |
| | | } |
| | | //获取fileid |
| | | JSONObject jsonR = JSONObject.parseObject(struploadResult); |
| | | JSONArray jsonArr = jsonR.getJSONArray("atts"); |
| | | log.info("第三方传回的数据获取的atts : {}", jsonArr); |
| | | for (int j = 0; j < jsonArr.size(); j++) { |
| | | JSONObject jsonRet = jsonArr.getJSONObject(j); |
| | | rbDetailFile.setFileid(jsonRet.get("fileUrl").toString()); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | parseArray2.add(rbDetailFile); |
| | | } |
| | | |
| | | remShare.setAnnexfiles(JSON.toJSONString(parseArray2)); |
| | | log.info("ServiceReimbursementdetailShared 是否加上了fileid : {}", remShare); |
| | | } |
| | | |
| | | long nId = remShare.getId(); |
| | | remShare.setId(nId); |
| | | remShare.setFilename(filename); |
| | | remShare.setFileid(fileid); |
| | | boolean bRet = sharedService.updateById(remShare); |
| | | if (!bRet) return -1; |
| | | |
| | | 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 = sharedService.updateById(remShare); |
| | | // if (!bRet) return -1; |
| | | // |
| | | // return 0; |
| | | // } |
| | | |
| | | } |