Browse Source

添加对接OA的token,添加申请预算时金额记录字段

contract
Yen 3 years ago
parent
commit
fc47d09a53
  1. 3
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java
  2. 14
      src/main/java/com/qs/serve/modules/seeyon/service/impl/SyBaseService.java
  3. 12
      src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityCenterGoods.java
  4. 6
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetCostItem.java
  5. 16
      src/main/java/com/qs/serve/modules/tbs/mapper/TbsScheduleItemBudgetMapper.java
  6. 22
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java

3
src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java

@ -182,6 +182,9 @@ public class BmsRegion2Controller {
@PreAuthorize("hasRole('bms:region:query')") @PreAuthorize("hasRole('bms:region:query')")
public R<BmsRegion2> getById(@PathVariable("id") String id){ public R<BmsRegion2> getById(@PathVariable("id") String id){
BmsRegion2 msRegion2 = bmsRegion2Service.getById(id); BmsRegion2 msRegion2 = bmsRegion2Service.getById(id);
if(StringUtils.hasText(msRegion2.getPid())&&msRegion2.getPid().equals("0")){
msRegion2.setPid(null);
}
if(msRegion2.getPid()!=null&&!msRegion2.getPid().equals("0")){ if(msRegion2.getPid()!=null&&!msRegion2.getPid().equals("0")){
BmsRegion2 bmsRegion2 = bmsRegion2Service.getById(msRegion2.getPid()); BmsRegion2 bmsRegion2 = bmsRegion2Service.getById(msRegion2.getPid());
msRegion2.setParentInfo(bmsRegion2); msRegion2.setParentInfo(bmsRegion2);

14
src/main/java/com/qs/serve/modules/seeyon/service/impl/SyBaseService.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.seeyon.service.impl; package com.qs.serve.modules.seeyon.service.impl;
import cn.hutool.crypto.SecureUtil;
import com.qs.serve.common.config.properties.SeeYonProperties; import com.qs.serve.common.config.properties.SeeYonProperties;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.Assert;
@ -10,6 +11,9 @@ import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.HashMap;
/** /**
* @author YenHex * @author YenHex
* @since 2023/1/4 * @since 2023/1/4
@ -24,8 +28,11 @@ public class SyBaseService {
private SysUserService sysUserService; private SysUserService sysUserService;
public R<String> getBase(String url2, String title){ public R<String> getBase(String url2, String title){
String token = SecureUtil.md5(LocalDate.now().getDayOfYear()+"000"+LocalDate.now().getYear());
HashMap<String,String> headers = new HashMap<>();
headers.put("token",token);
String url = getBaseUrl(); String url = getBaseUrl();
R<String> result = HttpUtil.doGetResult(url+url2,null); R<String> result = HttpUtil.doGetResult(url+url2,headers);
if(result.getStatus()!=200){ if(result.getStatus()!=200){
log.error("致远服务失败[{},{}] url2:{}",title,result.getMsg(),url2); log.error("致远服务失败[{},{}] url2:{}",title,result.getMsg(),url2);
} }
@ -33,8 +40,11 @@ public class SyBaseService {
} }
public R<String> postBase(String url2,Object param,String title){ public R<String> postBase(String url2,Object param,String title){
String token = SecureUtil.md5(LocalDate.now().getDayOfYear()+"000"+LocalDate.now().getYear());
HashMap<String,String> headers = new HashMap<>();
headers.put("token",token);
String url = getBaseUrl(); String url = getBaseUrl();
R<String> result = HttpUtil.doPostResult(url + url2, JsonUtil.objectToJson(param),null); R<String> result = HttpUtil.doPostResult(url + url2, JsonUtil.objectToJson(param),headers);
if(result.getStatus()!=200){ if(result.getStatus()!=200){
log.error("致远服务失败[{},{}]\nParam:{}",title,result.getMsg(),JsonUtil.objectToJson(param)); log.error("致远服务失败[{},{}]\nParam:{}",title,result.getMsg(),JsonUtil.objectToJson(param));
} }

12
src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityCenterGoods.java

@ -222,6 +222,18 @@ public class TbsActivityCenterGoods implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private String scheduleItemName; private String scheduleItemName;
/** 后台参数:录入时考核期可用预算 */
@TableField(exist = false)
private BigDecimal scheduleItemAmount;
/** 后台参数:录入时,考核期已用金额(含申请占用金额) */
@TableField(exist = false)
private BigDecimal scheduleItemAmountUsed;
/** 后台参数:录入时,考核期申请占用金额 */
@TableField(exist = false)
private BigDecimal scheduleItemAmountApply;
/** 后台参数:费用考核期项id */ /** 后台参数:费用考核期项id */
@TableField(exist = false) @TableField(exist = false)
private Long scheduleItemBudgetId; private Long scheduleItemBudgetId;

6
src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetCostItem.java

@ -216,6 +216,12 @@ public class TbsBudgetCostItem implements Serializable {
@NotNull(message = "费用占比不能为空") @NotNull(message = "费用占比不能为空")
private BigDecimal scheduleItemAmount; private BigDecimal scheduleItemAmount;
/** 后台参数:录入时,考核期已用金额(含申请占用金额) */
private BigDecimal scheduleItemAmountUsed;
/** 录入时,考核期申请占用金额 */
private BigDecimal scheduleItemAmountApply;
/** 费用考核期项id */ /** 费用考核期项id */
@NotNull(message = "费用考核期项id不能为空") @NotNull(message = "费用考核期项id不能为空")
private Long scheduleItemBudgetId; private Long scheduleItemBudgetId;

16
src/main/java/com/qs/serve/modules/tbs/mapper/TbsScheduleItemBudgetMapper.java

@ -2,6 +2,10 @@ package com.qs.serve.modules.tbs.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget; import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.math.BigDecimal;
/** /**
* 预算考核期项 Mapper * 预算考核期项 Mapper
@ -10,5 +14,17 @@ import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget;
*/ */
public interface TbsScheduleItemBudgetMapper extends BaseMapper<TbsScheduleItemBudget> { public interface TbsScheduleItemBudgetMapper extends BaseMapper<TbsScheduleItemBudget> {
/**
* 统计费用申请占用的预算金额
* @param scheduleItemBudgetId 预算考核期id
* @return
*/
@Select("SELECT sum(`tbs_budget_cost_item`.center_goods_amount) FROM `tbs_budget_cost_item` " +
" LEFT JOIN `tbs_cost_apply` " +
" ON `tbs_budget_cost_item`.cost_apply_id = `tbs_cost_apply`.id " +
" WHERE `tbs_cost_apply`.charge_state = 1 OR `tbs_cost_apply`.charge_state = 4 " +
" AND `tbs_budget_cost_item`.id = #{scheduleItemBudgetId}")
BigDecimal totalApplyAmount(@Param("scheduleItemBudgetId") Long scheduleItemBudgetId);
} }

22
src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java

@ -14,6 +14,7 @@ import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableVo;
import com.qs.serve.modules.tbs.mapper.TbsActivityGoodsMapper; import com.qs.serve.modules.tbs.mapper.TbsActivityGoodsMapper;
import com.qs.serve.modules.tbs.mapper.TbsActivityMapper; import com.qs.serve.modules.tbs.mapper.TbsActivityMapper;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudgetMapper;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -43,6 +44,7 @@ public class TbsBudgetApplicationService {
private SysConfigService configService; private SysConfigService configService;
private TbsActivityMapper activityMapper; private TbsActivityMapper activityMapper;
private TbsActivityGoodsMapper activityGoodsMapper; private TbsActivityGoodsMapper activityGoodsMapper;
private TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper;
public TbsBudgetTableVo buildResultTable(Long costApplyId){ public TbsBudgetTableVo buildResultTable(Long costApplyId){
//加载活动 //加载活动
@ -209,6 +211,12 @@ public class TbsBudgetApplicationService {
if(!budgetNoCondition){ if(!budgetNoCondition){
this.handleNoBudgetActivity(throwEx, overspend, activityList, noBudgetActivityIds,activityAllowBudgetIdMap); this.handleNoBudgetActivity(throwEx, overspend, activityList, noBudgetActivityIds,activityAllowBudgetIdMap);
} }
//统计费用申请占用金额
Map<Long,BigDecimal> budgetItemApplyAmountMap = new HashMap<>(scheduleItemList.size());
for (TbsScheduleItemBudget itemBudget : scheduleItemList) {
BigDecimal budgetItemApplyAmount = tbsScheduleItemBudgetMapper.totalApplyAmount(itemBudget.getId());
budgetItemApplyAmountMap.put(itemBudget.getId(),budgetItemApplyAmount);
}
//统计当前活动前置项占用预算 //统计当前活动前置项占用预算
Map<Long,BigDecimal> counterMap = new HashMap<>(); Map<Long,BigDecimal> counterMap = new HashMap<>();
//匹配预算主要方法 //匹配预算主要方法
@ -216,7 +224,7 @@ public class TbsBudgetApplicationService {
final List<TbsActivityCenterGoods> actUnMatchList = new ArrayList<>(); final List<TbsActivityCenterGoods> actUnMatchList = new ArrayList<>();
for (TbsActivityCenterGoods activityCostItem : centerGoodsList) { for (TbsActivityCenterGoods activityCostItem : centerGoodsList) {
this.matchActivityMain(activityCostItem,throwEx, overspend, activityList, hisCostGroupByItemBudget, budgetList, this.matchActivityMain(activityCostItem,throwEx, overspend, activityList, hisCostGroupByItemBudget, budgetList,
noConditionBudgetList, counterMap, actMatchList, actUnMatchList,activityAllowBudgetIdMap,activitySubjects,activityCenterList); noConditionBudgetList, counterMap, actMatchList, actUnMatchList,activityAllowBudgetIdMap,budgetItemApplyAmountMap);
} }
List<TbsBudgetCostItem> budgetMatchList = actMatchList.stream() List<TbsBudgetCostItem> budgetMatchList = actMatchList.stream()
.map(TbsActivityCenterGoods::toBudgetCostItem).collect(Collectors.toList()); .map(TbsActivityCenterGoods::toBudgetCostItem).collect(Collectors.toList());
@ -413,7 +421,7 @@ public class TbsBudgetApplicationService {
* @param actMatchList 匹配预算占用的费用(含超支预算) * @param actMatchList 匹配预算占用的费用(含超支预算)
* @param actUnMatchList 没有匹配预算的费用 * @param actUnMatchList 没有匹配预算的费用
* @param activityAllowBudgetIdMap 满足当前活动项的费用idMap * @param activityAllowBudgetIdMap 满足当前活动项的费用idMap
* @param activitySubjects 活动科目 * @param budgetItemApplyAmountMap 统计费用申请占用金额
*/ */
private void matchActivityMain(TbsActivityCenterGoods activityCostItem, private void matchActivityMain(TbsActivityCenterGoods activityCostItem,
Boolean throwEx, Boolean throwEx,
@ -426,8 +434,7 @@ public class TbsBudgetApplicationService {
final List<TbsActivityCenterGoods> actMatchList, final List<TbsActivityCenterGoods> actMatchList,
final List<TbsActivityCenterGoods> actUnMatchList, final List<TbsActivityCenterGoods> actUnMatchList,
final Map<Long,List<Long>> activityAllowBudgetIdMap, final Map<Long,List<Long>> activityAllowBudgetIdMap,
final List<TbsActivitySubject> activitySubjects, Map<Long,BigDecimal> budgetItemApplyAmountMap) {
final List<TbsActivityCenter> activityCenterList) {
//过滤满全条件的预算 //过滤满全条件的预算
List<Long> allowBudgetIds = activityAllowBudgetIdMap.get(activityCostItem.getActivityId()); List<Long> allowBudgetIds = activityAllowBudgetIdMap.get(activityCostItem.getActivityId());
List<TbsBudget> budgetList = allBudgetList.stream().filter(obj->allowBudgetIds.contains(obj.getId())).collect(Collectors.toList()); List<TbsBudget> budgetList = allBudgetList.stream().filter(obj->allowBudgetIds.contains(obj.getId())).collect(Collectors.toList());
@ -469,7 +476,7 @@ public class TbsBudgetApplicationService {
if(CollectionUtil.isNotEmpty(currentScheduleItemBudgets)){ if(CollectionUtil.isNotEmpty(currentScheduleItemBudgets)){
boolean isMatch = false; boolean isMatch = false;
for (TbsScheduleItemBudget itemBudget : currentScheduleItemBudgets) { for (TbsScheduleItemBudget itemBudget : currentScheduleItemBudgets) {
//历史费用 //历史费用(含申请占用金额)
BigDecimal totalUsed = TbsBudgetCostUtil.totalHisCost(hisCostGroupByItemBudget.get(itemBudget.getId())); BigDecimal totalUsed = TbsBudgetCostUtil.totalHisCost(hisCostGroupByItemBudget.get(itemBudget.getId()));
//当前项费用 //当前项费用
BigDecimal budgetAmount = itemBudget.getBudgetAmount(); BigDecimal budgetAmount = itemBudget.getBudgetAmount();
@ -478,12 +485,17 @@ public class TbsBudgetApplicationService {
if(lastAmount==null){ if(lastAmount==null){
lastAmount = BigDecimal.ZERO; lastAmount = BigDecimal.ZERO;
} }
//判断是否够用
if(budgetAmount.subtract(lastAmount).subtract(totalUsed).compareTo(goodsAmount)>0){ if(budgetAmount.subtract(lastAmount).subtract(totalUsed).compareTo(goodsAmount)>0){
activityCostItem.setBudgetId(itemBudget.getBudgetId()); activityCostItem.setBudgetId(itemBudget.getBudgetId());
activityCostItem.setScheduleId(itemBudget.getScheduleId()); activityCostItem.setScheduleId(itemBudget.getScheduleId());
activityCostItem.setScheduleItemId(itemBudget.getScheduleItemId()); activityCostItem.setScheduleItemId(itemBudget.getScheduleItemId());
activityCostItem.setScheduleItemBudgetId(itemBudget.getId()); activityCostItem.setScheduleItemBudgetId(itemBudget.getId());
activityCostItem.setScheduleItemName(itemBudget.getItemName()); activityCostItem.setScheduleItemName(itemBudget.getItemName());
activityCostItem.setScheduleItemAmount(budgetAmount);
//剩余的可用预算
activityCostItem.setScheduleItemAmountUsed(totalUsed);
activityCostItem.setScheduleItemAmountApply(budgetItemApplyAmountMap.get(itemBudget.getId()));
isMatch = true; isMatch = true;
//记录当前费用使用考核期费用 //记录当前费用使用考核期费用
lastAmount = lastAmount.add(goodsAmount); lastAmount = lastAmount.add(goodsAmount);

Loading…
Cancel
Save