Browse Source

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

mssql
Yen 3 years ago
parent
commit
b25ac0ab7e
  1. 1
      src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonServiceImpl.java
  2. 108
      src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java
  3. 16
      src/main/java/com/qs/serve/modules/sys/entity/SysUser.java
  4. 7
      src/main/java/com/qs/serve/modules/sys/entity/SysUserSales.java
  5. 9
      src/main/java/com/qs/serve/modules/sys/service/SysUserSalesService.java
  6. 12
      src/main/java/com/qs/serve/modules/sys/service/impl/SysUserSalesServiceImpl.java
  7. 5
      src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java
  8. 5
      src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java
  9. 9
      src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java
  10. 1
      src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityTemplateController.java
  11. 33
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  12. 2
      src/main/java/com/qs/serve/modules/tbs/controller/TbsScheduleController.java
  13. 12
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java
  14. 37
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java
  15. 7
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

1
src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonServiceImpl.java

@ -97,6 +97,7 @@ public class SeeYonServiceImpl implements SeeYonService {
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));
} }
log.debug("致远data:{}",result.getData());
return result; return result;
} }

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

@ -27,8 +27,7 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -323,6 +322,29 @@ public class SysUserController {
LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
lqw.in(SysUser::getId,userBo.getUserIds()); lqw.in(SysUser::getId,userBo.getUserIds());
sysUserService.update(param,lqw); sysUserService.update(param,lqw);
if(param.getSalesFlag().equals(0)){
sysUserSalesService.removeBatchByIds(userBo.getUserIds());
}else {
List<SysUserSales> existList = sysUserSalesService.listByIds(userBo.getUserIds());
List<SysUserSales> insertList = new ArrayList<>();
for (String userId : userBo.getUserIds()) {
boolean exist = false;
for (SysUserSales userSales : existList) {
if(userId.equals(userSales.getUserId())){
exist = true;
break;
}
}
if(!exist){
SysUserSales userSale = new SysUserSales();
userSale.setUserId(userId);
userSale.setPid("0");
userSale.setPathIds("0_"+userId);
insertList.add(userSale);
}
}
sysUserSalesService.saveBatch(insertList);
}
return R.ok(); return R.ok();
} }
@ -337,34 +359,70 @@ public class SysUserController {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public R<?> updateSalesParent(@RequestBody @Valid SysUserParentParam userBo){ public R<?> updateSalesParent(@RequestBody @Valid SysUserParentParam userBo){
final String pid = userBo.getParentId(); final String pid = userBo.getParentId();
List<SysUserSales> sysUserSalesList = new ArrayList<>(); final List<String> userIds = new ArrayList<>();
if(!userBo.getParentId().equals("0")){ userIds.addAll(userBo.getUserIds());
final SysUserSales userSales = sysUserSalesService.getById(pid); if(!pid.equals("0")){
boolean isExist = false; userIds.add(pid);
if(userSales!=null){ }
isExist = userBo.getUserIds().stream().filter(StringUtils::hasText).anyMatch(objId->userSales.getPid().equals(objId)); List<SysUser> sysUserList = sysUserService.listByIds(userIds);
} for (SysUser sysUser : sysUserList) {
if(isExist&&userBo.getUserIds().size()>1){ if(sysUser.getSalesFlag().equals(0)){
return R.error("多节点操作出现递归数据"); return R.error("["+sysUser.getName()+"]未设置销售属性");
}
if(isExist){
SysUserSales sysUserSales = new SysUserSales();
sysUserSales.setUserId(userSales.getPid());
sysUserSales.setPid(userSales.getUserId());
sysUserSalesList.add(sysUserSales);
} }
} }
List<SysUserSales> sysUserSalesList2 = userBo.getUserIds().stream().filter(StringUtils::hasText).map(uid->{ List<SysUserSales> updateAllList = new ArrayList<>();
SysUserSales sysUserSales = new SysUserSales(); if(pid.equals("0")){
sysUserSales.setUserId(uid); List<SysUserSales> sysUserSales = sysUserSalesService.listByIds(userBo.getUserIds());
sysUserSales.setPid(pid); List<SysUserSales> updateList = this.updateSalesLevel(pid, "0", sysUserSales);
return sysUserSales; updateAllList.addAll(updateList);
}).collect(Collectors.toList()); }else {
sysUserSalesList.addAll(sysUserSalesList2); SysUserSales parent = sysUserSalesService.getById(pid);
sysUserSalesService.saveOrUpdateBatch(sysUserSalesList); List<SysUserSales> sysUserSales = sysUserSalesService.listByIds(userBo.getUserIds());
List<SysUserSales> updateList = this.updateSalesLevel(pid, parent.getPathIds(), sysUserSales);
updateAllList.addAll(updateList);
}
sysUserSalesService.updateBatchById(updateAllList);
return R.ok(); return R.ok();
} }
/**
* 更新id路径
* @param pid
* @param newPrefixPath
* @param sysUserSales
* @return
*/
private List<SysUserSales> updateSalesLevel(String pid,String newPrefixPath,List<SysUserSales> sysUserSales) {
List<SysUserSales> updateList = new ArrayList<>();
for (SysUserSales userSale : sysUserSales) {
String pathIds = userSale.getPathIds();
String oldPrefixPath = pathIds.substring(0,pathIds.lastIndexOf(userSale.getUserId())-1);
userSale.setPathIds(newPrefixPath+"_"+userSale.getUserId());
userSale.setPid(pid);
updateList.add(userSale);
//更新子节点
List<SysUserSales> childList = sysUserSalesService.listByPathId(pathIds);
for (SysUserSales childNode : childList) {
String childPathIds = newPrefixPath + childNode.getPathIds().replace(oldPrefixPath,"");
String[] arr = childPathIds.split("_");
Set<String> setStr = new HashSet<>();
for (String strv : arr) {
setStr.add(strv);
}
String lastId = arr[arr.length-1];
if(!lastId.equals(childNode.getUserId())||userSale.getUserId().equals(childNode.getUserId())){
continue;
}
if(setStr.size()<arr.length){
Assert.throwEx("出现递归节点");
}
childNode.setPathIds(childPathIds);
updateList.add(childNode);
}
}
return updateList;
}
/** /**
* 删除 * 删除
* @param id * @param id

16
src/main/java/com/qs/serve/modules/sys/entity/SysUser.java

@ -9,7 +9,9 @@ import cn.hutool.core.util.DesensitizedUtil;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.sys.entity.dto.SysUserSimpleVo; import com.qs.serve.modules.sys.entity.dto.SysUserSimpleVo;
import com.qs.serve.modules.sys.entity.dto.SysUserVo; import com.qs.serve.modules.sys.entity.dto.SysUserVo;
import lombok.Data; import lombok.Data;
@ -192,6 +194,20 @@ public class SysUser implements Serializable {
return sysUserVo; return sysUserVo;
} }
public boolean checkSyAccount(){
return checkSyAccount(true);
}
public boolean checkSyAccount(boolean throwEx){
if(StringUtils.hasText(this.getSyAccount())&&StringUtils.hasText(this.getSyUserId())){
return true;
}
if(throwEx){
Assert.throwEx("当前账号未设置致远信息");
}
return false;
}
/** /**
* 返回前端过滤敏感信息 * 返回前端过滤敏感信息
* @return * @return

7
src/main/java/com/qs/serve/modules/sys/entity/SysUserSales.java

@ -34,6 +34,8 @@ public class SysUserSales implements Serializable {
@Length(max = 32,message = "父级id长度不能超过32字") @Length(max = 32,message = "父级id长度不能超过32字")
private String pid; private String pid;
private String pathIds;
/** 创建时间 */ /** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ -59,10 +61,5 @@ public class SysUserSales implements Serializable {
@JsonProperty @JsonProperty
private String tenantId; private String tenantId;
/** 删除标识 */
@JsonIgnore
@JsonProperty
private Boolean delFlag;
} }

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

