ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
@@ -1,5 +1,6 @@ package com.ruoyi.web.controller.common; import org.apache.coyote.AbstractProtocol; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.AjaxResult; @@ -7,17 +8,29 @@ import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.framework.config.ServerConfig; import org.apache.catalina.connector.Connector; import org.apache.catalina.startup.Tomcat; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import javax.management.MBeanServer; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import javax.management.Query; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.lang.management.ManagementFactory; import java.net.InetAddress; import java.net.ServerSocket; import java.util.Set; /** * 通用请求处理 @@ -25,12 +38,12 @@ * @author ruoyi */ @RestController public class CommonController { public class CommonController { private static final Logger log = LoggerFactory.getLogger(CommonController.class); @Autowired private ServerConfig serverConfig; /** * 通用下载请求 @@ -39,12 +52,9 @@ * @param delete 是否删除 */ @GetMapping("common/download") public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) { try { if (!FileUtils.checkAllowDownload(fileName)) { public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) { try { if (!FileUtils.checkAllowDownload(fileName)) { throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName)); } String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1); @@ -53,25 +63,22 @@ response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); FileUtils.setAttachmentResponseHeader(response, realFileName); FileUtils.writeBytes(filePath, response.getOutputStream()); if (delete) { if (delete) { FileUtils.deleteFile(filePath); } } catch (Exception e) { } catch (Exception e) { log.error("下载文件失败", e); } } /** * 通用上传请求,type 为0 代表是差旅报销,为1代表费用申请,其它值不变 */ @PostMapping("/common/upload") public AjaxResult uploadFile(MultipartFile file) throws Exception { try { public AjaxResult uploadFile(MultipartFile file) throws Exception { int tomcatPort = getTomcatPort(); try { // 上传文件路径 String filePath = RuoYiConfig.getUploadPath(); // 上传并返回新文件名称 @@ -81,25 +88,29 @@ ajax.put("fileName", fileName); ajax.put("url", url); return ajax; } catch (Exception e) { } catch (Exception e) { return AjaxResult.error(e.getMessage()); } } private static int getTomcatPort() { int port = 0; Tomcat tomcat = new Tomcat(); Connector connector = tomcat.getConnector(); if (connector != null) { AbstractProtocol protocol = (AbstractProtocol) connector.getProtocolHandler(); port = protocol.getPort(); } return port; } /** * 本地资源通用下载 */ @GetMapping("/common/download/resource") public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) throws Exception { try { if (!FileUtils.checkAllowDownload(resource)) { public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) throws Exception { try { if (!FileUtils.checkAllowDownload(resource)) { throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource)); } // 本地资源路径 @@ -111,9 +122,7 @@ response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); FileUtils.setAttachmentResponseHeader(response, downloadName); FileUtils.writeBytes(downloadPath, response.getOutputStream()); } catch (Exception e) { } catch (Exception e) { log.error("下载文件失败", e); } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java
@@ -12,6 +12,7 @@ import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.tax.TaxtUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bean.DtoConversionUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.project.domain.*; @@ -427,39 +428,57 @@ */ @ApiOperation("新增费用汇总") @Log(title = "新增费用汇总", businessType = BusinessType.INSERT) @PostMapping("/addnew") @PostMapping("/addOrUpdateNew") @RepeatSubmit @Options(useGeneratedKeys = true, keyProperty = "id") public AjaxResult addnew(@RequestBody ServiceFundVO serviceFundVO) { public AjaxResult addOrUpdateNew(@RequestBody ServiceFundVO serviceFundVO) { Long id = null; if (serviceFundVO.getId() == null) { boolean b = serviceFundService.save(serviceFundVO); Long id = serviceFundVO.getId(); // if (b) { // addReiSharedDatd(serviceFundVO, 1); // } id = serviceFundVO.getId(); } else { serviceFundService.updateById(serviceFundVO); id = serviceFundVO.getId(); } List<ServiceFunddetail> serviceFunddetails = serviceFundVO.getServiceFunddetails(); // serviceFunddetails.forEach(item -> item.setFundid(id)); //taxBefore、taxAfter用来记录税前税后的总金额,不用管税率 double taxBefore = 0.0; double taxAfter = 0.0; for (ServiceFunddetail serviceFunddetail : serviceFunddetails) { serviceFunddetail.setFundid(id); if (serviceFunddetail.getTaxedamount() != 0.0 && serviceFunddetail.getAmount() != 0.0 && serviceFunddetail.getTaxedamount() != null && serviceFunddetail.getTaxedamount() != null) { // 税前税后都不为空 if (serviceFunddetail.getId() == null) { serviceFunddetailService.save(serviceFunddetail); } else { serviceFunddetailService.updateById(serviceFunddetail); } continue; } else if (serviceFunddetail.getTaxedamount() != 0.0 && serviceFunddetail.getTaxedamount() != null) { // 税后求税前 // 税后求税前,如果是专家费申请 或 偷专家费申请 才会计算税前税后 if (StringUtils.isNotEmpty(serviceFunddetail.getApplytype()) && serviceFunddetail.getApplytype().equals("1") || serviceFunddetail.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() != 0.0 && serviceFunddetail.getAmount() != null) { // 税前求税后 // 税前求税后,如果是专家费申请 或 偷专家费申请 才会计算税前税后 if (StringUtils.isNotEmpty(serviceFunddetail.getApplytype()) && serviceFunddetail.getApplytype().equals("1") || serviceFunddetail.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()); } } //根据id判断是新增还是修改 if (serviceFunddetail.getId() == null) { serviceFunddetailService.save(serviceFunddetail); } else { serviceFunddetailService.updateById(serviceFunddetail); } taxBefore = taxBefore + serviceFunddetail.getAmount(); taxAfter = taxAfter + serviceFunddetail.getTaxedamount(); @@ -468,8 +487,8 @@ serviceFundVO.setPretaxcost(taxBefore); serviceFundVO.setTaxedcost(taxAfter); serviceFundService.updateById(serviceFundVO); //将计算好的数据,保存到detail表中 serviceFunddetailService.saveBatch(serviceFunddetails); // //将计算好的数据,保存到detail表中 // serviceFunddetailService.saveBatch(serviceFunddetails); return AjaxResult.success(id); }