|
@@ -4,6 +4,7 @@ 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.DictUtils;
|
|
|
import com.jeeplus.sys.utils.StringUtils;
|
|
|
import com.jeeplus.sys.utils.UserUtils;
|
|
|
import com.jeeplus.test.reimbursementsys.domain.dto.ReimbursementBusinessDTO;
|
|
@@ -129,10 +130,16 @@ public class ReimbursementBusinessServiceImpl implements ReimbursementBusinessSe
|
|
|
map.put("message", "报销年份不正确,请重新填写!");
|
|
|
return map;
|
|
|
}
|
|
|
- if(StringUtils.isBlank(reimbursementUser.getReimbursementDay()) || !StringUtils.isNumeric(reimbursementUser.getReimbursementDay())){
|
|
|
+ if(StringUtils.isBlank(reimbursementUser.getReimbursementType())){
|
|
|
map.put("success", false);
|
|
|
- map.put("message", "报销天数不正确,请重新填写!");
|
|
|
+ map.put("message", "请选择报销类型!");
|
|
|
return map;
|
|
|
+ }else{
|
|
|
+ if("1".equals(reimbursementUser.getReimbursementType()) && (StringUtils.isBlank(reimbursementUser.getReimbursementDay()) || !StringUtils.isNumeric(reimbursementUser.getReimbursementDay()))){
|
|
|
+ map.put("success", false);
|
|
|
+ map.put("message", "报销天数不正确,请重新填写!");
|
|
|
+ return map;
|
|
|
+ }
|
|
|
}
|
|
|
//根据人员id和报销年份查询该年度的报销信息
|
|
|
ReimbursementUserDTO reimbursementUserByUserIdAndYear = mapper.reimbursementUserByUserIdAndYear(reimbursementUser);
|
|
@@ -145,9 +152,16 @@ public class ReimbursementBusinessServiceImpl implements ReimbursementBusinessSe
|
|
|
String alreadyReimbursementQuota = mapper.getAlreadyReimbursementQuotaByUserIdAndYear(reimbursementUser);
|
|
|
//判断本地报销额度是否超过该年度所剩余报销额度,如果超过,则不允许报销,并抛出。否则进行报销并保存报销数据
|
|
|
BigDecimal alreadyReimbursementQuotaB = new BigDecimal(alreadyReimbursementQuota); //已报销额度
|
|
|
- BigDecimal reimbursementQuotaDay = new BigDecimal(reimbursementUser.getReimbursementQuotaDay()); //日报销额度
|
|
|
- BigDecimal reimbursementDay = new BigDecimal(reimbursementUser.getReimbursementDay()); //报销天数
|
|
|
- BigDecimal reimbursementAmount = reimbursementQuotaDay.multiply(reimbursementDay).setScale(2, BigDecimal.ROUND_HALF_UP); //报销额度
|
|
|
+ BigDecimal reimbursementAmount = null;
|
|
|
+ if("1".equals(reimbursementUser.getReimbursementType())){
|
|
|
+ BigDecimal reimbursementQuotaDay = new BigDecimal(reimbursementUser.getReimbursementQuotaDay()); //日报销额度
|
|
|
+ BigDecimal reimbursementDay = new BigDecimal(reimbursementUser.getReimbursementDay()); //报销天数
|
|
|
+ reimbursementAmount = reimbursementQuotaDay.multiply(reimbursementDay).setScale(2, BigDecimal.ROUND_HALF_UP); //报销额度
|
|
|
+
|
|
|
+ }else{
|
|
|
+ reimbursementAmount = new BigDecimal(reimbursementUser.getReimbursementAmount());
|
|
|
+ }
|
|
|
+
|
|
|
//往期加这次的总报销额度和当年的总报销额度进行比较,小于当年报销额度 则个人可以进行报销,否则,无法进行报销
|
|
|
if(alreadyReimbursementQuotaB.add(reimbursementAmount).compareTo(new BigDecimal(reimbursementUser.getReimbursementQuota())) == 1){
|
|
|
map.put("success", false);
|
|
@@ -174,12 +188,20 @@ public class ReimbursementBusinessServiceImpl implements ReimbursementBusinessSe
|
|
|
BigDecimal canReimbursementAmount = income.multiply(reimbursementRatio).divide(new BigDecimal("100")).setScale(2, BigDecimal.ROUND_HALF_UP); //该项目可报销额度计算
|
|
|
//查询该业务总报销额度
|
|
|
String alreadyReimbursementQuotaByBusinessCodeId = mapper.getAlreadyReimbursementQuotaByBusinessCodeId(reimbursementUser);
|
|
|
+ String gatheringStatus = mapper.getGatheringStatusById(reimbursementUser);
|
|
|
BigDecimal allAlreadyReimbursementQuota = new BigDecimal(alreadyReimbursementQuotaByBusinessCodeId); //总报销额度
|
|
|
//往期加这次的总报销额度和当年的总报销额度进行比较,小于当年报销额度 则个人可以进行报销,否则,无法进行报销
|
|
|
if(allAlreadyReimbursementQuota.add(reimbursementAmount).compareTo(canReimbursementAmount) == 1){
|
|
|
map.put("success", false);
|
|
|
map.put("message", "本次报销金额已超出该业务可报销额度所剩余额,无法进行报销");
|
|
|
return map;
|
|
|
+ } else if (allAlreadyReimbursementQuota.add(reimbursementAmount).compareTo(canReimbursementAmount) == 0 && "1".equals(gatheringStatus)){
|
|
|
+ //如果报销额度和剩余报销额度相同
|
|
|
+ ReimbursementDTO reimbursementDTO = new ReimbursementDTO();
|
|
|
+ reimbursementDTO.setId(reimbursementUser.getBusinessCodeId());
|
|
|
+ reimbursementDTO.setReimbursementStatus("1");
|
|
|
+
|
|
|
+ mapper.updateReimbursementInfo(reimbursementDTO);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -217,7 +239,9 @@ public class ReimbursementBusinessServiceImpl implements ReimbursementBusinessSe
|
|
|
@Override
|
|
|
public ReimbursementBusinessReturnDTO findListByBusinessCodeId(ReimbursementBusinessDTO reimbursementBusiness) {
|
|
|
List<ReimbursementBusinessDTO> list = mapper.findListByBusinessCodeId(reimbursementBusiness);
|
|
|
-
|
|
|
+ for (ReimbursementBusinessDTO info : list) {
|
|
|
+ info.setReimbursementType(DictUtils.getDictLabel(info.getReimbursementType(), "reimbursement_type", null));
|
|
|
+ }
|
|
|
ReimbursementBusinessReturnDTO reimbursementBusinessReturnDTO = new ReimbursementBusinessReturnDTO();
|
|
|
//获取业务报销信息
|
|
|
ReimbursementDTO business = this.getBusinessById(reimbursementBusiness.getBusinessCodeId());
|