Browse Source

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

checkBack
15989082884@163.com 1 year ago
parent
commit
de36f85328
  1. 22
      src/main/java/com/qs/serve/common/config/properties/QiShengDsProperties.java
  2. 18
      src/main/java/com/qs/serve/modules/base/ErpDataBaseService.java
  3. 3
      src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java
  4. 20
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java
  5. 10
      src/main/java/com/qs/serve/modules/goods/controller/GoodsImminentBatchController.java
  6. 1
      src/main/java/com/qs/serve/modules/goods/entity/GoodsImminentBatch.java
  7. 24
      src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java
  8. 16
      src/main/java/com/qs/serve/modules/oms/entity/bo/OmsVerifySkuParam.java
  9. 30
      src/main/java/com/qs/serve/modules/oms/service/OmsOrderPart1Service.java
  10. 1
      src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java
  11. 94
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderPart1ServiceImpl.java
  12. 241
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  13. 3
      src/main/java/com/qs/serve/modules/sys/controller/SysDeptController.java
  14. 3
      src/main/java/com/qs/serve/modules/sys/entity/SysDept.java
  15. 18
      src/main/java/com/qs/serve/modules/tag/mapper/TagInfoMapper.java
  16. 18
      src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java
  17. 1
      src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java
  18. 9
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java
  19. 25
      src/main/java/com/qs/serve/modules/vtb/common/VerificationUtil.java
  20. 81
      src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationBatchController.java
  21. 136
      src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationBatch.java
  22. 26
      src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationBatchBo.java
  23. 14
      src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationBatchMapper.java
  24. 22
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationBatchService.java
  25. 29
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java
  26. 49
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchOperationServiceImpl.java
  27. 316
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchServiceImpl.java
  28. 53
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java
  29. 2
      src/main/resources/mapper/goods/GoodsImminentBatchMapper.xml
  30. 1
      src/main/resources/mapper/sys/SysDeptMapper.xml

22
src/main/java/com/qs/serve/common/config/properties/QiShengDsProperties.java

@ -0,0 +1,22 @@
package com.qs.serve.common.config.properties;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* @author YenHex
* @since 2024/6/18
*/
@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.qisheng")
public class QiShengDsProperties {
private String url;
private String username;
private String password;
}

18
src/main/java/com/qs/serve/modules/base/ErpDataBaseService.java

@ -1,8 +1,10 @@
package com.qs.serve.modules.base;
import cn.hutool.crypto.digest.DigestUtil;
import com.qs.serve.common.config.properties.QiShengDsProperties;
import com.qs.serve.common.util.HttpUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@ -18,15 +20,8 @@ import java.net.URLEncoder;
@Service
public class ErpDataBaseService {
@Value("${spring.datasource.dynamic.datasource.qisheng.url}")
private String erpJslGroupDbUrl;
@Value("${spring.datasource.dynamic.datasource.qisheng.username}")
private String erpJslGroupDbUsername;
@Value("${spring.datasource.dynamic.datasource.qisheng.password}")
private String erpJslGroupDbPassword;
@Autowired
private QiShengDsProperties qiShengDsProperties;
public static String erpJslGroupDbConnectionUrl;
@ -36,7 +31,10 @@ public class ErpDataBaseService {
@PostConstruct
public void initErpJslGroupDbConnectionUrl() {
erpJslGroupDbConnectionUrl = this.erpJslGroupDbUrl + ";user=" + this.erpJslGroupDbUsername + ";password=" + this.erpJslGroupDbPassword;
log.warn("数据库加载... ErpJslGroupDbConnectionUrl:{}",erpJslGroupDbConnectionUrl);
erpJslGroupDbConnectionUrl = qiShengDsProperties.getUrl()
+ ";user=" + qiShengDsProperties.getUsername()
+ ";password=" + qiShengDsProperties.getPassword();
}
}

3
src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java

@ -582,6 +582,9 @@ public class BmsSupplierController {
bmsSupplier.setSupplierAttachInfoList(attachService.listByIds(Arrays.asList(bmsSupplier.getSupplierAttachIds())));
}
bmsSupplier.setUserVos(userVos);
initSupplierList(Arrays.asList(bmsSupplier));
return R.ok(bmsSupplier);
}

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

