Browse Source

Merge remote-tracking branch 'origin/muti_db' into muti_db

checkBack
15989082884@163.com 1 year ago
parent
commit
0eff80e67f
  1. 5
      src/main/java/com/qs/serve/common/model/dto/SimpleKeyValue.java
  2. 13
      src/main/java/com/qs/serve/modules/goods/service/GoodsRuleService.java
  3. 82
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsRuleServiceImpl.java
  4. 10
      src/main/java/com/qs/serve/modules/oms/entity/bo/OmsVerifySkuParam.java
  5. 3
      src/main/java/com/qs/serve/modules/oms/service/OmsOrderPart1Service.java
  6. 9
      src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java
  7. 74
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderPart1ServiceImpl.java
  8. 79
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  9. 5
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java
  10. 101
      src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationBatchController.java
  11. 31
      src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java
  12. 4
      src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationBatch.java
  13. 3
      src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYard.java
  14. 6
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication2.java
  15. 40
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationApplication2Impl.java
  16. 262
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchOperationServiceImpl.java
  17. 11
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchServiceImpl.java
  18. 9
      src/main/resources/mapper/tbs/TbsBudgetMatchMapper.xml

5
src/main/java/com/qs/serve/common/model/dto/SimpleKeyValue.java

@ -20,4 +20,9 @@ public class SimpleKeyValue<T> {
/** 说明 */
private String remark;
public SimpleKeyValue(String label,T value){
this.label = label;
this.value = value;
}
}

13
src/main/java/com/qs/serve/modules/goods/service/GoodsRuleService.java

@ -1,6 +1,7 @@
package com.qs.serve.modules.goods.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.common.model.dto.SimpleKeyValue;
import com.qs.serve.modules.goods.entity.GoodsRule;
import com.qs.serve.modules.goods.entity.GoodsRuleItem;
import com.qs.serve.modules.goods.entity.bo.GoodsRuleBo;
@ -31,11 +32,19 @@ public interface GoodsRuleService extends IService<GoodsRule> {
/**
* 检测sku是否符合规则
* @param skuCodes
* @param ruleItems
* @param supplierId
* @param throwEx 不判断数量拦截只条件拦截
* @return
*/
boolean checkSkuCode(List<String> skuCodes,List<GoodsRuleItem> ruleItems,boolean throwEx);
boolean checkSkuCode(List<String> skuCodes,String supplierId,boolean throwEx);
/**
* 检测sku是否符合规则,返回不和规范的ID
* @param supplierId
* @param skuIds
* @return
*/
List<SimpleKeyValue> checkSkuCode(String supplierId,List<Long> skuIds);
}

82
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsRuleServiceImpl.java

