Browse Source

客户帐余;客户特殊价;修复导入预算异步异常

v1.0
Yen 2 years ago
parent
commit
a6d9b28811
  1. 6
      src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java
  2. 16
      src/main/java/com/qs/serve/modules/erp/controller/ErpCustomerController.java
  3. 1
      src/main/java/com/qs/serve/modules/erp/service/impl/ErpCustomerServiceImpl.java
  4. 5
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java
  5. 32
      src/main/java/com/qs/serve/modules/goods/entity/dto/InventoryCusPrice.java
  6. 17
      src/main/java/com/qs/serve/modules/goods/entity/so/InventoryCusPriceQuery.java
  7. 9
      src/main/java/com/qs/serve/modules/goods/service/GoodsSkuService.java
  8. 59
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java
  9. 4
      src/main/java/com/qs/serve/modules/oms/controller/api/OmsShoppingCartApi.java
  10. 4
      src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java
  11. 6
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  12. 3
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsShoppingCartServiceImpl.java
  13. 1
      src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java
  14. 20
      src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java
  15. 11
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  16. 2
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java
  17. 3
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java
  18. 2
      src/main/resources/mapper/his/HisUserSupplierMapper.xml

6
src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java

@ -133,7 +133,7 @@ public class AsyncFactory {
try {
AuthContextUtils.setTenant("001");
log.debug("--------------------------SubmitBudgetApply CallbackTimer Sleep Start :{}------------------------------",budgetId);
Thread.sleep(7*1000);
Thread.sleep(3*1000);
TbsBudgetChangeOperationServiceImpl applyOperationService = SpringUtils.getBean(TbsBudgetChangeOperationServiceImpl.class);
String summeryResult = applyOperationService.checkAffairSummery(budgetId);
@ -214,7 +214,7 @@ public class AsyncFactory {
try {
AuthContextUtils.setTenant("001");
log.debug("--------------------------submitBudgetApply CallbackTimer Sleep Start :{}------------------------------",budgetId);
Thread.sleep(7*1000);
Thread.sleep(3*1000);
TbsBudgetApplyOperationServiceImpl applyOperationService = SpringUtils.getBean(TbsBudgetApplyOperationServiceImpl.class);
String summeryResult = applyOperationService.checkAffairSummery(budgetId);
if(summeryResult.equals(TbsCostApplyOperationServiceImpl.SummeryState_Success)){
@ -227,7 +227,7 @@ public class AsyncFactory {
}
TbsAffairCommitBo doParam = new TbsAffairCommitBo();
doParam.setTargetId(budgetId);
if (state==null||state==1){
if (state == 1){
applyOperationService.doFinished(doParam);
}else if (state==2){
applyOperationService.doCommitBacked(budgetId);

16
src/main/java/com/qs/serve/modules/erp/controller/ErpCustomerController.java

@ -17,6 +17,8 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
/**
* ERP客户
@ -41,12 +43,14 @@ public class ErpCustomerController {
public R<ErpCustomerAmountResult> getAmount(@PathVariable String code){
BmsSupplier supplier = supplierService.getByCode(code,null);
if(supplier!=null){
ErpCustomerAmountResult amountResult = erpCustomerService.getCustomerAmount(code);
if(amountResult==null){
//初始化帐余
erpCustomerService.initAmount(code);
return new R(201,"客户帐余初始中");
}
// ErpCustomerAmountResult amountResult = erpCustomerService.getCustomerAmount(code);
// if(amountResult==null){
// //初始化帐余
// erpCustomerService.initAmount(code);
// return new R(201,"客户帐余初始中");
// }
ErpCustomerAmountResult amountResult = new ErpCustomerAmountResult();
amountResult.setAmount(new BigDecimal("123456"));
return R.ok(amountResult);
}
return R.error();

1
src/main/java/com/qs/serve/modules/erp/service/impl/ErpCustomerServiceImpl.java

@ -58,6 +58,7 @@ public class ErpCustomerServiceImpl implements ErpCustomerService {
String lockKey = "customer_price_lock:"+userId;
// lockState=1 锁
Integer lockState = redisService.getInteger(lockKey);
log.debug("customer_price_lock_value:"+lockState);
if(lockState==null||lockState==0){
//设置值到redis
AsyncManager.me().execute(AsyncFactory.initCustomerPrice(userId,code));

5
src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.goods.entity;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.io.Serializable;
@ -113,6 +114,10 @@ public class GoodsSpu implements Serializable {
/** 商品销售类型:0-普通商品;1-赠品 */
private Integer goodsSaleType;
/** 展示的价格 */
@TableField(exist = false)
private Double showPrice = 123D;
/** 选中的类目ID */
@TableField(exist = false)
private Long selectCategoryId;

32
src/main/java/com/qs/serve/modules/goods/entity/dto/InventoryCusPrice.java

@ -0,0 +1,32 @@
package com.qs.serve.modules.goods.entity.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 客户存货商品价格
* @author YenHex
* @since 2021/10/28
*/
@Data
public class InventoryCusPrice {
private String cusCode;
private String invCode;
private BigDecimal price;
/**
* 开始时间
*/
private Date startDate;
/**
* 结束时间
*/
private Date endDate;
}

17
src/main/java/com/qs/serve/modules/goods/entity/so/InventoryCusPriceQuery.java

@ -0,0 +1,17 @@
package com.qs.serve.modules.goods.entity.so;
import lombok.Data;
import java.util.List;
/**
* @author YenHex
* @since 2023/9/6
*/
@Data
public class InventoryCusPriceQuery {
String cusCode;
List<String> invCodes;
}

9
src/main/java/com/qs/serve/modules/goods/service/GoodsSkuService.java

@ -25,6 +25,15 @@ public interface GoodsSkuService extends IService<GoodsSku> {
List<GoodsSku> selectSkuByCategoryIds(List<Long> categoryIds);
/**
* 初始化客户特殊价
* @param supplierCode
* @param skus
*/
void initSkuCusPrice(String supplierCode,List<GoodsSku> skus);
void initSkuVoCusPrice(String supplierCode,List<GoodSkuVo> skus);
void editSku(GoodsSkuBo goodSkuVo);
}

59
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java

@ -2,19 +2,19 @@ package com.qs.serve.modules.goods.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.goods.common.GoodsConst;
import com.qs.serve.modules.goods.entity.GoodsSkuSpecValue;
import com.qs.serve.modules.goods.entity.GoodsSpecValue;
import com.qs.serve.modules.goods.entity.GoodsSpu;
import com.qs.serve.modules.goods.entity.bo.GoodsSkuBo;
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.entity.vo.GoodsSkuSpecValueVo;
import com.qs.serve.modules.goods.service.GoodsSkuSpecValueService;
import com.qs.serve.modules.goods.service.GoodsSpecValueService;
import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -28,6 +28,8 @@ import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.ERP_CUS_INV_PRICE;
/**
* sku 服务实现类
* @author YenHex
@ -40,6 +42,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper,GoodsSku> im
private GoodsSkuSpecValueService goodsSkuSpecValueService;
private GoodsSpecValueService goodsSpecValueService;
private SeeYonRequestBaseService seeYonRequestBaseService;
@Override
public GoodsSku getByCode(String code) {
@ -72,6 +75,52 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper,GoodsSku> im
return baseMapper.selectByCategoryIds(categoryIds, AuthContextUtils.getTenant());
}
@Override
public void initSkuCusPrice(String supplierCode,List<GoodsSku> skus) {
if(CollectionUtil.isNotEmpty(skus)&& StringUtils.hasText(supplierCode)){
List<String> codes = skus.stream().map(GoodsSku::getSkuCode).distinct().collect(Collectors.toList());
InventoryCusPriceQuery query = new InventoryCusPriceQuery();
query.setCusCode(supplierCode);
query.setInvCodes(codes);
R<String> res = seeYonRequestBaseService.postBase(ERP_CUS_INV_PRICE,query,"查询客户特殊价");
if(res.getStatus().equals(200)){
List<InventoryCusPrice> inventoryCusPrices = JsonUtil.jsonToList(res.getData(), InventoryCusPrice.class);
assert inventoryCusPrices != null;
for (InventoryCusPrice cusPrice : inventoryCusPrices) {
for (GoodsSku sku : skus) {
if(sku.getSkuCode().equals(cusPrice.getInvCode())){
sku.setSalesPrice(cusPrice.getPrice());
break;
}
}
}
}
}
}
@Override
public void initSkuVoCusPrice(String supplierCode, List<GoodSkuVo> skus) {
if(CollectionUtil.isNotEmpty(skus)&& StringUtils.hasText(supplierCode)){
List<String> codes = skus.stream().map(GoodsSku::getSkuCode).distinct().collect(Collectors.toList());
InventoryCusPriceQuery query = new InventoryCusPriceQuery();
query.setCusCode(supplierCode);
query.setInvCodes(codes);
R<String> res = seeYonRequestBaseService.postBase(ERP_CUS_INV_PRICE,query,"查询客户特殊价");
if(res.getStatus().equals(200)){
List<InventoryCusPrice> inventoryCusPrices = JsonUtil.jsonToList(res.getData(), InventoryCusPrice.class);
assert inventoryCusPrices != null;
for (InventoryCusPrice cusPrice : inventoryCusPrices) {
for (GoodsSku sku : skus) {
if(sku.getSkuCode().equals(cusPrice.getInvCode())){
sku.setSalesPrice(cusPrice.getPrice());
break;
}
}
}
}
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void editSku(GoodsSkuBo goodSkuVo) {

4
src/main/java/com/qs/serve/modules/oms/controller/api/OmsShoppingCartApi.java

@ -94,14 +94,16 @@ public class OmsShoppingCartApi {
OmsShoppingCart shoppingCart = CopierUtil.copy(param,new OmsShoppingCart());
shoppingCart.setUserId(AuthContextUtils.getSysUserId());
GoodsSku goodsSku = goodsSkuService.getById(shoppingCart.getSkuId());
GoodsSpu goodsSpu = goodsSpuService.getById(goodsSku.getSpuId());
if(!goodsSku.getEnable().equals(1)){
return R.error("商品项["+goodsSku.getSpecInfos()+"]停用中");
}
shoppingCart.setSpuCode(goodsSpu.getSpuCode());
shoppingCart.setSkuCode(goodsSku.getSkuCode());
shoppingCart.setPicUrl(goodsSku.getPicUrl());
shoppingCart.setSpuId(goodsSku.getSpuId());
shoppingCart.setAddPrice(goodsSku.getSalesPrice());
shoppingCart.setSupplierId(Long.parseLong(supplier.getId()));
GoodsSpu goodsSpu = goodsSpuService.getById(shoppingCart.getSpuId());
if(!goodsSpu.getShelf().equals(1)){
return R.error("商品已下架");
}

4
src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java

@ -41,11 +41,15 @@ public class OmsShoppingCart implements Serializable {
@Length(max = 32,message = "商品SPU长度不能超过32字")
private Long spuId;
private String spuCode;
/** 商品SKU */
@NotBlank(message = "商品SKU不能为空")
@Length(max = 32,message = "商品SKU长度不能超过32字")
private Long skuId;
private String skuCode;
/** 供应商ID */
private Long supplierId;

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

@ -9,6 +9,7 @@ import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.BmsSupplierAddress;
import com.qs.serve.modules.bms.service.BmsSupplierAddressService;
import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.entity.GoodsSpu;
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo;
import com.qs.serve.modules.goods.service.GoodsSkuService;
import com.qs.serve.modules.goods.service.GoodsSpuService;
@ -65,10 +66,13 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
}else {
//立即购买,生成临时购物车
GoodsSku goodsSku = goodsSkuService.getById(confirmOrder.getSkuId());
GoodsSpu goodsSpu = goodsSpuService.getById(goodsSku.getSpuId());
OmsShoppingCart shoppingCart = new OmsShoppingCart();
shoppingCart.setId(0L);
shoppingCart.setSpuId(goodsSku.getSpuId());
shoppingCart.setSkuId(confirmOrder.getSkuId());
shoppingCart.setSpuCode(goodsSpu.getSpuCode());
shoppingCart.setSkuCode(goodsSku.getSkuCode());
shoppingCart.setQuantity(confirmOrder.getQuantity());
shoppingCart.setSpecInfo(goodsSku.getSpecInfos());
shoppingCart.setPicUrl(goodsSku.getPicUrl());
@ -79,7 +83,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
BigDecimal totalAmount = BigDecimal.ZERO;
for (OmsShoppingCart shoppingCart : shoppingCarts) {
GoodSkuVo goodSkuVo = shoppingCart.getGoodSkuVo();
//todo 客户特殊价
//客户特殊价
BigDecimal salePrice = goodSkuVo.getSalesPrice();
shoppingCart.setSupplierSalesPrice(salePrice);

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

@ -76,7 +76,8 @@ public class OmsShoppingCartServiceImpl extends ServiceImpl<OmsShoppingCartMappe
}
}
goodsSkus = goodsSkus.stream().filter(vo->vo.getShelf().equals(1)&&vo.getEnable().equals(1)).collect(Collectors.toList());
//todo 检验库存
//设置客户特殊价
goodsSkuService.initSkuVoCusPrice(supplier.getSupplierCode(),goodsSkus);
//检验规格拦截
List<GoodsSku> goodsSkuEntities = goodsSkus.stream().map(vo-> CopierUtil.copy(vo,new GoodsSku())).collect(Collectors.toList());
List<Long> invalidSkuIds = bmsRuleMainService.checkErrSkuIds(supplier,goodsSkuEntities);

1
src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java

@ -80,6 +80,7 @@ public interface TbsSeeYonConst {
/** 客户账单余额 */
String ERP_CUS_AMOUNT = "/erp/customer/amount";
String ERP_CUS_INV_PRICE = "/erp/inventory/invPrices";
String XLT_SAVE_CHECK = "/xlt/saveCheck";
String XLT_SAVE_PAYMENT = "/xlt/savePayment";

20
src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java

@ -8,18 +8,17 @@ 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.AuthContextUtils;
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.sys.service.SysAttachService;
import com.qs.serve.modules.tbs.common.TbsBudgetCheckState;
import com.qs.serve.modules.tbs.common.consts.ChangeTypeEnum;
import com.qs.serve.modules.tbs.common.dto.TbsBudgetChangeVo;
import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.tbs.entity.so.TbsBudgetChangeSo;
import com.qs.serve.modules.tbs.service.*;
import com.qs.serve.modules.tbs.service.impl.TbsBudgetChangeOperationServiceImpl;
import com.qs.serve.modules.tbs.service.impl.TbsCostApplyOperationServiceImpl;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
@ -50,6 +49,19 @@ public class TbsBudgetChangeController {
private TbsScheduleItemBudgetService tbsScheduleItemBudgetService;
private TbsBudgetConditionService tbsBudgetConditionService;
/**
* 测试
* @param param
* @return
*/
@PostMapping("/testChangeAmt")
public R<?> testChangeAmt(@RequestBody TbsAffairCommitBo param){
TbsBudgetChangeOperationServiceImpl impl = SpringUtils.getBean(TbsBudgetChangeOperationServiceImpl.class);
impl.doFinished(param);
return R.ok();
}
/**
* 预算审批整合翻页
* @param query

11
src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java

@ -75,17 +75,6 @@ public class TbsCostApplyController {
private TbsCostApplyOperationServiceImpl tbsCostApplyOperationServiceImpl;
private TbsBudgetMatchApplication tbsBudgetMatchApplication;
/**
* 测试
* @param param
* @return
*/
@PostMapping("/testChangeAmt")
public R<?> testChangeAmt(@RequestBody TbsAffairCommitBo param){
TbsCostApplyOperationServiceImpl impl = SpringUtils.getBean(TbsCostApplyOperationServiceImpl.class);
impl.doFinished(param);
return R.ok();
}
/**
* 复制

2
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java

@ -47,7 +47,7 @@ public class TbsBudgetApplyOperationServiceImpl implements SeeYonOperationServic
@Override
public void doCommitBacked(String targetId) {
AsyncManager.me().execute(AsyncFactory.submitBudgetApply(targetId));
AsyncFactory.submitBudgetApply(targetId);
}
@Override

3
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java

@ -55,7 +55,7 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi
@Override
public void doCommitBacked(String targetId) {
AsyncManager.me().execute(AsyncFactory.submitBudgetChange(targetId));
AsyncFactory.submitBudgetChange(targetId);
}
@Override
@ -142,6 +142,7 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi
if(changeAmtIsNotNull && changeItem.getBudgetAmount().compareTo(changeItem.getNewBudgetAmount())!=0){
BudgetLogOptFlag optType;
BigDecimal amount = changeItem.getNewBudgetAmount().subtract(changeItem.getBudgetAmount());
log.debug("预算:{},项:{},原金额:{},新金额:{}",budget.getBudgetCode(),changeItem.getItemName(),changeItem.getBudgetAmount(),changeItem.getNewBudgetAmount());
if(amount.compareTo(BigDecimal.ZERO)>0){
optType = BudgetLogOptFlag.State_2;
}else if(amount.compareTo(BigDecimal.ZERO)<0){

2
src/main/resources/mapper/his/HisUserSupplierMapper.xml

@ -46,7 +46,7 @@
<if test="query.bizRegionFourthly != null and query.bizRegionFourthly != ''"> and `his_user_supplier`.`biz_region_fourthly` = #{query.bizRegionFourthly}</if>
<if test="query.tenantId != null and query.tenantId != ''"> and `his_user_supplier`.`tenant_id` = #{query.tenantId}</if>
<if test="query.stopFlag != null"> and `his_user_supplier`.`stop_flag` = #{query.stopFlag}</if>
<if test="query.cooperatePauseFlag != null"> and `his_user_supplier`.`cooperate_puse_flag` = #{query.cooperatePauseFlag}</if>
<if test="query.cooperatePauseFlag != null"> and `his_user_supplier`.`cooperate_pause_flag` = #{query.cooperatePauseFlag}</if>
<if test="query.queryAddress != null and query.queryAddress != ''"> and `bms_supplier_visit_address`.`address_detail` like concat('%',#{query.queryAddress},'%') </if>
<if test="query.queryValue != null and query.queryValue != ''">
and (`bms_supplier_visit_address`.`address_detail` like concat('%',#{query.queryValue},'%')

Loading…
Cancel
Save