Browse Source

添加H5附件上传;新增核销模板相关字段;客户区域变得的费用预算调整

contract
Yen 2 years ago
parent
commit
184170c1a9
  1. 8
      src/main/java/com/qs/serve/common/model/consts/BudgetLogOptFlag.java
  2. 7
      src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java
  3. 7
      src/main/java/com/qs/serve/modules/bms/mapper/BmsSubjectMapper.java
  4. 154
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java
  5. 2
      src/main/java/com/qs/serve/modules/sys/controller/SysAttachController.java
  6. 17
      src/main/java/com/qs/serve/modules/sys/controller/api/SysDictApi.java
  7. 29
      src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java
  8. 3
      src/main/java/com/qs/serve/modules/tbs/entity/TbsActivitySubject.java
  9. 38
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetLog.java
  10. 18
      src/main/java/com/qs/serve/modules/tbs/entity/TbsCostUnItem.java
  11. 15
      src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationSubject.java
  12. 15
      src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationSubjectBo.java
  13. 5
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

8
src/main/java/com/qs/serve/common/model/consts/BudgetLogOptFlag.java

@ -15,4 +15,12 @@ public interface BudgetLogOptFlag {
Integer State_5 = 5; Integer State_5 = 5;
Integer State_6 = 6; Integer State_6 = 6;
/** 7-销售区域迁移调增,8-销售区域迁移调减 */
Integer State_7 = 7;
Integer State_8 = 8;
/** 9-行政区域迁移调增,10-行政区域迁移调减 */
Integer State_9 = 9;
Integer State_10 = 10;
} }

7
src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java

@ -14,6 +14,8 @@ import com.qs.serve.modules.bms.entity.BmsSubjectForm;
import com.qs.serve.modules.bms.entity.bo.BmsCostCenterBo; import com.qs.serve.modules.bms.entity.bo.BmsCostCenterBo;
import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo; import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo;
import com.qs.serve.modules.bms.entity.vo.BmsSubjectTreeVo; import com.qs.serve.modules.bms.entity.vo.BmsSubjectTreeVo;
import com.qs.serve.modules.bms.mapper.BmsSubjectMapper;
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper;
import com.qs.serve.modules.bms.service.BmsSubjectFormService; import com.qs.serve.modules.bms.service.BmsSubjectFormService;
import com.qs.serve.modules.tbs.entity.TbsActivitySubject; import com.qs.serve.modules.tbs.entity.TbsActivitySubject;
import com.qs.serve.modules.tbs.service.TbsActivitySubjectService; import com.qs.serve.modules.tbs.service.TbsActivitySubjectService;
@ -41,6 +43,7 @@ import java.util.stream.Collectors;
public class BmsSubjectController { public class BmsSubjectController {
private BmsSubjectService bmsSubjectService; private BmsSubjectService bmsSubjectService;
private BmsSubjectMapper bmsSubjectMapper;
private TbsActivitySubjectService activitySubjectService; private TbsActivitySubjectService activitySubjectService;
private BmsSubjectFormService bmsSubjectFormService; private BmsSubjectFormService bmsSubjectFormService;
@ -132,7 +135,9 @@ public class BmsSubjectController {
bmsSubjectService.updatePathNameByParent(subject); bmsSubjectService.updatePathNameByParent(subject);
} }
} }
if(subject.getFormId()==null){
bmsSubjectMapper.removeFormId(subject.getId());
}
} }
/** /**

7
src/main/java/com/qs/serve/modules/bms/mapper/BmsSubjectMapper.java

@ -1,7 +1,10 @@
package com.qs.serve.modules.bms.mapper; package com.qs.serve.modules.bms.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.bms.entity.BmsSubject; import com.qs.serve.modules.bms.entity.BmsSubject;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
/** /**
* 科目 Mapper * 科目 Mapper
@ -10,5 +13,9 @@ import com.qs.serve.modules.bms.entity.BmsSubject;
*/ */
public interface BmsSubjectMapper extends BaseMapper<BmsSubject> { public interface BmsSubjectMapper extends BaseMapper<BmsSubject> {
@InterceptorIgnore(tenantLine = "1")
@Update("update bms_subject set form_id = null where id = #{id}")
int removeFormId(@Param("id") Long id);
} }

