|
@@ -2,10 +2,12 @@ package com.jeeplus.test.reimbursementsys.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
import com.jeeplus.sys.service.dto.UserDTO;
|
|
|
import com.jeeplus.sys.utils.StringUtils;
|
|
|
import com.jeeplus.sys.utils.UserUtils;
|
|
|
import com.jeeplus.test.reimbursementsys.domain.dto.ReimbursementBusinessDTO;
|
|
|
+import com.jeeplus.test.reimbursementsys.domain.dto.ReimbursementBusinessReturnDTO;
|
|
|
import com.jeeplus.test.reimbursementsys.domain.dto.ReimbursementUserDTO;
|
|
|
import com.jeeplus.test.reimbursementsys.mapper.ReimbursementBusinessMapper;
|
|
|
import com.jeeplus.test.reimbursementsys.mapper.ReimbursementUserMapper;
|
|
@@ -13,6 +15,7 @@ import com.jeeplus.test.reimbursementsys.service.ReimbursementUserService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
@@ -47,7 +50,29 @@ public class ReimbursementUserServiceImpl implements ReimbursementUserService {
|
|
|
|
|
|
@Override
|
|
|
public IPage<ReimbursementUserDTO> findList(Page<ReimbursementUserDTO> page, ReimbursementUserDTO reimbursementUser) {
|
|
|
- return mapper.findList (page, reimbursementUser);
|
|
|
+ IPage<ReimbursementUserDTO> pageList = mapper.findList(page, reimbursementUser);
|
|
|
+ List<ReimbursementUserDTO> list = pageList.getRecords();
|
|
|
+
|
|
|
+ if(null != list && list.size()>0){
|
|
|
+ for (ReimbursementUserDTO userDTO: list) {
|
|
|
+ ReimbursementUserDTO reimbursementUserDTO = new ReimbursementUserDTO();
|
|
|
+ reimbursementUserDTO.setUserId(userDTO.getUserId());
|
|
|
+ reimbursementUserDTO.setYear(userDTO.getYear());
|
|
|
+ ReimbursementBusinessReturnDTO businessReturnDTO = this.findListByUserId(reimbursementUserDTO);
|
|
|
+
|
|
|
+ //剩余报销额度
|
|
|
+ userDTO.setSurplusReimbursementAmount(businessReturnDTO.getSurplusReimbursementAmount());
|
|
|
+ //剩余报销天数
|
|
|
+ userDTO.setSurplusReimbursementDay(businessReturnDTO.getSurplusReimbursementDay());
|
|
|
+ //已报销天数
|
|
|
+ userDTO.setAlreadyReimbursementDay(businessReturnDTO.getAlreadyReimbursementDay());
|
|
|
+ //已报销额度
|
|
|
+ userDTO.setAlreadyReimbursementAmount(businessReturnDTO.getAlreadyReimbursementAmount());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ pageList.setRecords(list);
|
|
|
+ return pageList;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -108,17 +133,71 @@ public class ReimbursementUserServiceImpl implements ReimbursementUserService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void delete(List<String> idList) {
|
|
|
+ public Map<String,Object> delete(List<String> idList) {
|
|
|
+ Map<String,Object> map = new HashMap<>();
|
|
|
+ List<String> userName = Lists.newArrayList();
|
|
|
//删除发票信息
|
|
|
- mapper.delete(idList);
|
|
|
+ //判断该人员该年度是否已经存在报销情况,如存在则不可以删除
|
|
|
+ //根据id集合查询人员信息
|
|
|
+ for (String id: idList) {
|
|
|
+ ReimbursementUserDTO reimbursementUserDTO = mapper.queryById(id);
|
|
|
+ ReimbursementBusinessDTO reimbursementBusiness = new ReimbursementBusinessDTO();
|
|
|
+ reimbursementBusiness.setUserId(reimbursementUserDTO.getUserId());
|
|
|
+ reimbursementBusiness.setYear(reimbursementUserDTO.getYear());
|
|
|
+ List<ReimbursementBusinessDTO> list = businessMapper.findListByUserIdAndYear(reimbursementBusiness);
|
|
|
+ if(list.size()>0){
|
|
|
+ userName.add(reimbursementUserDTO.getUser().getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(userName.size()>0){
|
|
|
+ map.put("success",false);
|
|
|
+ String userNames = StringUtils.join(userName, "、");
|
|
|
+ map.put("message", "员工 " + userNames + " 存在已报销情况,本次删除失败");
|
|
|
+ }else{
|
|
|
+ mapper.delete(idList);
|
|
|
+ map.put("success",true);
|
|
|
+ map.put("message", "删除成功");
|
|
|
+ }
|
|
|
+ return map;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<ReimbursementBusinessDTO> findListByUserId(ReimbursementUserDTO reimbursementUserDTO) {
|
|
|
+ public ReimbursementBusinessReturnDTO findListByUserId(ReimbursementUserDTO reimbursementUserDTO) {
|
|
|
ReimbursementBusinessDTO reimbursementBusiness = new ReimbursementBusinessDTO();
|
|
|
reimbursementBusiness.setUserId(reimbursementUserDTO.getUserId());
|
|
|
reimbursementBusiness.setYear(reimbursementUserDTO.getYear());
|
|
|
- return businessMapper.findListByUserIdAndYear(reimbursementBusiness);
|
|
|
+ ReimbursementBusinessReturnDTO reimbursementBusinessReturnDTO = new ReimbursementBusinessReturnDTO();
|
|
|
+ List<ReimbursementBusinessDTO> list = businessMapper.findListByUserIdAndYear(reimbursementBusiness);
|
|
|
+
|
|
|
+ //获取人员年度报销详情
|
|
|
+ ReimbursementUserDTO reimbursementUserInfo = mapper.queryByUserIdAndYear(reimbursementUserDTO);
|
|
|
+ reimbursementBusinessReturnDTO.setList(list);
|
|
|
+ reimbursementBusinessReturnDTO.setReimbursementQuota(reimbursementUserInfo.getReimbursementQuota());
|
|
|
+
|
|
|
+ //已报销额度
|
|
|
+ BigDecimal alreadyReimbursementAmount = new BigDecimal("0");
|
|
|
+ //已报销天数
|
|
|
+ BigDecimal alreadyReimbursementDay = new BigDecimal("0");
|
|
|
+
|
|
|
+ for (ReimbursementBusinessDTO info : list) {
|
|
|
+ BigDecimal bigDecimal = new BigDecimal(info.getReimbursementAmount());
|
|
|
+ alreadyReimbursementAmount = alreadyReimbursementAmount.add(bigDecimal);
|
|
|
+ alreadyReimbursementDay = alreadyReimbursementDay.add(new BigDecimal(info.getReimbursementDay()));
|
|
|
+ }
|
|
|
+ //剩余报销额度
|
|
|
+ reimbursementBusinessReturnDTO.setSurplusReimbursementAmount(new BigDecimal(reimbursementBusinessReturnDTO.getReimbursementQuota()).subtract(alreadyReimbursementAmount).toString());
|
|
|
+ //计算出可报销总天数
|
|
|
+ BigDecimal reimbursementDay = new BigDecimal(reimbursementBusinessReturnDTO.getReimbursementQuota()).divide(new BigDecimal(reimbursementUserInfo.getReimbursementQuotaDay()));
|
|
|
+ //剩余报销天数
|
|
|
+ reimbursementBusinessReturnDTO.setSurplusReimbursementDay(reimbursementDay.subtract(alreadyReimbursementDay).toString());
|
|
|
+ //报销天数
|
|
|
+ reimbursementBusinessReturnDTO.setReimbursementDay(reimbursementDay.toString());
|
|
|
+ //已报销天数
|
|
|
+ reimbursementBusinessReturnDTO.setAlreadyReimbursementDay(alreadyReimbursementDay.toString());
|
|
|
+ //已报销额度
|
|
|
+ reimbursementBusinessReturnDTO.setAlreadyReimbursementAmount(alreadyReimbursementAmount.toString());
|
|
|
+
|
|
|
+ return reimbursementBusinessReturnDTO;
|
|
|
}
|
|
|
|
|
|
}
|