@ -240,9 +240,9 @@ public class BmsSupplierServiceImpl extends ServiceImpl<BmsSupplierMapper,BmsSup
*/
private void initRegion(BmsSupplier supplier,String regionId){
supplier.setRegionFirst("0");
supplier.setRegionSecond("");
supplier.setRegionThird("");
supplier.setRegionFourthly("");
supplier.setRegionSecond("0");
supplier.setRegionThird("0");
supplier.setRegionFourthly("0");
supplier.setRegionLast("0");
if(regionId==null||regionId.equals("0")){
return;
@ -257,8 +257,6 @@ public class BmsSupplierServiceImpl extends ServiceImpl<BmsSupplierMapper,BmsSup
for (int i = 0; i < regionIds.length; i++) {
if(i==0){
supplier.setRegionFirst(regionIds[i]);
supplier.setRegionSecond(regionIds[i]);
supplier.setRegionThird(regionIds[i]);
}else if(i==1){
supplier.setRegionSecond(regionIds[i]);
}else if(i==2){
@ -276,12 +274,12 @@ public class BmsSupplierServiceImpl extends ServiceImpl<BmsSupplierMapper,BmsSup
* @param regionId
*/
private void initRegion2(BmsSupplier supplier,String regionId){
supplier.setRegion2First("0");
supplier.setRegion2Second("0");
supplier.setRegion2Third("0");
supplier.setRegion2Fourthly("0");
supplier.setRegion2Last("0");
if(regionId==null||regionId.equals("0")){
supplier.setRegion2First("0");
supplier.setRegion2Second("");
supplier.setRegion2Third("");
supplier.setRegion2Fourthly("");
supplier.setRegion2Last("0");
return;
}
List<BmsRegion2> childList = region2Service.listChild(regionId);
@ -294,8 +292,6 @@ public class BmsSupplierServiceImpl extends ServiceImpl<BmsSupplierMapper,BmsSup
for (int i = 0; i < regionIds.length; i++) {
if(i==0){
supplier.setRegion2First(regionIds[i]);
supplier.setRegion2Second(regionIds[i]);
supplier.setRegion2Third(regionIds[i]);
}else if(i==1){
supplier.setRegion2Second(regionIds[i]);
}else if(i==2){

10
src/main/java/com/qs/serve/modules/goods/controller/GoodsImminentBatchController.java

@ -50,6 +50,7 @@ public class GoodsImminentBatchController {
LambdaQueryWrapper<GoodsImminentBatch> lqw = new LambdaQueryWrapper<>(param);
PageUtil.startPage();
List<GoodsImminentBatch> list = goodsImminentBatchService.list(lqw);
list.forEach(a->a.setQuantity(a.getQuantity()-a.getOrderQuantity()));
return R.byPageHelperList(list);
}
@ -61,8 +62,9 @@ public class GoodsImminentBatchController {
@GetMapping("/getById/{id}")
@SysLog(module = SystemModule.GOODS, title = "临期批次", biz = BizType.QUERY)
public R<GoodsImminentBatch> getById(@PathVariable("id") String id){
GoodsImminentBatch goodsImminentBatch = goodsImminentBatchService.getById(id);
return R.ok(goodsImminentBatch);
GoodsImminentBatch a = goodsImminentBatchService.getById(id);
a.setQuantity(a.getQuantity()-a.getOrderQuantity());
return R.ok(a);
}
/**
@ -88,6 +90,10 @@ public class GoodsImminentBatchController {
return R.error("已存在订单,无法修改批号");
}
}
int rs = entity.getQuantity()+org.getOrderQuantity();
entity.setQuantity(rs);
boolean result = goodsImminentBatchService.updateById(entity);
return R.isTrue(result);
}

1
src/main/java/com/qs/serve/modules/goods/entity/GoodsImminentBatch.java

@ -28,6 +28,7 @@ public class GoodsImminentBatch implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** skuID */

24
src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java

@ -27,6 +27,7 @@ import com.qs.serve.modules.oms.entity.OmsOrderItem;
import com.qs.serve.modules.oms.entity.bo.*;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
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.seeyon.service.impl.SeeYonRequestBaseService;
import com.qs.serve.modules.sys.entity.SysUser;
@ -65,6 +66,7 @@ public class OmsOrderApi {
private SysPostUserService postUserService;
private SeeYonRequestBaseService seeYonRequestBaseService;
private GoodsImminentBatchMapper goodsImminentBatchMapper;
private OmsOrderPart1Service omsOrderPart1Service;
/**
* 确认订单
@ -156,6 +158,7 @@ public class OmsOrderApi {
PageUtil.startPage();
LambdaQueryWrapper<OmsOrder> orderWrapper = new LambdaQueryWrapper<>(param);
orderWrapper.eq(OmsOrder::getUserId,AuthContextUtils.getSysUserId());
orderWrapper.eq(OmsOrder::getOrderType,param.getOrderType()==null?0:param.getOrderType());
orderWrapper.orderByDesc(OmsOrder::getId);
List<OmsOrder> list = omsOrderService.list(orderWrapper);
@ -339,5 +342,26 @@ public class OmsOrderApi {
return R.ok();
}
/**
* 校验sku合法性
* @param verifySkuParam
* @return
*/
@PostMapping("/verifySku")
public R<?> verifySku(OmsVerifySkuParam verifySkuParam){
return R.ok(omsOrderPart1Service.verifySku(verifySkuParam));
}
/**
* 复制订单
* @param orderId
* @return
*/
@PostMapping("/copyOrder/{orderId}")
public R<OmsOrder> copyOrder(@PathVariable Long orderId){
return R.ok(omsOrderPart1Service.copyOrder(orderId));
}
}

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

@ -0,0 +1,16 @@
package com.qs.serve.modules.oms.entity.bo;
import lombok.Data;
import java.util.List;
/**
* @author YenHex
* @since 2024/6/21
*/
@Data
public class OmsVerifySkuParam {
private List<Long> skuIds;
}

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

@ -0,0 +1,30 @@
package com.qs.serve.modules.oms.service;
import com.qs.serve.modules.oms.entity.OmsOrder;
import com.qs.serve.modules.oms.entity.bo.OmsVerifySkuParam;
import java.util.List;
/**
* @author YenHex
* @since 2024/6/21
*/
public interface OmsOrderPart1Service {
/**
* 复制订单
* @param orderId
* @return
*/
OmsOrder copyOrder(Long orderId);
/**
* 校验sku合法性
* @param param
* @return
*/
List<String> verifySku(OmsVerifySkuParam param);
}

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

@ -78,5 +78,6 @@ public interface OmsOrderService extends IService<OmsOrder> {
*/
OmsOrder modifyImminentOrder(OmsOrderImminentBo param);
}

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

@ -0,0 +1,94 @@
package com.qs.serve.modules.oms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.goods.entity.dto.GoodsAccrIdsDto;
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.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysUserService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author YenHex
* @since 2024/6/21
*/
@Slf4j
@Service
@AllArgsConstructor
public class OmsOrderPart1ServiceImpl implements OmsOrderPart1Service {
private SysUserService sysUserService;
private OmsOrderService omsOrderService;
private OmsOrderItemService omsOrderItemService;
@Override
public OmsOrder copyOrder(Long orderId) {
OmsOrder orgOrder = omsOrderService.getById(orderId);
List<OmsOrderItem> orderItems = omsOrderItemService.list(new LambdaQueryWrapper<OmsOrderItem>()
.eq(OmsOrderItem::getOrderId,orderId));
OmsOrder order = new OmsOrder();
order.setId(null);
order.setOrderType(orgOrder.getOrderType());
String orderPrefix = null;
if(order.getOrderType().equals(0)){
orderPrefix = "SN";
}else if(order.getOrderType().equals(1)){
orderPrefix = "ZP";
}else if(order.getOrderType().equals(2)){
orderPrefix = "SC";
}else if(order.getOrderType().equals(3)){
orderPrefix = "SP";
}else {
Assert.throwEx("订单类型错误");
}
order.setOrderSn(orderPrefix+ CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder));
SysUser user = sysUserService.getById(AuthContextUtils.getSysUserId());
order.setUserId(user.getId());
order.setUserCode(user.getCode());
order.setUserName(user.getName());
order.setUserPhone(user.getMobile());
order.setCheckState(0);
order.setLatitudeFrom(orgOrder.getLatitudeFrom());
order.setOrderSource(orgOrder.getOrderSource());
order.setSupplierId(orgOrder.getSupplierId());
order.setSupplierCode(orgOrder.getSupplierCode());
order.setSupplierName(orgOrder.getSupplierName());
order.setSupplierAddrId(orgOrder.getSupplierAddrId());
order.setBrandRuleId(orgOrder.getBrandRuleId());
order.setBrandRuleName(orgOrder.getBrandRuleName());
order.setBillType(orgOrder.getBillType());
order.setCdOrderRemark(orgOrder.getCdOrderRemark());
order.setRemark(orgOrder.getRemark());
omsOrderService.save(order);
for (OmsOrderItem item : orderItems) {
item.setId(null);
item.setOrderId(order.getId());
}
omsOrderItemService.saveBatch(orderItems);
return order;
}
@Override
public List<String> verifySku(OmsVerifySkuParam param) {
return null;
}
}

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

@ -3,6 +3,7 @@ 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.util.*;
import com.qs.serve.modules.bms.entity.BmsRegion;
@ -37,6 +38,7 @@ 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;
@ -84,6 +86,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
private GoodsRuleService goodsRuleService;
private GoodsAccreditService goodsAccreditService;
private GoodsImminentBatchService goodsImminentBatchService;
private RedisService redisService;
@Override
@ -233,6 +236,9 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
if(!order.getStatus().equals(0)){
Assert.throwEx("非草稿状态无法修改");
}
if(order.getOrderType().equals(3)){
Assert.throwEx("临期品订单不支持该接口修改");
}
order.setId(param.getId());
order.setOrderType(param.getOrderType());
order.setOrderSource(param.getOrderSource());
@ -395,13 +401,28 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
}
Set<Long> spuIds = orderItems.stream().map(OmsOrderItem::getSpuId).collect(Collectors.toSet());
List<Long> skuIds = orderItems.stream().map(OmsOrderItem::getSkuId).collect(Collectors.toList());
List<GoodsSku> skuList = new ArrayList<>();
if(CollectionUtil.isNotEmpty(skuIds)){
List<GoodsSpu> spuTmpList = goodsSpuService.listByIds(skuIds);
spuIds.addAll(spuTmpList.stream().map(GoodsSpu::getId).collect(Collectors.toList()));
skuList = goodsSkuService.listByIds(skuIds);
for (GoodsSku sku : skuList) {
if(!sku.getOrderFlag().equals(1)&&sku.getSpecialFlag().equals(0)){
Assert.throwEx("单品["+sku.getSkuCode()+"]不予下单且非特殊品");
}
}
skuIds.addAll(skuList.stream().map(GoodsSku::getSpuId).collect(Collectors.toList()));
}
List<GoodsSpu> spuList = goodsSpuService.listByIds(spuIds);
for (GoodsSpu goodsSpu : spuList) {
if(!goodsSpu.getShelf().equals(1)){
Assert.throwEx("SKU已下架["+goodsSpu.getSpuCode()+"]不予下单");
}
if(!goodsSpu.getOrderFlag().equals(1)){
boolean msp = skuList.stream().anyMatch(m->m.getSpuId().equals(goodsSpu.getId())&&m.getSpecialFlag().equals(1));
if(!msp){
Assert.throwEx("SKU["+goodsSpu.getSpuCode()+"]不予下单");
}
}
matchIgnoreCate(igcids,goodsSpu.getCategoryFirst(),goodsSpu);
matchIgnoreCate(igcids,goodsSpu.getCategorySecond(),goodsSpu);
matchIgnoreCate(igcids,goodsSpu.getCategoryThird(),goodsSpu);
@ -463,7 +484,15 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
List<OmsShoppingCart> shoppingCarts = confirmOrder.getShoppingCarts();
OmsOrder order = new OmsOrder();
order.setLatitudeFrom(confirmOrder.getLatitudeFrom().toLowerCase(Locale.ROOT));
order.setOrderSn("SN"+CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder));
String orderPrefix = null;
if(order.getOrderType()==null||order.getOrderType().equals(0)){
orderPrefix = "SN";
}else if(order.getOrderType().equals(1)){
orderPrefix = "ZP";
}else if(order.getOrderType().equals(2)){
orderPrefix = "SC";
}
order.setOrderSn(orderPrefix+CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder));
GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(confirmOrder.getBrandRuleId());
if(categoryRule!=null){
@ -646,7 +675,7 @@ 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 supplierDefaultAddress = bmsSupplierAddressService.getDefault(Long.parseLong(supplier.getId()));
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(param.getAddressId());;
OmsOrder order;
if(param.getId()!=null){
@ -664,7 +693,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
order.setSupplierId(Long.parseLong(supplier.getId()));
order.setSupplierCode(supplier.getCode());
order.setSupplierName(supplier.getName());
order.setSupplierAddrId(supplierDefaultAddress!=null?supplierDefaultAddress.getId():0);
order.setSupplierAddrId(supplierAddress!=null?supplierAddress.getId():0);
order.setBrandRuleId(param.getBrandRuleId());
order.setUserId(user.getId());
order.setUserName(user.getName());
@ -675,69 +704,66 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
order.setRemark(param.getRemark());
this.saveOrUpdate(order);
if(order.getStatus()==null||order.getStatus().equals(0)){
if(CollectionUtil.isEmpty(param.getItemList())){
return order;
}
}
Set<Long> batchSkuIds = param.getItemList().stream().map(OmsOrderImminentBo.ItemParam::getBatchSkuId)
.collect(Collectors.toSet());
if(CollectionUtil.isEmpty(param.getItemList())){
Assert.throwEx("请选择商品");
}
List<GoodsImminentBatch> imminentBatches = goodsImminentBatchService
.list(
new LambdaQueryWrapper<GoodsImminentBatch>()
.in(GoodsImminentBatch::getId,batchSkuIds)
.ge(GoodsImminentBatch::getEndDate, LocalDate.now())
);
if(CollectionUtil.isEmpty(imminentBatches)){
Assert.throwEx("参数过期或无效,请重新选择商品");
}
List<OmsOrderItem> orderItems = new ArrayList<>();
Set<String> skuIds = imminentBatches.stream()
.map(GoodsImminentBatch::getSkuId).collect(Collectors.toSet());
if(skuIds.size()!=imminentBatches.size()){
Assert.throwEx("不同批次相同产品,请分开下单");
}
if(CollectionUtil.isNotEmpty(param.getItemList())){
Set<Long> batchSkuIds = param.getItemList().stream().map(OmsOrderImminentBo.ItemParam::getBatchSkuId)
.collect(Collectors.toSet());
if(order.getStatus()!=null&&!order.getStatus().equals(0)&&CollectionUtil.isEmpty(param.getItemList())){
Assert.throwEx("请选择商品");
}
List<GoodsImminentBatch> imminentBatches = goodsImminentBatchService
.list(
new LambdaQueryWrapper<GoodsImminentBatch>()
.in(GoodsImminentBatch::getId,batchSkuIds)
.ge(GoodsImminentBatch::getEndDate, LocalDate.now())
);
if(CollectionUtil.isEmpty(imminentBatches)){
Assert.throwEx("参数过期或无效,请重新选择商品");
}
List<GoodsSku> goodsSkuList = goodsSkuService.listByIds(skuIds);
Set<String> skuIds = imminentBatches.stream()
.map(GoodsImminentBatch::getSkuId).collect(Collectors.toSet());
if(skuIds.size()!=imminentBatches.size()){
Assert.throwEx("不同批次相同产品,请分开下单");
}
List<Long> spuIds = goodsSkuList.stream().map(GoodsSku::getSpuId).collect(Collectors.toList());
spuIds.add(0L);
List<GoodsSpu> spuList = goodsSpuService.listByIds(spuIds);
List<GoodsSku> goodsSkuList = goodsSkuService.listByIds(skuIds);
List<OmsOrderItem> orderItems = new ArrayList<>();
List<Long> spuIds = goodsSkuList.stream().map(GoodsSku::getSpuId).collect(Collectors.toList());
spuIds.add(0L);
List<GoodsSpu> spuList = goodsSpuService.listByIds(spuIds);
for (OmsOrderImminentBo.ItemParam item : param.getItemList()) {
for (GoodsImminentBatch batch : imminentBatches) {
if(item.getBatchSkuId().equals(batch.getId())){
for (GoodsSku sku : goodsSkuList) {
if(sku.getId().toString().equals(batch.getSkuId())){
//创建OrderItem
OmsOrderItem orderItem = createImminentOrderItem(order, spuList, item, batch, sku);
orderItems.add(orderItem);
for (OmsOrderImminentBo.ItemParam item : param.getItemList()) {
for (GoodsImminentBatch batch : imminentBatches) {
if(item.getBatchSkuId().equals(batch.getId())){
for (GoodsSku sku : goodsSkuList) {
if(sku.getId().toString().equals(batch.getSkuId())){
//创建OrderItem
OmsOrderItem orderItem = createImminentOrderItem(order, spuList, item, batch, sku);
orderItems.add(orderItem);
}
}
}
}
}
}
List<String> skuCodes = orderItems.stream()
.map(OmsOrderItem::getSkuCode).collect(Collectors.toList());
List<String> skuCodes = orderItems.stream()
.map(OmsOrderItem::getSkuCode).collect(Collectors.toList());
//商品特殊价
buildSkuSpecPrice(supplier, orderItems, skuCodes);
//商品特殊价
buildSkuSpecPrice(supplier, orderItems, skuCodes);
//拦截商品授权维度规则
this.checkGoodsRule(supplier, orderItems);
//拦截商品授权维度规则
this.checkGoodsRule(supplier, orderItems);
//拦截客户维度规则
goodsRuleService.checkSkuCode(skuCodes,goodsRuleService.listBySupplierId(order.getSupplierId().toString()),true);
//拦截客户维度规则
goodsRuleService.checkSkuCode(skuCodes,goodsRuleService.listBySupplierId(order.getSupplierId().toString()),true);
//拦截品类下单规则
this.handleCategoryRule(categoryRule,orderItems);
//拦截品类下单规则
this.handleCategoryRule(categoryRule,orderItems);
}
this.updateById(order);
//移除已有的ITEM
@ -745,15 +771,20 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
rmItemLqw.eq(OmsOrderItem::getOrderId,param.getId());
omsOrderItemService.remove(rmItemLqw);
//重新保存item
omsOrderItemService.saveBatch(orderItems);
if(orderItems.size()>0){
omsOrderItemService.saveBatch(orderItems);
}
//立即下单
if(param.getInstantFlag()!=null&&param.getInstantFlag().equals(1)){
if(supplier.getCdOrderFlag().equals(1) && !StringUtils.hasText(param.getCdOrderRemark()) ){
Assert.throwEx("请补充CD单号");
}
this.buildPriceOrder(order.getId()+"",null);
}
return order;
}
@NotNull
private OmsOrderItem createImminentOrderItem(OmsOrder order, List<GoodsSpu> spuList, OmsOrderImminentBo.ItemParam item, GoodsImminentBatch batch, GoodsSku sku) {
OmsOrderItem orderItem = new OmsOrderItem();
@ -799,6 +830,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
@Override
public void buildPriceOrder(String id,String amount) {
redisService.throwResLock(OmsOrder.class.getSimpleName(),id);
OmsOrder omsOrder = super.getById(id);
String userId = AuthContextUtils.getSysUserId();
SysUser sysUser = sysUserService.getById(userId);
@ -812,9 +844,6 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
if(!omsOrder.getStatus().equals(0)&&!omsOrder.getStatus().equals(6)){
Assert.throwEx("订单状态不支持下单");
}
if(omsOrder.getOrderType().equals(3)){
Assert.throwEx("临期品订单不支持该接口修改");
}
LambdaQueryWrapper<OmsOrderItem> iteLqw = new LambdaQueryWrapper<>();
iteLqw.eq(OmsOrderItem::getOrderId,id);
List<OmsOrderItem> orderItemList = omsOrderItemService.list(iteLqw);
@ -823,6 +852,27 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
Assert.throwEx("空项目不支持下单");
}
List<GoodsImminentBatch> imminentBatches = new ArrayList<>();
if(omsOrder.getOrderType().equals(3)){
//临期品相关拦截
for (OmsOrderItem orderItem : orderItemList) {
if(orderItem.getSkuBatchId()==null){
Assert.throwEx(orderItem.getSkuCode() + " 单品无效或过期");
}
GoodsImminentBatch imminentBatch = goodsImminentBatchService.getById(orderItem.getSkuBatchId());
if(imminentBatch==null){
Assert.throwEx(orderItem.getSkuCode() + " 单品无效或过期");
}
int spur = imminentBatch.getQuantity() - imminentBatch.getOrderQuantity();
if(orderItem.getQuantity() > spur){
Assert.throwEx(orderItem.getSkuCode() + " 单品库存不足");
}
imminentBatch.setOrderQuantity(imminentBatch.getOrderQuantity() + orderItem.getQuantity());
imminentBatches.add(imminentBatch);
}
}
//拦截相同的skuItem
long countDistinct = orderItemList.stream().map(OmsOrderItem::getSkuId).distinct().count();
if(orderItemList.size()!=countDistinct){
@ -931,7 +981,12 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
xltOrderItem.setXieRuShiJian(nowTime);
xltOrderItem.setChuLiShiJian(null);
xltOrderItem.setRowCreateDate(nowTime);
xltOrderItem.setBeiZhu(orderItem.getRemark());
if(omsOrder.getOrderType().equals(3)){
String itemRm = orderItem.getRemark()==null?"":orderItem.getRemark();
xltOrderItem.setBeiZhu("批号["+orderItem.getSkuBatchCode()+"]"+ itemRm);
}else {
xltOrderItem.setBeiZhu(orderItem.getRemark());
}
xltOrderItem.setZhuangTai(0);
xltOrderItemList.add(xltOrderItem);
}
@ -944,6 +999,10 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
omsOrder.setCheckUserId(AuthContextUtils.getSysUserId());
this.updateById(omsOrder);
if(imminentBatches.size() > 0){
goodsImminentBatchService.updateBatchById(imminentBatches);
}
}
@Override
@ -965,46 +1024,34 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
@Override
public boolean cancelOrder(String orderSn) {
seeYonRequestBaseService.postBase(ERP_ORDER_CANCEL+"/"+orderSn
OmsOrder order = this.getOne(new LambdaQueryWrapper<OmsOrder>().eq(OmsOrder::getOrderSn,orderSn));
if(order==null){
Assert.throwEx("订单编码异常");
}
List<GoodsImminentBatch> updItemBatch = new ArrayList<>();
if(order.getOrderType().equals(3)){
List<OmsOrderItem> itemList = omsOrderItemService.list(new LambdaQueryWrapper<OmsOrderItem>()
.eq(OmsOrderItem::getOrderId,order.getId()));
for (OmsOrderItem orderItem : itemList) {
GoodsImminentBatch batch = goodsImminentBatchService.getById(orderItem.getSkuBatchId());
GoodsImminentBatch newBatch = new GoodsImminentBatch();
newBatch.setId(batch.getId());
newBatch.setOrderQuantity(batch.getOrderQuantity() - orderItem.getQuantity());
updItemBatch.add(newBatch);
}
}
R<?> r = seeYonRequestBaseService.postBase(ERP_ORDER_CANCEL+"/"+orderSn
,null
,"获取订单状态"
);
return false;
}
private void toU8Api(OmsOrder omsOrder, SysUser sysUser, SysDept dept, List<OmsOrderItem> list) {
List<ErpOfferOrderParam.InventoryItem> inventoryItemList = new ArrayList<>();
for (OmsOrderItem orderItem : list) {
ErpOfferOrderParam.InventoryItem inventoryItem = new ErpOfferOrderParam.InventoryItem();
inventoryItem.setEmpItemId(orderItem.getId()+"");
inventoryItem.setEmpQty(orderItem.getQuantity().longValue());
inventoryItem.setInvCode(orderItem.getSpuCode());
inventoryItem.setQuantity(orderItem.getQuantity().longValue());
//设置客户特殊价
inventoryItem.setOfferPrice(orderItem.getSalesPrice());
inventoryItem.setHasRatePrice(orderItem.getSalesPrice());
inventoryItem.setHasRateSumPrice(orderItem.getSalesPrice().multiply(new BigDecimal(orderItem.getQuantity())));
inventoryItem.setRemark("CRM创建的报价单");
inventoryItemList.add(inventoryItem);
}
ErpOfferOrderParam offerOrder = new ErpOfferOrderParam();
offerOrder.setCode(omsOrder.getOrderSn());
offerOrder.setEmpOrderId(omsOrder.getId()+"");
offerOrder.setDate(new Date());
//offerOrder.setSaleTypeCode();
offerOrder.setCusCode(omsOrder.getSupplierCode());
offerOrder.setDepCode(dept.getCode());
// 普通13,赠品&试吃品0
//offerOrder.setTaxRate();
offerOrder.setRemark(omsOrder.getRemark());
//offerOrder.setRemark2();
//offerOrder.setCusPrice();
//offerOrder.setUnfinishedOrderCount();
offerOrder.setInventoryItemList(inventoryItemList);
offerOrder.setCusName(omsOrder.getSupplierName());
offerOrder.setMakerName(sysUser.getName());
if(r.getStatus()==200){
if(CollectionUtil.isNotEmpty(updItemBatch)){
goodsImminentBatchService.updateBatchById(updItemBatch);
}
}
return r.getStatus()==200;
}
}

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

@ -49,6 +49,7 @@ public class SysDeptController {
@PreAuthorize("hasRole('sys:dept:query')")
public R<PageVo<SysDept>> getList(SysDept param){
PageUtil.startPage();
param.setStopFlag(0);
List<SysDept> list = sysDeptService.list(new QueryWrapper<>(param));
return R.byPageHelperList(list);
}
@ -61,6 +62,7 @@ public class SysDeptController {
@GetMapping("/list")
@PreAuthorize("hasRole('sys:dept:query')")
public R<List<SysDept>> getListAll(SysDept param){
param.setStopFlag(0);
List<SysDept> list = sysDeptService.list(new QueryWrapper<>(param));
return R.ok(list);
}
@ -74,6 +76,7 @@ public class SysDeptController {
@GetMapping("/tree")
@PreAuthorize("hasRole('sys:dept:query')")
public R<?> getTreeList(SysDept param){
param.setStopFlag(0);
List<SysDept> list = sysDeptService.listDept(param);
List<SysDeptTreeNode> treeNodes = list.stream().map(dept->{
SysDeptTreeNode treeNode = CopierUtil.copy(dept,new SysDeptTreeNode());

3
src/main/java/com/qs/serve/modules/sys/entity/SysDept.java

@ -44,6 +44,9 @@ public class SysDept implements Serializable {
/** 级别路径 */
private String levelPath;
/** 停用状态 */
private Integer stopFlag;
/** 创建时间 */
@TableField(fill = FieldFill.INSERT)
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

18
src/main/java/com/qs/serve/modules/tag/mapper/TagInfoMapper.java

@ -1,7 +1,12 @@
package com.qs.serve.modules.tag.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.tag.entity.TagInfo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* 标签信息 Mapper
@ -10,5 +15,18 @@ import com.qs.serve.modules.tag.entity.TagInfo;
*/
public interface TagInfoMapper extends BaseMapper<TagInfo> {
@InterceptorIgnore(tenantLine = "1")
@Select(" SELECT " +
" DISTINCT " +
" tag_info.tag_name " +
" FROM `tag_data` " +
" left join tag_info on tag_id = tag_info.id " +
" where " +
" tag_data.del_flag = 0 " +
" and tag_info.del_flag = 0 " +
" and target_type = 'customer' " +
" and target_code = #{supplierCode} ")
List<String> lisTagsBySupplierCode(@Param("supplierCode") String supplierCode);
}

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

@ -106,6 +106,10 @@ public class TbsActivityController {
@PreAuthorize("hasRole('tbs:activity:query')")
public R<List<TbsActivity>> getList(TbsActivitySo param){
TbsActivity entity = CopierUtil.copy(param,new TbsActivity());
TbsCostApply costApply = null;
if(entity.getCostApplyId()!=null){
costApply = costApplyService.getById(entity.getCostApplyId());
}
LambdaQueryWrapper<TbsActivity> lqw = new LambdaQueryWrapper<>(entity);
TbsActivityUtil.buildOverdue(lqw,param.getOverdueState());
List<TbsActivity> list = tbsActivityService.list(lqw);
@ -123,6 +127,20 @@ public class TbsActivityController {
activity.setSubjectCenterList(activitySubjects);
tbsCostApplyPart1Service.buildDetailVo(activity);
activity.initWarningDay(overflowDays);
if(costApply!=null){
//修改预期状态显示
if(costApply.getChargeState().equals(5)
||costApply.getChargeState().equals(6)
||costApply.getChargeState().equals(8)){
activity.setActivityState(5);
activity.setOverdueState(0);
activity.setOverdueWarningDays(0L);
}else if(!costApply.getChargeState().equals(2)){
activity.setOverdueState(0);
activity.setOverdueWarningDays(0L);
}
}
}
return R.ok(list);
}

1
src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java

@ -326,6 +326,7 @@ public class TbsActivity implements Serializable {
}
}else {
overdueState = 0;
overdueWarningDays = 0L;
}
//调为正数
overdueWarningDays = -overdueWarningDays;

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

@ -47,6 +47,7 @@ import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysAttachService;
import com.qs.serve.modules.sys.service.SysConfigService;
import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tag.mapper.TagInfoMapper;
import com.qs.serve.modules.tbs.common.TbsActivityState;
import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
@ -131,6 +132,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
private TbsCostCheckStateMapper costCheckStateMapper;
private TbsCostApplyMapper tbsCostApplyMapper;
private ProjectApisProperties projectApisProperties;
private TagInfoMapper tagInfoMapper;
@Override
public BigDecimal totalCostUsed(Long id) {
@ -954,7 +956,9 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
}
data.put("remark", tbsCostApply.getRemark());
//添加客户标签
List<String> tags = tagInfoMapper.lisTagsBySupplierCode(supplier.getCode());
data.put("tags",tags);
if(contracts.size()>0){
//构建合同DATA
@ -1309,6 +1313,9 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
}
String goods = bands.stream().collect(Collectors.joining(","));
data.put("chanPinPinLei",goods);
//添加客户标签
List<String> tags = tagInfoMapper.lisTagsBySupplierCode(supplier.getCode());
data.put("tags",tags);
data.put("sub",subList);
}

25
src/main/java/com/qs/serve/modules/vtb/common/VerificationUtil.java

@ -0,0 +1,25 @@
package com.qs.serve.modules.vtb.common;
import com.qs.serve.common.util.Assert;
import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
/**
* @author YenHex
* @since 2024/6/21
*/
public class VerificationUtil {
public static void verifyCostState(TbsCostApply costApply) {
if(costApply.getContractFlag().equals(1)){
Assert.throwEx("协议类申请不支持CRM核销");
}
if(costApply.getCancelFlag().equals(1)){
Assert.throwEx("异动的费用申请不可核销!!");
}
if(!costApply.getChargeState().equals(TbsCostApplyState.State_2_actioning.getCode())){
Assert.throwEx("当前费用状态不支持");
}
}
}

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

@ -0,0 +1,81 @@
package com.qs.serve.modules.vtb.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.vtb.entity.bo.VtbVerificationBatchBo;
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;
/**
* 批量核销
* @author YenHex
* @since 2024-06-14
*/
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("vtb/verificationBatch")
public class VtbVerificationBatchController {
private SeeYonRequestService seeYonService;
private VtbVerificationBatchService vtbVerificationBatchService;
/**
* 翻页
* @param param
* @return
*/
@GetMapping("/page")
public R<PageVo<VtbVerificationBatch>> getPage(VtbVerificationBatch param){
LambdaQueryWrapper<VtbVerificationBatch> lqw = new LambdaQueryWrapper<>(param);
PageUtil.startPage();
List<VtbVerificationBatch> list = vtbVerificationBatchService.list(lqw);
return R.byPageHelperList(list);
}
/**
* ID查询
* @param id
* @return
*/
@GetMapping("/getById/{id}")
@SysLog(module = SystemModule.Verification, title = "", biz = BizType.QUERY)
public R<VtbVerificationBatch> getById(@PathVariable("id") String id){
VtbVerificationBatch vtbVerificationBatch = vtbVerificationBatchService.getById(id);
return R.ok(vtbVerificationBatch);
}
/**
* 提交批量
* @param param
* @return
*/
@PostMapping("/submit")
@SysLog(module = SystemModule.Verification, title = "批量核销", biz = BizType.INSERT)
public R<?> save(@RequestBody @Valid VtbVerificationBatchBo param){
seeYonService.testConnection();
vtbVerificationBatchService.submit(param);
return R.ok();
}
}

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

@ -0,0 +1,136 @@
package com.qs.serve.modules.vtb.entity;
import java.time.LocalDate;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
/**
* 实体类
* @author YenHex
* @since 2024-06-14
*/
@Data
@TableName("vtb_verification_batch")
public class VtbVerificationBatch implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 批次编码 */
@NotBlank(message = "批次编码不能为空")
@Length(max = 255,message = "批次编码长度不能超过255字")
private String vtbBatchCode;
/** 状态 */
@NotNull(message = "状态不能为空")
private Integer vtbBatchStatus;
/** 核销通过时间 */
@Length(max = 0,message = "核销通过时间长度不能超过0字")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime finishedTime;
/** 费用id */
private Long costApplyId;
/** 备注 */
@Length(max = 600,message = "备注长度不能超过600字")
private String remark;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 最后更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 所属租户 */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** 逻辑删除标记(0:显示;1:隐藏) */
@JsonIgnore
@JsonProperty
private String delFlag;
/** 致远表单ID */
@Length(max = 32,message = "致远表单ID长度不能超过32字")
private String syFormId;
/** 致远流程id */
@Length(max = 32,message = "致远流程id长度不能超过32字")
private String syFlowId;
/** 客户id */
@NotNull(message = "客户id不能为空")
private Long supplierId;
/** 客户编码 */
@NotBlank(message = "客户编码不能为空")
@Length(max = 30,message = "客户编码长度不能超过30字")
private String supplierCode;
/** 客户名称 */
@NotBlank(message = "客户名称不能为空")
@Length(max = 200,message = "客户名称长度不能超过200字")
private String supplierName;
/** 申请人 */
@NotBlank(message = "申请人不能为空")
@Length(max = 32,message = "申请人长度不能超过32字")
private String userId;
/** 申请人 */
@NotBlank(message = "申请人不能为空")
@Length(max = 32,message = "申请人长度不能超过32字")
private String userCode;
/** 申请人 */
@NotBlank(message = "申请人不能为空")
@Length(max = 32,message = "申请人长度不能超过32字")
private String userName;
/** 业务继承人ID */
@Length(max = 255,message = "业务继承人ID长度不能超过255字")
private String extUserId;
/** 业务继承人编码 */
@Length(max = 255,message = "业务继承人编码长度不能超过255字")
private String extUserCode;
/** 业务继承人 */
@Length(max = 255,message = "业务继承人长度不能超过255字")
private String extUserName;
}

26
src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationBatchBo.java

@ -0,0 +1,26 @@
package com.qs.serve.modules.vtb.entity.bo;
import lombok.Data;
import java.util.List;
/**
* @author YenHex
* @since 2024/6/19
*/
@Data
public class VtbVerificationBatchBo {
/** 核销列表 */
List<VtbVerificationBo> verificationList;
/** 备注 */
private String remark;
/** 支付方式 */
private Long payWayId;
/** 费用申请ID */
private Long costApplyId;
}

14
src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationBatchMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.vtb.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.vtb.entity.VtbVerificationBatch;
/**
* Mapper
* @author YenHex
* @date 2024-06-14
*/
public interface VtbVerificationBatchMapper extends BaseMapper<VtbVerificationBatch> {
}

22
src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationBatchService.java

@ -0,0 +1,22 @@
package com.qs.serve.modules.vtb.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.vtb.entity.VtbVerificationBatch;
import com.qs.serve.modules.vtb.entity.bo.VtbVerificationBatchBo;
/**
* 服务接口
* @author YenHex
* @date 2024-06-14
*/
public interface VtbVerificationBatchService extends IService<VtbVerificationBatch> {
/**
* 提交批量核销
* @param submitBo
*/
void submit(VtbVerificationBatchBo submitBo);
}

29
src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java

@ -2,12 +2,17 @@ package com.qs.serve.modules.vtb.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.entity.bo.TbsActivityReopenBo;
import com.qs.serve.modules.vtb.entity.VtbVerification;
import com.qs.serve.modules.vtb.entity.VtbVerificationSubject;
import com.qs.serve.modules.vtb.entity.VtbVerificationSubjectCenter;
import com.qs.serve.modules.vtb.entity.bo.VtbVerificationBo;
import com.qs.serve.modules.vtb.entity.bo.VtbVerificationContactBo;
import com.qs.serve.modules.vtb.entity.bo.VtbVerificationSubjectCenterBo;
import java.math.BigDecimal;
import java.util.List;
@ -111,5 +116,29 @@ public interface VtbVerificationService extends IService<VtbVerification> {
*/
BigDecimal validActivity(boolean cotractFlag, TbsActivity activity, boolean filterActTime, boolean isCurrentCommit);
/**
* 校验科目和成本中心
* @param activity
* @param subjectCenterBoList
* @param costApply
* @param supplier
* @param verificationSubjects
* @param verificationCenters
* @param verificationCode
*/
void validCreateVeriSubjectAndCenter(TbsActivity activity, List<VtbVerificationSubjectCenterBo> subjectCenterBoList,
TbsCostApply costApply, BmsSupplier supplier,
List<VtbVerificationSubject> verificationSubjects,
List<VtbVerificationSubjectCenter> verificationCenters, String verificationCode);
/**
* 校验和生成核销费用
* @param verificationBo
* @param activity
* @param costApply
* @return
*/
List<VtbVerificationSubject> validCreateVeriSubject(String verificationCode,VtbVerificationBo verificationBo,
TbsActivity activity, TbsCostApply costApply,BmsSupplier supplier);
}

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

@ -0,0 +1,49 @@
package com.qs.serve.modules.vtb.service.impl;
import com.qs.serve.modules.seeyon.service.SeeYonOperationService;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import org.springframework.stereotype.Service;
/**
* @author YenHex
* @since 2024/6/14
*/
@Service
public class VtbVerificationBatchOperationServiceImpl implements SeeYonOperationService {
@Override
public String getTemplateCode() {
return null;
}
@Override
public String getSyFormIdByTargetInfo(TbsAffairCommitBo affairCommit) {
return null;
}
@Override
public Object doBacked(TbsAffairCommitBo param) {
return null;
}
@Override
public Object doFinished(TbsAffairCommitBo param) {
return null;
}
@Override
public Object doRefuse(TbsAffairCommitBo param) {
return null;
}
@Override
public boolean checkSyFormIdIsNotNull(String targetId) {
return false;
}
@Override
public void doCommitBacked(String targetId) {
}
}

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

@ -0,0 +1,316 @@
package com.qs.serve.modules.vtb.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.framework.redis.RedisService;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.*;
import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper;
import com.qs.serve.modules.bms.mapper.BmsRegionMapper;
import com.qs.serve.modules.bms.service.BmsChannelPointService;
import com.qs.serve.modules.bms.service.BmsChannelService;
import com.qs.serve.modules.bms.service.BmsSubjectService;
import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.pay.entity.PayWay;
import com.qs.serve.modules.pay.mapper.PayWayMapper;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsActivityState;
import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.service.TbsActivityService;
import com.qs.serve.modules.tbs.service.TbsCostApplyService;
import com.qs.serve.modules.vtb.common.VerificationUtil;
import com.qs.serve.modules.vtb.common.VtbVerificationState;
import com.qs.serve.modules.vtb.entity.*;
import com.qs.serve.modules.vtb.entity.bo.*;
import com.qs.serve.modules.vtb.service.*;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.vtb.mapper.VtbVerificationBatchMapper;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 服务实现类
* @author YenHex
* @since 2024-06-14
*/
@Slf4j
@Service
@AllArgsConstructor
public class VtbVerificationBatchServiceImpl extends ServiceImpl<VtbVerificationBatchMapper,VtbVerificationBatch> implements VtbVerificationBatchService {
private final BmsRegionMapper regionMapper;
private final BmsRegion2Mapper region2Mapper;
private final RedisService redisService;
private final BmsSupplierService bmsSupplierService;
private final TbsActivityService tbsActivityService;
private final TbsCostApplyService tbsCostApplyService;
private final SysUserService sysUserService;
private final VtbVerificationService vtbVerificationService;
private final PayWayMapper payWayMapper;
private final BmsSubjectService subjectService;
private final BmsChannelService channelService;
private final BmsChannelPointService channelPointService;
private final VtbVerificationChannelService verificationChannelService;
private final VtbVerificationChannelPointService verificationChannelPointService;
private final VtbVerificationSubjectService verificationSubjectService;
private final VtbVerificationSubjectCenterService vtbVerificationSubjectCenterService;
private final VtbFundFlowService vtbFundFlowService;
@Override
public void submit(VtbVerificationBatchBo submitBo) {
TbsCostApply costApply = tbsCostApplyService.getById(submitBo.getCostApplyId());
BmsSupplier supplier = bmsSupplierService.getById(costApply.getSupplierId());
List<TbsActivity> activityList = tbsActivityService.listByCostApplyId(costApply.getId());
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
sysUser.checkSyAccount();
redisService.throwResLock(VtbVerificationBatch.class.getSimpleName(),submitBo.getCostApplyId()+"");
// 校验核销状态
VerificationUtil.verifyCostState(costApply);
boolean contractFlag = costApply.getContractFlag()!=null&&costApply.getContractFlag().equals(1);
if(contractFlag){
Assert.throwEx("协议类申请请移至OA核销");
}
LambdaQueryWrapper<VtbVerification> vtbVerificationLQW = new LambdaQueryWrapper<>();
vtbVerificationLQW.eq(VtbVerification::getCostApplyId,costApply.getId());
vtbVerificationLQW.eq(VtbVerification::getVerificationState, VtbVerificationState.Commiting);
long count = vtbVerificationService.count(vtbVerificationLQW);
if(count>0){
Assert.throwEx("部分活动正在核销中");
}
//协议类申请
PayWay payWay = new PayWay();
if(submitBo.getPayWayId()!=null){
payWay = payWayMapper.selectById(submitBo.getPayWayId());
}
//加载大区信息
String saleRegionId = supplier.handleSaleRegionId();
BmsRegion saleRegion = regionMapper.selectById(saleRegionId);
String saleBizNames = saleRegion!=null?saleRegion.getPathNames():"null_申请时未录入";
String bizRegionId = supplier.handleBizRegionId();
BmsRegion2 bizRegion = region2Mapper.selectById(bizRegionId);
String bizBizNames = bizRegion!=null?bizRegion.getPathNames():"null_申请时未录入";
//退回的核销 重新申请后标记为关闭
List<Long> orgVerificationIds = new ArrayList<>();
//新的核销列表
List<VtbVerification> newVerificationList = new ArrayList<>();
List<VtbVerificationChannel> allVerificationChannelList = new ArrayList<>();
List<VtbVerificationChannelPoint> allVerificationChannelPointList = new ArrayList<>();
List<VtbVerificationSubject> allVerificationSubjects = new ArrayList<>();
List<VtbVerificationSubjectCenter> allVerificationCenters = new ArrayList<>();
//校验BO参数
for (VtbVerificationBo verificationBo : submitBo.getVerificationList()) {
for (TbsActivity activity : activityList) {
if(verificationBo.getActivityId().equals(activity.getId())){
//自定义成本中心核销
List<VtbVerificationSubjectCenterBo> subjectCenterBoList = verificationBo.getSubjectCenterList();
boolean isCenterCheck = CollectionUtil.isNotEmpty(subjectCenterBoList);
if(activity.getVtbMatchTypeFlag().equals(1) && !isCenterCheck){
Assert.throwEx("页面参数异常,请刷新页面重试");
}
VtbVerification orgData = null;
if(verificationBo.getOrgVerificationId()!=null){
orgData = vtbVerificationService.getById(verificationBo.getOrgVerificationId());
if(!orgData.getVerificationState().equals(VtbVerificationState.Rollback.getCode())){
Assert.throwEx("原来的核销数据非回退状态");
}
orgVerificationIds.add(orgData.getId());
}
boolean isCurrentCommit = verificationBo.getId()!=null;
vtbVerificationService.validActivity(false,activity,true,isCurrentCommit);
//创建 verification
VtbVerification verification = new VtbVerification();
//临时ID
verification.setId(activity.getId());
verification.setCostApplyCode(costApply.getCode());
verification.setActivityCode(activity.getActivityCode());
verification.setPayConditionId(verificationBo.getPayConditionId());
verification.setVerificationCode("HX"+ CodeGenUtil.generate(CodeGenUtil.SourceKey.Verification));
verification.setVerificationMainCode(verification.getVerificationCode());
verification.setVerificationState(VtbVerificationState.Commiting.getCode());
verification.setCostApplyId(costApply.getId());
verification.setActivityId(verificationBo.getActivityId());
verification.setAttachIds(verificationBo.getAttachIds());
verification.setInputReleaseFlag(verificationBo.getInputReleaseFlag());
if(verificationBo.getInputReleaseFlag()!=null&&verificationBo.getInputReleaseFlag().equals(0)){
verification.setRegReleaseFlag(1);
}
verification.setSupplierId(activity.getSupplierId());
verification.setSupplierCode(activity.getSupplierCode());
verification.setSupplierName(activity.getSupplierName());
verification.setUserId(sysUser.getId());
verification.setUserCode(sysUser.getCode());
verification.setUserName(sysUser.getName());
verification.setRemark(verificationBo.getRemark());
verification.setWayId(payWay.getId());
verification.setWayTitle(payWay.getTitle());
verification.setSupplierBizRegionFirstName(costApply.getSupplierBizRegionFirstName());
verification.setSupplierBizRegionSecondName(costApply.getSupplierBizRegionSecondName());
verification.setSupplierBizRegionThirdName(costApply.getSupplierBizRegionThirdName());
List<VtbVerificationChannelBo> channelBoList = verificationBo.getChannelList();
List<VtbVerificationChannelPointBo> pointBoList = verificationBo.getPointList();
if(CollectionUtil.isNotEmpty(channelBoList)){
for (VtbVerificationChannelBo channelBo : channelBoList) {
BmsChannel channel = channelService.getById(channelBo.getChannelId());
VtbVerificationChannel verificationChannel = new VtbVerificationChannel();
verificationChannel.setActivityId(activity.getId());
verificationChannel.setCostApplyId(costApply.getId());
verificationChannel.setVerificationId(verification.getId());
verificationChannel.setChannelId(channel.getId());
verificationChannel.setChannelCode(channel.getChannelCode());
verificationChannel.setChannelName(channel.getChannelName());
verificationChannel.setChannelRate(channelBo.getChannelRate());
verificationChannel.setPreCountPoint(channelBo.getPreCountPoint());
verificationChannel.setRemark(channelBo.getRemark());
allVerificationChannelList.add(verificationChannel);
}
}else if (CollectionUtil.isNotEmpty(pointBoList)){
for (VtbVerificationChannelPointBo channelPointBo : pointBoList) {
BmsChannelPoint channelPoint = channelPointService.getById(channelPointBo.getPointId());
BmsChannel channel = channelService.getById(channelPoint.getChannelId());
VtbVerificationChannelPoint channelPoint1 = new VtbVerificationChannelPoint();
channelPoint1.setCostApplyId(costApply.getId());
channelPoint1.setActivityId(activity.getId());
channelPoint1.setChannelId(channel.getId());
channelPoint1.setVerificationId(verification.getId());
channelPoint1.setChannelCode(channel.getChannelCode());
channelPoint1.setChannelName(channel.getChannelName());
channelPoint1.setPointId(channelPoint.getId());
channelPoint1.setPointCode(channelPoint.getPointCode());
channelPoint1.setPointName(channelPoint.getPointName());
channelPoint1.setPointRate(channelPointBo.getPointRate());
channelPoint1.setRemark(channelPointBo.getRemark());
allVerificationChannelPointList.add(channelPoint1);
}
}
List<VtbVerificationSubject> verificationSubjects = new ArrayList<>();
List<VtbVerificationSubjectCenter> verificationCenters = new ArrayList<>();
String verificationCode = verification.getVerificationCode();
if(isCenterCheck){
//建立核销 VtbVerificationSubjectCenter
vtbVerificationService.validCreateVeriSubjectAndCenter(activity, subjectCenterBoList, costApply, supplier, verificationSubjects, verificationCenters, verificationCode);
}else {
//建立核销 VtbVerificationSubject
verificationSubjects = vtbVerificationService.validCreateVeriSubject(verificationCode,verificationBo, activity, costApply, supplier);
}
//设置总金额
BigDecimal totalAmount = BigDecimal.ZERO;
for (VtbVerificationSubject verificationSubject : verificationSubjects) {
totalAmount = totalAmount.add(verificationSubject.getUsedAmount());
}
verification.setAmount(totalAmount);
verification.setAmountRecord(totalAmount);
//保存
newVerificationList.add(verification);
//保存科目费用
verificationSubjects.forEach(obj->obj.setVerificationId(verification.getId()));
verificationCenters.forEach(obj->obj.setVerificationId(verification.getId()));
allVerificationSubjects.addAll(verificationSubjects);
allVerificationCenters.addAll(verificationCenters);
}
}
}
//TODO 提交审批
//移除历史提交记录
for (Long orgVerificationId : orgVerificationIds) {
verificationChannelService.removeByVerificationId(orgVerificationId);
verificationChannelPointService.removeByVerificationId(orgVerificationId);
verificationSubjectService.removeByVerificationId(orgVerificationId);
vtbVerificationSubjectCenterService.removeByVerificationId(orgVerificationId);
vtbFundFlowService.removeByVerificationId(orgVerificationId);
}
//获取临时ID重新赋值
//List<Long> activityIds = newVerificationList.stream().map(VtbVerification::getId).collect(Collectors.toList());
Map<Long,List<VtbVerificationChannel>> allVerificationChannelListMap = allVerificationChannelList.stream()
.collect(Collectors.groupingBy(VtbVerificationChannel::getVerificationId));
Map<Long,List<VtbVerificationChannelPoint>> allVerificationChannelPointListMap = allVerificationChannelPointList.stream()
.collect(Collectors.groupingBy(VtbVerificationChannelPoint::getVerificationId));
Map<Long,List<VtbVerificationSubject>> allVerificationSubjectsMap = allVerificationSubjects.stream()
.collect(Collectors.groupingBy(VtbVerificationSubject::getVerificationId));
Map<Long,List<VtbVerificationSubjectCenter>> allVerificationCentersMap = allVerificationCenters.stream()
.collect(Collectors.groupingBy(VtbVerificationSubjectCenter::getVerificationId));
for (VtbVerification verification : newVerificationList) {
//临时ID,实际是活动ID
Long tmpId = verification.getId();
verification.setId(null);
vtbVerificationService.save(verification);
Long verificationId = verification.getId();
List<VtbVerificationChannel> vtbVerificationChannels = allVerificationChannelListMap.get(tmpId);
if(vtbVerificationChannels!=null){
vtbVerificationChannels.forEach(a->a.setVerificationId(verificationId));
verificationChannelService.saveBatch(vtbVerificationChannels);
}
List<VtbVerificationChannelPoint> verificationChannelPointList = allVerificationChannelPointListMap.get(tmpId);
if(verificationChannelPointList!=null){
verificationChannelPointList.forEach(a->a.setVerificationId(verificationId));
verificationChannelPointService.saveBatch(verificationChannelPointList);
}
List<VtbVerificationSubject> verificationSubjects = allVerificationSubjectsMap.get(tmpId);
if(verificationSubjects!=null){
verificationSubjects.forEach(a->a.setVerificationId(verificationId));
verificationSubjectService.saveBatch(verificationSubjects);
}
List<VtbVerificationSubjectCenter> vtbVerificationSubjectCenterList = allVerificationCentersMap.get(tmpId);
if(vtbVerificationSubjectCenterList!=null){
vtbVerificationSubjectCenterList.forEach(a->a.setVerificationId(verificationId));
vtbVerificationSubjectCenterService.saveBatch(vtbVerificationSubjectCenterList);
}
//更新活动状态
TbsActivity activityParam = new TbsActivity();
activityParam.setId(verification.getActivityId());
activityParam.setActivityState(TbsActivityState.STATE_1_Checking);
activityParam.setCurrVerificationId(verification.getId()+"");
tbsActivityService.updateById(activityParam);
}
//更变费用申请的活动状态
TbsCostApply costApplyParam = new TbsCostApply();
costApplyParam.setId(costApply.getId());
costApplyParam.setCheckState(1);
tbsCostApplyService.updateById(costApplyParam);
}
}

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

@ -33,6 +33,7 @@ import com.qs.serve.modules.sys.entity.SysSyncLog;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysSyncLogService;
import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tag.mapper.TagInfoMapper;
import com.qs.serve.modules.tbs.common.TbsActivityState;
import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
@ -45,6 +46,7 @@ import com.qs.serve.modules.tbs.entity.dto.TbsCostSubItem;
import com.qs.serve.modules.tbs.mapper.TbsCostPercentMapper;
import com.qs.serve.modules.tbs.service.*;
import com.qs.serve.modules.third.util.ThirtyVerificationUtil;
import com.qs.serve.modules.vtb.common.VerificationUtil;
import com.qs.serve.modules.vtb.common.VtbFundFlowType;
import com.qs.serve.modules.vtb.common.VtbVerificationState;
import com.qs.serve.modules.vtb.entity.*;
@ -119,6 +121,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
private final SysUserService sysUserService;
private TagInfoMapper tagInfoMapper;
private final PayWayMapper payWayMapper;
private final ProjectProperties projectProperties;
@ -677,26 +680,19 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
@Transactional(rollbackFor = Exception.class)
public void commit(VtbVerificationBo verificationBo) {
TbsActivity activity = activityService.getById(verificationBo.getActivityId());
redisService.throwResLock(VtbVerification.class.getSimpleName(),activity.getId()+"");
TbsCostApply costApply = costApplyService.getById(activity.getCostApplyId());
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
BmsSupplier supplier = bmsSupplierService.getById(activity.getSupplierId());
sysUser.checkSyAccount();
redisService.throwResLock(VtbVerification.class.getSimpleName(),activity.getId()+"");
//自定义成本中心核销
List<VtbVerificationSubjectCenterBo> subjectCenterBoList = verificationBo.getSubjectCenterList();
boolean isCenterCheck = CollectionUtil.isNotEmpty(subjectCenterBoList);
if(activity.getVtbMatchTypeFlag().equals(1) && !isCenterCheck){
Assert.throwEx("页面参数异常,请刷新页面重试");
}
TbsCostApply costApply = costApplyService.getById(activity.getCostApplyId());
if(costApply.getContractFlag().equals(1)){
Assert.throwEx("协议类申请不支持CRM核销");
}
if(costApply.getCancelFlag().equals(1)){
Assert.throwEx("异动的费用申请不可核销!!");
}
BmsSupplier supplier = bmsSupplierService.getById(activity.getSupplierId());
if(!costApply.getChargeState().equals(TbsCostApplyState.State_2_actioning.getCode())){
Assert.throwEx("当前费用状态不支持");
}
//校验费用申请的状态
VerificationUtil.verifyCostState(costApply);
LambdaQueryWrapper<VtbVerification> vtbVerificationLQW = new LambdaQueryWrapper<>();
vtbVerificationLQW.eq(VtbVerification::getActivityId,verificationBo.getActivityId());
@ -731,6 +727,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
}
boolean cotractFlag = costApply.getContractFlag()!=null&&costApply.getContractFlag().equals(1);
if(cotractFlag){
Assert.throwEx("协议类申请请移至OA核销");
if(verificationBo.getPayConditionId()==null){
Assert.throwEx("请选择支付条件");
}
@ -853,11 +850,6 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
verification.setAmount(totalAmount);
verification.setAmountRecord(totalAmount);
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//保存
this.saveOrUpdate(verification);
this.commitSy(activity,sysUser,verification,saleBizNames,bizBizNames);
@ -907,7 +899,12 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
BirActivityCenterGoodsUtil.buildBir(costApply.getId());
}
private void validCreateVeriSubjectAndCenter(TbsActivity activity, List<VtbVerificationSubjectCenterBo> subjectCenterBoList, TbsCostApply costApply, BmsSupplier supplier, List<VtbVerificationSubject> verificationSubjects, List<VtbVerificationSubjectCenter> verificationCenters, String verificationCode) {
@Override
public void validCreateVeriSubjectAndCenter(TbsActivity activity, List<VtbVerificationSubjectCenterBo> subjectCenterBoList,
TbsCostApply costApply, BmsSupplier supplier,
List<VtbVerificationSubject> verificationSubjects,
List<VtbVerificationSubjectCenter> verificationCenters, String verificationCode) {
List<TbsActivitySubject> activitySubjects = activitySubjectService.listByActivityId(activity.getId());
List<TbsActivityCenter> activityCenters = activityCenterService.listByActivity(activity.getId());
List<VtbFundFlow> existFundFlowList = fundFlowService.listByActivity(activity.getId(), VtbFundFlowType.Verification);
@ -1145,6 +1142,10 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
data.put("exsp5",urlKey);
data.put("cmsLink",baseJumpUrl);
//添加客户标签
List<String> tags = tagInfoMapper.lisTagsBySupplierCode(activity.getSupplierCode());
data.put("tags",tags);
List<TbsActivitySubject> subjectList = activitySubjectService.listByActivityId(activity.getId());
List<VtbSubjectDTO> subjectDTOList = new ArrayList<>();
for (TbsActivitySubject activitySubject : subjectList) {
@ -1186,7 +1187,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
* @param activity
* @param filterActTime 拦截活动结束
* @param isCurrentCommit 是否当前活动占用提交
* @return
* @return 可用费用
*/
@Override
public BigDecimal validActivity(boolean cotractFlag,TbsActivity activity,boolean filterActTime,boolean isCurrentCommit){
@ -1198,21 +1199,21 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
if(!cotractFlag && activity.getReopenFlag().equals(0)
&& filterActTime
&& isOverTime){
Assert.throwEx("活动已结束");
Assert.throwEx("活动["+activity.getActivityCode()+"]已结束");
}
if(activity.getActivityState().equals(TbsActivityState.STATE_1_Baning)){
Assert.throwEx("活动冻结中");
Assert.throwEx("活动["+activity.getActivityCode()+"]冻结中");
}
if((activity.getReleaseFlag()!=null&&activity.getReleaseFlag().equals(1))||activity.getActivityState().equals(TbsActivityState.STATE_4_Release)){
Assert.throwEx("费用已释放");
Assert.throwEx("费用["+activity.getActivityCode()+"]已释放");
}
if(activity.getFinishedFlag().equals(1)){
Assert.throwEx("活动已完成");
Assert.throwEx("活动["+activity.getActivityCode()+"]已完成");
}
if(!isCurrentCommit){
boolean isCommitting = this.checkCommitting(activity.getId());
if(isCommitting){
Assert.throwEx("活动核销中,操作失败");
Assert.throwEx("活动["+activity.getActivityCode()+"]核销中,操作失败");
}
}
}
@ -1236,7 +1237,9 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
* @param costApply
* @return
*/
private List<VtbVerificationSubject> validCreateVeriSubject(String verificationCode,VtbVerificationBo verificationBo, TbsActivity activity, TbsCostApply costApply,BmsSupplier supplier) {
@Override
public List<VtbVerificationSubject> validCreateVeriSubject(String verificationCode,VtbVerificationBo verificationBo,
TbsActivity activity, TbsCostApply costApply,BmsSupplier supplier) {
List<VtbVerificationSubject> verificationSubjects = new ArrayList<>();
List<TbsActivitySubject> activitySubjects = activitySubjectService.listByActivityId(activity.getId());
List<VtbFundFlow> existFundFlowList = fundFlowService.listByActivity(activity.getId(), VtbFundFlowType.Verification);

2
src/main/resources/mapper/goods/GoodsImminentBatchMapper.xml

@ -39,6 +39,7 @@
LEFT JOIN `goods_category` `cate3` ON `cate3`.`id` = `goods_spu`.`category_third`
<where>
and goods_imminent_batch.del_flag = 0
and goods_imminent_batch.end_date &gt;= now()
and goods_sku.del_flag = 0
and goods_spu.del_flag = 0
and goods_sku.order_flag = 1
@ -65,6 +66,7 @@
LEFT JOIN `goods_category` `cate3` ON `cate3`.`id` = `goods_spu`.`category_third`
<where>
and goods_imminent_batch.del_flag = 0
and goods_imminent_batch.end_date &gt;= now()
and goods_sku.del_flag = 0
and goods_spu.del_flag = 0
and goods_sku.order_flag = 1

1
src/main/resources/mapper/sys/SysDeptMapper.xml

@ -41,6 +41,7 @@
<where>
<if test="id != null and id != ''"> and id = #{id}</if>
<if test="code != null and code != ''"> and code = #{code}</if>
<if test="stopFlag != null"> and sys_dept.stop_flag = #{stopFlag}</if>
<if test="createBy != null and createBy != ''"> and create_by = #{createBy}</if>
<if test="updateBy != null and updateBy != ''"> and update_by = #{updateBy}</if>
and sys_dept.del_flag = '0'

Loading…
Cancel
Save