154
src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java

@ -2,6 +2,7 @@ package com.qs.serve.modules.bms.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.model.consts.BudgetLogOptFlag;
import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.CopierUtil;
@ -16,12 +17,10 @@ import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsCenterType; import com.qs.serve.modules.tbs.common.TbsCenterType;
import com.qs.serve.modules.tbs.common.TbsGoodsType; import com.qs.serve.modules.tbs.common.TbsGoodsType;
import com.qs.serve.modules.tbs.entity.TbsBudget; import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.entity.TbsBudgetCondition; import com.qs.serve.modules.tbs.mapper.*;
import com.qs.serve.modules.tbs.entity.TbsBudgetLog; import com.qs.serve.modules.tbs.service.TbsBudgetLogService;
import com.qs.serve.modules.tbs.mapper.TbsBudgetConditionMapper; import com.qs.serve.modules.tbs.service.TbsCostUnItemService;
import com.qs.serve.modules.tbs.mapper.TbsBudgetLogMapper;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
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;
@ -30,6 +29,8 @@ import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; import com.qs.serve.modules.bms.mapper.BmsSupplierMapper;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -49,9 +50,13 @@ public class BmsSupplierServiceImpl extends ServiceImpl<BmsSupplierMapper,BmsSup
private BmsRegionService regionService; private BmsRegionService regionService;
private BmsRegion2Service region2Service; private BmsRegion2Service region2Service;
private SysUserService sysUserService; private SysUserService sysUserService;
private TbsBudgetLogMapper budgetLogMapper; private TbsBudgetLogService budgetLogService;
private TbsCostUnItemService costUnItemService;
private TbsBudgetMapper budgetMapper; private TbsBudgetMapper budgetMapper;
private TbsBudgetConditionMapper budgetConditionMapper; private TbsBudgetConditionMapper budgetConditionMapper;
private TbsScheduleItemBudgetMapper scheduleItemBudgetMapper;
private TbsActivityMapper activityMapper;
@Override @Override
public List<BmsSupplier> selectSupplierList(BmsSupplier bmsSupplier) { public List<BmsSupplier> selectSupplierList(BmsSupplier bmsSupplier) {
@ -91,22 +96,26 @@ public class BmsSupplierServiceImpl extends ServiceImpl<BmsSupplierMapper,BmsSup
supplier.setPid(null); supplier.setPid(null);
supplier.setParentCode(null); supplier.setParentCode(null);
} }
if(param.getRegionId()!=null){ String saleRegion = param.getRegionId();
if(saleRegion!=null){
//绑定销售区域逻辑 //绑定销售区域逻辑
this.initRegion(supplier,param.getRegionId()); this.initRegion(supplier,saleRegion);
//判断是否需要迁移数据 //判断是否需要迁移数据
if(editId!=null if(editId!=null
&& orgSaleRegionId!=null && orgSaleRegionId!=null
&&!orgSaleRegionId.equals(param.getRegionId())){ &&!orgSaleRegionId.equals(saleRegion)){
migrateRegion(editId,TbsCenterType.saleRegion.name(), orgSaleRegionId, orgBizRegionId); migrateRegion(editId,TbsCenterType.saleRegion.name(), orgSaleRegionId,saleRegion);
} }
} }
if(param.getRegionId2()!=null){ String bizRegion = param.getRegionId2();
if(bizRegion!=null){
//绑定行政区域逻辑 //绑定行政区域逻辑
this.initRegion2(supplier,param.getRegionId2()); this.initRegion2(supplier,bizRegion);
//判断是否需要迁移数据 //判断是否需要迁移数据
if(!orgBizRegionId.equals(param.getRegionId2())){ if(editId!=null
&&orgBizRegionId != null
&&!orgBizRegionId.equals(bizRegion)){
migrateRegion(editId,TbsCenterType.bizRegion.name(), orgBizRegionId, bizRegion);
} }
} }
this.saveOrUpdate(supplier); this.saveOrUpdate(supplier);
@ -115,24 +124,41 @@ public class BmsSupplierServiceImpl extends ServiceImpl<BmsSupplierMapper,BmsSup
private void migrateRegion(String supplierId, String regionType, String orgRegionId, String newRegionId) { private void migrateRegion(String supplierId, String regionType, String orgRegionId, String newRegionId) {
//todo 开发中 //todo 开发中
if(1==1){return;} if(1==1){return;}
LocalDateTime nowTime = LocalDateTime.now();
LambdaQueryWrapper<TbsBudgetLog> lqw4log = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TbsBudgetLog> lqw4log = new LambdaQueryWrapper<>();
lqw4log.eq(TbsBudgetLog::getMigrateFlag,0); lqw4log.eq(TbsBudgetLog::getMigrateFlag,0);
lqw4log.eq(TbsBudgetLog::getRollbackFlag,0); lqw4log.eq(TbsBudgetLog::getRollbackFlag,0);
lqw4log.eq(TbsBudgetLog::getSupplierId, supplierId); lqw4log.eq(TbsBudgetLog::getSupplierId, supplierId);
lqw4log.eq(TbsBudgetLog::getCenterType, regionType); lqw4log.eq(TbsBudgetLog::getCenterType, regionType);
lqw4log.eq(TbsBudgetLog::getCenterId, orgRegionId); lqw4log.eq(TbsBudgetLog::getCenterId, orgRegionId);
List<TbsBudgetLog> budgetLogList = budgetLogMapper.selectList(lqw4log); List<TbsBudgetLog> budgetLogList = budgetLogService.list(lqw4log);
if(CollectionUtil.isNotEmpty(budgetLogList)){ if(CollectionUtil.isNotEmpty(budgetLogList)){
//查找符合条件的活动
final List<Long> activityIds = budgetLogList.stream().map(TbsBudgetLog::getActivityId).distinct().collect(Collectors.toList());
LambdaQueryWrapper<TbsActivity> lqwAct = new LambdaQueryWrapper<>();
lqwAct.in(TbsActivity::getId,activityIds);
List<TbsActivity> activityList = activityMapper.selectList(lqwAct);
//查询符合条件的预算 //查询符合条件的预算
final List<Long> subjectIds = budgetLogList.stream().map(TbsBudgetLog::getSubjectId).distinct().collect(Collectors.toList()); final List<Long> subjectIds = budgetLogList.stream().map(TbsBudgetLog::getSubjectId).distinct().collect(Collectors.toList());
LambdaQueryWrapper<TbsBudget> lqwBudget = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TbsBudget> lqwBudget = new LambdaQueryWrapper<>();
lqwBudget.eq(TbsBudget::getCenterType,regionType); lqwBudget.eq(TbsBudget::getCenterType,regionType);
lqwBudget.eq(TbsBudget::getCenterId, newRegionId); lqwBudget.eq(TbsBudget::getCenterId, newRegionId);
lqwBudget.eq(TbsBudget::getBudgetState,1);
lqwBudget.and(wq->{ lqwBudget.and(wq->{
wq.eq(TbsBudget::getSubjectId,0).or().in(TbsBudget::getSubjectId,subjectIds); wq.eq(TbsBudget::getSubjectId,0).or().in(TbsBudget::getSubjectId,subjectIds);
}); });
lqwBudget.orderByDesc(TbsBudget::getSubjectId); //将有科目条件的前置 // 将有科目条件的前置
lqwBudget.orderByDesc(TbsBudget::getSubjectId);
List<TbsBudget> budgetList = budgetMapper.selectList(lqwBudget); List<TbsBudget> budgetList = budgetMapper.selectList(lqwBudget);
//查询预算考核期
List<Long> budgetIds = budgetList.stream().map(TbsBudget::getId).distinct().collect(Collectors.toList());
Map<Long,List<TbsScheduleItemBudget>> scheduleItemBudgetsMap = null;
if(CollectionUtil.isNotEmpty(budgetIds)){
LambdaQueryWrapper<TbsScheduleItemBudget> budgetItemLqw = new LambdaQueryWrapper<>();
budgetItemLqw.in(TbsScheduleItemBudget::getBudgetId,budgetIds);
List<TbsScheduleItemBudget> scheduleItemBudgets = scheduleItemBudgetMapper.selectList(budgetItemLqw);
scheduleItemBudgetsMap = scheduleItemBudgets.stream().collect(Collectors.groupingBy(TbsScheduleItemBudget::getBudgetId));
}
//查询预算条件 //查询预算条件
List<Long> conditionBudgetIds = budgetList.stream() List<Long> conditionBudgetIds = budgetList.stream()
.filter(a->a.getConditionFlag().equals(1)) .filter(a->a.getConditionFlag().equals(1))
@ -152,8 +178,33 @@ public class BmsSupplierServiceImpl extends ServiceImpl<BmsSupplierMapper,BmsSup
TbsGoodsType.category, TbsGoodsType.category,
TbsGoodsType.brand TbsGoodsType.brand
}; };
//已占用预算进行调增
final Integer optType4Diff = regionType.equals(TbsCenterType.saleRegion.name())?
BudgetLogOptFlag.State_8:BudgetLogOptFlag.State_10;
final Integer optType4Add = regionType.equals(TbsCenterType.saleRegion.name())?
BudgetLogOptFlag.State_7:BudgetLogOptFlag.State_9;
List<TbsBudgetLog> budgetLog4Adds = budgetLogList.stream().map(budgetLog->{
TbsBudgetLog obj = CopierUtil.copy(budgetLog,new TbsBudgetLog());
obj.setId(null);
obj.setOptType(optType4Add);
obj.setMigrateFlag(1);
obj.setMigrateTime(nowTime);
obj.setAmount(obj.getAmount().negate());
return obj;
}).collect(Collectors.toList());
//规则:品类条件比科目条件优先级更高 //规则:品类条件比科目条件优先级更高
List<TbsBudgetLog> budgetLog4Diff = new ArrayList<>();
//无匹配的费用支出
List<TbsCostUnItem> costUnItemList = new ArrayList<>();
for (TbsBudgetLog budgetLog : budgetLogList) { for (TbsBudgetLog budgetLog : budgetLogList) {
//当前活动
TbsActivity currActivity = null;
for (TbsActivity activity : activityList) {
if(budgetLog.getActivityId().equals(activity.getId())){
currActivity = activity;
break;
}
}
//(数据结构:value=预算id列表,key=商品类型) //(数据结构:value=预算id列表,key=商品类型)
Map<String,List<Long>> matchConditionBudgetIdsMap = new HashMap<>(); Map<String,List<Long>> matchConditionBudgetIdsMap = new HashMap<>();
if(budgetConditionsMap!=null){ if(budgetConditionsMap!=null){
@ -173,38 +224,85 @@ public class BmsSupplierServiceImpl extends ServiceImpl<BmsSupplierMapper,BmsSup
} }
} }
} }
//记录匹配到的预算 //记录匹配品类条件的预算
TbsBudget matchBudget = null; List<TbsBudget> matchBudgetConditionList = new ArrayList<>();
List<TbsBudget> matchBudgetConditionList_tmp = new ArrayList<>();
for (TbsBudget budget : budgetList) { for (TbsBudget budget : budgetList) {
if(matchBudget!=null){break;}
if(budget.getConditionFlag().equals(1)){ if(budget.getConditionFlag().equals(1)){
for (TbsGoodsType goodsType : goodsTypes) { for (TbsGoodsType goodsType : goodsTypes) {
if(matchBudget!=null){break;}
List<Long> tempList = matchConditionBudgetIdsMap.get(goodsType.name()); List<Long> tempList = matchConditionBudgetIdsMap.get(goodsType.name());
if(CollectionUtil.isNotEmpty(tempList)){ if(CollectionUtil.isNotEmpty(tempList)){
for (Long budgetId01 : tempList) { for (Long budgetId01 : tempList) {
if(budgetId01.equals(budget.getId())){ if(budgetId01.equals(budget.getId())){
matchBudget = budget; matchBudgetConditionList.add(budget);
break;
} }
} }
} }
} }
}else { }else {
matchBudget = budget; matchBudgetConditionList_tmp.add(budget);
}
}
//有条件预算优先级更高
matchBudgetConditionList.addAll(matchBudgetConditionList_tmp);
//第一个预算为最有匹配预算
TbsBudget matchBudget = null;
TbsScheduleItemBudget matchItemBudget = null;
//记录匹配到的预算
if(scheduleItemBudgetsMap!=null){
for (TbsBudget budget : matchBudgetConditionList) {
if(matchBudget!=null){
break;
}
List<TbsScheduleItemBudget> scheduleItemBudgets = scheduleItemBudgetsMap.get(budget.getId());
for (TbsScheduleItemBudget itemBudget : scheduleItemBudgets) {
LocalDateTime actStartDate = currActivity.getPreStartDate().atStartOfDay();
LocalDateTime actEndDate = currActivity.getPreStartDate().atStartOfDay().with(LocalDateTime.MAX);
if(actStartDate.isAfter(itemBudget.getStartDate())&&actEndDate.isBefore(itemBudget.getEndDate())){
matchBudget = budget;
matchItemBudget = itemBudget;
break;
}
}
} }
} }
//todo 设置已迁移记录 if(matchBudget!=null){
//todo 匹配条件 //有匹配的预算
TbsBudgetLog newLog = CopierUtil.copy(budgetLog,new TbsBudgetLog());
newLog.setId(null);
newLog.setOptType(optType4Diff);
newLog.setBudgetId(matchBudget.getId());
newLog.setBudgetCode(matchBudget.getBudgetCode());
newLog.setScheduleOrgId(budgetLog.getScheduleId());
newLog.setScheduleItemOrgId(budgetLog.getScheduleItemId());
newLog.setScheduleItemBudgetOrgId(budgetLog.getScheduleItemBudgetId());
//匹配到的项
newLog.setScheduleId(matchItemBudget.getScheduleId());
newLog.setScheduleItemId(matchItemBudget.getScheduleItemId());
newLog.setScheduleItemBudgetId(matchItemBudget.getId());
budgetLog4Diff.add(newLog);
}else {
//无匹配的预算
TbsCostUnItem costUnItem = budgetLog.toTbsCostUnItem(currActivity);
costUnItemList.add(costUnItem);
}
}
//保存
budgetLogService.saveBatch(budgetLog4Adds);
if(CollectionUtil.isNotEmpty(budgetLog4Diff)){
budgetLogService.saveBatch(budgetLog4Diff);
}
if(CollectionUtil.isNotEmpty(costUnItemList)){
costUnItemService.saveBatch(costUnItemList);
} }
//设置已迁移状态 //设置已迁移状态
List<Long> budgetLogIds = budgetLogList.stream().map(TbsBudgetLog::getId).collect(Collectors.toList()); List<Long> budgetLogIds = budgetLogList.stream().map(TbsBudgetLog::getId).collect(Collectors.toList());
TbsBudgetLog updLogParam = new TbsBudgetLog(); TbsBudgetLog updLogParam = new TbsBudgetLog();
updLogParam.setMigrateFlag(1); updLogParam.setMigrateFlag(1);
updLogParam.setMigrateTime(nowTime);
LambdaQueryWrapper<TbsBudgetLog> updLogLqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TbsBudgetLog> updLogLqw = new LambdaQueryWrapper<>();
updLogLqw.in(TbsBudgetLog::getId,budgetLogIds); updLogLqw.in(TbsBudgetLog::getId,budgetLogIds);
budgetLogMapper.update(updLogParam,updLogLqw); budgetLogService.update(updLogParam,updLogLqw);
} }
} }

