From 6f8bcebfc8457e93f8ecd998a865b6ba9ef387ea Mon Sep 17 00:00:00 2001 From: kangxiaoshan <kangxiaoshan@reyun.com> Date: Fri, 29 May 2020 18:05:07 +0800 Subject: [PATCH] 分摊收入报表权限 --- src/main/java/common/controller/ContractController.java | 4 ++-- src/main/java/common/model/Contract.java | 2 +- src/main/java/common/repository/ContractRepository.java | 8 +++++++- src/main/java/common/service/impl/ContractServiceImpl.java | 50 ++++++++++++++++++++++++++++++++++++++------------ src/main/java/dic/AuthMenuEnmm.java | 5 +++++ 5 files changed, 53 insertions(+), 16 deletions(-) diff --git a/src/main/java/common/controller/ContractController.java b/src/main/java/common/controller/ContractController.java index 06d82dd..6992468 100644 --- a/src/main/java/common/controller/ContractController.java +++ b/src/main/java/common/controller/ContractController.java @@ -426,7 +426,7 @@ public class ContractController { */ @RequestMapping(value = "/shareincome/list", method = RequestMethod.GET) @ResponseBody - @AuthKey(AuthMenuEnmm.CONTRACTMNG_V) + @AuthKey(AuthMenuEnmm.SHARED_INCOME_V) public ResultModel shareIncome(@CurrentAccount User loginAccount, @PathVariable String platform, @RequestParam String startDate, @RequestParam String endDate, String bodyCode, String serchName) { @@ -437,7 +437,7 @@ public class ContractController { @RequestMapping(value = "/shareincome/export", method = RequestMethod.GET, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) @ResponseBody - @AuthKey(AuthMenuEnmm.CONTRACTMNG_V) + @AuthKey(AuthMenuEnmm.SHARED_INCOME_E) public ResponseEntity<byte[]> shareIncomeExport(@CurrentAccount User loginAccount, @PathVariable String platform, @RequestParam String startDate, @RequestParam String endDate, String bodyCode, String serchName, HttpServletResponse response, HttpServletRequest request) { diff --git a/src/main/java/common/model/Contract.java b/src/main/java/common/model/Contract.java index 75e9219..c426935 100644 --- a/src/main/java/common/model/Contract.java +++ b/src/main/java/common/model/Contract.java @@ -55,7 +55,7 @@ public class Contract { private Long firstBackId;//先回款记录的id - private Long adjustmentFund;// 分摊收入调整金额 + private Long adjustmentFund;// 分摊收入调整金额 (*100的结果) private Integer intervalUseDays;//区间使用天数 private Long incomeExcludingTax; //不含税收入 (*100的结果) private Long intervaIncomeShare;//区间分摊收入(*100的结果) diff --git a/src/main/java/common/repository/ContractRepository.java b/src/main/java/common/repository/ContractRepository.java index 261727c..2adcc22 100644 --- a/src/main/java/common/repository/ContractRepository.java +++ b/src/main/java/common/repository/ContractRepository.java @@ -104,9 +104,15 @@ public interface ContractRepository extends JpaRepository<Contract, Long> { @Query(value="select * from contract where start_date >= ?1 and start_date <=?2 and end_date >= ?1 and create_time >= ?1 and platform=?3 and my_body_code = ?4",nativeQuery = true) List<Contract> findShareContranctByDate(String startDate, String endDate, String platform, String bodyCode); - @Query(value="select * from contract where start_date >= ?1 and start_date <=?2 and end_date >= ?1 and create_time >= ?1 and platform=?3 and (my_body_name like %?5% or customer_body like %?5% or contract_code like %?5%)",nativeQuery = true) + @Query(value="select * from contract where start_date >= ?1 and start_date <=?2 and end_date >= ?1 and create_time >= ?1 and platform=?3 and (my_body_name like %?4% or customer_body like %?4% or contract_code like %?4%)",nativeQuery = true) List<Contract> findShareContranctByDateSerche(String startDate, String endDate, String platform, String serchName); @Query(value="select * from contract where start_date >= ?1 and start_date <=?2 and end_date >= ?1 and create_time >= ?1 and platform=?3 and my_body_code = ?4 and (my_body_name like %?5% or customer_body like %?5% or contract_code like %?5%)",nativeQuery = true) List<Contract> findShareContranctByDate(String startDate, String endDate, String platform, String bodyCode, String serchName); + + @Query(value="select * from contract where start_date >= ?1 and start_date <=?2 and end_date >= ?1 and create_time >= ?1 and platform=?3 and (my_body_name like %?4% or customer_body like %?4% or contract_code like %?5%) and my_body_code in ?5",nativeQuery = true) + List<Contract> findShareContranctByDateSercheFinace(String startDate, String endDate, String platform, String serchName, List<String> financeBodies); + + @Query(value="select * from contract where start_date >= ?1 and start_date <=?2 and end_date >= ?1 and create_time >= ?1 and platform=?3 and my_body_code in ?4",nativeQuery = true) + List<Contract> findShareContranctByDateFinace(String startDate, String endDate, String platform, List<String> financeBodies); } diff --git a/src/main/java/common/service/impl/ContractServiceImpl.java b/src/main/java/common/service/impl/ContractServiceImpl.java index e429451..2f9bd0f 100644 --- a/src/main/java/common/service/impl/ContractServiceImpl.java +++ b/src/main/java/common/service/impl/ContractServiceImpl.java @@ -514,7 +514,6 @@ public class ContractServiceImpl implements ContractService { // } - this.calculateShareIncome(resource); resource = contractRepository.save(resource); @@ -524,7 +523,7 @@ public class ContractServiceImpl implements ContractService { return resource; } - public void calculateShareIncome(Contract resource){ + public void calculateShareIncome(Contract resource) { DateTime formStart = new DateTime(resource.getStartDate()); DateTime contractStart = new DateTime(resource.getStartDate()); DateTime contractEnd = new DateTime(resource.getEndDate()); @@ -534,7 +533,7 @@ public class ContractServiceImpl implements ContractService { //分摊收入调整金 = 合同金额 * 6% / 合同总天数 *[录入日期前一月最后一日(含) - 合同开始日期] int day1 = Days.daysBetween(contractStart, contractEnd).getDays(); int day2 = Days.daysBetween(contractStart, new DateTime().plusMonths(-1).dayOfMonth().withMaximumValue()).getDays(); - resource.setAdjustmentFund(resource.getMoney() * 6 / day1 * day2 ); // 此处为 *100的结果 + resource.setAdjustmentFund(resource.getMoney() * 6 / day1 * day2); // 此处为 *100的结果 } } @@ -1198,11 +1197,8 @@ public class ContractServiceImpl implements ContractService { if (RoleEnum.FINANCE.getKey().equals(loginAccount.getRole())) { //财务 按签约主体查看 -// List bodyids = Arrays.asList(loginAccount.getAuthExtend().split(",")); List bodyids = JSONArray.fromObject(auth.getAuthExtend()); -// List<String> bodycodes = contractBodyRepository.findByIds(bodyids); - if (!StringUtils.isEmpty(contractId)) { if (ids != null && ids.size() > 0) { @@ -2358,14 +2354,41 @@ public class ContractServiceImpl implements ContractService { public List<Contract> shareIncomeList(User loginAccount, String startDate, String endDate, String platform, String bodyCode, String serchName) { List<Contract> contracts = new ArrayList<>(); + + List<String> financeBodies = null; + if (RoleEnum.FINANCE.getKey().equals(loginAccount.getRole())) { + Auth auth = authRepository.findByUser(loginAccount.getId()); + financeBodies = JSONArray.fromObject(auth.getAuthExtend()); + } + if (!StringUtils.isEmpty(bodyCode) && !StringUtils.isEmpty(serchName)) { - contracts = contractRepository.findShareContranctByDate(startDate, endDate, platform, bodyCode, serchName); + + if (financeBodies != null && !financeBodies.contains(bodyCode)) { + //沒有权限查看 + return contracts; + } else { + contracts = contractRepository.findShareContranctByDate(startDate, endDate, platform, bodyCode, serchName); + } + } else if (!StringUtils.isEmpty(bodyCode)) { - contracts = contractRepository.findShareContranctByDate(startDate, endDate, platform, bodyCode); + if (financeBodies != null && !financeBodies.contains(bodyCode)) { + //沒有权限查看 + return contracts; + } else { + contracts = contractRepository.findShareContranctByDate(startDate, endDate, platform, bodyCode); + } } else if (!StringUtils.isEmpty(serchName)) { - contracts = contractRepository.findShareContranctByDateSerche(startDate, endDate, platform, serchName); + if (financeBodies != null) { + contracts = contractRepository.findShareContranctByDateSercheFinace(startDate, endDate, platform, serchName, financeBodies); + } else { + contracts = contractRepository.findShareContranctByDateSerche(startDate, endDate, platform, serchName); + } } else { - contracts = contractRepository.findShareContranctByDate(startDate, endDate, platform); + if (financeBodies != null) { + contracts = contractRepository.findShareContranctByDateFinace(startDate, endDate, platform, financeBodies); + } else { + contracts = contractRepository.findShareContranctByDate(startDate, endDate, platform); + } } List<ContractBody> bodies = contractBodyRepository.findAll(); @@ -2377,8 +2400,9 @@ public class ContractServiceImpl implements ContractService { v.setMyBodyName(bodiesNameMap.get(v.getMyBodyCode())); - //以下结果统一 *100 + //不含稅收入 + //以下结果统一 *100 // Long excludTax = v.getMoney() * 6 / 100; Long excludTax = (long) (v.getMoney() * 100 * 0.06); @@ -2405,13 +2429,15 @@ public class ContractServiceImpl implements ContractService { int contractFormRange = Days.daysBetween(usedStart, usedEnd).getDays() + 1; //区间分摊收入 + //以下结果统一 *100 Long intervalIncome = 0L; if (containEnd) { //时间范围合同结束时间时 分两部分计算 //第一部分 intervalIncome = (v.getMoney() * 100) / contracAllDays * (contractFormRange - 1); //第二部分 - Long intervalIncomePart2 = v.getMoney() * 100 - (v.getMoney() * 100 / contracAllDays * (contracAllDays - 1)); + Long intervalIncomePart2 = (long) (v.getMoney() - + (v.getMoney() * 100 / contracAllDays * (contracAllDays - 1)) * 1.0 / 100) * 100; intervalIncome += intervalIncomePart2; v.setIntervaIncomeShare(intervalIncome); diff --git a/src/main/java/dic/AuthMenuEnmm.java b/src/main/java/dic/AuthMenuEnmm.java index 2826067..69235df 100644 --- a/src/main/java/dic/AuthMenuEnmm.java +++ b/src/main/java/dic/AuthMenuEnmm.java @@ -37,6 +37,11 @@ public enum AuthMenuEnmm { USERLOGS_V("32","system","查看"), USERLOGS_RE("32","system","恢复"), + FINANCE_REPORT("financereport","0","财务报表"), + SHARED_INCOME("40","financereport","分摊收入报表"), + SHARED_INCOME_V("41","financereport","查看"), + SHARED_INCOME_E("412","financereport","导出"), + OTHER("0","0","0"); -- libgit2 0.27.1