Browse Source

预算费用占用,销售人员树调整

mssql
Yen 3 years ago
parent
commit
55c32bc6cf
  1. 3
      src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java
  2. 7
      src/main/java/com/qs/serve/modules/sys/service/SysUserSalesService.java
  3. 27
      src/main/java/com/qs/serve/modules/sys/service/impl/SysUserSalesServiceImpl.java
  4. 98
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  5. 3
      src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java
  6. 3
      src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsCostApplyVo.java
  7. 102
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java

3
src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java

@ -409,8 +409,7 @@ public class SysUserController {
for (String strv : arr) { for (String strv : arr) {
setStr.add(strv); setStr.add(strv);
} }
String lastId = arr[arr.length-1]; if(userSale.getUserId().equals(childNode.getUserId())){
if(!lastId.equals(childNode.getUserId())||userSale.getUserId().equals(childNode.getUserId())){
continue; continue;
} }
if(setStr.size()<arr.length){ if(setStr.size()<arr.length){

7
src/main/java/com/qs/serve/modules/sys/service/SysUserSalesService.java

@ -27,7 +27,12 @@ public interface SysUserSalesService extends IService<SysUserSales> {
*/ */
List<SysUserSales> listByPathId(String pathId); List<SysUserSales> listByPathId(String pathId);
/**
* 加载销售人员下所有下级
* @param userId
* @return
*/
List<String> listByChildIds(String userId);
} }

27
src/main/java/com/qs/serve/modules/sys/service/impl/SysUserSalesServiceImpl.java

@ -2,6 +2,7 @@ package com.qs.serve.modules.sys.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.StringUtils; import com.qs.serve.common.util.StringUtils;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -11,7 +12,10 @@ import com.qs.serve.modules.sys.service.SysUserSalesService;
import com.qs.serve.modules.sys.mapper.SysUserSalesMapper; import com.qs.serve.modules.sys.mapper.SysUserSalesMapper;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/** /**
* 服务实现类 * 服务实现类
@ -35,7 +39,28 @@ public class SysUserSalesServiceImpl extends ServiceImpl<SysUserSalesMapper,SysU
} }
LambdaQueryWrapper<SysUserSales> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysUserSales> lqw = new LambdaQueryWrapper<>();
lqw.likeRight(SysUserSales::getPathIds,pathId); lqw.likeRight(SysUserSales::getPathIds,pathId);
return this.list(lqw); List<SysUserSales> list = this.list(lqw);
List<SysUserSales> result = new ArrayList<>();
//过滤数值类型脏数据
for (SysUserSales userSales : list) {
String[] arr = userSales.getPathIds().split("_");
String lastId = arr[arr.length-1];
if(!lastId.equals(userSales.getUserId())){
continue;
}
result.add(userSales);
}
return result;
}
@Override
public List<String> listByChildIds(String userId) {
SysUserSales sysUserSales = this.getById(userId);
if(sysUserSales!=null){
List<SysUserSales> userSales = this.listByPathId(sysUserSales.getPathIds());
return userSales.stream().map(SysUserSales::getUserId).collect(Collectors.toList());
}
return new ArrayList<>();
} }
} }

98
src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java

@ -18,6 +18,7 @@ import com.qs.serve.modules.seeyon.entity.CtpAffairQo;
import com.qs.serve.modules.seeyon.service.SeeYonService; import com.qs.serve.modules.seeyon.service.SeeYonService;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysConfigService; import com.qs.serve.modules.sys.service.SysConfigService;
import com.qs.serve.modules.sys.service.SysUserSalesService;
import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsCostApplyState; import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst; import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
@ -60,7 +61,7 @@ public class TbsCostApplyController {
private SeeYonService seeYonService; private SeeYonService seeYonService;
private TbsBudgetApplicationService budgetApplicationService; private TbsBudgetApplicationService budgetApplicationService;
private SysUserSalesService sysUserSalesService;
/** /**
* 预览 * 预览
@ -74,6 +75,17 @@ public class TbsCostApplyController {
return R.ok(result.getTableData()); return R.ok(result.getTableData());
} }
/**
* 预览2 提交审批后调用
* @param id
* @return
*/
@GetMapping("preview2")
public R<TbsBudgetTableVo> viewTable(Long id){
TbsBudgetTableVo result = budgetApplicationService.buildResultTable(id);
return R.ok(result);
}
/** /**
* 列表 * 列表
* @param param * @param param
@ -90,27 +102,64 @@ public class TbsCostApplyController {
} }
/** /**
* 列表 * 列表(个人及下属的费用申请)
* @param param * @param param
* @return * @return
*/ */
@GetMapping("/listMy") @GetMapping("/listMy")
public R<List<TbsCostApply>> getListMy(TbsCostApplyVo param){ public R<List<TbsCostApply>> getListMy(TbsCostApplyVo param){
String userId = AuthContextUtils.getSysUserId();
List<String> userIds = new ArrayList<>();
if(param.getLoadChild()!=null&&param.getLoadChild().equals(1)){
userIds = sysUserSalesService.listByChildIds(userId);
}else {
userIds.add(userId);
}
TbsCostApply entity = CopierUtil.copy(param,new TbsCostApply()); TbsCostApply entity = CopierUtil.copy(param,new TbsCostApply());
LambdaQueryWrapper<TbsCostApply> lqw = new LambdaQueryWrapper<>(entity); LambdaQueryWrapper<TbsCostApply> lqw = new LambdaQueryWrapper<>(entity);
lqw.eq(TbsCostApply::getCreateBy,AuthContextUtils.getSysUserId()); lqw.in(TbsCostApply::getCreateBy,userIds);
PageUtil.startPage(); PageUtil.startPage();
List<TbsCostApply> list = tbsCostApplyService.list(lqw); List<TbsCostApply> list = tbsCostApplyService.list(lqw);
for (TbsCostApply costApply : list) {
SysUser sysUser = sysUserService.getById(costApply.getCreateBy());
costApply.setUserInfo(sysUser.toSysUserVo());
}
return R.ok(list); return R.ok(list);
} }
/**
* 翻页(个人及下属的费用申请)
* @param param
* @return
*/
@GetMapping("/pageMy")
@PreAuthorize("hasRole('tbs:costApply:query')")
public R<PageVo<TbsCostApply>> getPageMy(TbsCostApplyVo param){
String userId = AuthContextUtils.getSysUserId();
List<String> userIds = new ArrayList<>();
if(param.getLoadChild()!=null&&param.getLoadChild().equals(1)){
userIds = sysUserSalesService.listByChildIds(userId);
}else {
userIds.add(userId);
}
TbsCostApply entity = CopierUtil.copy(param,new TbsCostApply());
LambdaQueryWrapper<TbsCostApply> lqw = new LambdaQueryWrapper<>(entity);
lqw.orderByDesc(TbsCostApply::getId);
PageUtil.startPage();
List<TbsCostApply> list = tbsCostApplyService.list(lqw);
for (TbsCostApply costApply : list) {
SysUser sysUser = sysUserService.getById(costApply.getCreateBy());
costApply.setUserInfo(sysUser.toSysUserVo());
}
return R.byPageHelperList(list);
}
/** /**
* 翻页 * 翻页
* @param param * @param param
* @return * @return
*/ */
@GetMapping("/page") @GetMapping("/page")
@PreAuthorize("hasRole('tbs:costApply:query')")
public R<PageVo<TbsCostApply>> getPage(TbsCostApplyVo param){ public R<PageVo<TbsCostApply>> getPage(TbsCostApplyVo param){
TbsCostApply entity = CopierUtil.copy(param,new TbsCostApply()); TbsCostApply entity = CopierUtil.copy(param,new TbsCostApply());
LambdaQueryWrapper<TbsCostApply> lqw = new LambdaQueryWrapper<>(entity); LambdaQueryWrapper<TbsCostApply> lqw = new LambdaQueryWrapper<>(entity);
@ -205,6 +254,46 @@ public class TbsCostApplyController {
return R.isTrue(result); return R.isTrue(result);
} }
/**
* 审批列表(用于详情页)
* @param costApplyId
* @return
*/
@GetMapping("/ListAffairs")
public R<PageVo<CtpAffairVo>> pageMemberAffair(Long costApplyId){
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
if(!StringUtils.hasText(sysUser.getSyUserId())||!StringUtils.hasText(sysUser.getSyAccount())){
return R.error("当前账号未绑定致远用户信息");
}
TbsCostApply costApplyParam = tbsCostApplyService.getById(costApplyId);
CtpAffairQo param = new CtpAffairQo();
param.setMemberId(sysUser.getSyUserId());
param.setFormMainId(costApplyParam.getSyFormId());
param.setTemplateCodes(Arrays.asList(TbsSeeYonConst.COST_APPLY_FORM));
R<PageVo<CtpAffair>> syResult = seeYonService.pageMemberAffair(param);
PageVo<CtpAffair> pageVo = syResult.getData();
List<CtpAffair> ctpAffairs = pageVo.getList();
if(ctpAffairs.size()>0){
List<String> costApplyIds = ctpAffairs.stream().map(CtpAffair::getCostApplyId).collect(Collectors.toList());
List<TbsCostApply> costApplyList = tbsCostApplyService.listByIds(costApplyIds);
List<CtpAffairVo> result = new ArrayList<>();
for (CtpAffair ctpAffair : ctpAffairs) {
CtpAffairVo ctpAffairVo = new CtpAffairVo();
for (TbsCostApply costApply : costApplyList) {
if(costApply.getId().toString().equals(ctpAffair.getCostApplyId())){
ctpAffairVo.setCostApply(costApply);
break;
}
}
ctpAffairVo.setAffairInfo(ctpAffair);
result.add(ctpAffairVo);
}
PageVo<CtpAffairVo> costApplyPageVo = PageVo.initNewList(pageVo,result);
return R.ok(costApplyPageVo);
}
return R.byEmptyList();
}
/** /**
* 审批列表(翻页) * 审批列表(翻页)
* @param state 状态0-未完成与已完成(默认)1-未完成2已完成3-我发起的其它-被拦截 * @param state 状态0-未完成与已完成(默认)1-未完成2已完成3-我发起的其它-被拦截
@ -213,7 +302,6 @@ public class TbsCostApplyController {
* @return * @return
*/ */
@GetMapping("/pageMemberAffair") @GetMapping("/pageMemberAffair")
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE)
public R<PageVo<CtpAffairVo>> pageMemberAffair(Integer state,Integer pageNum,Integer pageSize){ public R<PageVo<CtpAffairVo>> pageMemberAffair(Integer state,Integer pageNum,Integer pageSize){
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
if(!StringUtils.hasText(sysUser.getSyUserId())||!StringUtils.hasText(sysUser.getSyAccount())){ if(!StringUtils.hasText(sysUser.getSyUserId())||!StringUtils.hasText(sysUser.getSyAccount())){

3
src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java

@ -117,5 +117,8 @@ public class TbsCostApply implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private String affairId; private String affairId;
@TableField(exist = false)
private Object userInfo;
} }

3
src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsCostApplyVo.java

@ -79,5 +79,8 @@ public class TbsCostApplyVo implements Serializable {
@JsonProperty @JsonProperty
private String delFlag; private String delFlag;
/** 加载下属标识 1 是,0否 */
private Integer loadChild;
} }

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

@ -39,6 +39,108 @@ public class TbsBudgetApplicationService {
private SysConfigService configService; private SysConfigService configService;
private TbsActivityMapper activityMapper; private TbsActivityMapper activityMapper;
public TbsBudgetTableVo buildResultTable(Long costApplyId){
//加载活动
LambdaQueryWrapper<TbsActivity> activityLqw = new LambdaQueryWrapper<>();
activityLqw.eq(TbsActivity::getCostApplyId,costApplyId);
List<TbsActivity> activityList = activityMapper.selectList(activityLqw);
//费用占用
LambdaQueryWrapper<TbsBudgetCostItem> costItemLqw = new LambdaQueryWrapper<>();
costItemLqw.eq(TbsBudgetCostItem::getCostApplyId,costApplyId);
List<TbsBudgetCostItem> budgetCostItems = tbsBudgetCostItemService.list(costItemLqw);
//预算
List<Long> budgetIds = budgetCostItems.stream().map(TbsBudgetCostItem::getBudgetId)
.distinct().collect(Collectors.toList());
List<TbsBudget> budgetList = tbsBudgetMapper.selectBatchIds(budgetIds);
List<Long> budgetItemIds = budgetCostItems.stream().map(TbsBudgetCostItem::getScheduleItemBudgetId)
.distinct().collect(Collectors.toList());
List<TbsScheduleItemBudget> scheduleItemList = tbsScheduleItemBudgetService.listByIds(budgetItemIds);
TbsBudgetTableVo tableVo = new TbsBudgetTableVo();
List<TbsBudgetTableVo.TopTheadHeader> topTheadHeaders = new ArrayList<>();
Map<Long,List<TbsBudgetCostItem>> tmpMap = budgetCostItems.stream().collect(Collectors.groupingBy(TbsBudgetCostItem::getScheduleItemBudgetId));
for (Long scheduleItemBudgetId : tmpMap.keySet()) {
if(scheduleItemBudgetId.equals(0L)){continue;}
TbsBudgetCostItem itemBudget = tmpMap.get(scheduleItemBudgetId).get(0);
String budgetCode = null;
for (TbsBudget budget : budgetList) {
if(budget.getId().equals(itemBudget.getBudgetId())){
budgetCode = budget.getBudgetCode();
break;
}
}
String scheduleItemName = null;
for (TbsScheduleItemBudget scheduleItemBudget : scheduleItemList) {
if(scheduleItemBudget.getId().equals(scheduleItemBudgetId)){
scheduleItemName = scheduleItemBudget.getItemName();
break;
}
}
TbsBudgetTableVo.TopTheadHeader theadHeader = new TbsBudgetTableVo.TopTheadHeader();
theadHeader.setId(scheduleItemBudgetId+"");
theadHeader.setLabel(budgetCode+"("+scheduleItemName+")");
BigDecimal totalUsed = BigDecimal.ZERO;
for (TbsBudgetCostItem costItem : tmpMap.get(scheduleItemBudgetId)) {
totalUsed = totalUsed.add(costItem.getCenterGoodsAmount());
}
theadHeader.setBudgetAmount(totalUsed);
topTheadHeaders.add(theadHeader);
}
//自定义超额预算
TbsBudgetTableVo.TopTheadHeader overTopHeader = new TbsBudgetTableVo.TopTheadHeader();
overTopHeader.setId("0");
overTopHeader.setLabel("其它预算");
overTopHeader.setBudgetAmount(BigDecimal.ZERO);
topTheadHeaders.add(overTopHeader);
List<TbsBudgetTableVo.LeftTheadHeader> leftTheadHeaders = new ArrayList<>();
for (TbsBudgetCostItem centerGoods : budgetCostItems) {
TbsActivity activity = null;
for (TbsActivity obj : activityList) {
if(obj.getId().equals(centerGoods.getActivityId())){
activity = obj;
break;
}
}
String actCode = activity==null?centerGoods.getActivityId().toString():activity.getActivityCode();
TbsBudgetTableVo.LeftTheadHeader theadHeader = new TbsBudgetTableVo.LeftTheadHeader();
theadHeader.setActivityCode(actCode);
theadHeader.setId(centerGoods.getCenterGoodItemId()+"");
theadHeader.setSubjectId(centerGoods.getSubjectId());
theadHeader.setSubjectName(centerGoods.getSubjectName());
theadHeader.setCenterId(centerGoods.getCenterId());
theadHeader.setCenterName(centerGoods.getCenterName());
theadHeader.setTargetType(centerGoods.getTargetType());
theadHeader.setTargetId(centerGoods.getTargetId());
if(centerGoods.getTargetType().equals(TbsGoodsType.sku.name())){
centerGoods.initSpuSkuName();
theadHeader.setLabel(centerGoods.getSpuName()+"("+centerGoods.getSkuName()+")");
}else {
theadHeader.setLabel(centerGoods.getTargetName());
}
theadHeader.setLabelCombo(actCode+"-"
+theadHeader.getSubjectName()+"-"
+theadHeader.getCenterName()+"-"
+theadHeader.getLabel());
leftTheadHeaders.add(theadHeader);
}
List<TbsBudgetTableVo.TableValue> tableValueList = new ArrayList<>();
for (TbsBudgetCostItem costItem : budgetCostItems) {
TbsBudgetTableVo.TableValue tableValue = new TbsBudgetTableVo.TableValue();
tableValue.setTopId(costItem.getScheduleItemBudgetId()+"");
tableValue.setLeftId(costItem.getCenterGoodItemId()+"");
tableValue.setValue(costItem.getCenterGoodsAmount());
tableValueList.add(tableValue);
}
tableVo.setTableValueList(tableValueList);
tableVo.setTopTheadHeaderList(topTheadHeaders);
tableVo.setLeftTheadHeaderList(leftTheadHeaders);
return tableVo;
}
/** /**
* 创建费用占用结果 * 创建费用占用结果
* @param costApplyId * @param costApplyId

Loading…
Cancel
Save