2
src/main/java/com/qs/serve/modules/sys/controller/SysAttachController.java

@ -71,7 +71,7 @@ public class SysAttachController {
File dest = new File(uploadPath + prefix + newName + fileType); File dest = new File(uploadPath + prefix + newName + fileType);
Long size = file.getSize(); Long size = file.getSize();
file.transferTo(dest); file.transferTo(dest);
String path = uploadProperties.getProxyUrl() + prefix + fileOrgName; String path = uploadProperties.getProxyUrl() + prefix + newName + fileType;
SysAttach attach = new SysAttach(); SysAttach attach = new SysAttach();
attach.setName(fileOrgName); attach.setName(fileOrgName);
attach.setPath(path); attach.setPath(path);

17
src/main/java/com/qs/serve/modules/sys/controller/api/SysDictApi.java

@ -1,9 +1,12 @@
package com.qs.serve.modules.sys.controller.api; package com.qs.serve.modules.sys.controller.api;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.StringUtils; import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.sys.controller.SysAttachController;
import com.qs.serve.modules.sys.entity.SysDict; import com.qs.serve.modules.sys.entity.SysDict;
import com.qs.serve.modules.sys.entity.SysDictData; import com.qs.serve.modules.sys.entity.SysDictData;
import com.qs.serve.modules.sys.service.SysDictDataService; import com.qs.serve.modules.sys.service.SysDictDataService;
@ -11,9 +14,11 @@ import com.qs.serve.modules.sys.service.SysDictService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.List; import java.util.List;
/** /**
@ -29,6 +34,8 @@ public class SysDictApi {
private SysDictDataService sysDictDataService; private SysDictDataService sysDictDataService;
private SysAttachController attachController;
/** /**
* 列表查询 * 列表查询
* @param group 分组key * @param group 分组key
@ -46,6 +53,16 @@ public class SysDictApi {
return R.ok(list); return R.ok(list);
} }
/**
* 附件上传
* @param request
* @return
*/
@PostMapping("/upload")
public R upload(HttpServletRequest request){
return attachController.upload(request);
}
} }

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

