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. 88
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderPart1ServiceImpl.java
  8. 377
      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);
}

88
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,30 +45,50 @@ 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);
List<OmsOrderItem> orderItems = omsOrderItemService.list(new LambdaQueryWrapper<OmsOrderItem>()
.eq(OmsOrderItem::getOrderId,orderId));
.eq(OmsOrderItem::getOrderId, orderId));
OmsOrder order = new OmsOrder();
order.setId(null);
order.setOrderType(orgOrder.getOrderType());
String orderPrefix = null;
if(order.getOrderType().equals(0)){
if (order.getOrderType().equals(0)) {
orderPrefix = "SN";
}else if(order.getOrderType().equals(1)){
} else if (order.getOrderType().equals(1)) {
orderPrefix = "ZP";
}else if(order.getOrderType().equals(2)){
} else if (order.getOrderType().equals(2)) {
orderPrefix = "SC";
}else if(order.getOrderType().equals(3)){
} else if (order.getOrderType().equals(3)) {
orderPrefix = "SP";
}else {
} else {
Assert.throwEx("订单类型错误");
}
order.setOrderSn(orderPrefix+ CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder));
order.setOrderSn(orderPrefix + CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder));
SysUser user = sysUserService.getById(AuthContextUtils.getSysUserId());
order.setUserId(user.getId());
order.setUserCode(user.getCode());
@ -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;
}
}

