|
@@ -0,0 +1,141 @@
|
|
|
+package org.springblade.control.controller;
|
|
|
+
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
|
|
+import io.swagger.annotations.Api;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import org.springblade.control.entity.ContractReturnedInfo;
|
|
|
+import org.springblade.control.entity.ControlProjectInfo;
|
|
|
+import org.springblade.control.entity.EMLoanInfo;
|
|
|
+import org.springblade.control.entity.ProjectCostBudget;
|
|
|
+import org.springblade.control.service.impl.ContractReturnedInfoServiceImpl;
|
|
|
+import org.springblade.control.service.impl.EMLoanServiceImpl;
|
|
|
+import org.springblade.control.service.impl.ProjectCostBudgetServiceImpl;
|
|
|
+import org.springblade.control.service.impl.ProjectInfoServiceImpl;
|
|
|
+import org.springblade.control.vo.ExMaByContractReturnedInfoVO;
|
|
|
+import org.springblade.control.vo.ExMaByControlProjectInfoVO;
|
|
|
+import org.springblade.control.vo.ExMaByLoanVO;
|
|
|
+import org.springblade.control.vo.ExMaByProjectCostBudgetVO;
|
|
|
+import org.springblade.core.boot.ctrl.BladeController;
|
|
|
+import org.springblade.core.log.exception.ServiceException;
|
|
|
+import org.springblade.core.secure.utils.SecureUtil;
|
|
|
+import org.springblade.core.tool.api.R;
|
|
|
+import org.springblade.system.user.entity.User;
|
|
|
+import org.springblade.system.user.feign.IUserClient;
|
|
|
+import org.springframework.web.bind.annotation.GetMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@RestController
|
|
|
+@AllArgsConstructor
|
|
|
+@RequestMapping("/ex/ma")
|
|
|
+@Api(value = "费用管理关联业务接口", tags = "费用管理关联业务接口")
|
|
|
+public class ExMaTwoController extends BladeController {
|
|
|
+
|
|
|
+ private final IUserClient iUserClient;
|
|
|
+ private final ProjectInfoServiceImpl projectInfoService;
|
|
|
+ private final ProjectCostBudgetServiceImpl projectCostBudgetService;
|
|
|
+ private final EMLoanServiceImpl emLoanService;
|
|
|
+ private final ContractReturnedInfoServiceImpl contractReturnedInfoService;
|
|
|
+
|
|
|
+ @GetMapping("/project/list")
|
|
|
+ @ApiOperationSupport(order = 1)
|
|
|
+ @ApiOperation(value = "获取项目列表")
|
|
|
+ public R<List<ExMaByControlProjectInfoVO>> getProjectList() {
|
|
|
+ List<ControlProjectInfo> list = projectInfoService.list();
|
|
|
+ List<ExMaByControlProjectInfoVO> collect = list.stream().map(obj -> {
|
|
|
+ ExMaByControlProjectInfoVO vo = new ExMaByControlProjectInfoVO();
|
|
|
+ vo.setProjectId(obj.getId());
|
|
|
+ vo.setProjectName(obj.getName());
|
|
|
+ return vo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ return R.data(collect);
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/project/budget/list")
|
|
|
+ @ApiOperationSupport(order = 2)
|
|
|
+ @ApiOperation(value = "获取我的项目预算列表", notes = "传入项目id")
|
|
|
+ public R<List<ExMaByProjectCostBudgetVO>> getProjectBudgetList(@RequestParam Long projectId) {
|
|
|
+ if (ObjectUtil.isEmpty(SecureUtil.getUser())) {
|
|
|
+ throw new ServiceException("未获取到当前用户信息,请联系管理员");
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<ProjectCostBudget> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(ProjectCostBudget::getTaskUser, SecureUtil.getUserId());
|
|
|
+ queryWrapper.eq(ProjectCostBudget::getProjectId, projectId);
|
|
|
+ queryWrapper.orderByDesc(ProjectCostBudget::getCreateTime); //倒叙
|
|
|
+ List<ProjectCostBudget> projectCostBudgetList = projectCostBudgetService.getBaseMapper().selectList(queryWrapper);
|
|
|
+ ControlProjectInfo projectInfo = projectInfoService.getBaseMapper().selectById(projectId);
|
|
|
+ List<ExMaByProjectCostBudgetVO> collect = projectCostBudgetList.stream().map(obj -> {
|
|
|
+ ExMaByProjectCostBudgetVO vo = new ExMaByProjectCostBudgetVO();
|
|
|
+ vo.setId(obj.getId());
|
|
|
+ vo.setProjectName(projectInfo.getName());
|
|
|
+ vo.setStatus(obj.getStatus());
|
|
|
+ vo.setStatusName(obj.getStatus().equals(1) ? "未开始" : (obj.getStatus().equals(2) ? "进行中" : (obj.getStatus().equals(3) ? "暂停" : "已完成")));
|
|
|
+ vo.setPlanTaskDesc(obj.getPlanTaskDesc());
|
|
|
+ vo.setPlanTarget(obj.getPlanTarget());
|
|
|
+ return vo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ return R.data(collect);
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/loan/list")
|
|
|
+ @ApiOperationSupport(order = 3)
|
|
|
+ @ApiOperation(value = "获取我的借款列表")
|
|
|
+ public R<List<ExMaByLoanVO>> getLoanList() {
|
|
|
+ if (ObjectUtil.isEmpty(SecureUtil.getUser())) {
|
|
|
+ throw new ServiceException("未获取到当前用户信息,请联系管理员");
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<EMLoanInfo> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(EMLoanInfo::getIsTemp, 1); //已提交
|
|
|
+ queryWrapper.eq(EMLoanInfo::getStatus, 2); //已审批
|
|
|
+ queryWrapper.like(EMLoanInfo::getLoanUserName, SecureUtil.getNickName());
|
|
|
+ queryWrapper.apply("return_money != loan_money"); //排除已还款,已还款的还款金额=借款金额
|
|
|
+ List<EMLoanInfo> emLoanInfos = emLoanService.getBaseMapper().selectList(queryWrapper);
|
|
|
+
|
|
|
+ List<ExMaByLoanVO> collect = emLoanInfos.stream().map(obj -> {
|
|
|
+ ExMaByLoanVO vo = new ExMaByLoanVO();
|
|
|
+ vo.setId(obj.getId());
|
|
|
+ Date useDate = obj.getUseDate();
|
|
|
+ SimpleDateFormat smp = new SimpleDateFormat("yyyy年MM月dd日");
|
|
|
+ String format = smp.format(useDate);
|
|
|
+ BigDecimal difference = obj.getLoanMoney().subtract(obj.getReturnMoney()).abs();
|
|
|
+ String title = format + "借款" + difference + "元";
|
|
|
+ vo.setLoanName(title);
|
|
|
+ return vo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ return R.data(collect);
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/project/contract/list")
|
|
|
+ @ApiOperationSupport(order = 4)
|
|
|
+ @ApiOperation(value = "获取项目合同段回款数据列表", notes = "传入项目id")
|
|
|
+ public R<List<ExMaByContractReturnedInfoVO>> getProjectContractMoneyList(@RequestParam Long projectId) {
|
|
|
+ List<ContractReturnedInfo> contractReturnedInfos = contractReturnedInfoService.getBaseMapper().selectList(Wrappers.<ContractReturnedInfo>lambdaQuery().eq(ContractReturnedInfo::getProjectId, projectId));
|
|
|
+ Map<Long, String> userMap = iUserClient.selectUserAll().stream().collect(Collectors.toMap(User::getId, User::getRealName));
|
|
|
+ List<ExMaByContractReturnedInfoVO> collect = contractReturnedInfos.stream().map(obj -> {
|
|
|
+ ExMaByContractReturnedInfoVO vo = new ExMaByContractReturnedInfoVO();
|
|
|
+ vo.setId(obj.getId());
|
|
|
+ vo.setReturnedCondition(obj.getReturnedCondition());
|
|
|
+ vo.setPracticalReturnedMoney(obj.getPracticalReturnedMoney());
|
|
|
+ vo.setPracticalReturnedTime(obj.getPracticalReturnedTime());
|
|
|
+ vo.setShouldReturnedMoney(obj.getShouldReturnedMoney());
|
|
|
+ vo.setShouldReturnedTime(obj.getShouldReturnedTime());
|
|
|
+ vo.setReminderUserName(userMap.getOrDefault(obj.getReminderUser(), null));
|
|
|
+ return vo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ return R.data(collect);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|