@ -11,11 +11,10 @@ import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.BmsSubject;
import com.qs.serve.modules.bms.entity.BmsSubjectForm;
import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.service.BmsCostCenterService; import com.qs.serve.modules.bms.service.*;
import com.qs.serve.modules.bms.service.BmsRegion2Service;
import com.qs.serve.modules.bms.service.BmsRegionService;
import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.goods.entity.GoodsCategory; import com.qs.serve.modules.goods.entity.GoodsCategory;
import com.qs.serve.modules.goods.entity.GoodsSku; import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.entity.GoodsSpu; import com.qs.serve.modules.goods.entity.GoodsSpu;
@ -79,6 +78,8 @@ public class TbsActivityController {
private final BmsCostCenterService bmsCostCenterService; private final BmsCostCenterService bmsCostCenterService;
private final BmsRegion2Service bmsRegion2Service; private final BmsRegion2Service bmsRegion2Service;
private final BmsRegionService bmsRegionService; private final BmsRegionService bmsRegionService;
private final BmsSubjectService bmsSubjectService;
private final BmsSubjectFormService bmsSubjectFormService;
private final VtbVerificationService verificationService; private final VtbVerificationService verificationService;
@ -206,7 +207,27 @@ public class TbsActivityController {
List<TbsActivitySubject> activitySubjects = activitySubjectService.list(qw); List<TbsActivitySubject> activitySubjects = activitySubjectService.list(qw);
List<TbsActivityCenter> activityCenters = activityCenterService.list(qw); List<TbsActivityCenter> activityCenters = activityCenterService.list(qw);
Map<Long,List<TbsActivityCenter>> centerListMap = activityCenters.stream().collect(Collectors.groupingBy(TbsActivityCenter::getSubjectId)); Map<Long,List<TbsActivityCenter>> centerListMap = activityCenters.stream().collect(Collectors.groupingBy(TbsActivityCenter::getSubjectId));
List<Long> subjectIds = activitySubjects.stream().map(TbsActivitySubject::getSubjectId).distinct().collect(Collectors.toList());
List<BmsSubject> subjectList = bmsSubjectService.listByIds(subjectIds);
List<Long> formIds = subjectList.stream().map(BmsSubject::getFormId).distinct().collect(Collectors.toList());
List<BmsSubjectForm> subjectForms = null;
if(CollectionUtil.isNotEmpty(formIds)){
subjectForms = bmsSubjectFormService.listByIds(formIds);
}
for (TbsActivitySubject activitySubject : activitySubjects) { for (TbsActivitySubject activitySubject : activitySubjects) {
if(CollectionUtil.isNotEmpty(subjectForms)){
for (BmsSubject subject : subjectList) {
if(subject.getId().equals(activitySubject.getSubjectId())&&subject.getFormId()!=null){
for (BmsSubjectForm subjectForm : subjectForms) {
if(subjectForm.getId().equals(subject.getFormId())){
activitySubject.setSubjectFormInfo(subjectForm);
break;
}
}
break;
}
}
}
List<TbsActivityCenter> activityCenterList = centerListMap.get(activitySubject.getSubjectId()); List<TbsActivityCenter> activityCenterList = centerListMap.get(activitySubject.getSubjectId());
activitySubject.setActivityCenterList(activityCenterList); activitySubject.setActivityCenterList(activityCenterList);
} }

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

@ -106,6 +106,9 @@ public class TbsActivitySubject implements Serializable {
/** 模板唯一健 */ /** 模板唯一健 */
private String tmpUk; private String tmpUk;
@TableField(exist = false)
Object subjectFormInfo;
@TableField(exist = false) @TableField(exist = false)
List<TbsActivityCenter> activityCenterList; List<TbsActivityCenter> activityCenterList;

38
src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetLog.java

@ -184,9 +184,14 @@ public class TbsBudgetLog implements Serializable {
/** /**
* 迁移标识0-未迁移1-已迁移 * 迁移标识0-未迁移1-已迁移
* */ **/
private Integer migrateFlag; private Integer migrateFlag;
/**
* 迁移时间
**/
private LocalDateTime migrateTime;
/** 所属租户 */ /** 所属租户 */
@JsonIgnore @JsonIgnore
@JsonProperty @JsonProperty
@ -240,5 +245,36 @@ public class TbsBudgetLog implements Serializable {
@JsonProperty @JsonProperty
private String delFlag; private String delFlag;
public TbsCostUnItem toTbsCostUnItem(TbsActivity activity){
TbsCostUnItem item = new TbsCostUnItem();
item.setCostApplyId(this.costApplyId);
item.setActivityId(this.activityId);
item.setActivityCode(this.activityCode);
item.setSubjectId(this.subjectId);
item.setSubjectCode(this.subjectCode);
item.setSubjectName(this.subjectName);
item.setCenterType(this.centerType);
item.setCenterId(this.centerId);
item.setCenterCode(this.centerCode);
item.setCenterName(this.centerName);
item.setAmount(this.amount);
item.setTargetType(this.targetType);
item.setTargetCode(this.targetCode);
item.setTargetName(this.targetName);
item.setTargetLevelPathIds(this.targetLevelPathIds);
item.setTargetLevelPathNames(this.targetLevelPathNames);
item.setSupplierId(this.supplierId);
item.setSupplierCode(this.supplierCode);
item.setSupplierName(this.supplierName);
if(activity!=null){
item.setActStartDate(activity.getActStartDate());
item.setActEndDate(activity.getActEndDate());
item.setPreStartDate(activity.getPreStartDate());
item.setPreEndDate(activity.getPreEndDate());
item.setPreCheckDate(activity.getPreCheckDate());
}
return item;
}
} }

18
src/main/java/com/qs/serve/modules/tbs/entity/TbsCostUnItem.java

@ -31,10 +31,6 @@ public class TbsCostUnItem implements Serializable {
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
private Long id; private Long id;
/** 成本明细编码 */
@Length(max = 30,message = "成本明细编码长度不能超过30字")
private String centerGoodsCode;
/** 费用申请id */ /** 费用申请id */
@NotNull(message = "费用申请id不能为空") @NotNull(message = "费用申请id不能为空")
private Long costApplyId; private Long costApplyId;
@ -81,21 +77,9 @@ public class TbsCostUnItem implements Serializable {
@Length(max = 50,message = "成本中心名称长度不能超过50字") @Length(max = 50,message = "成本中心名称长度不能超过50字")
private String centerName; private String centerName;
/** 成本中心金额 */
@NotNull(message = "成本中心金额不能为空")
private BigDecimal centerAmount;
/** 成本中心占比 */
@NotNull(message = "成本中心占比不能为空")
private BigDecimal centerRate;
/** 费用额度 */ /** 费用额度 */
@NotNull(message = "费用额度不能为空") @NotNull(message = "费用额度不能为空")
private BigDecimal centerGoodsAmount; private BigDecimal amount;
/** 费用占比 */
@NotNull(message = "费用占比不能为空")
private BigDecimal centerGoodsRate;
/** 目标类型(brand、category、series、spu、sku) */ /** 目标类型(brand、category、series、spu、sku) */
@NotBlank(message = "目标类型(brand、category、series、spu、sku)不能为空") @NotBlank(message = "目标类型(brand、category、series、spu、sku)不能为空")

15
src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationSubject.java

@ -124,5 +124,20 @@ public class VtbVerificationSubject implements Serializable {
/** 是否有效(0:否;1:是) */ /** 是否有效(0:否;1:是) */
private Integer effectiveFlag; private Integer effectiveFlag;
/** 表单id */
private Long formId;
/** 表单标题 */
private String formTitle;
/** 表单版本 */
private Integer formVersion;
/** 表单内容 */
private String formContext;
/** 表单内容值 */
private String formContextValue;
} }

15
src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationSubjectBo.java

@ -44,5 +44,20 @@ public class VtbVerificationSubjectBo implements Serializable {
@Length(max = 255,message = "备注长度不能超过255字") @Length(max = 255,message = "备注长度不能超过255字")
private String remark; private String remark;
/** 表单id */
private Long formId;
/** 表单标题 */
private String formTitle;
/** 表单版本 */
private Integer formVersion;
/** 表单内容 */
private String formContext;
/** 表单内容值 */
private String formContextValue;
} }

5
src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

@ -436,6 +436,11 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
verificationSubject.setCountPerson(subjectBo.getCountPerson()); verificationSubject.setCountPerson(subjectBo.getCountPerson());
verificationSubject.setCountSession(subjectBo.getCountSession()); verificationSubject.setCountSession(subjectBo.getCountSession());
verificationSubject.setRemark(subjectBo.getRemark()); verificationSubject.setRemark(subjectBo.getRemark());
verificationSubject.setFormId(subjectBo.getFormId());
verificationSubject.setFormTitle(subjectBo.getFormTitle());
verificationSubject.setFormVersion(subjectBo.getFormVersion());
verificationSubject.setFormContext(subjectBo.getFormContext());
verificationSubject.setFormContextValue(subjectBo.getFormContextValue());
verificationSubjects.add(verificationSubject); verificationSubjects.add(verificationSubject);
} }
return verificationSubjects; return verificationSubjects;

Loading…
Cancel
Save