377
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,13 +54,14 @@ import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.*;
/**
* 订单 服务实现类
*
* @author YenHex
* @since 2022-10-14
*/
@Slf4j
@Service
@AllArgsConstructor
public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> implements OmsOrderService {
public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> implements OmsOrderService {
private GoodsSkuMapper goodsSkuMapper;
private GoodsSkuService goodsSkuService;
@ -94,9 +92,9 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
//购物车
List<OmsShoppingCart> shoppingCarts;
if(CollectionUtil.isNotEmpty(confirmOrder.getShoppingCartIds())){
shoppingCarts = omsShoppingCartService.listByIds(confirmOrder.getShoppingCartIds(),supplier.getId());
}else {
if (CollectionUtil.isNotEmpty(confirmOrder.getShoppingCartIds())) {
shoppingCarts = omsShoppingCartService.listByIds(confirmOrder.getShoppingCartIds(), supplier.getId());
} else {
//立即购买,生成临时购物车
GoodsSku goodsSku = goodsSkuService.getById(confirmOrder.getSkuId());
GoodsSpu goodsSpu = goodsSpuService.getById(goodsSku.getSpuId());
@ -112,7 +110,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
shoppingCart.setPicUrl(goodsSku.getPicUrl());
shoppingCarts = Arrays.asList(shoppingCart);
}
ShoppingCartsCheckResult cartsCheckResult = omsShoppingCartService.checkShoppingCarts(supplier,shoppingCarts,true);
ShoppingCartsCheckResult cartsCheckResult = omsShoppingCartService.checkShoppingCarts(supplier, shoppingCarts, true);
OmsCalcAmount calcAmount = new OmsCalcAmount();
BigDecimal totalAmount = BigDecimal.ZERO;
for (OmsShoppingCart shoppingCart : shoppingCarts) {
@ -173,11 +171,11 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
for (GoodsSku goodsSku : skuList) {
GoodsSpu goodsSpu = null;
for (GoodsSpu spu : spuList) {
if(goodsSku.getSpuId().equals(spu.getId())){
if (goodsSku.getSpuId().equals(spu.getId())) {
goodsSpu = spu;
}
}
if(goodsSku==null){
if (goodsSku == null) {
Assert.throwEx("商品档案有更新,请刷新页面再试");
}
OmsShoppingCart shoppingCart = new OmsShoppingCart();
@ -185,8 +183,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
shoppingCart.setSpuCode(goodsSpu.getSpuCode());
int qty = 1;
for (OmsOrderSkuBo.SpuParam spuParam : confirmOrder.getSpuParamList()) {
if(spuParam.getSkuId()!=null&&goodsSku.getId().equals(spuParam.getSkuId())){
if(spuParam.getQty()!=null){
if (spuParam.getSkuId() != null && goodsSku.getId().equals(spuParam.getSkuId())) {
if (spuParam.getQty() != null) {
qty = spuParam.getQty();
}
shoppingCart.setVolume(spuParam.getVolume());
@ -211,12 +209,12 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
// 计算是否有活动优惠
//收货地址
BmsSupplierAddress supplierAddress = null;
if(confirmOrder.getAddressId()==null){
if (confirmOrder.getAddressId() == null) {
//supplierAddress = bmsSupplierAddressService.getDefault(Long.parseLong(supplier.getId()));
}else if (confirmOrder.getAddressId().equals(0L)){
} else if (confirmOrder.getAddressId().equals(0L)) {
supplierAddress = new BmsSupplierAddress();
supplierAddress.setId(0L);
}else {
} else {
supplierAddress = bmsSupplierAddressService.getById(confirmOrder.getAddressId());
}
OmsConfirmOrderResult confirmOrderResult = new OmsConfirmOrderResult();
@ -233,10 +231,10 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
@Transactional(rollbackFor = Exception.class)
public void modifyOrder(OmsOrderModifyParam param) {
OmsOrder order = super.getById(param.getId());
if(!order.getStatus().equals(0)){
if (!order.getStatus().equals(0)) {
Assert.throwEx("非草稿状态无法修改");
}
if(order.getOrderType().equals(3)){
if (order.getOrderType().equals(3)) {
Assert.throwEx("临期品订单不支持该接口修改");
}
order.setId(param.getId());
@ -245,11 +243,11 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
order.setSupplierAddrId(param.getSupplierAddrId());
GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(param.getBrandRuleId());
order.setBrandRuleId(param.getBrandRuleId());
if(categoryRule!=null){
if (categoryRule != null) {
order.setBrandRuleName(categoryRule.getLabel());
}
BmsSupplier supplier = null;
if(param.getSupplierId()!=null){
if (param.getSupplierId() != null) {
supplier = bmsSupplierMapper.selectById(param.getSupplierId());
order.setSupplierId(param.getSupplierId());
order.setSupplierName(supplier.getSupplierName());
@ -270,9 +268,9 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
List<Long> spuIds = param.getOrderItems().stream().map(OmsOrderModifyParam.OmsOrderItemModifyBo::getSpuId).collect(Collectors.toList());
spuIds.add(0L);//兼容空订单,防止空指针
List<GoodsSpu> spuList = goodsSpuService.listByIds(spuIds);
Map<Long,GoodsSpu> goodsSpuMap = new HashMap<>(spuList.size());
Map<Long, GoodsSpu> goodsSpuMap = new HashMap<>(spuList.size());
for (GoodsSpu goodsSpu : spuList) {
goodsSpuMap.put(goodsSpu.getId(),goodsSpu);
goodsSpuMap.put(goodsSpu.getId(), goodsSpu);
}
List<String> spuCodeList = spuList.stream().map(GoodsSpu::getSpuCode).collect(Collectors.toList());
/*List<OmsSpuToSkuKey> spuToSkuKeys = goodsSpuService.getSpuToSkuInfo(GoodsConst.DEFAULT_PlaCE,spuCodeList);
@ -287,17 +285,17 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
for (OmsOrderModifyParam.OmsOrderItemModifyBo modifyItem : orderModifyItems) {
GoodsSku goodsSku = null;
GoodsSpu goodsSpu = null;
if(order.getLatitudeFrom().equals("sku")){
if (order.getLatitudeFrom().equals("sku")) {
//H5下单
goodsSku = goodsSkuService.getById(modifyItem.getSkuId());
goodsSpu = goodsSpuService.getById(goodsSku.getSpuId());
}else {
} else {
//PC下单
goodsSpu = goodsSpuMap.get(modifyItem.getSpuId());
//防止切换ID
if(modifyItem.getSkuId()!=null){
if (modifyItem.getSkuId() != null) {
goodsSku = goodsSkuService.getById(modifyItem.getSkuId());
}else {
} else {
// String skuCode = spuGetSkuMap.get(goodsSpu.getSpuCode());
// goodsSku = goodsSkuService.getByCode(skuCode);
Assert.throwEx("订单无货或下架了");
@ -312,7 +310,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
orderItem.setWeight(modifyItem.getWeight());
orderItem.setVolume(modifyItem.getVolume());
orderItem.setRemark(modifyItem.getRemark());
if(goodsSku!=null){
if (goodsSku != null) {
orderItem.setSkuId(goodsSku.getId());
orderItem.setSkuTitle(goodsSku.getSkuName());
orderItem.setSkuCode(goodsSku.getSkuCode());
@ -322,7 +320,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
orderItem.setSalesPrice(goodsSku.getSalesPrice());
orderItem.setCusPrice(goodsSku.getSalesPrice());
orderItem.setMarketPrice(goodsSku.getMarketPrice());
}else {
} else {
orderItem.setSkuId(0L);
orderItem.setSkuCode("");
orderItem.setSkuUnit("");
@ -348,27 +346,27 @@ 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);
this.handleCategoryRule(categoryRule, newOrderItemList);
this.updateById(order);
//移除已有的ITEM
LambdaQueryWrapper<OmsOrderItem> rmItemLqw = new LambdaQueryWrapper<>();
rmItemLqw.eq(OmsOrderItem::getOrderId,param.getId());
rmItemLqw.eq(OmsOrderItem::getOrderId, param.getId());
omsOrderItemService.remove(rmItemLqw);
//重新保存item
omsOrderItemService.saveBatch(newOrderItemList);
//立即下单
if(param.getInstantFlag()!=null&&param.getInstantFlag().equals(1)){
this.buildPriceOrder(order.getId()+"",null);
if (param.getInstantFlag() != null && param.getInstantFlag().equals(1)) {
this.buildPriceOrder(order.getId() + "", null);
}
}
private void checkGoodsRule(BmsSupplier supplier, List<OmsOrderItem> newOrderItemList) {
GoodsAccrIdsDto accrIdsDto = goodsAccreditService.listIgnoreAcc2(supplier.getId(), supplier.listBizRegionIds(), supplier.listSaleRegionIds());
if(accrIdsDto!=null){
if (accrIdsDto != null) {
List<Long> skuIds = goodsSkuMapper.listByOtherIds(
accrIdsDto.getCateIds(),
accrIdsDto.getSpuIds(),
@ -379,8 +377,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
);
for (OmsOrderItem orderItem : newOrderItemList) {
for (Long skuId : skuIds) {
if(orderItem.getSkuId().equals(skuId)){
Assert.throwEx("商品未授权:"+orderItem.getSkuCode());
if (orderItem.getSkuId().equals(skuId)) {
Assert.throwEx("商品未授权:" + orderItem.getSkuCode());
}
}
}
@ -389,60 +387,116 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
/**
* 拦截规则
*
* @param categoryRule
* @param orderItems
*/
private void handleCategoryRule(GoodsCategoryRule categoryRule, List<OmsOrderItem> orderItems) {
if(categoryRule!=null&&orderItems.size()>0){
if (categoryRule != null && orderItems.size() > 0) {
List<String> cids = Arrays.asList(categoryRule.getBrandIds());
List<String> igcids = null;
if(categoryRule.getIgnoreBrandIds()!=null){
if (categoryRule.getIgnoreBrandIds() != null) {
igcids = Arrays.asList(categoryRule.getIgnoreBrandIds());
}
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)){
if (CollectionUtil.isNotEmpty(skuIds)) {
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);
}
}
}
@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)){
Assert.throwEx("单品["+sku.getSkuCode()+"]不予下单且非特殊品");
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)){
Assert.throwEx("SKU已下架["+goodsSpu.getSpuCode()+"]不予下单");
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();
}
}
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()+"]不予下单");
errSkuIds.add(new SimpleKeyValue("SKU不予下单",errSkuId));
}
}
matchIgnoreCate(igcids,goodsSpu.getCategoryFirst(),goodsSpu);
matchIgnoreCate(igcids,goodsSpu.getCategorySecond(),goodsSpu);
matchIgnoreCate(igcids,goodsSpu.getCategoryThird(),goodsSpu);
matchIgnoreCate(igcids, goodsSpu.getCategoryFirst(), goodsSpu);
matchIgnoreCate(igcids, goodsSpu.getCategorySecond(), goodsSpu);
matchIgnoreCate(igcids, goodsSpu.getCategoryThird(), goodsSpu);
}
}
return errSkuIds;
}
/**
* 拦截忽略的品牌
*
* @param igcids
* @param spuCateId
* @param goodsSpu
*/
private void matchIgnoreCate(List<String> igcids, String spuCateId,GoodsSpu goodsSpu) {
if(igcids==null || spuCateId ==null|| spuCateId.equals("")|| spuCateId.equals("0")){
private void matchIgnoreCate(List<String> igcids, String spuCateId, GoodsSpu goodsSpu) {
if (igcids == null || spuCateId == null || spuCateId.equals("") || spuCateId.equals("0")) {
return;
}
for (String igcid : igcids) {
if(spuCateId.equals(igcid)){
Assert.throwEx("["+goodsSpu.getSkuCode()+"]"+goodsSpu.getName()+",不符合订单规则");
if (spuCateId.equals(igcid)) {
Assert.throwEx("[" + goodsSpu.getSkuCode() + "]" + goodsSpu.getName() + ",不符合订单规则");
}
}
}
@ -467,8 +521,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
CreateOrderParam createOrderParam = omsOrderBo.getCreateOrderParam();
createOrderParam.setCdOrderRemark(omsOrderBo.getCdOrderRemark());
OmsOrder order = this.buildOmsOrder(confirmOrder, createOrderParam);
if(omsOrderBo.getInstantFlag()!=null&&omsOrderBo.getInstantFlag().equals(1)){
this.buildPriceOrder(order.getId()+"",null);
if (omsOrderBo.getInstantFlag() != null && omsOrderBo.getInstantFlag().equals(1)) {
this.buildPriceOrder(order.getId() + "", null);
}
return order;
}
@ -485,17 +539,17 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
OmsOrder order = new OmsOrder();
order.setLatitudeFrom(confirmOrder.getLatitudeFrom().toLowerCase(Locale.ROOT));
String orderPrefix = null;
if(order.getOrderType()==null||order.getOrderType().equals(0)){
if (order.getOrderType() == null || order.getOrderType().equals(0)) {
orderPrefix = "SN";
}else if(order.getOrderType().equals(1)){
} else if (order.getOrderType().equals(1)) {
orderPrefix = "ZP";
}else if(order.getOrderType().equals(2)){
} else if (order.getOrderType().equals(2)) {
orderPrefix = "SC";
}
order.setOrderSn(orderPrefix+CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder));
order.setOrderSn(orderPrefix + CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder));
GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(confirmOrder.getBrandRuleId());
if(categoryRule!=null){
if (categoryRule != null) {
order.setBrandRuleName(categoryRule.getLabel());
}
@ -504,13 +558,13 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
order.setSupplierId(Long.parseLong(supplier.getId()));
order.setSupplierCode(supplier.getCode());
order.setSupplierName(supplier.getName());
order.setSupplierAddrId(address!=null?address.getId():0);
order.setSupplierAddrId(address != null ? address.getId() : 0);
order.setBrandRuleId(confirmOrder.getBrandRuleId());
order.setUserId(user.getId());
order.setUserName(user.getName());
order.setUserCode(user.getCode());
order.setUserPhone(user.getMobile());
if(createOrderParam !=null){
if (createOrderParam != null) {
order.setBillType(createOrderParam.getBillType());
order.setUrgentFlag(createOrderParam.getUrgentFlag());
order.setRemark(createOrderParam.getRemark());
@ -540,7 +594,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
orderItem.setWeight(shoppingCart.getWeight());
orderItem.setVolume(shoppingCart.getVolume());
orderItem.setRemark(shoppingCart.getRemark());
if(confirmOrder.getLatitudeFrom()!=null&&confirmOrder.getLatitudeFrom().equals("SPU")){
if (confirmOrder.getLatitudeFrom() != null && confirmOrder.getLatitudeFrom().equals("SPU")) {
// spu维度
GoodsSku goodsSku = goodsSkuService.getById(shoppingCart.getSkuId());
orderItem.setSpuId(shoppingCart.getSpuId());
@ -551,18 +605,18 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
orderItem.setSkuImg(shoppingCart.getPicUrl());
orderItem.setSpecValues(shoppingCart.getSpecInfo());
orderItem.setSpuCode(shoppingCart.getSpuCode());
if(goodsSku!=null){
if (goodsSku != null) {
GoodsSpu goodsSpu = goodsSpuService.getById(goodsSku.getSpuId());
orderItem.setSpuTitle(goodsSpu.getName());
orderItem.setSkuTitle(goodsSpu.getSkuName());
log.warn("shoppingCart json =>"+JsonUtil.objectToJson(shoppingCart));
log.warn("shoppingCart json =>" + JsonUtil.objectToJson(shoppingCart));
orderItem.setSkuTitle(goodsSku.getSkuName());
orderItem.setMarketPrice(goodsSku.getMarketPrice());
orderItem.setSalesPrice(goodsSku.getSalesPrice());
orderItem.setCusPrice(goodsSku.getSalesPrice());
}
}else {
} else {
// 默认sku
GoodSkuVo goodSkuVo = shoppingCart.getGoodSkuVo();
GoodsSpu goodsSpu = goodsSpuService.getByCode(goodSkuVo.getSpuCode());
@ -588,9 +642,9 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
try {
String supplierCode = supplier.getCode();
List<String> skuCodes = orderItems.stream().map(OmsOrderItem::getSkuCode).collect(Collectors.toList());
if(skuCodes.size()>0){
List<GoodsCustomerPrice> customerPrices = goodsCustomerPriceService.getBySupplierCodeAndCode(supplierCode,skuCodes);
inventoryCusPrices = customerPrices.stream().map(obj->{
if (skuCodes.size() > 0) {
List<GoodsCustomerPrice> customerPrices = goodsCustomerPriceService.getBySupplierCodeAndCode(supplierCode, skuCodes);
inventoryCusPrices = customerPrices.stream().map(obj -> {
InventoryCusPrice cusPrice = new InventoryCusPrice();
cusPrice.setCusCode(supplierCode);
cusPrice.setInvCode(obj.getSkuCode());
@ -606,12 +660,12 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
// }
}
} catch (Exception e) {
log.error("客户特殊价异常:{}",e.getMessage());
log.error("客户特殊价异常:{}", e.getMessage());
}
if(inventoryCusPrices!=null){
if (inventoryCusPrices != null) {
for (OmsOrderItem orderItem : orderItems) {
for (InventoryCusPrice cusPrice : inventoryCusPrices) {
if(orderItem.getSkuCode().equals(cusPrice.getInvCode())){
if (orderItem.getSkuCode().equals(cusPrice.getInvCode())) {
orderItem.setMarketPrice(cusPrice.getPrice());
orderItem.setCusPrice(cusPrice.getPrice());
orderItem.setSalesPrice(cusPrice.getPrice());
@ -620,14 +674,14 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
}
}
this.handleCategoryRule(categoryRule,orderItems);
this.handleCategoryRule(categoryRule, orderItems);
omsOrderItemService.saveBatch(orderItems);
//清空勾选的购物车
List<Long> cartIds = confirmOrder.getShoppingCarts().stream()
.filter(a->a.getId()!=null)
.filter(a -> a.getId() != null)
.map(OmsShoppingCart::getId).collect(Collectors.toList());
if(CollectionUtil.isNotEmpty(cartIds)){
if (CollectionUtil.isNotEmpty(cartIds)) {
omsShoppingCartService.removeBatchByIds(cartIds);
}
return order;
@ -641,17 +695,17 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
Integer month = param.getMonthNum();
String supplierId = param.getSupplierId();
LambdaQueryWrapper<SalePlan> spLqw = new LambdaQueryWrapper<>();
spLqw.eq(SalePlan::getYearNum,year);
spLqw.eq(SalePlan::getMonthNum,month);
spLqw.eq(SalePlan::getSupplierId,supplierId);
spLqw.eq(SalePlan::getYearNum, year);
spLqw.eq(SalePlan::getMonthNum, month);
spLqw.eq(SalePlan::getSupplierId, supplierId);
//spLqw.eq(SalePlan::getPlanState,1);
List<SalePlan> salePlanList = salePlanMapper.selectList(spLqw);
Map<Long,Integer> spuIdAndSum = new HashMap<>();
if(salePlanList.size()>0){
Map<Long, Integer> spuIdAndSum = new HashMap<>();
if (salePlanList.size() > 0) {
List<Long> spIds = salePlanList.stream().map(SalePlan::getId).collect(Collectors.toList());
LambdaQueryWrapper<SalePlanGoods> spgLqw = new LambdaQueryWrapper<>();
spgLqw.in(SalePlanGoods::getPlanId,spIds);
spgLqw.in(SalePlanGoods::getTargetId,spuIds);
spgLqw.in(SalePlanGoods::getPlanId, spIds);
spgLqw.in(SalePlanGoods::getTargetId, spuIds);
List<SalePlanGoods> salePlanGoodsList = salePlanGoodsMapper.selectList(spgLqw);
for (SalePlanGoods planGoods : salePlanGoodsList) {
spuIdAndSum.merge(planGoods.getTargetId(), planGoods.getQty(), Integer::sum);
@ -662,7 +716,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
OmsSpuAssesInfo assesInfo = new OmsSpuAssesInfo();
assesInfo.setSpuId(spuId);
Integer sum = spuIdAndSum.get(spuId);
assesInfo.setNum(sum==null?0:sum);
assesInfo.setNum(sum == null ? 0 : sum);
spuAssesInfoList.add(assesInfo);
}
return spuAssesInfoList;
@ -675,17 +729,18 @@ 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){
if (param.getId() != null) {
order = this.getById(param.getId());
if(!order.getOrderType().equals(3)){
if (!order.getOrderType().equals(3)) {
Assert.throwEx("订单类型不支持混用");
}
}else {
} else {
order = new OmsOrder();
order.setOrderSn("SP"+CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder));
order.setOrderSn("SP" + CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder));
}
order.setLatitudeFrom("sp");
order.setCdOrderRemark(param.getCdOrderRemark());
@ -693,7 +748,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(supplierAddress!=null?supplierAddress.getId():0);
order.setSupplierAddrId(supplierAddress != null ? supplierAddress.getId() : 0);
order.setBrandRuleId(param.getBrandRuleId());
order.setUserId(user.getId());
order.setUserName(user.getName());
@ -706,25 +761,25 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
List<OmsOrderItem> orderItems = new ArrayList<>();
if(CollectionUtil.isNotEmpty(param.getItemList())){
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())){
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)
.in(GoodsImminentBatch::getId, batchSkuIds)
.ge(GoodsImminentBatch::getEndDate, LocalDate.now())
);
if(CollectionUtil.isEmpty(imminentBatches)){
if (CollectionUtil.isEmpty(imminentBatches)) {
Assert.throwEx("参数过期或无效,请重新选择商品");
}
Set<String> skuIds = imminentBatches.stream()
.map(GoodsImminentBatch::getSkuId).collect(Collectors.toSet());
if(skuIds.size()!=imminentBatches.size()){
if (skuIds.size() != imminentBatches.size()) {
Assert.throwEx("不同批次相同产品,请分开下单");
}
@ -736,9 +791,9 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
for (OmsOrderImminentBo.ItemParam item : param.getItemList()) {
for (GoodsImminentBatch batch : imminentBatches) {
if(item.getBatchSkuId().equals(batch.getId())){
if (item.getBatchSkuId().equals(batch.getId())) {
for (GoodsSku sku : goodsSkuList) {
if(sku.getId().toString().equals(batch.getSkuId())){
if (sku.getId().toString().equals(batch.getSkuId())) {
//创建OrderItem
OmsOrderItem orderItem = createImminentOrderItem(order, spuList, item, batch, sku);
orderItems.add(orderItem);
@ -758,28 +813,28 @@ 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);
this.handleCategoryRule(categoryRule, orderItems);
}
this.updateById(order);
//移除已有的ITEM
LambdaQueryWrapper<OmsOrderItem> rmItemLqw = new LambdaQueryWrapper<>();
rmItemLqw.eq(OmsOrderItem::getOrderId,param.getId());
rmItemLqw.eq(OmsOrderItem::getOrderId, param.getId());
omsOrderItemService.remove(rmItemLqw);
//重新保存item
if(orderItems.size()>0){
if (orderItems.size() > 0) {
omsOrderItemService.saveBatch(orderItems);
}
//立即下单
if(param.getInstantFlag()!=null&&param.getInstantFlag().equals(1)){
if(supplier.getCdOrderFlag().equals(1) && !StringUtils.hasText(param.getCdOrderRemark()) ){
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);
this.buildPriceOrder(order.getId() + "", null);
}
return order;
}
@ -794,7 +849,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
orderItem.setOrderSn(order.getOrderSn());
orderItem.setSpuId(sku.getSpuId());
for (GoodsSpu spu : spuList) {
if(sku.getSpuId().equals(spu.getId())){
if (sku.getSpuId().equals(spu.getId())) {
orderItem.setSpuCode(spu.getSpuCode());
orderItem.setSpuTitle(spu.getName());
break;
@ -829,43 +884,43 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
}
@Override
public void buildPriceOrder(String id,String amount) {
redisService.throwResLock(OmsOrder.class.getSimpleName(),id);
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);
if(omsOrder==null){
if (omsOrder == null) {
Assert.throwEx("订单不存在或被移除");
}
if(!omsOrder.getUserId().equals(userId)){
if (!omsOrder.getUserId().equals(userId)) {
Assert.throwEx("非制单人无法下单");
}
this.checkMsOrderStatus(omsOrder);
if(!omsOrder.getStatus().equals(0)&&!omsOrder.getStatus().equals(6)){
if (!omsOrder.getStatus().equals(0) && !omsOrder.getStatus().equals(6)) {
Assert.throwEx("订单状态不支持下单");
}
LambdaQueryWrapper<OmsOrderItem> iteLqw = new LambdaQueryWrapper<>();
iteLqw.eq(OmsOrderItem::getOrderId,id);
iteLqw.eq(OmsOrderItem::getOrderId, id);
List<OmsOrderItem> orderItemList = omsOrderItemService.list(iteLqw);
if(orderItemList.size()<1){
if (orderItemList.size() < 1) {
Assert.throwEx("空项目不支持下单");
}
List<GoodsImminentBatch> imminentBatches = new ArrayList<>();
if(omsOrder.getOrderType().equals(3)){
if (omsOrder.getOrderType().equals(3)) {
//临期品相关拦截
for (OmsOrderItem orderItem : orderItemList) {
if(orderItem.getSkuBatchId()==null){
if (orderItem.getSkuBatchId() == null) {
Assert.throwEx(orderItem.getSkuCode() + " 单品无效或过期");
}
GoodsImminentBatch imminentBatch = goodsImminentBatchService.getById(orderItem.getSkuBatchId());
if(imminentBatch==null){
if (imminentBatch == null) {
Assert.throwEx(orderItem.getSkuCode() + " 单品无效或过期");
}
int spur = imminentBatch.getQuantity() - imminentBatch.getOrderQuantity();
if(orderItem.getQuantity() > spur){
if (orderItem.getQuantity() > spur) {
Assert.throwEx(orderItem.getSkuCode() + " 单品库存不足");
}
imminentBatch.setOrderQuantity(imminentBatch.getOrderQuantity() + orderItem.getQuantity());
@ -875,19 +930,19 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
}
//拦截相同的skuItem
long countDistinct = orderItemList.stream().map(OmsOrderItem::getSkuId).distinct().count();
if(orderItemList.size()!=countDistinct){
if (orderItemList.size() != countDistinct) {
Assert.throwEx("有重复存货,请检查订单项");
}
for (OmsOrderItem orderItem : orderItemList) {
if(orderItem.getQuantity()==null||orderItem.getQuantity()<1){
if (orderItem.getQuantity() == null || orderItem.getQuantity() < 1) {
Assert.throwEx("确认订单商品项数量不能为零");
}
}
//下单前规则拦截
GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(omsOrder.getBrandRuleId());
this.handleCategoryRule(categoryRule,orderItemList);
this.handleCategoryRule(categoryRule, orderItemList);
//List<Long> spuIds = orderItemList.stream().map(OmsOrderItem::getSpuId).collect(Collectors.toList());
@ -904,27 +959,27 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(omsOrder.getSupplierAddrId());
String brands = Arrays.stream(categoryRule.getBrandNames()).collect(Collectors.joining(","));
BmsSupplier supplier = bmsSupplierMapper.selectById(omsOrder.getSupplierId());
if(supplier.getCdOrderFlag().equals(1) && !StringUtils.hasText(omsOrder.getCdOrderRemark()) ){
if (supplier.getCdOrderFlag().equals(1) && !StringUtils.hasText(omsOrder.getCdOrderRemark())) {
Assert.throwEx("请补充CD单号");
}
String lastRegionId = supplier.getRegionLast();
BmsRegion bmsRegion = bmsRegionMapper.selectById(lastRegionId);
if(bmsRegion==null){
Assert.throwEx("客户档案["+supplier.getCode()+"]缺失销售区域数据,请联系管理员");
if (bmsRegion == null) {
Assert.throwEx("客户档案[" + supplier.getCode() + "]缺失销售区域数据,请联系管理员");
}
//保存到临时表-主表
LocalDateTime nowTime = LocalDateTime.now();
OmsXltOrder xltOrder = new OmsXltOrder();
xltOrder.setId(IdUtil.getSnowFlakeId()+"");
xltOrder.setId(IdUtil.getSnowFlakeId() + "");
xltOrder.setDingDanHao(omsOrder.getOrderSn());
xltOrder.setShenQingRiQi(nowTime);
xltOrder.setKeHuBianHao(omsOrder.getSupplierCode());
xltOrder.setShouHuoDiZhi(supplierAddress.getDetail());
xltOrder.setRenYuanBianHao(omsOrder.getUserCode());
xltOrder.setCdOrderRemark(omsOrder.getCdOrderRemark());
String remark = sysUser.getName()+"("+sysUser.getMobile()+")"+omsOrder.getRemark()+supplierAddress.getDetail();
if(remark.length()>120){
remark = remark.substring(0,120);
String remark = sysUser.getName() + "(" + sysUser.getMobile() + ")" + omsOrder.getRemark() + supplierAddress.getDetail();
if (remark.length() > 120) {
remark = remark.substring(0, 120);
}
xltOrder.setZhuYiShiXian(remark);
xltOrder.setXieRuShiJian(nowTime);
@ -939,19 +994,19 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
xltOrder.setStatus(0);
//补充:调度系统写报价单给ERP时,要把地址ID写过去
if(supplierAddress.getTmsSysId()==null){
if (supplierAddress.getTmsSysId() == null) {
Assert.throwEx("地址缺失TmsSysId关联");
}
xltOrder.setTmsSysId(supplierAddress.getId()+"");
xltOrder.setTmsSysId(supplierAddress.getId() + "");
xltOrder.setEmpName(omsOrder.getUserName());
xltOrder.setCusCode(omsOrder.getSupplierCode());
xltOrder.setCusName(omsOrder.getSupplierName());
String[] regions = bmsRegion.getPathNames().split("_");
if(regions.length>1){
if (regions.length > 1) {
xltOrder.setDealerProvince(regions[1]);
}
if(regions.length>0){
if (regions.length > 0) {
xltOrder.setDealerCity(regions[0]);
}
xltOrder.setDealerArea(bmsRegion.getPathNames());
@ -961,15 +1016,15 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
for (int i = 0; i < orderItemList.size(); i++) {
OmsOrderItem orderItem = orderItemList.get(i);
OmsXltOrderItem xltOrderItem = new OmsXltOrderItem();
xltOrderItem.setId(xltOrder.getId()+"_"+(i+1));
xltOrderItem.setId(xltOrder.getId() + "_" + (i + 1));
xltOrderItem.setDingDanID(xltOrder.getId());
xltOrderItem.setSpuCode(orderItem.getSpuCode());
boolean eq = orderItem.getSkuCode().equals(orderItem.getSpuCode());
if(!StringUtils.hasText(orderItem.getSkuCode())||eq){
if (!StringUtils.hasText(orderItem.getSkuCode()) || eq) {
GoodsSku sku = goodsSkuService.getById(orderItem.getSkuId());
GoodsSpu spu = goodsSpuService.getById(orderItem.getSpuId());
if(!sku.getSkuCode().equals(spu.getSpuCode())){
Assert.throwEx("SKU【"+orderItem.getSpuCode()+"】存货缺失,请联系档案负责人");
if (!sku.getSkuCode().equals(spu.getSpuCode())) {
Assert.throwEx("SKU【" + orderItem.getSpuCode() + "】存货缺失,请联系档案负责人");
}
}
xltOrderItem.setChanPinBianHao(orderItem.getSkuCode());
@ -981,25 +1036,25 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
xltOrderItem.setXieRuShiJian(nowTime);
xltOrderItem.setChuLiShiJian(null);
xltOrderItem.setRowCreateDate(nowTime);
if(omsOrder.getOrderType().equals(3)){
String itemRm = orderItem.getRemark()==null?"":orderItem.getRemark();
xltOrderItem.setBeiZhu("批号["+orderItem.getSkuBatchCode()+"]"+ itemRm);
}else {
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);
}
XltOrderDTO xltOrderDTO = new XltOrderDTO(xltOrder,xltOrderItemList);
XltOrderDTO xltOrderDTO = new XltOrderDTO(xltOrder, xltOrderItemList);
//请求到中间服务保存
seeYonRequestBaseService.postBase(ERP_ORDER_CREATE,xltOrderDTO,"创建订单:"+xltOrder.getDingDanHao());
seeYonRequestBaseService.postBase(ERP_ORDER_CREATE, xltOrderDTO, "创建订单:" + xltOrder.getDingDanHao());
//更新订单
omsOrder.setStatus(1);
omsOrder.setCheckTime(LocalDateTime.now());
omsOrder.setCheckUserId(AuthContextUtils.getSysUserId());
this.updateById(omsOrder);
if(imminentBatches.size() > 0){
if (imminentBatches.size() > 0) {
goodsImminentBatchService.updateBatchById(imminentBatches);
}
@ -1007,13 +1062,13 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
@Override
public boolean checkMsOrderStatus(OmsOrder omsOrder) {
if(omsOrder.getStatus().equals(1)){
if (omsOrder.getStatus().equals(1)) {
//检索是否能取消
String status = seeYonRequestBaseService.postBase(ERP_ORDER_STATUS+"/"+omsOrder.getOrderSn()
,null
,"获取订单状态"
String status = seeYonRequestBaseService.postBase(ERP_ORDER_STATUS + "/" + omsOrder.getOrderSn()
, null
, "获取订单状态"
).getData();
if(!status.equals("0")){
if (!status.equals("0")) {
omsOrder.setStatus(2);
super.updateById(omsOrder);
return true;
@ -1024,15 +1079,15 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
@Override
public boolean cancelOrder(String orderSn) {
OmsOrder order = this.getOne(new LambdaQueryWrapper<OmsOrder>().eq(OmsOrder::getOrderSn,orderSn));
if(order==null){
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)){
if (order.getOrderType().equals(3)) {
List<OmsOrderItem> itemList = omsOrderItemService.list(new LambdaQueryWrapper<OmsOrderItem>()
.eq(OmsOrderItem::getOrderId,order.getId()));
.eq(OmsOrderItem::getOrderId, order.getId()));
for (OmsOrderItem orderItem : itemList) {
GoodsImminentBatch batch = goodsImminentBatchService.getById(orderItem.getSkuBatchId());
GoodsImminentBatch newBatch = new GoodsImminentBatch();
@ -1042,16 +1097,16 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
}
}
R<?> r = seeYonRequestBaseService.postBase(ERP_ORDER_CANCEL+"/"+orderSn
,null
,"获取订单状态"
R<?> r = seeYonRequestBaseService.postBase(ERP_ORDER_CANCEL + "/" + orderSn
, null
, "获取订单状态"
);
if(r.getStatus()==200){
if(CollectionUtil.isNotEmpty(updItemBatch)){
if (r.getStatus() == 200) {
if (CollectionUtil.isNotEmpty(updItemBatch)) {
goodsImminentBatchService.updateBatchById(updItemBatch);
}
}
return r.getStatus()==200;
return r.getStatus() == 200;
}
}

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