Browse Source

feat:销售区域支持上下级

fix:修复核销时场次和修改金额没有修改异常
checkBack
Yen 1 year ago
parent
commit
0098a6e86c
  1. 5
      src/main/java/com/qs/serve/common/util/BirHttpUtil.java
  2. 47
      src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java
  3. 5
      src/main/java/com/qs/serve/modules/bir/entity/dto/BirTbsVtbPayJoinDTO.java
  4. 4
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java
  5. 14
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java
  6. 2
      src/main/java/com/qs/serve/modules/bms/service/BmsRegionService.java
  7. 123
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegionServiceImpl.java
  8. 13
      src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostApplyMapper.java
  9. 40
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java
  10. 28
      src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java
  11. 18
      src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java
  12. 27
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java
  13. 21
      src/main/java/com/qs/serve/task/BirTask.java
  14. 1
      src/main/resources/mapper/bir/BirTbsVtbPayJoinMapper.xml

5
src/main/java/com/qs/serve/common/util/BirHttpUtil.java

@ -96,6 +96,7 @@ public class BirHttpUtil {
} }
public static TbsCostSubItem.CostCenterTranStr buildCostCenter(String centerType, String centerId, String centerName, String supplierCode){ public static TbsCostSubItem.CostCenterTranStr buildCostCenter(String centerType, String centerId, String centerName, String supplierCode){
try {
Map<String,String> map = new HashMap<>(); Map<String,String> map = new HashMap<>();
map.put("centerType",centerType); map.put("centerType",centerType);
map.put("centerId",centerId); map.put("centerId",centerId);
@ -104,6 +105,10 @@ public class BirHttpUtil {
R<?> result = get("/bir/roiRate/getCostCenter",map); R<?> result = get("/bir/roiRate/getCostCenter",map);
String json = result.getData().toString(); String json = result.getData().toString();
return JsonUtil.jsonToPojo(json,TbsCostSubItem.CostCenterTranStr.class); return JsonUtil.jsonToPojo(json,TbsCostSubItem.CostCenterTranStr.class);
} catch (Exception e) {
}
return null;
} }
} }

47
src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java

