diff --git a/src/main/java/com/qs/serve/common/config/properties/QiShengDsProperties.java b/src/main/java/com/qs/serve/common/config/properties/QiShengDsProperties.java new file mode 100644 index 00000000..e1cd4145 --- /dev/null +++ b/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; + +} diff --git a/src/main/java/com/qs/serve/modules/base/ErpDataBaseService.java b/src/main/java/com/qs/serve/modules/base/ErpDataBaseService.java index 80b0999a..e96802d5 100644 --- a/src/main/java/com/qs/serve/modules/base/ErpDataBaseService.java +++ b/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(); } } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java index d286b49d..6a3314be 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java +++ b/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); } diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java index dce84cfb..c1e4052e 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java @@ -240,9 +240,9 @@ public class BmsSupplierServiceImpl extends ServiceImpl childList = region2Service.listChild(regionId); @@ -294,8 +292,6 @@ public class BmsSupplierServiceImpl extends ServiceImpl lqw = new LambdaQueryWrapper<>(param); PageUtil.startPage(); List 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 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); } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsImminentBatch.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsImminentBatch.java index 4306a212..d2235427 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsImminentBatch.java +++ b/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 */ diff --git a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java b/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java index 01abe494..017ecad2 100644 --- a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java +++ b/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 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 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 copyOrder(@PathVariable Long orderId){ + return R.ok(omsOrderPart1Service.copyOrder(orderId)); + } + } diff --git a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsVerifySkuParam.java b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsVerifySkuParam.java new file mode 100644 index 00000000..c2f7f36c --- /dev/null +++ b/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 skuIds; + +} diff --git a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderPart1Service.java b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderPart1Service.java new file mode 100644 index 00000000..982fd178 --- /dev/null +++ b/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 verifySku(OmsVerifySkuParam param); + +} diff --git a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java index 3ad495da..2412f5a3 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java +++ b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java @@ -78,5 +78,6 @@ public interface OmsOrderService extends IService { */ OmsOrder modifyImminentOrder(OmsOrderImminentBo param); + } diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderPart1ServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderPart1ServiceImpl.java new file mode 100644 index 00000000..1f4bd52b --- /dev/null +++ b/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 orderItems = omsOrderItemService.list(new LambdaQueryWrapper() + .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 verifySku(OmsVerifySkuParam param) { + + return null; + } + +} diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java index c8b8f64f..c6b9eb1e 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java +++ b/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 im private GoodsRuleService goodsRuleService; private GoodsAccreditService goodsAccreditService; private GoodsImminentBatchService goodsImminentBatchService; + private RedisService redisService; @Override @@ -233,6 +236,9 @@ public class OmsOrderServiceImpl extends ServiceImpl 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 im } Set spuIds = orderItems.stream().map(OmsOrderItem::getSpuId).collect(Collectors.toSet()); List skuIds = orderItems.stream().map(OmsOrderItem::getSkuId).collect(Collectors.toList()); + List skuList = new ArrayList<>(); if(CollectionUtil.isNotEmpty(skuIds)){ - List 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 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 im List 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 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 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 im order.setRemark(param.getRemark()); this.saveOrUpdate(order); - if(order.getStatus()==null||order.getStatus().equals(0)){ - if(CollectionUtil.isEmpty(param.getItemList())){ - return order; - } - } - - Set batchSkuIds = param.getItemList().stream().map(OmsOrderImminentBo.ItemParam::getBatchSkuId) - .collect(Collectors.toSet()); - if(CollectionUtil.isEmpty(param.getItemList())){ - Assert.throwEx("请选择商品"); - } - List imminentBatches = goodsImminentBatchService - .list( - new LambdaQueryWrapper() - .in(GoodsImminentBatch::getId,batchSkuIds) - .ge(GoodsImminentBatch::getEndDate, LocalDate.now()) - ); - if(CollectionUtil.isEmpty(imminentBatches)){ - Assert.throwEx("参数过期或无效,请重新选择商品"); - } + List orderItems = new ArrayList<>(); - Set skuIds = imminentBatches.stream() - .map(GoodsImminentBatch::getSkuId).collect(Collectors.toSet()); - if(skuIds.size()!=imminentBatches.size()){ - Assert.throwEx("不同批次相同产品,请分开下单"); - } + if(CollectionUtil.isNotEmpty(param.getItemList())){ + Set 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 imminentBatches = goodsImminentBatchService + .list( + new LambdaQueryWrapper() + .in(GoodsImminentBatch::getId,batchSkuIds) + .ge(GoodsImminentBatch::getEndDate, LocalDate.now()) + ); + if(CollectionUtil.isEmpty(imminentBatches)){ + Assert.throwEx("参数过期或无效,请重新选择商品"); + } - List goodsSkuList = goodsSkuService.listByIds(skuIds); + Set skuIds = imminentBatches.stream() + .map(GoodsImminentBatch::getSkuId).collect(Collectors.toSet()); + if(skuIds.size()!=imminentBatches.size()){ + Assert.throwEx("不同批次相同产品,请分开下单"); + } - List spuIds = goodsSkuList.stream().map(GoodsSku::getSpuId).collect(Collectors.toList()); - spuIds.add(0L); - List spuList = goodsSpuService.listByIds(spuIds); + List goodsSkuList = goodsSkuService.listByIds(skuIds); - List orderItems = new ArrayList<>(); + List spuIds = goodsSkuList.stream().map(GoodsSku::getSpuId).collect(Collectors.toList()); + spuIds.add(0L); + List 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 skuCodes = orderItems.stream() - .map(OmsOrderItem::getSkuCode).collect(Collectors.toList()); + List 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 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&¶m.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 spuList, OmsOrderImminentBo.ItemParam item, GoodsImminentBatch batch, GoodsSku sku) { OmsOrderItem orderItem = new OmsOrderItem(); @@ -799,6 +830,7 @@ public class OmsOrderServiceImpl extends ServiceImpl 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 im if(!omsOrder.getStatus().equals(0)&&!omsOrder.getStatus().equals(6)){ Assert.throwEx("订单状态不支持下单"); } - if(omsOrder.getOrderType().equals(3)){ - Assert.throwEx("临期品订单不支持该接口修改"); - } LambdaQueryWrapper iteLqw = new LambdaQueryWrapper<>(); iteLqw.eq(OmsOrderItem::getOrderId,id); List orderItemList = omsOrderItemService.list(iteLqw); @@ -823,6 +852,27 @@ public class OmsOrderServiceImpl extends ServiceImpl im Assert.throwEx("空项目不支持下单"); } + List 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 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 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 im @Override public boolean cancelOrder(String orderSn) { - seeYonRequestBaseService.postBase(ERP_ORDER_CANCEL+"/"+orderSn + OmsOrder order = this.getOne(new LambdaQueryWrapper().eq(OmsOrder::getOrderSn,orderSn)); + if(order==null){ + Assert.throwEx("订单编码异常"); + } + + List updItemBatch = new ArrayList<>(); + if(order.getOrderType().equals(3)){ + List itemList = omsOrderItemService.list(new LambdaQueryWrapper() + .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 list) { - List 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; } } diff --git a/src/main/java/com/qs/serve/modules/sys/controller/SysDeptController.java b/src/main/java/com/qs/serve/modules/sys/controller/SysDeptController.java index fe092336..7cf4b8c0 100644 --- a/src/main/java/com/qs/serve/modules/sys/controller/SysDeptController.java +++ b/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> getList(SysDept param){ PageUtil.startPage(); + param.setStopFlag(0); List 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> getListAll(SysDept param){ + param.setStopFlag(0); List 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 list = sysDeptService.listDept(param); List treeNodes = list.stream().map(dept->{ SysDeptTreeNode treeNode = CopierUtil.copy(dept,new SysDeptTreeNode()); diff --git a/src/main/java/com/qs/serve/modules/sys/entity/SysDept.java b/src/main/java/com/qs/serve/modules/sys/entity/SysDept.java index 2eee59dc..c7ba2a2b 100644 --- a/src/main/java/com/qs/serve/modules/sys/entity/SysDept.java +++ b/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") diff --git a/src/main/java/com/qs/serve/modules/tag/mapper/TagInfoMapper.java b/src/main/java/com/qs/serve/modules/tag/mapper/TagInfoMapper.java index afb71667..f07622da 100644 --- a/src/main/java/com/qs/serve/modules/tag/mapper/TagInfoMapper.java +++ b/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 { + @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 lisTagsBySupplierCode(@Param("supplierCode") String supplierCode); + } diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java index e31d37be..04efe476 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java +++ b/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> getList(TbsActivitySo param){ TbsActivity entity = CopierUtil.copy(param,new TbsActivity()); + TbsCostApply costApply = null; + if(entity.getCostApplyId()!=null){ + costApply = costApplyService.getById(entity.getCostApplyId()); + } LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(entity); TbsActivityUtil.buildOverdue(lqw,param.getOverdueState()); List 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); } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java index b1d9fbbb..aac5600d 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java +++ b/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; diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java index 07d69a7e..0b706741 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java +++ b/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 tags = tagInfoMapper.lisTagsBySupplierCode(supplier.getCode()); + data.put("tags",tags); if(contracts.size()>0){ //构建合同DATA @@ -1309,6 +1313,9 @@ public class TbsCostApplyServiceImpl extends ServiceImpl tags = tagInfoMapper.lisTagsBySupplierCode(supplier.getCode()); + data.put("tags",tags); data.put("sub",subList); } diff --git a/src/main/java/com/qs/serve/modules/vtb/common/VerificationUtil.java b/src/main/java/com/qs/serve/modules/vtb/common/VerificationUtil.java new file mode 100644 index 00000000..9c51026a --- /dev/null +++ b/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("当前费用状态不支持"); + } + } + +} diff --git a/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationBatchController.java b/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationBatchController.java new file mode 100644 index 00000000..aff31aef --- /dev/null +++ b/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> getPage(VtbVerificationBatch param){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); + PageUtil.startPage(); + List 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 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(); + } + + +} + diff --git a/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationBatch.java b/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationBatch.java new file mode 100644 index 00000000..48e1d369 --- /dev/null +++ b/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; + +} + diff --git a/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationBatchBo.java b/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationBatchBo.java new file mode 100644 index 00000000..6178f5b1 --- /dev/null +++ b/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 verificationList; + + /** 备注 */ + private String remark; + + /** 支付方式 */ + private Long payWayId; + + /** 费用申请ID */ + private Long costApplyId; + +} diff --git a/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationBatchMapper.java b/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationBatchMapper.java new file mode 100644 index 00000000..2e5da101 --- /dev/null +++ b/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 { + +} + diff --git a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationBatchService.java b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationBatchService.java new file mode 100644 index 00000000..eb72f0ac --- /dev/null +++ b/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 { + + /** + * 提交批量核销 + * @param submitBo + */ + void submit(VtbVerificationBatchBo submitBo); + + +} + diff --git a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java index 27a6dff7..709c9f2e 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java +++ b/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 { */ 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 subjectCenterBoList, + TbsCostApply costApply, BmsSupplier supplier, + List verificationSubjects, + List verificationCenters, String verificationCode); + + /** + * 校验和生成核销费用 + * @param verificationBo + * @param activity + * @param costApply + * @return + */ + List validCreateVeriSubject(String verificationCode,VtbVerificationBo verificationBo, + TbsActivity activity, TbsCostApply costApply,BmsSupplier supplier); } diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchOperationServiceImpl.java new file mode 100644 index 00000000..1838c05d --- /dev/null +++ b/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) { + + } + +} diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchServiceImpl.java new file mode 100644 index 00000000..f46cd6cf --- /dev/null +++ b/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 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 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 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 orgVerificationIds = new ArrayList<>(); + + //新的核销列表 + List newVerificationList = new ArrayList<>(); + + List allVerificationChannelList = new ArrayList<>(); + List allVerificationChannelPointList = new ArrayList<>(); + + List allVerificationSubjects = new ArrayList<>(); + List allVerificationCenters = new ArrayList<>(); + + //校验BO参数 + for (VtbVerificationBo verificationBo : submitBo.getVerificationList()) { + for (TbsActivity activity : activityList) { + if(verificationBo.getActivityId().equals(activity.getId())){ + //自定义成本中心核销 + List 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 channelBoList = verificationBo.getChannelList(); + List 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 verificationSubjects = new ArrayList<>(); + List 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 activityIds = newVerificationList.stream().map(VtbVerification::getId).collect(Collectors.toList()); + + Map> allVerificationChannelListMap = allVerificationChannelList.stream() + .collect(Collectors.groupingBy(VtbVerificationChannel::getVerificationId)); + Map> allVerificationChannelPointListMap = allVerificationChannelPointList.stream() + .collect(Collectors.groupingBy(VtbVerificationChannelPoint::getVerificationId)); + + Map> allVerificationSubjectsMap = allVerificationSubjects.stream() + .collect(Collectors.groupingBy(VtbVerificationSubject::getVerificationId)); + Map> 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 vtbVerificationChannels = allVerificationChannelListMap.get(tmpId); + if(vtbVerificationChannels!=null){ + vtbVerificationChannels.forEach(a->a.setVerificationId(verificationId)); + verificationChannelService.saveBatch(vtbVerificationChannels); + } + + List verificationChannelPointList = allVerificationChannelPointListMap.get(tmpId); + if(verificationChannelPointList!=null){ + verificationChannelPointList.forEach(a->a.setVerificationId(verificationId)); + verificationChannelPointService.saveBatch(verificationChannelPointList); + } + + List verificationSubjects = allVerificationSubjectsMap.get(tmpId); + if(verificationSubjects!=null){ + verificationSubjects.forEach(a->a.setVerificationId(verificationId)); + verificationSubjectService.saveBatch(verificationSubjects); + } + + List 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); + + } + +} + diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java index 962ed1fd..ac18d258 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java +++ b/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 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 vtbVerificationLQW = new LambdaQueryWrapper<>(); vtbVerificationLQW.eq(VtbVerification::getActivityId,verificationBo.getActivityId()); @@ -731,6 +727,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl subjectCenterBoList, TbsCostApply costApply, BmsSupplier supplier, List verificationSubjects, List verificationCenters, String verificationCode) { + + @Override + public void validCreateVeriSubjectAndCenter(TbsActivity activity, List subjectCenterBoList, + TbsCostApply costApply, BmsSupplier supplier, + List verificationSubjects, + List verificationCenters, String verificationCode) { List activitySubjects = activitySubjectService.listByActivityId(activity.getId()); List activityCenters = activityCenterService.listByActivity(activity.getId()); List existFundFlowList = fundFlowService.listByActivity(activity.getId(), VtbFundFlowType.Verification); @@ -1145,6 +1142,10 @@ public class VtbVerificationServiceImpl extends ServiceImpl tags = tagInfoMapper.lisTagsBySupplierCode(activity.getSupplierCode()); + data.put("tags",tags); + List subjectList = activitySubjectService.listByActivityId(activity.getId()); List subjectDTOList = new ArrayList<>(); for (TbsActivitySubject activitySubject : subjectList) { @@ -1186,7 +1187,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl validCreateVeriSubject(String verificationCode,VtbVerificationBo verificationBo, TbsActivity activity, TbsCostApply costApply,BmsSupplier supplier) { + @Override + public List validCreateVeriSubject(String verificationCode,VtbVerificationBo verificationBo, + TbsActivity activity, TbsCostApply costApply,BmsSupplier supplier) { List verificationSubjects = new ArrayList<>(); List activitySubjects = activitySubjectService.listByActivityId(activity.getId()); List existFundFlowList = fundFlowService.listByActivity(activity.getId(), VtbFundFlowType.Verification); diff --git a/src/main/resources/mapper/goods/GoodsImminentBatchMapper.xml b/src/main/resources/mapper/goods/GoodsImminentBatchMapper.xml index 9fcaad0d..06999b4c 100644 --- a/src/main/resources/mapper/goods/GoodsImminentBatchMapper.xml +++ b/src/main/resources/mapper/goods/GoodsImminentBatchMapper.xml @@ -39,6 +39,7 @@ LEFT JOIN `goods_category` `cate3` ON `cate3`.`id` = `goods_spu`.`category_third` and goods_imminent_batch.del_flag = 0 + and goods_imminent_batch.end_date >= 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` and goods_imminent_batch.del_flag = 0 + and goods_imminent_batch.end_date >= now() and goods_sku.del_flag = 0 and goods_spu.del_flag = 0 and goods_sku.order_flag = 1 diff --git a/src/main/resources/mapper/sys/SysDeptMapper.xml b/src/main/resources/mapper/sys/SysDeptMapper.xml index 2a4cff9d..c534fa85 100644 --- a/src/main/resources/mapper/sys/SysDeptMapper.xml +++ b/src/main/resources/mapper/sys/SysDeptMapper.xml @@ -41,6 +41,7 @@ and id = #{id} and code = #{code} + and sys_dept.stop_flag = #{stopFlag} and create_by = #{createBy} and update_by = #{updateBy} and sys_dept.del_flag = '0'