@ -20,5 +20,14 @@ public interface SysUserSalesService extends IService<SysUserSales> {
*/ */
List<SysUserSales> selectSysUserSalesList(SysUserSales userSales); List<SysUserSales> selectSysUserSalesList(SysUserSales userSales);
/**
* 通过路径查询
* @param pathId
* @return
*/
List<SysUserSales> listByPathId(String pathId);
} }

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

@ -1,6 +1,8 @@
package com.qs.serve.modules.sys.service.impl; package com.qs.serve.modules.sys.service.impl;
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.StringUtils;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -8,6 +10,7 @@ import com.qs.serve.modules.sys.entity.SysUserSales;
import com.qs.serve.modules.sys.service.SysUserSalesService; 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.List; import java.util.List;
/** /**
@ -25,5 +28,14 @@ public class SysUserSalesServiceImpl extends ServiceImpl<SysUserSalesMapper,SysU
return baseMapper.selectSysUserSalesList(userSales); return baseMapper.selectSysUserSalesList(userSales);
} }
@Override
public List<SysUserSales> listByPathId(String pathId) {
if(!StringUtils.hasText(pathId)){
return new ArrayList<>();
}
LambdaQueryWrapper<SysUserSales> lqw = new LambdaQueryWrapper<>();
lqw.likeRight(SysUserSales::getPathIds,pathId);
return this.list(lqw);
}
} }

5
src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java

@ -11,12 +11,13 @@ import lombok.Getter;
@AllArgsConstructor @AllArgsConstructor
public enum TbsCostApplyState { public enum TbsCostApplyState {
//状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回 //状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回;5-中止
State_0_unPublish(0), State_0_unPublish(0),
State_1_apply(1), State_1_apply(1),
State_2_actioning(2), State_2_actioning(2),
State_3_finished(3), State_3_finished(3),
State_4_refused(4); State_4_refused(4),
State_5_stop(5);
private Integer code; private Integer code;

5
src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java

@ -6,9 +6,10 @@ package com.qs.serve.modules.tbs.common;
*/ */
public interface TbsSeeYonConst { public interface TbsSeeYonConst {
String COST_APPLY_FORM = "CostBill_Test"; String PRE_TITLE_COST_APPLY = "【预算费用申请】";
String PRE_TITLE_VERIFICATION = "【预算费用核销】";
String COST_APPLY_USER = "banzhang1"; String COST_APPLY_FORM = "CostBill_Test";
String API_PROCESS_CREATE = "/process/create"; String API_PROCESS_CREATE = "/process/create";
String API_PROCESS_COMMIT = "/process/commit"; String API_PROCESS_COMMIT = "/process/commit";

9
src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java

@ -249,6 +249,15 @@ public class TbsActivityController {
return R.error("因费用状态不支持编辑!!"); return R.error("因费用状态不支持编辑!!");
} }
boolean result = tbsActivityService.removeById(id); boolean result = tbsActivityService.removeById(id);
//删除子表数据
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("activity_id",id);
activitySubjectService.remove(queryWrapper);
activityGoodsService.remove(queryWrapper);
activityChannelPointService.remove(queryWrapper);
activityChannelService.remove(queryWrapper);
activityCenterService.remove(queryWrapper);
activityCenterGoodsService.remove(queryWrapper);
//删除活动数量到费用申请 //删除活动数量到费用申请
TbsCostApply costApplyParam = new TbsCostApply(); TbsCostApply costApplyParam = new TbsCostApply();
costApplyParam.setId(costApply.getId()); costApplyParam.setId(costApply.getId());

1
src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityTemplateController.java

@ -66,6 +66,7 @@ public class TbsActivityTemplateController {
public R<PageVo<TbsActivityTemplate>> getPage(TbsActivityTemplateSo param){ public R<PageVo<TbsActivityTemplate>> getPage(TbsActivityTemplateSo param){
TbsActivityTemplate entity = CopierUtil.copy(param,new TbsActivityTemplate()); TbsActivityTemplate entity = CopierUtil.copy(param,new TbsActivityTemplate());
LambdaQueryWrapper<TbsActivityTemplate> lqw = new LambdaQueryWrapper<>(entity); LambdaQueryWrapper<TbsActivityTemplate> lqw = new LambdaQueryWrapper<>(entity);
lqw.orderByDesc(TbsActivityTemplate::getId);
PageUtil.startPage(); PageUtil.startPage();
List<TbsActivityTemplate> list = tbsActivityTemplateService.list(lqw); List<TbsActivityTemplate> list = tbsActivityTemplateService.list(lqw);
return R.byPageHelperList(list); return R.byPageHelperList(list);

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

@ -89,6 +89,21 @@ public class TbsCostApplyController {
return R.ok(list); return R.ok(list);
} }
/**
* 列表
* @param param
* @return
*/
@GetMapping("/listMy")
public R<List<TbsCostApply>> getListMy(TbsCostApplyVo param){
TbsCostApply entity = CopierUtil.copy(param,new TbsCostApply());
LambdaQueryWrapper<TbsCostApply> lqw = new LambdaQueryWrapper<>(entity);
lqw.eq(TbsCostApply::getCreateBy,AuthContextUtils.getSysUserId());
PageUtil.startPage();
List<TbsCostApply> list = tbsCostApplyService.list(lqw);
return R.ok(list);
}
/** /**
* 翻页 * 翻页
* @param param * @param param
@ -99,6 +114,7 @@ public class TbsCostApplyController {
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);
lqw.orderByDesc(TbsCostApply::getId);
PageUtil.startPage(); PageUtil.startPage();
List<TbsCostApply> list = tbsCostApplyService.list(lqw); List<TbsCostApply> list = tbsCostApplyService.list(lqw);
return R.byPageHelperList(list); return R.byPageHelperList(list);
@ -191,7 +207,7 @@ public class TbsCostApplyController {
/** /**
* 审批列表(翻页) * 审批列表(翻页)
* @param state 状态0-未完成与已完成1-未完成2已完成其它-加载所有 * @param state 状态0-未完成与已完成(默认)1-未完成2已完成3-我发起的其它-被拦截
* @param pageNum * @param pageNum
* @param pageSize * @param pageSize
* @return * @return
@ -242,6 +258,7 @@ public class TbsCostApplyController {
@PreAuthorize("hasRole('tbs:costApply:commit')") @PreAuthorize("hasRole('tbs:costApply:commit')")
public R<?> commitAffair(@RequestBody @Valid TbsAffairCommitBo affairCommit){ public R<?> commitAffair(@RequestBody @Valid TbsAffairCommitBo affairCommit){
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
sysUser.checkSyAccount();
TbsCostApply costApply = tbsCostApplyService.getById(affairCommit.getCostApplyId()); TbsCostApply costApply = tbsCostApplyService.getById(affairCommit.getCostApplyId());
if(!costApply.getChargeState().equals(TbsCostApplyState.State_1_apply.getCode())){ if(!costApply.getChargeState().equals(TbsCostApplyState.State_1_apply.getCode())){
return R.error("费用申请处于未非审批状态!"); return R.error("费用申请处于未非审批状态!");
@ -250,9 +267,9 @@ public class TbsCostApplyController {
param.setState(affairCommit.getState()); param.setState(affairCommit.getState());
param.setAffairId(affairCommit.getAffairId()); param.setAffairId(affairCommit.getAffairId());
param.setComment(affairCommit.getComment()); param.setComment(affairCommit.getComment());
if(affairCommit.getState().equals(0)){ if(affairCommit.getState().equals(1)){
param.setMemberId(sysUser.getSyUserId()); param.setMemberId(sysUser.getSyUserId());
}else if(affairCommit.getState().equals(1)){ }else if(affairCommit.getState().equals(0)){
param.setMemberId(sysUser.getSyAccount()); param.setMemberId(sysUser.getSyAccount());
}else { }else {
Assert.throwEx("param err2"); Assert.throwEx("param err2");
@ -267,11 +284,17 @@ public class TbsCostApplyController {
apply.setId(costApply.getId()); apply.setId(costApply.getId());
apply.setChargeState(TbsCostApplyState.State_2_actioning.getCode()); apply.setChargeState(TbsCostApplyState.State_2_actioning.getCode());
tbsCostApplyService.updateById(apply); tbsCostApplyService.updateById(apply);
}else if ("refused".equals(flag)){ }else if ("stop".equals(flag)){
//todo 退回节点 TbsCostApply apply = new TbsCostApply();
apply.setId(costApply.getId());
apply.setChargeState(TbsCostApplyState.State_5_stop.getCode());
tbsCostApplyService.updateById(apply);
return R.ok();
}else if ("next".equals(flag)){ }else if ("next".equals(flag)){
return R.ok(); return R.ok();
} }
}else if (result.getStatus()==500){
return result;
} }
return R.error("远程调用失败"); return R.error("远程调用失败");
} }

2
src/main/java/com/qs/serve/modules/tbs/controller/TbsScheduleController.java

@ -68,6 +68,7 @@ public class TbsScheduleController {
public R<PageVo<TbsSchedule>> getPage(TbsScheduleVo param){ public R<PageVo<TbsSchedule>> getPage(TbsScheduleVo param){
TbsSchedule entity = CopierUtil.copy(param,new TbsSchedule()); TbsSchedule entity = CopierUtil.copy(param,new TbsSchedule());
LambdaQueryWrapper<TbsSchedule> lqw = new LambdaQueryWrapper<>(entity); LambdaQueryWrapper<TbsSchedule> lqw = new LambdaQueryWrapper<>(entity);
lqw.orderByDesc(TbsSchedule::getId);
PageUtil.startPage(); PageUtil.startPage();
List<TbsSchedule> list = tbsScheduleService.list(lqw); List<TbsSchedule> list = tbsScheduleService.list(lqw);
return R.byPageHelperList(list); return R.byPageHelperList(list);
@ -98,7 +99,6 @@ public class TbsScheduleController {
@SysLog(module = SystemModule.Budget, title = "考核期", biz = BizType.UPDATE) @SysLog(module = SystemModule.Budget, title = "考核期", biz = BizType.UPDATE)
@PreAuthorize("hasRole('tbs:schedule:update')") @PreAuthorize("hasRole('tbs:schedule:update')")
public R<?> updateById(@RequestBody @Valid TbsSchedule entity){ public R<?> updateById(@RequestBody @Valid TbsSchedule entity){
// TbsSchedule entity = CopierUtil.copy(param,new TbsSchedule());
LambdaQueryWrapper<TbsBudget> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TbsBudget> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsBudget::getScheduleId,entity.getId()); lqw.eq(TbsBudget::getScheduleId,entity.getId());
if(tbsBudgetService.count(lqw)>0){ if(tbsBudgetService.count(lqw)>0){

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

@ -151,7 +151,7 @@ public class TbsBudgetApplicationService {
TbsBudgetTableVo.TopTheadHeader theadHeader = new TbsBudgetTableVo.TopTheadHeader(); TbsBudgetTableVo.TopTheadHeader theadHeader = new TbsBudgetTableVo.TopTheadHeader();
theadHeader.setId(scheduleItemBudgetId+""); theadHeader.setId(scheduleItemBudgetId+"");
theadHeader.setLabel(budgetCode+"("+scheduleItemName+")"); theadHeader.setLabel(budgetCode+"("+scheduleItemName+")");
BigDecimal totalUsed = TbsBudgetCostUtil.totalHisCost(hisCostGroupByItemBudget.get(itemBudget.getId())); BigDecimal totalUsed = TbsBudgetCostUtil.totalHisCost(hisCostGroupByItemBudget.get(scheduleItemBudgetId));
theadHeader.setBudgetAmount(budgetAmount.subtract(totalUsed)); theadHeader.setBudgetAmount(budgetAmount.subtract(totalUsed));
topTheadHeaders.add(theadHeader); topTheadHeaders.add(theadHeader);
} }
@ -257,7 +257,7 @@ public class TbsBudgetApplicationService {
//当前项费用 //当前项费用
BigDecimal budgetAmount = itemBudget.getBudgetAmount(); BigDecimal budgetAmount = itemBudget.getBudgetAmount();
//前置费用 //前置费用
BigDecimal lastAmount = counterMap.get(itemBudget.getId()); BigDecimal lastAmount = counterMap.get(itemBudget.getId());
if(lastAmount==null){ if(lastAmount==null){
lastAmount = BigDecimal.ZERO; lastAmount = BigDecimal.ZERO;
} }
@ -291,11 +291,11 @@ public class TbsBudgetApplicationService {
}else if (throwEx){ }else if (throwEx){
Assert.throwEx("品类["+ activityCostItem.getTargetName()+"]预算不足"); Assert.throwEx("品类["+ activityCostItem.getTargetName()+"]预算不足");
} }
activityCostItem.setBudgetId(0L);
activityCostItem.setScheduleId(0L);
activityCostItem.setScheduleItemId(0L);
activityCostItem.setScheduleItemBudgetId(0L);
} }
activityCostItem.setBudgetId(0L);
activityCostItem.setScheduleId(0L);
activityCostItem.setScheduleItemId(0L);
activityCostItem.setScheduleItemBudgetId(0L);
actMatchList.add(activityCostItem); actMatchList.add(activityCostItem);
}else { }else {
if(throwEx){ if(throwEx){

37
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java

@ -87,6 +87,11 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
} }
BmsSupplier supplier = supplierService.getById(costApply.getSupplierId()); BmsSupplier supplier = supplierService.getById(costApply.getSupplierId());
TbsActivity activity; TbsActivity activity;
//活动总金额
BigDecimal totalAmount = BigDecimal.ZERO;
for (TbsActivityCenterGoodsBo centerGoodsBo : activityBo.getActivityCenterGoodsList()) {
totalAmount = totalAmount.add(centerGoodsBo.getCenterGoodsAmount());
}
if(activityBo.getId()!=null){ if(activityBo.getId()!=null){
activity = this.getById(activityBo.getId()); activity = this.getById(activityBo.getId());
if(activity==null){ if(activity==null){
@ -96,27 +101,20 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
activity = CopierUtil.copy(activityBo,new TbsActivity()); activity = CopierUtil.copy(activityBo,new TbsActivity());
String random = String.format("%03d",new Random().nextInt(999)); String random = String.format("%03d",new Random().nextInt(999));
activity.setActivityCode("G"+ StringUtils.genShortId() + random); activity.setActivityCode("G"+ StringUtils.genShortId() + random);
//添加活动数量到费用申请
TbsCostApply costApplyParam = new TbsCostApply();
costApplyParam.setId(costApply.getId());
costApplyParam.setTotalActivity(costApply.getTotalActivity()+1);
costApplyService.updateById(costApplyParam);
} }
activity.setTemplateValue(activityBo.getTemplateValue()); activity.setTemplateValue(activityBo.getTemplateValue());
activity.setSupplierId(Long.parseLong(supplier.getId())); activity.setSupplierId(Long.parseLong(supplier.getId()));
activity.setSupplierCode(supplier.getCode()); activity.setSupplierCode(supplier.getCode());
activity.setSupplierName(supplier.getName()); activity.setSupplierName(supplier.getName());
boolean isUpdate = activity.getId()!=null; boolean isUpdate = activity.getId()!=null;
BigDecimal totalAmount = BigDecimal.ZERO;
for (TbsActivityCenterGoodsBo centerGoodsBo : activityBo.getActivityCenterGoodsList()) {
totalAmount = totalAmount.add(centerGoodsBo.getCenterGoodsAmount());
}
activity.setTotalAmount(totalAmount); activity.setTotalAmount(totalAmount);
SysConfig sysConfig = configService.getByKey(SysConfigKey.ActivityPreCheckDays); SysConfig sysConfig = configService.getByKey(SysConfigKey.ActivityPreCheckDays);
Integer days = Integer.parseInt(sysConfig.getConfigValue()); Integer days = Integer.parseInt(sysConfig.getConfigValue());
LocalDate preDay = DateUtils.beSetDate(activity.getActEndDate(),days); LocalDate preDay = DateUtils.beSetDate(activity.getActEndDate(),days);
activity.setPreCheckDate(preDay); activity.setPreCheckDate(preDay);
this.saveOrUpdate(activity); this.saveOrUpdate(activity);
//统计费用信息
this.updateCostTotal(costApply.getId());
if(isUpdate){ if(isUpdate){
//删除旧数据 //删除旧数据
QueryWrapper qw = new QueryWrapper<>(); QueryWrapper qw = new QueryWrapper<>();
@ -169,6 +167,26 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
activityCenterGoodsService.saveBatch(activityCenterGoodsList); activityCenterGoodsService.saveBatch(activityCenterGoodsList);
} }
/**
* 更新活动数量总金额到费用申请
* @param costApplyId
*/
private void updateCostTotal(Long costApplyId) {
LambdaQueryWrapper<TbsActivity> lqw = new LambdaQueryWrapper<>();
lqw.select(TbsActivity::getTotalAmount);
lqw.eq(TbsActivity::getCostApplyId,costApplyId);
List<TbsActivity> activityList = list(lqw);
BigDecimal totalCostAmount = BigDecimal.ZERO;
for (TbsActivity tbsActivity : activityList) {
totalCostAmount = totalCostAmount.add(tbsActivity.getTotalAmount());
}
TbsCostApply costApplyParam = new TbsCostApply();
costApplyParam.setId(costApplyId);
costApplyParam.setTotalActivity(activityList.size());
costApplyParam.setTotalActivityAmount(totalCostAmount);
costApplyService.updateById(costApplyParam);
}
private void initChannelsAndSave(TbsActivityBo activityBo,TbsCostApply costApply,TbsActivity activity){ private void initChannelsAndSave(TbsActivityBo activityBo,TbsCostApply costApply,TbsActivity activity){
if(CollectionUtil.isNotEmpty(activityBo.getActivityChannelList())){ if(CollectionUtil.isNotEmpty(activityBo.getActivityChannelList())){
List<TbsActivityChannel> activityChannelList = new ArrayList<>(); List<TbsActivityChannel> activityChannelList = new ArrayList<>();
@ -365,7 +383,6 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
if(totalRate.compareTo(new BigDecimal(100))!=0){ if(totalRate.compareTo(new BigDecimal(100))!=0){
Assert.throwEx("成本中心费用配比有误"); Assert.throwEx("成本中心费用配比有误");
} }
//todo 判断是否允许超预算
} }
} }

7
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

@ -51,11 +51,12 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
public void commitApply(String id) { public void commitApply(String id) {
TbsCostApply tbsCostApply = this.getById(id); TbsCostApply tbsCostApply = this.getById(id);
if(!tbsCostApply.getChargeState().equals(TbsCostApplyState.State_0_unPublish.getCode()) if(!tbsCostApply.getChargeState().equals(TbsCostApplyState.State_0_unPublish.getCode())
||!tbsCostApply.getChargeState().equals(TbsCostApplyState.State_4_refused.getCode())){ &&!tbsCostApply.getChargeState().equals(TbsCostApplyState.State_4_refused.getCode())){
Assert.throwEx("操作失败,申请费用状态不支持"); Assert.throwEx("操作失败,申请费用状态不支持");
} }
TbsBudgetCostResult result = budgetApplicationService.buildBudgetCostResult(tbsCostApply.getId(),true,false); TbsBudgetCostResult result = budgetApplicationService.buildBudgetCostResult(tbsCostApply.getId(),true,false);
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
sysUser.checkSyAccount();
if(tbsCostApply.getChargeState().equals(TbsCostApplyState.State_0_unPublish.getCode())){ if(tbsCostApply.getChargeState().equals(TbsCostApplyState.State_0_unPublish.getCode())){
Map<String, Object> data = new HashMap<>(10); Map<String, Object> data = new HashMap<>(10);
data.put("empId",sysUser.getCode()); data.put("empId",sysUser.getCode());
@ -65,8 +66,8 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
data.put("costApplyId",tbsCostApply.getId()); data.put("costApplyId",tbsCostApply.getId());
BaseCreateProcessBo createProcess = new BaseCreateProcessBo(); BaseCreateProcessBo createProcess = new BaseCreateProcessBo();
createProcess.setTemplateCode(TbsSeeYonConst.COST_APPLY_FORM); createProcess.setTemplateCode(TbsSeeYonConst.COST_APPLY_FORM);
createProcess.setMemberLoginName(TbsSeeYonConst.COST_APPLY_USER); createProcess.setMemberLoginName(sysUser.getSyAccount());
createProcess.setSubjectTitle(tbsCostApply.getChargeTheme()); createProcess.setSubjectTitle(TbsSeeYonConst.PRE_TITLE_COST_APPLY + tbsCostApply.getChargeTheme());
createProcess.setDataJson(JsonUtil.objectToJson(data)); createProcess.setDataJson(JsonUtil.objectToJson(data));
R<String> flowIdResult = seeYonService.baseCreateProcess(createProcess); R<String> flowIdResult = seeYonService.baseCreateProcess(createProcess);
if(flowIdResult.getStatus()!=200){ if(flowIdResult.getStatus()!=200){

Loading…
Cancel
Save