@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.model.dto.SimpleKeyValue;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.bms.entity.BmsRegion;
@ -273,7 +274,8 @@ public class GoodsRuleServiceImpl extends ServiceImpl<GoodsRuleMapper,GoodsRule>
@Override
public boolean checkSkuCode(List<String> skuCodes, List<GoodsRuleItem> ruleItems, boolean throwEx) {
public boolean checkSkuCode(List<String> skuCodes, String supplierId, boolean throwEx) {
List<GoodsRuleItem> ruleItems = this.listBySupplierId(supplierId);
if(CollUtil.isEmpty(skuCodes)){
return false;
}
@ -282,7 +284,6 @@ public class GoodsRuleServiceImpl extends ServiceImpl<GoodsRuleMapper,GoodsRule>
return true;
}
List<GoodsSku> goodsSkuList = skuMapper.selectList(new LambdaQueryWrapper<GoodsSku>().in(GoodsSku::getSkuCode,skuCodes));
for (GoodsSku sku : goodsSkuList) {
boolean notExistInOnly = false;
if(itemDTO.getOnlySpuIds()!=null){
@ -351,10 +352,85 @@ public class GoodsRuleServiceImpl extends ServiceImpl<GoodsRuleMapper,GoodsRule>
}
}
}
return false;
}
@Override
public List<SimpleKeyValue> checkSkuCode( String supplierId,List<Long> skuIds) {
List<SimpleKeyValue> errorSkuIds = new ArrayList<>();
List<GoodsRuleItem> ruleItems = this.listBySupplierId(supplierId);
if(CollUtil.isEmpty(skuIds)){
return errorSkuIds;
}
GoodsRuleItemDTO itemDTO = this.buildGoodsRuleItemDTO(ruleItems);
if(itemDTO==null){
return errorSkuIds;
}List<GoodsSku> goodsSkuList = skuMapper.selectBatchIds(skuIds);
for (GoodsSku sku : goodsSkuList) {
boolean notExistInOnly = false;
if(itemDTO.getOnlySpuIds()!=null){
for (String onlySpuId : itemDTO.getOnlySpuIds()) {
if(sku.getSpuId().toString().equals(onlySpuId)){
notExistInOnly = true;
break;
}
}
}
if(!notExistInOnly){
errorSkuIds.add(new SimpleKeyValue("客户维度(只可选未包含该产品)",sku.getId()));
continue;
}
if(itemDTO.getNotInSpuIds()!=null){
boolean isErr = false;
for (String notInSpuId : itemDTO.getNotInSpuIds()) {
if(sku.getSpuId().toString().equals(notInSpuId)){
isErr = true;
errorSkuIds.add(new SimpleKeyValue("客户维度(不可选)",sku.getId()));
break;
}
}
if(isErr){
continue;
}
}
if(itemDTO.getOnlyCategoryIds()==null&&itemDTO.getNotInCategoryIds()==null){
continue;
}
GoodsSpu spu = spuMapper.selectById(sku.getSpuId());
if(itemDTO.getOnlyCategoryIds()!=null){
boolean anyMatch = false;
for (String categoryId : spu.listCategoryIds()) {
for (String onlyCategoryId : itemDTO.getOnlyCategoryIds()) {
boolean itemAnyMatch = onlyCategoryId.equals(categoryId);
if(itemAnyMatch){
anyMatch = true;
break;
}
}
}
if (!anyMatch){
errorSkuIds.add(new SimpleKeyValue("客户维度(只可选未包含该产品)",sku.getId()));
continue;
}
}
if(itemDTO.getNotInCategoryIds()!=null){
for (String notInCateId : itemDTO.getNotInCategoryIds()) {
boolean b1 = notInCateId.equals(spu.getCategoryFirst());
boolean b2 = notInCateId.equals(spu.getCategorySecond());
boolean b3 = notInCateId.equals(spu.getCategoryThird());
boolean anyMatch = b1||b2||b3;
if (anyMatch){
errorSkuIds.add(new SimpleKeyValue("客户维度(不可选)",sku.getId()));
}
}
}
}
return errorSkuIds;
}
private List<String> getRuleStrings(List<GoodsRuleItem> list) {
if(CollUtil.isEmpty(list)){
return null;

10
src/main/java/com/qs/serve/modules/oms/entity/bo/OmsVerifySkuParam.java

@ -11,6 +11,16 @@ import java.util.List;
@Data
public class OmsVerifySkuParam {
/** 供应商ID */
private Long supplierId;
/** skuId */
private List<Long> skuIds;
/** 是否临期品 */
private Integer lqpFlag;
/** 规则ID */
private Long ruleId;
}

3
src/main/java/com/qs/serve/modules/oms/service/OmsOrderPart1Service.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.oms.service;
import com.qs.serve.common.model.dto.SimpleKeyValue;
import com.qs.serve.modules.oms.entity.OmsOrder;
import com.qs.serve.modules.oms.entity.bo.OmsVerifySkuParam;
@ -25,6 +26,6 @@ public interface OmsOrderPart1Service {
* @param param
* @return
*/
List<String> verifySku(OmsVerifySkuParam param);
List<SimpleKeyValue> verifySku(OmsVerifySkuParam param);
}

9
src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java

@ -1,6 +1,8 @@
package com.qs.serve.modules.oms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.common.model.dto.SimpleKeyValue;
import com.qs.serve.modules.goods.entity.GoodsCategoryRule;
import com.qs.serve.modules.oms.entity.OmsOrder;
import com.qs.serve.modules.oms.entity.bo.*;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
@ -78,6 +80,13 @@ public interface OmsOrderService extends IService<OmsOrder> {
*/
OmsOrder modifyImminentOrder(OmsOrderImminentBo param);
/**
* 拦截规则
* @param skuIds
* @param categoryRule
* @return
*/
List<SimpleKeyValue> handleCategoryRule(List<Long> skuIds,GoodsCategoryRule categoryRule);
}

74
src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderPart1ServiceImpl.java

@ -1,25 +1,39 @@
package com.qs.serve.modules.oms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.framework.redis.RedisService;
import com.qs.serve.common.model.dto.SimpleKeyValue;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.CodeGenUtil;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.mapper.BmsRegionMapper;
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper;
import com.qs.serve.modules.bms.service.BmsSupplierAddressService;
import com.qs.serve.modules.goods.entity.GoodsCategoryRule;
import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.entity.dto.GoodsAccrIdsDto;
import com.qs.serve.modules.goods.mapper.GoodsCategoryRuleMapper;
import com.qs.serve.modules.goods.mapper.GoodsSkuMapper;
import com.qs.serve.modules.goods.service.*;
import com.qs.serve.modules.oms.entity.OmsOrder;
import com.qs.serve.modules.oms.entity.OmsOrderItem;
import com.qs.serve.modules.oms.entity.bo.OmsVerifySkuParam;
import com.qs.serve.modules.oms.service.OmsOrderItemService;
import com.qs.serve.modules.oms.service.OmsOrderPart1Service;
import com.qs.serve.modules.oms.service.OmsOrderService;
import com.qs.serve.modules.sale.mapper.SalePlanGoodsMapper;
import com.qs.serve.modules.sale.mapper.SalePlanMapper;
import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysDeptService;
import com.qs.serve.modules.sys.service.SysUserService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author YenHex
@ -31,9 +45,29 @@ import java.util.stream.Collectors;
public class OmsOrderPart1ServiceImpl implements OmsOrderPart1Service {
private SysUserService sysUserService;
private SysDeptService sysDeptService;
private SalePlanMapper salePlanMapper;
private SalePlanGoodsMapper salePlanGoodsMapper;
private OmsOrderService omsOrderService;
private OmsOrderItemService omsOrderItemService;
private GoodsRuleService goodsRuleService;
private GoodsAccreditService goodsAccreditService;
private GoodsImminentBatchService goodsImminentBatchService;
private GoodsSkuMapper goodsSkuMapper;
private GoodsSkuService goodsSkuService;
private GoodsSpuService goodsSpuService;
private GoodsCategoryRuleMapper goodsCategoryRuleMapper;
private GoodsCustomerPriceService goodsCustomerPriceService;
private BmsSupplierMapper bmsSupplierMapper;
private BmsRegionMapper bmsRegionMapper;
private BmsSupplierAddressService bmsSupplierAddressService;
private SeeYonRequestBaseService seeYonRequestBaseService;
private RedisService redisService;
@Override
public OmsOrder copyOrder(Long orderId) {
OmsOrder orgOrder = omsOrderService.getById(orderId);
@ -86,9 +120,43 @@ public class OmsOrderPart1ServiceImpl implements OmsOrderPart1Service {
}
@Override
public List<String> verifySku(OmsVerifySkuParam param) {
public List<SimpleKeyValue> verifySku(OmsVerifySkuParam param) {
List<Long> skuIds = param.getSkuIds();
GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(param.getRuleId());
BmsSupplier supplier = bmsSupplierMapper.selectById(param.getSupplierId());
List<SimpleKeyValue> errorSkuIds = new ArrayList<>();
//拦截商品授权维度规则
GoodsAccrIdsDto accrIdsDto = goodsAccreditService.listIgnoreAcc2(supplier.getId(), supplier.listBizRegionIds(), supplier.listSaleRegionIds());
if (accrIdsDto != null) {
List<Long> selectSkuIds = goodsSkuMapper.listByOtherIds(
accrIdsDto.getCateIds(),
accrIdsDto.getSpuIds(),
accrIdsDto.getSkuIds(),
accrIdsDto.getNotInCateIds(),
accrIdsDto.getNotInSpuIds(),
accrIdsDto.getNotInSkuIds()
);
for (Long paramSkuId : skuIds) {
for (Long skuId : selectSkuIds) {
if (paramSkuId.equals(skuId)) {
errorSkuIds.add(new SimpleKeyValue("商品未授权",skuId));
break;
}
}
}
}
//拦截客户维度规则
errorSkuIds.addAll(goodsRuleService.checkSkuCode( supplier.getId(),skuIds));
//拦截品类下单规则
errorSkuIds.addAll(omsOrderService.handleCategoryRule(skuIds,categoryRule));
return null;
return errorSkuIds;
}
}

79
src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java

@ -2,9 +2,9 @@ package com.qs.serve.modules.oms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.config.properties.ProjectApisProperties;
import com.qs.serve.common.framework.redis.RedisService;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.dto.SimpleKeyValue;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.BmsSupplier;
@ -12,39 +12,36 @@ import com.qs.serve.modules.bms.entity.BmsSupplierAddress;
import com.qs.serve.modules.bms.mapper.BmsRegionMapper;
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper;
import com.qs.serve.modules.bms.service.BmsSupplierAddressService;
import com.qs.serve.modules.goods.common.GoodsConst;
import com.qs.serve.modules.goods.entity.*;
import com.qs.serve.modules.goods.entity.dto.GoodsAccrIdsDto;
import com.qs.serve.modules.goods.entity.dto.InventoryCusPrice;
import com.qs.serve.modules.goods.entity.so.InventoryCusPriceQuery;
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo;
import com.qs.serve.modules.goods.mapper.GoodsCategoryRuleMapper;
import com.qs.serve.modules.goods.mapper.GoodsSkuMapper;
import com.qs.serve.modules.goods.service.*;
import com.qs.serve.modules.oms.entity.*;
import com.qs.serve.modules.oms.entity.bo.*;
import com.qs.serve.modules.oms.entity.dto.*;
import com.qs.serve.modules.oms.entity.dto.OmsCalcAmount;
import com.qs.serve.modules.oms.entity.dto.ShoppingCartsCheckResult;
import com.qs.serve.modules.oms.entity.dto.XltOrderDTO;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo;
import com.qs.serve.modules.oms.mapper.OmsOrderMapper;
import com.qs.serve.modules.oms.service.OmsOrderItemService;
import com.qs.serve.modules.oms.service.OmsOrderService;
import com.qs.serve.modules.oms.service.OmsShoppingCartService;
import com.qs.serve.modules.sale.entity.SalePlan;
import com.qs.serve.modules.sale.entity.SalePlanGoods;
import com.qs.serve.modules.sale.mapper.SalePlanGoodsMapper;
import com.qs.serve.modules.sale.mapper.SalePlanMapper;
import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService;
import com.qs.serve.modules.sys.entity.SysDept;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysDeptService;
import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.oms.service.OmsOrderService;
import com.qs.serve.modules.oms.mapper.OmsOrderMapper;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
@ -57,6 +54,7 @@ import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.*;
/**
* 订单 服务实现类
*
* @author YenHex
* @since 2022-10-14
*/
@ -348,7 +346,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
this.checkGoodsRule(supplier, newOrderItemList);
//拦截客户维度规则
goodsRuleService.checkSkuCode(skuCodes,goodsRuleService.listBySupplierId(order.getSupplierId().toString()),true);
goodsRuleService.checkSkuCode(skuCodes, supplier.getId(), true);
//拦截品类下单规则
this.handleCategoryRule(categoryRule, newOrderItemList);
@ -389,6 +387,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
/**
* 拦截规则
*
* @param categoryRule
* @param orderItems
*/
@ -430,8 +429,63 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
}
}
@Override
public List<SimpleKeyValue> handleCategoryRule(List<Long> skuIds,GoodsCategoryRule categoryRule) {
List<SimpleKeyValue> errSkuIds = new ArrayList<>();
if (categoryRule != null && skuIds.size() > 0) {
List<String> cids = Arrays.asList(categoryRule.getBrandIds());
List<String> igcids = null;
if (categoryRule.getIgnoreBrandIds() != null) {
igcids = Arrays.asList(categoryRule.getIgnoreBrandIds());
}
List<GoodsSku> skuList = new ArrayList<>();
if (CollectionUtil.isNotEmpty(skuIds)) {
skuList = goodsSkuService.listByIds(skuIds);
for (GoodsSku sku : skuList) {
if (!sku.getOrderFlag().equals(1) && sku.getSpecialFlag().equals(0)) {
errSkuIds.add(new SimpleKeyValue("单品不予下单且非特殊品",sku.getId()));
break;
}
}
skuIds.addAll(skuList.stream().map(GoodsSku::getSpuId).collect(Collectors.toList()));
}
Set<Long> spuIds = skuList.stream().map(GoodsSku::getSpuId).collect(Collectors.toSet());
List<GoodsSpu> spuList = goodsSpuService.listByIds(spuIds);
for (GoodsSpu goodsSpu : spuList) {
if (!goodsSpu.getShelf().equals(1)) {
Long errSkuId = null;
for (GoodsSku sku : skuList) {
if(sku.getSpuId().equals(goodsSpu.getId())){
errSkuId = sku.getId();
}
}
errSkuIds.add(new SimpleKeyValue("SKU不予下单且非特殊品",errSkuId));
}
if (!goodsSpu.getOrderFlag().equals(1)) {
boolean msp = skuList.stream().anyMatch(m -> m.getSpuId().equals(goodsSpu.getId()) && m.getSpecialFlag().equals(1));
if (!msp) {
Long errSkuId = null;
for (GoodsSku sku : skuList) {
if(sku.getSpuId().equals(goodsSpu.getId())){
errSkuId = sku.getId();
}
}
errSkuIds.add(new SimpleKeyValue("SKU不予下单",errSkuId));
}
}
matchIgnoreCate(igcids, goodsSpu.getCategoryFirst(), goodsSpu);
matchIgnoreCate(igcids, goodsSpu.getCategorySecond(), goodsSpu);
matchIgnoreCate(igcids, goodsSpu.getCategoryThird(), goodsSpu);
}
}
return errSkuIds;
}
/**
* 拦截忽略的品牌
*
* @param igcids
* @param spuCateId
* @param goodsSpu
@ -675,7 +729,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
SysUser user = sysUserService.getById(AuthContextUtils.getSysUserId());
GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(param.getBrandRuleId());
BmsSupplier supplier = bmsSupplierMapper.selectById(param.getSupplierId());
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(param.getAddressId());;
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(param.getAddressId());
;
OmsOrder order;
if (param.getId() != null) {
@ -758,7 +813,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
this.checkGoodsRule(supplier, orderItems);
//拦截客户维度规则
goodsRuleService.checkSkuCode(skuCodes,goodsRuleService.listBySupplierId(order.getSupplierId().toString()),true);
goodsRuleService.checkSkuCode(skuCodes, order.getSupplierId().toString(), true);
//拦截品类下单规则
this.handleCategoryRule(categoryRule, orderItems);

5
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java

@ -71,7 +71,10 @@ public class TbsAffairCommitBo {
*/
private List<AffairSubjectCenterLine> affairSubjectCenterLines;
/**
* 用于明细单参数
*/
private List<TbsAffairCommitBo> childList;
@Data
public static class AffairSubjectLine{

101
src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationBatchController.java

@ -1,29 +1,38 @@
package com.qs.serve.modules.vtb.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.annotation.LimitSubmit;
import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.seeyon.entity.CtpAffair;
import com.qs.serve.modules.seeyon.entity.CtpAffairQo;
import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam;
import com.qs.serve.modules.seeyon.entity.dto.CtpAffairPageSo;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.entity.TbsActivitySubjectYarn;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo;
import com.qs.serve.modules.vtb.entity.VtbVerification;
import com.qs.serve.modules.vtb.entity.VtbVerificationYard;
import com.qs.serve.modules.vtb.entity.bo.VtbVerificationBatchBo;
import com.qs.serve.modules.vtb.service.VtbVerificationApplication2;
import com.qs.serve.modules.vtb.service.VtbVerificationService;
import com.qs.serve.modules.vtb.service.*;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import com.qs.serve.modules.vtb.entity.VtbVerificationBatch;
import com.qs.serve.modules.vtb.service.VtbVerificationBatchService;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
/**
* 批量核销
@ -40,6 +49,8 @@ public class VtbVerificationBatchController {
private VtbVerificationBatchService vtbVerificationBatchService;
private VtbVerificationService vtbVerificationService;
private VtbVerificationApplication2 vtbVerificationApplication2;
private VtbVerificationBatchOperationService vtbVerificationBatchOperationService;
private VtbVerificationYardService verificationYardService;
/**
* 翻页
@ -72,6 +83,7 @@ public class VtbVerificationBatchController {
vtbVerificationApplication2.buildRelateInfo(verification);
}
batch.setVerificationList(verificationList);
//
return R.ok(batch);
}
@ -89,6 +101,83 @@ public class VtbVerificationBatchController {
return R.ok();
}
/**
* 加签
* @param param
* @return
*/
@LimitSubmit
@PostMapping("/addNode")
@SysLog(module = SystemModule.Verification, title = "核销加签", biz = BizType.OTHER)
public R<String> addNode(@RequestBody CtpAddNodeParam param){
return vtbVerificationBatchOperationService.addNode(param);
}
/**
* 补偿按钮
* @param id
* @return
*/
@LimitSubmit
@PostMapping("/compensate/{id}")
public R<?> compensate(@PathVariable("id") String id){
vtbVerificationBatchOperationService.runCompensate(id);
return R.ok();
}
/**
* 提交审批节点
* @return
*/
@LimitSubmit
@PostMapping("/commitAffair")
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE)
public R<?> commitAffair(@RequestBody @Valid TbsAffairCommitBo affairCommit){
seeYonService.testConnection();
R r = vtbVerificationBatchOperationService.commitAffair(affairCommit);
if(affairCommit.getState().equals(2)){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
vtbVerificationBatchOperationService.runCompensate(affairCommit.getCostApplyId()+"");
}
return r;
}
/**
* 审批结果(用于详情页)
* @param targetId
* @return
*/
@GetMapping("/ListAffairs")
public R<List<CtpAffairVo>> pageMemberAffair(String targetId){
VtbVerificationBatch batch = vtbVerificationBatchService.getById(targetId);
return vtbVerificationBatchOperationService.pageAffairV2(targetId,batch.getVtbBatchCode());
}
/**
* 审批调整记录
* @param batchId
* @return
*/
@GetMapping("/listCommitChanges")
public R<?> getList(Long batchId){
List<VtbVerification> verifications = vtbVerificationService.list(new LambdaQueryWrapper<VtbVerification>()
.eq(VtbVerification::getBatchId,batchId));
if(CollectionUtil.isEmpty(verifications)){
return R.error("批次参数异常");
}
VtbVerification verification = verifications.get(0);
LambdaQueryWrapper<VtbVerificationYard> yardLqw = new LambdaQueryWrapper<>();
yardLqw.eq(VtbVerificationYard::getVerificationId,verification.getId());
yardLqw.orderByDesc(VtbVerificationYard::getId);
List<VtbVerificationYard> yardList = verificationYardService.list(yardLqw);
Map<String, Object> result = vtbVerificationApplication2.buildCommentChangeList(verification, yardList);
return R.ok(result);
}
}

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

@ -39,6 +39,7 @@ import com.qs.serve.modules.vtb.service.*;
import com.qs.serve.modules.vtb.service.impl.VtbVerificationOperationServiceImpl;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@ -211,37 +212,11 @@ public class VtbVerificationController {
yardLqw.eq(VtbVerificationYard::getVerificationId,id);
yardLqw.orderByDesc(VtbVerificationYard::getId);
List<VtbVerificationYard> yardList = verificationYardService.list(yardLqw);
for (VtbVerificationYard yard : yardList) {
LambdaQueryWrapper<VtbVerificationYardItem> itemLqw = new LambdaQueryWrapper<>();
itemLqw.eq(VtbVerificationYardItem::getYardId,yard.getId());
itemLqw.apply("(last_amount!=curr_amount or last_session!=curr_session or last_person!=curr_person)");
List<VtbVerificationYardItem> yardItemList = vtbVerificationYardItemService.list(itemLqw);
//拓展成本中心维度调整
LambdaQueryWrapper<VtbVerificationYardCenterItem> centerItemLqw = new LambdaQueryWrapper<>();
centerItemLqw.eq(VtbVerificationYardCenterItem::getYardId,yard.getId());
centerItemLqw.apply("last_amount != curr_amount");
List<VtbVerificationYardCenterItem> centerItems = vtbVerificationYardCenterItemService.list(centerItemLqw);
Map<Long,List<VtbVerificationYardCenterItem>> subjectGetCenterYardMap = centerItems.stream()
.collect(Collectors.groupingBy(VtbVerificationYardCenterItem::getSubjectId));
for (VtbVerificationYardItem yardItem : yardItemList) {
List<VtbVerificationYardCenterItem> centerItemList = subjectGetCenterYardMap.get(yardItem.getSubjectId());
yardItem.setCenterItemList(centerItemList);
}
yard.setYardItemList(yardItemList);
SysUser sysUser = sysUserService.getById(yard.getCreateBy());
if(sysUser!=null){
yard.setUserInfo(sysUser.toSysUserVo());
}
}
Map<String,Object> result = new HashMap<>(2);
result.put("verification",verification);
result.put("commentLines",yardList);
Map<String, Object> result = vtbVerificationApplication2.buildCommentChangeList(verification, yardList);
return R.ok(result);
}
/**
* 提交核销
* @param commitBo

4
src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationBatch.java

@ -145,6 +145,10 @@ public class VtbVerificationBatch implements Serializable {
@Length(max = 255,message = "业务继承人长度不能超过255字")
private String extUserName;
private String wayId;
private String wayTitle;
/** 核销明细列表 */
@TableField(exist = false)

3
src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYard.java

@ -32,6 +32,9 @@ public class VtbVerificationYard implements Serializable {
@TableId(type = IdType.AUTO)
private Long id;
/** 批量核销ID */
private Long batchId;
/** 核算id */
@NotNull(message = "核算id不能为空")
private Long verificationId;

6
src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication2.java

@ -1,6 +1,10 @@
package com.qs.serve.modules.vtb.service;
import com.qs.serve.modules.vtb.entity.VtbVerification;
import com.qs.serve.modules.vtb.entity.VtbVerificationYard;
import java.util.List;
import java.util.Map;
/**
* @author YenHex
@ -14,4 +18,6 @@ public interface VtbVerificationApplication2 {
*/
void buildRelateInfo(VtbVerification verification);
Map<String, Object> buildCommentChangeList(VtbVerification verification, List<VtbVerificationYard> yardList);
}

40
src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationApplication2Impl.java

@ -5,6 +5,7 @@ import com.qs.serve.common.config.properties.ProjectApisProperties;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.sys.entity.SysAttach;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysAttachService;
import com.qs.serve.modules.sys.service.SysPostUserService;
import com.qs.serve.modules.sys.service.SysUserService;
@ -16,12 +17,16 @@ import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper;
import com.qs.serve.modules.vtb.service.*;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author YenHex
@ -55,6 +60,41 @@ public class VtbVerificationApplication2Impl implements VtbVerificationApplicati
private VtbVerificationOperationServiceImpl vtbVerificationOperationService;
private VtbVerificationExtService vtbVerificationExtService;
@Override
@NotNull
public Map<String, Object> buildCommentChangeList(VtbVerification verification, List<VtbVerificationYard> yardList) {
for (VtbVerificationYard yard : yardList) {
LambdaQueryWrapper<VtbVerificationYardItem> itemLqw = new LambdaQueryWrapper<>();
itemLqw.eq(VtbVerificationYardItem::getYardId,yard.getId());
itemLqw.apply("(last_amount!=curr_amount or last_session!=curr_session or last_person!=curr_person)");
List<VtbVerificationYardItem> yardItemList = vtbVerificationYardItemService.list(itemLqw);
//拓展成本中心维度调整
LambdaQueryWrapper<VtbVerificationYardCenterItem> centerItemLqw = new LambdaQueryWrapper<>();
centerItemLqw.eq(VtbVerificationYardCenterItem::getYardId,yard.getId());
centerItemLqw.apply("last_amount != curr_amount");
List<VtbVerificationYardCenterItem> centerItems = vtbVerificationYardCenterItemService.list(centerItemLqw);
Map<Long,List<VtbVerificationYardCenterItem>> subjectGetCenterYardMap = centerItems.stream()
.collect(Collectors.groupingBy(VtbVerificationYardCenterItem::getSubjectId));
for (VtbVerificationYardItem yardItem : yardItemList) {
List<VtbVerificationYardCenterItem> centerItemList = subjectGetCenterYardMap.get(yardItem.getSubjectId());
yardItem.setCenterItemList(centerItemList);
}
yard.setYardItemList(yardItemList);
SysUser sysUser = sysUserService.getById(yard.getCreateBy());
if(sysUser!=null){
yard.setUserInfo(sysUser.toSysUserVo());
}
}
Map<String,Object> result = new HashMap<>(2);
result.put("verification", verification);
result.put("commentLines", yardList);
return result;
}
@Override
public void buildRelateInfo(VtbVerification vtbVerification) {
Long id = vtbVerification.getId();

262
src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchOperationServiceImpl.java

@ -2,39 +2,45 @@ package com.qs.serve.modules.vtb.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.SpringUtils;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.data.entity.DataAffairCommit;
import com.qs.serve.modules.data.mapper.DataAffairCommitMapper;
import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam;
import com.qs.serve.modules.seeyon.service.SeeYonOperationService;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.vtb.common.VtbVerificationState;
import com.qs.serve.modules.vtb.entity.VtbVerification;
import com.qs.serve.modules.vtb.entity.VtbVerificationBatch;
import com.qs.serve.modules.vtb.service.VtbVerificationBatchOperationService;
import com.qs.serve.modules.vtb.service.VtbVerificationBatchService;
import com.qs.serve.modules.vtb.service.VtbVerificationService;
import com.qs.serve.modules.vtb.entity.*;
import com.qs.serve.modules.vtb.service.*;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
* @author YenHex
* @since 2024/6/14
*/
@Slf4j
@Service
@AllArgsConstructor
public class VtbVerificationBatchOperationServiceImpl implements VtbVerificationBatchOperationService {
private final VtbVerificationBatchService vtbVerificationBatchService;
private final VtbVerificationService vtbVerificationService;
private final SysUserService sysUserService;
private final VtbVerificationApplication verificationApplication;
private final VtbVerificationSubjectCenterService vtbVerificationSubjectCenterService;
private final VtbVerificationYardService yardService;
private final VtbVerificationYardItemService yardItemService;
private final VtbVerificationYardCenterItemService yardCenterItemService;
private final VtbVerificationSubjectService vtbVerificationSubjectService;
@Override
public String getTemplateCode() {
@ -64,7 +70,16 @@ public class VtbVerificationBatchOperationServiceImpl implements VtbVerification
@Override
public Object doFinished(TbsAffairCommitBo param) {
//退回
VtbVerificationBatch batch = vtbVerificationBatchService.getById(param.getTargetId());
List<VtbVerification> verificationList = vtbVerificationBatchService.listVerifications(batch.getId());
batch.setVtbBatchStatus(VtbVerificationBatch.BatchState.CHECK_BACK);
batch.setBackedTime(LocalDateTime.now());
vtbVerificationBatchService.updateById(batch);
for (VtbVerification verification : verificationList) {
//循环调用每个核销
vtbVerificationService.successCommit(verification.getId());
}
return null;
}
@ -115,31 +130,30 @@ public class VtbVerificationBatchOperationServiceImpl implements VtbVerification
}
@Override
public void buildAffairCommitData(TbsAffairCommitBo affairCommit, String flag) {
public void buildAffairCommitData(TbsAffairCommitBo commitParam, String flag) {
//常规的提交审批日志
String userId = AuthContextUtils.getSysUserId();
SysUser sysUser = sysUserService.getById(userId);
VtbVerificationBatch batch = vtbVerificationBatchService.getById(commitParam.getTargetId());
List<VtbVerification> verificationList = vtbVerificationBatchService.listVerifications(batch.getId());
//保存记录
try {
// 判断是否含有下个节点
DataAffairCommitMapper dataAffairCommitMapper = SpringUtils.getBean(DataAffairCommitMapper.class);
String userId = AuthContextUtils.getSysUserId();
SysUser sysUser = getUserMapper().selectById(userId);
DataAffairCommit dataAffairCommit = new DataAffairCommit();
dataAffairCommit.setTargetCode(getTemplateCode());
dataAffairCommit.setTargetId(getTargetId(affairCommit));
dataAffairCommit.setId(affairCommit.getAffairId());
dataAffairCommit.setCommentVal(affairCommit.getComment());
dataAffairCommit.setReleaseFlag(affairCommit.getReleaseFlag());
dataAffairCommit.setState(affairCommit.getState());
dataAffairCommit.setTargetId(getTargetId(commitParam));
dataAffairCommit.setId(commitParam.getAffairId());
dataAffairCommit.setCommentVal(commitParam.getComment());
dataAffairCommit.setReleaseFlag(commitParam.getReleaseFlag());
dataAffairCommit.setState(commitParam.getState());
dataAffairCommit.setUserId(sysUser.getId());
dataAffairCommit.setUserCode(sysUser.getCode());
dataAffairCommit.setUserName(sysUser.getName());
dataAffairCommit.setResultData(flag);
dataAffairCommit.setAttachIds(affairCommit.getAttachIds());
dataAffairCommit.setAttachIds(commitParam.getAttachIds());
dataAffairCommitMapper.insert(dataAffairCommit);
VtbVerificationBatch batch = vtbVerificationBatchService.getById(affairCommit.getTargetId());
List<VtbVerification> verificationList = vtbVerificationBatchService.listVerifications(batch.getId());
//保存到每个核销
for (VtbVerification verification : verificationList) {
DataAffairCommit obj = CopierUtil.copy(dataAffairCommit,new DataAffairCommit());
@ -152,6 +166,205 @@ public class VtbVerificationBatchOperationServiceImpl implements VtbVerification
} catch (Exception e) {
e.printStackTrace();
}
for (TbsAffairCommitBo itemCommit : commitParam.getChildList()) {
VtbVerification verification = null;
for (VtbVerification item : verificationList) {
if(item.getId().toString().equals(itemCommit.getTargetId())){
verification = item;
break;
}
}
if(verification==null){
log.error("对接参数异常:{}",JsonUtil.objectToJson(commitParam));
continue;
}
//更新释放标识
if(itemCommit.getReleaseFlag()!=null){
VtbVerification vtbVer = new VtbVerification();
vtbVer.setId(verification.getId());
vtbVer.setRegReleaseFlag(itemCommit.getReleaseFlag());
vtbVerificationService.updateById(vtbVer);
}
//保存审批线结果
VtbVerificationYard yard = new VtbVerificationYard();
yard.setBatchId(Long.parseLong(commitParam.getTargetId()));
yard.setVerificationId(verification.getId());
yard.setVerificationSubCode(verification.getVerificationCode());
yard.setState(itemCommit.getState());
yard.setAffairId(itemCommit.getAffairId());
yard.setComment(itemCommit.getComment());
yard.setCaseRemark(itemCommit.getCaseRemark());
//审批中(next)、完成(finish)、拒绝(refused)
boolean isFinish = "finished".equals(flag);
boolean isNext = "next".equals(flag);
boolean isStop = "backed".equals(flag)||"refuse".equals(flag);
//释放费用
boolean isRelease = itemCommit.getReleaseFlag()!=null&&itemCommit.getReleaseFlag().equals(1);
if (isStop){
log.warn("单据[{}]状态:{},中止审批",verification.getVerificationCode(),flag);
verificationApplication.backCommitAndStop(verification, "backed".equals(flag));
if(isRelease){
log.warn("单据[{}]状态:{},中止审批并释放费用",verification.getVerificationCode(),flag);
vtbVerificationService.release(verification.getActivityId(),sysUser.getCode(),false);
}
}else if (!isFinish && !isNext){
log.error("远程调用返回,非指定状态:{}",JsonUtil.objectToJson(commitParam));
continue;
}
yardService.save(yard);
//非终止或者驳回,保存审批线金额明细
BigDecimal totalAmount = BigDecimal.ZERO;
if(!isStop){
List<VtbVerificationSubjectCenter> subjectCenters = vtbVerificationSubjectCenterService.listByVerificationId(verification.getId());
//isCenterCommit 代表自定义成本中心维度递交
boolean isCenterCommit = subjectCenters.size()>0;
List<VtbVerificationSubject> verificationSubjects = vtbVerificationSubjectService.listByVerificationId(verification.getId());
List<VtbVerificationYardItem> yardItemList = new ArrayList<>();
List<VtbVerificationSubject> verSubject4Update = new ArrayList<>();
List<VtbVerificationYardCenterItem> yarnCenterList = new ArrayList<>();
//拓展成本中心维度调整记录
List<VtbVerificationSubjectCenter> subjectCenterUpdateList = new ArrayList<>();
for (VtbVerificationSubject currVs : verificationSubjects) {
BigDecimal changeAmount = null;
Integer countSession = null;
Integer countPerson = null;
List<TbsAffairCommitBo.AffairSubjectCenterItemLine> centerItemLineList = null;
// if(isCenterCommit){
if(CollectionUtil.isNotEmpty(itemCommit.getAffairSubjectCenterLines())){
for (TbsAffairCommitBo.AffairSubjectCenterLine centerLine : itemCommit.getAffairSubjectCenterLines()) {
if(currVs.getSubjectId().equals(centerLine.getSubjectId())){
changeAmount = BigDecimal.ZERO;
if(centerLine.getCenterItemLines()!=null){
for (TbsAffairCommitBo.AffairSubjectCenterItemLine itemLine : centerLine.getCenterItemLines()) {
changeAmount = changeAmount.add(itemLine.getAmount());
}
}
centerItemLineList = centerLine.getCenterItemLines();
countSession = centerLine.getCountSession();
countPerson = centerLine.getCountPerson();
break;
}
}
}
//保存明细判断是否更变金额
VtbVerificationYardItem yardItem = CopierUtil.copy(currVs,new VtbVerificationYardItem());
yardItem.setYardId(yard.getId());
yardItem.initSetNull();
BigDecimal lastAmount = currVs.getUsedAmount();
yardItem.setLastAmount(lastAmount);
Integer lastSession = currVs.getCountSession();
yardItem.setLastSession(lastSession);
yardItem.setCurrSession(lastSession);
if(countSession != null){
yardItem.setCurrSession(countSession);
if(!countSession.equals(lastSession)){
VtbVerificationSubject verSub4Upd = new VtbVerificationSubject();
verSub4Upd.setId(currVs.getId());
verSub4Upd.setCountSession(countSession);
verSubject4Update.add(verSub4Upd);
if(lastSession!=null){
if(lastSession > countSession){
yardItem.setRemark2("减少场次:"+ (lastSession - countSession));
}else {
yardItem.setRemark2("增加场次:"+ (countSession - lastSession));
}
}
}
}
Integer lastPerson = currVs.getCountPerson();
yardItem.setLastPerson(lastPerson);
yardItem.setCurrPerson(lastPerson);
if( countPerson != null ){
yardItem.setCurrPerson(countPerson);
if(!countPerson.equals(lastPerson)){
VtbVerificationSubject verSub4Upd = new VtbVerificationSubject();
verSub4Upd.setId(currVs.getId());
verSub4Upd.setCountPerson(countPerson);
verSubject4Update.add(verSub4Upd);
if(lastPerson!=null){
if(lastPerson>countPerson){
yardItem.setRemark3("减少人数:"+ (lastPerson - countPerson));
}else {
yardItem.setRemark3("增加人数:"+ (countPerson - lastPerson));
}
}
}
}
//金额有更变
if(changeAmount!=null&&changeAmount.compareTo(lastAmount)!=0){
yardItem.setCurrAmount(changeAmount);
BigDecimal diff = changeAmount.subtract(lastAmount);
if(diff.compareTo(BigDecimal.ZERO)>0){
yardItem.setRemark("增加费用:"+diff);
}else {
yardItem.setRemark("减少费用:"+diff.negate());
}
VtbVerificationSubject verSub4Upd = new VtbVerificationSubject();
verSub4Upd.setId(currVs.getId());
verSub4Upd.setUsedAmount(changeAmount);
verSubject4Update.add(verSub4Upd);
}else {
yardItem.setCurrAmount(lastAmount);
}
totalAmount = totalAmount.add(yardItem.getCurrAmount());
if(centerItemLineList!=null&&subjectCenters.size()>0){
for (TbsAffairCommitBo.AffairSubjectCenterItemLine centerItemLine : centerItemLineList) {
VtbVerificationYardCenterItem centerItem = VtbVerificationYardCenterItem.toNewObject(yardItem);
for (VtbVerificationSubjectCenter subjectCenter : subjectCenters) {
if(centerItemLine.getActivityCenterId().equals(subjectCenter.getActivityCenterId())){
centerItem.setCenterId(subjectCenter.getCenterId());
centerItem.setCenterCode(subjectCenter.getCenterCode());
centerItem.setCenterName(subjectCenter.getCenterName());
centerItem.setCenterType(subjectCenter.getCenterType());
centerItem.setActivityCenterId(subjectCenter.getActivityCenterId());
centerItem.setLastAmount(subjectCenter.getUsedAmount()==null?BigDecimal.ZERO:subjectCenter.getUsedAmount());
centerItem.setCurrAmount(centerItemLine.getAmount());
BigDecimal diff = centerItem.getCurrAmount().subtract(centerItem.getLastAmount());
//修改center的记录金额
VtbVerificationSubjectCenter scParam = new VtbVerificationSubjectCenter();
scParam.setId(subjectCenter.getId());
scParam.setUsedAmount(centerItemLine.getAmount());
subjectCenterUpdateList.add(scParam);
if(diff.compareTo(BigDecimal.ZERO)>0){
centerItem.setRemark("增加费用:"+diff);
}else {
centerItem.setRemark("减少费用:"+diff.negate());
}
}
}
yarnCenterList.add(centerItem);
}
}
yardItemList.add(yardItem);
}
yardItemService.saveBatch(yardItemList);
if(yarnCenterList.size()>0){
yardCenterItemService.saveBatch(yarnCenterList);
}
vtbVerificationSubjectService.updateBatchById(verSubject4Update);
if(subjectCenterUpdateList.size()>0){
vtbVerificationSubjectCenterService.updateBatchById(subjectCenterUpdateList);
}
//重新计算合计
if(isFinish){
verificationApplication.finishCallBack(verification, totalAmount);
if(isRelease){
vtbVerificationService.release(verification.getActivityId(),sysUser.getCode(),false);
}
}else {
//更新金额
VtbVerification vtbVer = new VtbVerification();
vtbVer.setId(verification.getId());
vtbVer.setAmount(totalAmount);
vtbVerificationService.updateById(vtbVer);
}
}
}
}
@Override
@ -165,4 +378,9 @@ public class VtbVerificationBatchOperationServiceImpl implements VtbVerification
//审批完成后调用
}
@Override
public R<?> commitAffair(TbsAffairCommitBo affairCommit) {
return VtbVerificationBatchOperationService.super.commitAffair(affairCommit);
}
}

11
src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchServiceImpl.java

@ -161,6 +161,8 @@ public class VtbVerificationBatchServiceImpl extends ServiceImpl<VtbVerification
verificationBatch.setUserId(sysUser.getId());
verificationBatch.setUserCode(sysUser.getCode());
verificationBatch.setUserName(sysUser.getName());
verificationBatch.setWayId(payWay.getId()+"");
verificationBatch.setWayTitle(payWay.getTitle());
this.save(verificationBatch);
String batchId = verificationBatch.getId()+"";
@ -346,7 +348,13 @@ public class VtbVerificationBatchServiceImpl extends ServiceImpl<VtbVerification
* @param allVerificationSubjects
* @param allVerificationCenters
*/
private void mainCheckAndCreateBatchItemData(VtbVerificationBatchBo submitBo, TbsCostApply costApply, BmsSupplier supplier, List<TbsActivity> activityList, SysUser sysUser, PayWay payWay, List<Long> orgVerificationIds, List<VtbVerification> newVerificationList, List<VtbVerificationChannel> allVerificationChannelList, List<VtbVerificationChannelPoint> allVerificationChannelPointList, List<VtbVerificationSubject> allVerificationSubjects, List<VtbVerificationSubjectCenter> allVerificationCenters) {
private void mainCheckAndCreateBatchItemData(VtbVerificationBatchBo submitBo, TbsCostApply costApply, BmsSupplier supplier,
List<TbsActivity> activityList, SysUser sysUser, PayWay payWay,
List<Long> orgVerificationIds, List<VtbVerification> newVerificationList,
List<VtbVerificationChannel> allVerificationChannelList,
List<VtbVerificationChannelPoint> allVerificationChannelPointList,
List<VtbVerificationSubject> allVerificationSubjects,
List<VtbVerificationSubjectCenter> allVerificationCenters) {
for (VtbVerificationBo verificationBo : submitBo.getVerificationList()) {
for (TbsActivity activity : activityList) {
if(verificationBo.getActivityId().equals(activity.getId())){
@ -450,7 +458,6 @@ public class VtbVerificationBatchServiceImpl extends ServiceImpl<VtbVerification
verification.setSupplierBizRegionThirdName(costApply.getSupplierBizRegionThirdName());
verification.setRemark(verificationBo.getRemark());
verification.setWayId(verificationBo.getPayWayId());
verification.setWayTitle(payWay.getTitle());
}
/**

9
src/main/resources/mapper/tbs/TbsBudgetMatchMapper.xml

@ -51,6 +51,7 @@
-- (select sum(tbg3.amount) amt,tbg3.schedule_item_budget_id from tbs_budget_log tbg3 where tbg3.opt_type not in(0,2,3) and tbg3.del_flag = 0 GROUP BY tbg3.schedule_item_budget_id) temp_tbg3
-- on temp_tbg3.schedule_item_budget_id = tsib.id
where 1=1
AND tb.del_flag = 0 AND tsib.del_flag = 0
AND (tb.subject_id = 0 OR tb.subject_id = #{query.subjectId} )
AND tb.center_id = #{query.centerId}
AND tb.center_type = #{query.centerType}
@ -58,11 +59,13 @@
AND tsib.start_date &lt;= #{query.actStartDate}
AND tsib.end_date &gt;= #{query.actEndDate}
AND ( tb.condition_flag =0 or
<foreach collection="query.queryGoodsGroups" item ="item" index="i" open="(" close=")" separator="or">
( tbc.target_type=#{item.targetType} and tbc.target_id = #{item.targetId} )
AND ( tb.condition_flag =0 or (
tbc.del_flag = 0 AND
<foreach collection="query.queryGoodsGroups" item="item" index="i" open="(" close=")" separator="or">(
tbc.target_type=#{item.targetType} and tbc.target_id = #{item.targetId} )
</foreach>
)
)
</select>
<select id="getBudgetUsedAmount" resultType="com.qs.serve.common.model.AmountDTO">

Loading…
Cancel
Save