@ -5,6 +5,7 @@ import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.WriteSheet;
import com.aliyun.oss.OSS; import com.aliyun.oss.OSS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.qs.serve.common.config.properties.AliYunOssProperties; import com.qs.serve.common.config.properties.AliYunOssProperties;
import com.qs.serve.common.config.properties.ProjectProperties; import com.qs.serve.common.config.properties.ProjectProperties;
import com.qs.serve.common.model.annotation.SysLog; import com.qs.serve.common.model.annotation.SysLog;
@ -83,6 +84,35 @@ public class BirActivityCenterGoodsController {
return R.ok(); return R.ok();
} }
/**
* 移除因作废的费用申请导致的bir数据
* @return
*/
@GetMapping("/toSyncRmCost")
public R<?> toSyncRm(){
//select id from tbs_cost_apply where del_flag = 0 and ( cancel_flag = 1 or charge_state in (5,6,8) )
List<TbsCostApply> costApplyList = tbsCostApplyService.list(new LambdaQueryWrapper<TbsCostApply>()
.select(TbsCostApply::getId)
.and(
qw->qw.eq(TbsCostApply::getCancelFlag,1)
.or()
.in(TbsCostApply::getChargeState,5,6,8)
)
.ne(TbsCostApply::getTmpState,3)
.last(" limit 1600 ")
);
List<Long> ids = costApplyList.stream().map(TbsCostApply::getId).collect(Collectors.toList());
if(ids.size()<1){
log.warn("已全部移除了错误的bir数据");
return R.ok();
}
centerGoodsService.rebuildBir(ids);
tbsCostApplyService.update(new LambdaUpdateWrapper<TbsCostApply>()
.set(TbsCostApply::getTmpState,3)
.in(TbsCostApply::getId,ids));
return R.ok();
}
@GetMapping("/toSyncBirEcro") @GetMapping("/toSyncBirEcro")
public R<?> toSyncBirEcro(){ public R<?> toSyncBirEcro(){
List<Long> costIds = tbsCostBirLogMapper.listCostIds(); List<Long> costIds = tbsCostBirLogMapper.listCostIds();
@ -101,8 +131,9 @@ public class BirActivityCenterGoodsController {
lqw lqw
.select(TbsCostApply::getId).ne(TbsCostApply::getChargeState,0) .select(TbsCostApply::getId).ne(TbsCostApply::getChargeState,0)
.eq(TbsCostApply::getCancelFlag,0) .eq(TbsCostApply::getCancelFlag,0)
.eq(TbsCostApply::getTmpState,0)
.gt(TbsCostApply::getTotalActivity,0) .gt(TbsCostApply::getTotalActivity,0)
.ne(TbsCostApply::getTmpState,11)
.le(TbsCostApply::getCreateTime, LocalDate.of(2024,1,1).atStartOfDay())
.ge(TbsCostApply::getCreateTime, LocalDate.of(2023,1,1).atStartOfDay()) ; .ge(TbsCostApply::getCreateTime, LocalDate.of(2023,1,1).atStartOfDay()) ;
boolean ex = extracted(lqw); boolean ex = extracted(lqw);
while (!ex){ while (!ex){
@ -112,16 +143,16 @@ public class BirActivityCenterGoodsController {
} }
private boolean extracted(LambdaQueryWrapper<TbsCostApply> lqw) { private boolean extracted(LambdaQueryWrapper<TbsCostApply> lqw) {
List<TbsCostApply> costApplyList = tbsCostApplyService.list(lqw); List<TbsCostApply> costApplyList = tbsCostApplyService.list(lqw);
List<Long> costIds = costApplyList.stream().map(a->a.getId()).collect(Collectors.toList()); List<Long> costIds = costApplyList.stream().map(TbsCostApply::getId).collect(Collectors.toList());
if(CollectionUtil.isEmpty(costIds)){ if(CollectionUtil.isEmpty(costIds)){
return true; return true;
} }
centerGoodsService.rebuildBir(costIds); for (Long costId : costIds) {
LambdaQueryWrapper<TbsCostApply> updLqw = new LambdaQueryWrapper<>(); centerGoodsService.rebuildBir(Arrays.asList(costId));
updLqw.in(TbsCostApply::getId,costIds); tbsCostApplyService.update(new LambdaUpdateWrapper<TbsCostApply>()
TbsCostApply costApply = new TbsCostApply(); .eq(TbsCostApply::getId,costId)
costApply.setTmpState(1); .set(TbsCostApply::getTmpState,11));
tbsCostApplyService.update(costApply,updLqw); }
return costIds.size()<100; return costIds.size()<100;
} }

5
src/main/java/com/qs/serve/modules/bir/entity/dto/BirTbsVtbPayJoinDTO.java

@ -112,6 +112,11 @@ public class BirTbsVtbPayJoinDTO {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime payDate; private LocalDateTime payDate;
/**
* 费用类型:0->常规1->协议类;2->进场费
*/
private Integer contractFlag;
private List<BirVtbPayJoinDTO> birVtbPayJoinDTOList; private List<BirVtbPayJoinDTO> birVtbPayJoinDTOList;
} }

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

@ -287,11 +287,11 @@ public class BmsRegion2Controller {
} }
/** /**
* dev测试接口更新祖级数据 * 更新祖级数据
* @return * @return
*/ */
@LimitSubmit(interval = 15000) @LimitSubmit(interval = 15000)
@GetMapping("/updateLevelDev") @GetMapping("/updateLevel")
public R<?> editBatch(){ public R<?> editBatch(){
bmsRegion2Service.flushAllLevel(true); bmsRegion2Service.flushAllLevel(true);
return R.ok(); return R.ok();

14
src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java

@ -229,7 +229,7 @@ public class BmsRegionController {
param.setSysCode1(regionBo.getSysCode1()); param.setSysCode1(regionBo.getSysCode1());
param.setSysCode2(regionBo.getSysCode2()); param.setSysCode2(regionBo.getSysCode2());
param.setSysCode3(regionBo.getSysCode3()); param.setSysCode3(regionBo.getSysCode3());
boolean result = bmsRegionService.updateBmsRegionById(param); boolean result = bmsRegionService.updateSaleRegionById(param);
hisUserSupplierService.cleanTable(); hisUserSupplierService.cleanTable();
return R.isTrue(result); return R.isTrue(result);
} }
@ -270,6 +270,18 @@ public class BmsRegionController {
return R.isTrue(result); return R.isTrue(result);
} }
/**
* 更新祖级数据
* @return
*/
@LimitSubmit(interval = 15000)
@GetMapping("/updateLevel")
public R<?> editBatch(){
bmsRegionService.flushAllLevel(true);
return R.ok();
}
/** /**
* (批量)编辑(更新只允许改名称) * (批量)编辑(更新只允许改名称)
* @param regionBo * @param regionBo

2
src/main/java/com/qs/serve/modules/bms/service/BmsRegionService.java

@ -32,6 +32,8 @@ public interface BmsRegionService extends IService<BmsRegion> {
boolean saveBmsRegion(BmsRegion param); boolean saveBmsRegion(BmsRegion param);
boolean updateSaleRegionById(BmsRegion param);
boolean updateBmsRegionById(BmsRegion param); boolean updateBmsRegionById(BmsRegion param);
void updateAllFactoryIdsByFactoryId(String id,String addOrDel); void updateAllFactoryIdsByFactoryId(String id,String addOrDel);

123
src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegionServiceImpl.java

@ -21,6 +21,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.qs.serve.modules.bms.service.BmsRegionService; import com.qs.serve.modules.bms.service.BmsRegionService;
import com.qs.serve.modules.bms.mapper.BmsRegionMapper; import com.qs.serve.modules.bms.mapper.BmsRegionMapper;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@ -44,6 +45,7 @@ public class BmsRegionServiceImpl extends ServiceImpl<BmsRegionMapper,BmsRegion>
private BmsSupplierApplicationService bmsSupplierApplicationService; private BmsSupplierApplicationService bmsSupplierApplicationService;
private BmsSupplierMapper bmsSupplierMapper; private BmsSupplierMapper bmsSupplierMapper;
@Override @Override
public boolean saveBmsRegion(BmsRegion param){ public boolean saveBmsRegion(BmsRegion param){
this.checkSysCodes(param); this.checkSysCodes(param);
@ -55,6 +57,92 @@ public class BmsRegionServiceImpl extends ServiceImpl<BmsRegionMapper,BmsRegion>
return this.save(param); return this.save(param);
} }
@Transactional(rollbackFor = Exception.class)
@Override
public boolean updateSaleRegionById(BmsRegion newRegion) {
String regionId = newRegion.getId();
this.checkSysCodes(newRegion);
this.toSetLevel(newRegion);
BmsRegion orgRegion = this.getById(regionId);
boolean changePid = !orgRegion.getPid().equals(newRegion.getPid());
if(changePid){
//更变子级,拦截递归的错误设置
List<BmsRegion> childTree = this.listTreeChildByDeep(regionId,newRegion.getLevel());
//罗列相关的客户进行更新
List<BmsSupplier> supplierList = bmsSupplierMapper.selectList(new LambdaQueryWrapper<BmsSupplier>()
.select(BmsSupplier::getId,BmsSupplier::getRegionFirst,BmsSupplier::getRegionSecond,BmsSupplier::getRegionThird)
.eq(BmsSupplier::getRegionFirst,regionId)
.or()
.eq(BmsSupplier::getRegionSecond,regionId)
.or()
.eq(BmsSupplier::getRegionThird,regionId)
.or()
.eq(BmsSupplier::getRegionFourthly,regionId)
);
//利用有序
List<String> sortList = new ArrayList<>();
sortList.add(newRegion.getId());
if (!newRegion.getPid().equals("0")){
BmsRegion p1 = this.getById(newRegion.getPid());
sortList.add(p1.getId());
if(!p1.getPid().equals("0")){
BmsRegion p2 = this.getById(p1.getPid());
sortList.add(p2.getId());
}
}
// size对应层级数
int size = sortList.size();
for (BmsSupplier supplier : supplierList) {
if(size==3){
//3级
supplier.setRegionFirst(sortList.get(2));
supplier.setRegionSecond(sortList.get(1));
supplier.setRegionThird(sortList.get(0));
supplier.setRegionLast(sortList.get(0));
log.debug("3级变动");
}else if (size==2){
//二级
supplier.setRegionFirst(sortList.get(1));
if (orgRegion.getLevel() > (newRegion.getLevel())){
supplier.setRegionSecond(sortList.get(0));
log.debug("层级变小,由三级变二级");
supplier.setRegion2Third("0");
}if (orgRegion.getLevel() < (newRegion.getLevel())){
log.debug("层级变大,由一级变二级");
supplier.setRegionThird(supplier.getRegion2Second());
supplier.setRegionSecond(sortList.get(0));
}else {
log.debug("二级,平级更新");
supplier.setRegionSecond(sortList.get(0));
if(!StringUtils.hasText(supplier.getRegion2Third())){
supplier.setRegionLast(supplier.getRegion2Second());
}
}
}else {
//一级
log.debug("更换变一级");
supplier.setRegionFirst(sortList.get(0));
supplier.setRegionLast(sortList.get(0));
if (orgRegion.getLevel() > (newRegion.getLevel())){
log.debug("层级变小,由二级变一级");
Assert.throwEx("二级变一级不支持");
supplier.setRegionSecond(supplier.getRegion2Third());
supplier.setRegionThird("0");
}else {
supplier.setRegionSecond("0");
supplier.setRegionThird("0");
}
}
bmsSupplierMapper.updateById(supplier);
}
}
this.updateById(newRegion);
return true;
}
private void checkSysCodes(BmsRegion param) { private void checkSysCodes(BmsRegion param) {
if(StringUtils.hasText(param.getSysCode1())){ if(StringUtils.hasText(param.getSysCode1())){
long count1 = baseMapper.countSysCode1(param.getSysCode1(), param.getId());if(count1>0){ long count1 = baseMapper.countSysCode1(param.getSysCode1(), param.getId());if(count1>0){
@ -368,5 +456,40 @@ public class BmsRegionServiceImpl extends ServiceImpl<BmsRegionMapper,BmsRegion>
region.setFactoryIds(newIds.stream().toArray(String[]::new)); region.setFactoryIds(newIds.stream().toArray(String[]::new));
return region; return region;
} }
public BmsRegion toSetLevel(BmsRegion param) {
if(StringUtils.hasText(param.getPid()) && !param.getPid().equals("0")){
BmsRegion parent = this.getById(param.getPid());
if(parent!=null){
if(parent.getLevel()>2){
Assert.throwEx("最高支持3层级");
}
param.setLevel(parent.getLevel()+1);
param.setPathIds(parent.getPathIds()+"_"+param.getId());
param.setPathNames(parent.getPathNames()+"_"+param.getName());
}else {
Assert.throwEx("无相关父级数据");
}
}else {
param.setPid("0");
param.setLevel(1);
param.setPathIds(param.getId());
param.setPathNames(param.getName());
}
return param;
}
public List<BmsRegion> listTreeChildByDeep(String pid,Integer parentLevel){
List<BmsRegion> list = this.listChild(pid);
if(parentLevel > 2 && CollectionUtil.isNotEmpty(list)){
Assert.throwEx("最高只能设置3层级");
}
for (BmsRegion region2 : list) {
List<BmsRegion> childList = listTreeChildByDeep(region2.getId(),parentLevel++);
region2.setChildNodes(childList);
}
return list;
}
} }

13
src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostApplyMapper.java

@ -23,6 +23,19 @@ import java.util.List;
*/ */
public interface TbsCostApplyMapper extends BaseMapper<TbsCostApply> { public interface TbsCostApplyMapper extends BaseMapper<TbsCostApply> {
/**
* 更新协议类状态
* @return
*/
@Update(" update tbs_cost_apply " +
" set charge_state = 3 , check_state = 1 " +
" where del_flag = 0 " +
" and cancel_flag = 0 " +
" and contract_flag = 1 " +
" and total_activity_used_amount = total_activity_amount " +
" and total_activity_amount != 0")
int updateContractFinishedState();
/** /**
* 统计即将逾期 * 统计即将逾期
* @param userId * @param userId

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

@ -2,10 +2,7 @@ package com.qs.serve.modules.tbs.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.consts.SysConfigKey; import com.qs.serve.common.model.consts.SysConfigKey;
import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.*;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.JsonUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.sys.service.SysConfigService; import com.qs.serve.modules.sys.service.SysConfigService;
import com.qs.serve.modules.tbs.common.TbsGoodsType; import com.qs.serve.modules.tbs.common.TbsGoodsType;
import com.qs.serve.modules.tbs.common.dto.CostSortWrapper; import com.qs.serve.modules.tbs.common.dto.CostSortWrapper;
@ -193,6 +190,13 @@ public class TbsBudgetApplicationService {
Boolean overspend, Boolean overspend,
Boolean throwEx, Boolean throwEx,
Boolean buildTableFlag){ Boolean buildTableFlag){
//指定的预算
String pointBudgetIdString = ServletUtils.getHeader("pointBudgetId");
Long pointBudgetId = null;
if(StringUtils.hasText(pointBudgetIdString)){
pointBudgetId = Long.parseLong(pointBudgetIdString);
}
CostSortWrapper costSortWrapper = new CostSortWrapper(); CostSortWrapper costSortWrapper = new CostSortWrapper();
//考核期有关的预算id,判断逻辑为活动需要允许在 //考核期有关的预算id,判断逻辑为活动需要允许在
List<Long> budgetIds = new ArrayList<>(); List<Long> budgetIds = new ArrayList<>();
@ -200,6 +204,7 @@ public class TbsBudgetApplicationService {
List<Long> noBudgetActivityIds = new ArrayList<>(); List<Long> noBudgetActivityIds = new ArrayList<>();
//所有满足条件的考核期,用于加载历史核销费用 //所有满足条件的考核期,用于加载历史核销费用
List<TbsScheduleItemBudget> scheduleItemList = this.loadScheduleBudgetAndSetting(activityList, budgetIds, noBudgetActivityIds,costSortWrapper); List<TbsScheduleItemBudget> scheduleItemList = this.loadScheduleBudgetAndSetting(activityList, budgetIds, noBudgetActivityIds,costSortWrapper);
this.checkPointBudgetId(pointBudgetId, budgetIds,"未满足考核期");
List<String> centerIds = activityCenterList.stream().map(TbsActivityCenter::getCenterId).collect(Collectors.toList()); List<String> centerIds = activityCenterList.stream().map(TbsActivityCenter::getCenterId).collect(Collectors.toList());
List<Long> subjectIds = activitySubjects.stream().map(TbsActivitySubject::getSubjectId).collect(Collectors.toList()); List<Long> subjectIds = activitySubjects.stream().map(TbsActivitySubject::getSubjectId).collect(Collectors.toList());
//通过模板限制,选中指定的预算 //通过模板限制,选中指定的预算
@ -215,6 +220,10 @@ public class TbsBudgetApplicationService {
if(limitBudgetIds.size()>0){ if(limitBudgetIds.size()>0){
budgetIds = (List<Long>) CollectionUtils.intersection(budgetIds, limitBudgetIds); budgetIds = (List<Long>) CollectionUtils.intersection(budgetIds, limitBudgetIds);
} }
this.checkPointBudgetId(pointBudgetId, budgetIds,"模板限制,选中指定的预算不符合");
if(pointBudgetId!=null){
budgetIds = Arrays.asList(pointBudgetId);
}
// 加载所有条件 // 加载所有条件
List<TbsBudget> budgetList; List<TbsBudget> budgetList;
if(budgetIds.size()>0){ if(budgetIds.size()>0){
@ -341,6 +350,29 @@ public class TbsBudgetApplicationService {
return result; return result;
} }
/**
* 检测指定的预算满足条件
* @param pontBudgetId
* @param budgetIds
* @param msg
*/
private void checkPointBudgetId(Long pontBudgetId, List<Long> budgetIds,String msg) {
if(pontBudgetId!=null){
if(budgetIds==null){
Assert.throwEx(msg);
}
boolean mc = false;
for (Long budgetId : budgetIds) {
if(budgetId.equals(pontBudgetId)){
mc = true;
}
}
if(!mc){
Assert.throwEx(msg);
}
}
}
/** /**
* 预算条件需包含活动条件 Map结构活动id->满足的预算id列表 * 预算条件需包含活动条件 Map结构活动id->满足的预算id列表
* @param activityList * @param activityList

28
src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java

@ -8,14 +8,8 @@ import com.qs.serve.common.config.properties.ProjectApisProperties;
import com.qs.serve.common.model.enums.BudgetLogOptFlag; import com.qs.serve.common.model.enums.BudgetLogOptFlag;
import com.qs.serve.common.model.consts.ResultFlag; import com.qs.serve.common.model.consts.ResultFlag;
import com.qs.serve.common.util.*; import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsCostCenter; import com.qs.serve.modules.bms.entity.*;
import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.service.*;
import com.qs.serve.modules.bms.entity.BmsSubject;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.service.BmsCostCenterService;
import com.qs.serve.modules.bms.service.BmsRegionService;
import com.qs.serve.modules.bms.service.BmsSubjectService;
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;
@ -44,6 +38,7 @@ import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCostResult; import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCostResult;
import com.qs.serve.modules.tbs.mapper.TbsActivitySubjectMapper; import com.qs.serve.modules.tbs.mapper.TbsActivitySubjectMapper;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import com.qs.serve.modules.tbs.mapper.TbsCostApplyMapper;
import com.qs.serve.modules.tbs.service.*; import com.qs.serve.modules.tbs.service.*;
import com.qs.serve.modules.third.entity.*; import com.qs.serve.modules.third.entity.*;
import com.qs.serve.modules.third.util.ThirtyVerificationUtil; import com.qs.serve.modules.third.util.ThirtyVerificationUtil;
@ -91,7 +86,7 @@ public class PortalOfCostApplication {
private SysUserCodeMathMapper userCodeMathMapper; private SysUserCodeMathMapper userCodeMathMapper;
private final SysSyncLogService sysSyncLogService; private final SysSyncLogService sysSyncLogService;
private SysTableTempMapper sysTableTempMapper; private SysTableTempMapper sysTableTempMapper;
private TbsCostApplyMapper tbsCostApplyMapper;
private TbsCostTodoService tbsCostTodoService; private TbsCostTodoService tbsCostTodoService;
private final TbsActivityPayConditionService activityPayConditionService; private final TbsActivityPayConditionService activityPayConditionService;
private final TbsBudgetService budgetService; private final TbsBudgetService budgetService;
@ -107,6 +102,7 @@ public class PortalOfCostApplication {
private BmsSubjectService subjectService; private BmsSubjectService subjectService;
private BmsCostCenterService costCenterService; private BmsCostCenterService costCenterService;
private BmsRegionService saleRegionService; private BmsRegionService saleRegionService;
private BmsRegion2Service bizRegionService;
private SysUserService userService; private SysUserService userService;
@ -643,6 +639,13 @@ public class PortalOfCostApplication {
if(region==null){Assert.throwEx("销售区域不存在,请重新编辑");} if(region==null){Assert.throwEx("销售区域不存在,请重新编辑");}
centerName = region.getName(); centerName = region.getName();
centerId = region.getId(); centerId = region.getId();
}else if (centerCode.contains("bizRegion_")) {
centerType = "bizRegion";
centerCode = centerCode.replace("bizRegion_","");
BmsRegion2 region = bizRegionService.getByCode(centerCode);
if(region==null){Assert.throwEx("行政区域不存在,请重新编辑");}
centerName = region.getName();
centerId = region.getId();
}else if (centerCode.contains("customer_")) { }else if (centerCode.contains("customer_")) {
centerType = "customer"; centerType = "customer";
centerCode = centerCode.replace("customer_",""); centerCode = centerCode.replace("customer_","");
@ -886,7 +889,7 @@ public class PortalOfCostApplication {
Arrays.asList(activity), Arrays.asList(activity),
Arrays.asList(activitySubject), Arrays.asList(activitySubject),
activityCenterGoodsList, activityCenterGoodsList,
Arrays.asList(activityCenter),false,false,false); Arrays.asList(activityCenter),false,true,false);
//不匹配的商品,保存到无预算表 //不匹配的商品,保存到无预算表
List<TbsBudgetCostItem> unMatchBudgetItem = budgetCostResult.getBudgetUnMatchList(); List<TbsBudgetCostItem> unMatchBudgetItem = budgetCostResult.getBudgetUnMatchList();
@ -1364,10 +1367,9 @@ public class PortalOfCostApplication {
} }
costApply.setTotalActivityUsedAmount(totalCostAmt); costApply.setTotalActivityUsedAmount(totalCostAmt);
if(costApply.getTotalActivityAmount().compareTo(costApply.getTotalActivityUsedAmount())==0){
costApply.setChargeState(3);
}
costApplyService.updateById(costApply); costApplyService.updateById(costApply);
tbsCostApplyMapper.updateContractFinishedState();
} }
/** /**

18
src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java

@ -32,6 +32,7 @@ import com.qs.serve.modules.vtb.entity.bo.VtbVerificationCenterCommitBo;
import com.qs.serve.modules.vtb.entity.bo.VtbVerificationContactBo; import com.qs.serve.modules.vtb.entity.bo.VtbVerificationContactBo;
import com.qs.serve.modules.vtb.entity.bo.VtbVerificationSubjectCommitBo; import com.qs.serve.modules.vtb.entity.bo.VtbVerificationSubjectCommitBo;
import com.qs.serve.modules.vtb.entity.dto.VtbVerificationCodesDTO; import com.qs.serve.modules.vtb.entity.dto.VtbVerificationCodesDTO;
import com.qs.serve.modules.vtb.entity.dto.XltDelVerificationDto;
import com.qs.serve.modules.vtb.entity.vo.VtbCostInfo; import com.qs.serve.modules.vtb.entity.vo.VtbCostInfo;
import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper; import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper;
import com.qs.serve.modules.vtb.service.*; import com.qs.serve.modules.vtb.service.*;
@ -590,5 +591,22 @@ public class VtbVerificationController {
return R.ok(); return R.ok();
} }
@GetMapping("delErp")
public R<?> a(String checkCode){
VtbVerification verification = vtbVerificationService.getOne(new LambdaQueryWrapper<VtbVerification>()
.eq(VtbVerification::getVerificationCode,checkCode));
String host = "http://59.37.164.96:2506/action/cms/cost/deletion";
//TODO 请求伟成接口,删除 XLT_BIFyDbf
XltDelVerificationDto delVerificationDto = new XltDelVerificationDto(
verification.getUserCode(),
null,
verification.getVerificationCode()
);
String requestBody = JsonUtil.objectToJson(delVerificationDto);
String response = HttpUtil.doPost(host,requestBody,null);
log.info("请求伟成接口,删除 XLT_BIFyDbf:{}",response);
return R.ok();
}
} }

27
src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java

@ -99,16 +99,12 @@ public class VtbVerificationApplication {
}else { }else {
result = R.ok(); result = R.ok();
} }
if(result.getStatus()==200){
//提交审批 //提交审批
log.warn("提交审批到致远,{}",JsonUtil.objectToJson(result)); log.warn("提交审批到致远,{}",JsonUtil.objectToJson(result));
// 判断是否含有下个节点
try {
Thread.sleep(500); if(result.getStatus()==200 ){
} catch (InterruptedException e) {
e.printStackTrace();
}
//verificationOperationService.runCompensate(verification.getId()+"");
String templateCode = verificationOperationService.getTemplateCode(); String templateCode = verificationOperationService.getTemplateCode();
SyAffairStateResult stateResult = verificationOperationService.checkAffairState(verification.getId()+"",templateCode); SyAffairStateResult stateResult = verificationOperationService.checkAffairState(verification.getId()+"",templateCode);
@ -120,6 +116,18 @@ public class VtbVerificationApplication {
//提交审批 //提交审批
log.warn("提交审批到致远,检查单据[{}]状态:{}",verification.getVerificationCode(),affairState); log.warn("提交审批到致远,检查单据[{}]状态:{}",verification.getVerificationCode(),affairState);
//要确保所有不为next才支持回调
if(result.getData().equals("next")){
summeryResult = "next";
}
// 判断是否含有下个节点
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
R r = commitAffairSuccess(affairCommit, verification, isBackCommit, summeryResult); R r = commitAffairSuccess(affairCommit, verification, isBackCommit, summeryResult);
// String summeryResult = result.getData(); // String summeryResult = result.getData();
@ -148,7 +156,7 @@ public class VtbVerificationApplication {
}else if (result.getStatus()==500){ }else if (result.getStatus()==500){
return result; return result;
} }
return R.error("远程调用失败"); return R.ok();
} }
/** /**
@ -209,6 +217,7 @@ public class VtbVerificationApplication {
String userId = AuthContextUtils.getSysUserId(); String userId = AuthContextUtils.getSysUserId();
SysUser sysUser = sysUserService.getById(userId); SysUser sysUser = sysUserService.getById(userId);
try { try {
//保存记录 //保存记录
// 判断是否含有下个节点 // 判断是否含有下个节点

21
src/main/java/com/qs/serve/task/BirTask.java

@ -1,6 +1,7 @@
package com.qs.serve.task; package com.qs.serve.task;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.config.DevEnvironmentConfig;
import com.qs.serve.common.config.properties.ProjectApisProperties; import com.qs.serve.common.config.properties.ProjectApisProperties;
import com.qs.serve.common.model.AmountDTO; import com.qs.serve.common.model.AmountDTO;
import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.AuthContextUtils;
@ -18,9 +19,11 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.TimeZone;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -37,13 +40,29 @@ public class BirTask {
/** /**
* 同步bir实时 * 同步bir实时
* 15分钟执行一次
*/ */
@Scheduled(cron="0 0/15 * * * ?") @Scheduled(cron="0 0/15 * * * ?")
public void toSyncBirEcro(){ public void toSyncBirEcro(){
AuthContextUtils.setTenant("001"); AuthContextUtils.setTenant("001");
birActivityCenterGoodsController.toSyncBirEcro(); birActivityCenterGoodsController.toSyncBirEcro();
log.warn("bir 更新 完成"); log.warn("bir更新完成");
} }
/**
* 移除因作废的费用申请导致的bir数据
* 每天中午13点触发
*/
@Scheduled(cron="0 0 13 * * ?")
public void toSyncRm(){
AuthContextUtils.setTenant("001");
birActivityCenterGoodsController.toSyncRm();
log.warn("bir更新完成 - 作废的费用");
}
@PostConstruct
void started() {
log.warn("bir同步开启");
}
} }

1
src/main/resources/mapper/bir/BirTbsVtbPayJoinMapper.xml

@ -58,6 +58,7 @@
a.charge_state, a.charge_state,
a.submit_time, a.submit_time,
a.pass_time, a.pass_time,
a.contract_flag,
act.activity_code as activity_code, act.activity_code as activity_code,
act.act_title as activity_title, act.act_title as activity_title,

Loading…
Cancel
Save