Browse Source

opt:核销回调改成异步;临期品折扣率适配OA传参

muti_db
Yen 9 months ago
parent
commit
ed66b73e49
  1. 5
      src/main/java/com/qs/serve/common/util/HttpUtil.java
  2. 17
      src/main/java/com/qs/serve/modules/goods/controller/GoodsCustomerPriceController.java
  3. 15
      src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java
  4. 3
      src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java
  5. 5
      src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderImminentBo.java
  6. 11
      src/main/java/com/qs/serve/modules/oms/mapper/OmsOrderMapper.java
  7. 5
      src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java
  8. 2
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderOptionsServiceImpl.java
  9. 14
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  10. 16
      src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java
  11. 2
      src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java
  12. 2
      src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java
  13. 13
      src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationBatchController.java
  14. 2
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java
  15. 30
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java
  16. 2
      src/main/java/com/qs/serve/task/TbsTask.java

5
src/main/java/com/qs/serve/common/util/HttpUtil.java

@ -59,8 +59,9 @@ public class HttpUtil {
}
post.setConfig(
RequestConfig.custom()
//连接超时60秒
.setConnectTimeout(60*1000)
// 连接超时30秒,减少数据库连接占用时长
// 缩短时长,避免事务时间过长,占用数据库连接
.setConnectTimeout(30*1000)
.build()
);
//执行post请求

17
src/main/java/com/qs/serve/modules/goods/controller/GoodsCustomerPriceController.java

@ -133,13 +133,18 @@ public class GoodsCustomerPriceController {
*/
@GetMapping("/syncCus")
public R<GoodsCustomerPrice> syncCusInvPrice(String cusCode){
String[] cusCodes = new String[]{
"12201136","11301012","11302001","11301049","13004001","11702036","11308005","13001023","11310014","11308002","11612024","11305012","12201124","11301040","12301063","13001029","11312001","11902042","12801062","11301013","11301044","10806002","11308003","13001035","11310028","19701066","11310010","11303001","13007001","11301057","11301011","11308006","10806003","11301021","11301054","11310013","11301050","12421050","11612021","10808024","12205028","13001032","11304012","11310037","12201126","11301059","19701067","11307007","13001028","13001024","11307002","11603062","13001027","12205010","12409006","11301041","11612022","11301051","11316001","11310012","11501215","11711117","13001033","12201128","11307008","11314006","11307001","11601075","11310036","11307003","11315003","11301004","11401172","11301042","11607009","11307004","13001026","11310040","11310016","11301048","12403127","11310030","13005001","11310035","11301052","13004003","11306001","13008002","12013047","11301008","11704028","10808019","11304010","11301047","13001025","11312003","11310033","13001034","11301010","11313001","11301043","11314004","11704026","11301053","11310001","13004002","11310018","11310031","11311003","11313003","11601072","12201125","11501213","11301003","11301055","13008001","12309078","11301002","13001030","12701006","11301045","11301058"
};
for (String code : cusCodes) {
goodsCustomerPriceService.syncCustomerPrice(code);
}
goodsCustomerPriceService.syncCustomerPrice(cusCode);
return R.ok();
}
/**
* 更新最近一个月价格有变动的客户价格全量更新比较慢
* @return
*/
@GetMapping("/syncLastMonth")
public R<GoodsCustomerPrice> syncLastMonth(){
//更新最近一个月价格有变动的客户价格
goodsCustomerPriceService.syncCustomerPrice("");
return R.ok();
}

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

@ -323,6 +323,11 @@ public class OmsOrderApi {
LambdaQueryWrapper<OmsOrderItem> lqw = new LambdaQueryWrapper<>();
lqw.eq(OmsOrderItem::getOrderId,id);
List<OmsOrderItem> list = omsOrderItemService.list(lqw);
if(CollectionUtil.isNotEmpty(list)){
omsOrderService.updateCusPrice(omsOrder.getSupplierCode(),list);
}
for (OmsOrderItem orderItem : list) {
GoodsSpu goodsSpu = goodsSpuService.getById(orderItem.getSpuId());
GoodsCategory goodsCategory = goodsCategoryService.getById(goodsSpu.getCategoryLast());
@ -436,5 +441,15 @@ public class OmsOrderApi {
return R.ok(omsOrderPart1Service.copyOrder(orderId));
}
/**
* 获取临期品订单折扣率
* @return
*/
@PostMapping("/expiredOrderRates")
public R<?> getExpiredOrderRates(){
return R.ok(omsOrderService.selectExpiredOrderRates());
}
}

3
src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java

@ -131,6 +131,9 @@ public class OmsOrder implements Serializable {
/** 临期品订单折扣率 */
private BigDecimal discountRate;
/** 适配的折扣率在OA的Id */
private String oaRateId;
/** 订单状态
* 0->草稿
* 1->下单(同步到调度系统)

5
src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderImminentBo.java

@ -29,7 +29,10 @@ public class OmsOrderImminentBo {
private Integer instantFlag;
/** 临期品订单折扣率 */
private BigDecimal discountRate;
//private BigDecimal discountRate;
/** 适配的折扣率在OA的Id */
private String oaRateId;
/** CD单据备注 */
private String cdOrderRemark;

11
src/main/java/com/qs/serve/modules/oms/mapper/OmsOrderMapper.java

@ -1,7 +1,12 @@
package com.qs.serve.modules.oms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.common.model.dto.SimpleKeyValue;
import com.qs.serve.modules.oms.entity.OmsOrder;
import org.apache.ibatis.annotations.Select;
import java.math.BigDecimal;
import java.util.List;
/**
* 订单 Mapper
@ -10,5 +15,11 @@ import com.qs.serve.modules.oms.entity.OmsOrder;
*/
public interface OmsOrderMapper extends BaseMapper<OmsOrder> {
@Select("SELECT rate FROM `ext_expire_order_rate` where oa_id = #{oaId} and del_flag = 0 ")
BigDecimal getExpiredOrderRates(String oaId);
@Select("SELECT oa_id as `value`,`name` as label FROM `ext_expire_order_rate` where del_flag = 0 order by rate")
List<SimpleKeyValue<String>> selectExpiredOrderRates();
}

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

@ -12,6 +12,7 @@ import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo;
import com.qs.serve.modules.sys.entity.SysUser;
import java.math.BigDecimal;
import java.util.List;
/**
* 订单 服务接口
@ -20,6 +21,10 @@ import java.util.List;
*/
public interface OmsOrderService extends IService<OmsOrder> {
BigDecimal getExpiredOrderRateById(String oaId);
List<SimpleKeyValue<String>> selectExpiredOrderRates();
/**
* 确认订单 H5
* @param confirmOrder

2
src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderOptionsServiceImpl.java

@ -336,7 +336,7 @@ public class OmsOrderOptionsServiceImpl implements OmsOrderOptionsService {
data.put("remark", omsOrder.getRemark());
data.put("mainRemark", omsOrder.getRemark());
// 折扣率(审批时修改)
data.put("ext1", omsOrder.getDiscountRate());
data.put("ext1", omsOrder.getOaRateId());
// 申请时的总金额(审批时该金额不更新,非最终的合计金额)
data.put("ext2",
totalOrderAmt.multiply(omsOrder.getDiscountRate())

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

@ -45,6 +45,7 @@ import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hpsf.Decimal;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -91,6 +92,15 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
private GoodsImminentBatchService goodsImminentBatchService;
private RedisService redisService;
@Override
public BigDecimal getExpiredOrderRateById(String oaId) {
return baseMapper.getExpiredOrderRates(oaId);
}
@Override
public List<SimpleKeyValue<String>> selectExpiredOrderRates() {
return baseMapper.selectExpiredOrderRates();
}
@Override
public OmsConfirmOrderResult confirmOrder(OmsOrderBo confirmOrder) {
@ -772,7 +782,9 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
}
order.setLatitudeFrom("sp");
order.setCdOrderRemark(param.getCdOrderRemark());
order.setDiscountRate(param.getDiscountRate());
order.setOaRateId(param.getOaRateId());
BigDecimal discountRate = baseMapper.getExpiredOrderRates(param.getOaRateId());
order.setDiscountRate(discountRate);
order.setOrderType(3);
order.setSupplierId(Long.parseLong(supplier.getId()));
order.setSupplierCode(supplier.getCode());

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

@ -2,6 +2,7 @@ package com.qs.serve.modules.tbs.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.qs.serve.common.config.DevEnvironmentConfig;
import com.qs.serve.common.model.annotation.LimitSubmit;
import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.PageVo;
@ -25,6 +26,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.tbs.common.TbsActivityState;
import com.qs.serve.modules.tbs.common.TbsCenterType;
import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.common.TbsGoodsType;
@ -79,6 +81,7 @@ public class TbsActivityController {
private final VtbVerificationService verificationService;
private final TbsActivityApplicationService tbsActivityApplicationService;
private final TbsCostApplyPart1Service tbsCostApplyPart1Service;
private final TbsCostApplyService tbsCostApplyService;
TbsActivityDebugApplicationService tbsActivityDebugApplicationService;
@GetMapping("/reset/{id}")
@ -375,14 +378,23 @@ public class TbsActivityController {
* @param id
* @return
*/
@PostMapping("/release2/{id}")
@Transactional
@PostMapping("/releaseByDev/{id}")
@SysLog(module = SystemModule.Budget, title = "费用活动", biz = BizType.DELETE)
@PreAuthorize("hasRole('tbs:activity:release')")
public R<?> release2(@PathVariable("id") Long id){
SysUser sysUser = new SysUser();
sysUser.setName("系统执行");
sysUser.setCode("0");
verificationService.release(id,sysUser.getCode(),false);
sysUser.setId("0");
TbsActivity activity = tbsActivityService.getById(id);
if(
activity.getActivityState().equals(TbsActivityState.STATE_4_Release)
&& activity.getReleaseFlag().equals(0)
){
TbsCostApply costApply = tbsCostApplyService.getById(activity.getCostApplyId());
verificationService.mainRelease(id,sysUser,activity,costApply,activity.getTotalAmount().subtract(activity.getUsedAmount()));
}
return R.ok();
}

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

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.bir.consts.BirActivityCenterGoodsUtil;
import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.mapper.*;
import com.qs.serve.modules.vtb.entity.VtbVerification;
@ -62,6 +63,7 @@ public class TbsActivityDebugApplicationService {
// return "方法仅支持普通订单";
// }
BirActivityCenterGoodsUtil.buildBir(activity.getCostApplyId());
BigDecimal checkeAmt = activity.getUsedAmount();
if(activity.getReleaseFlag().equals(1)){
checkeAmt = checkeAmt.add(activity.getReleaseAmount());

2
src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java

@ -1014,7 +1014,7 @@ public class PortalOfCostApplication {
* 协议类费用 核销支付记录
* @param createBo
*/
@DSTransactional
@Transactional
public void createByContractCheck(ProcessCreateContractCheckBo createBo){
TbsCostApply costApply = costApplyService.getByCode(createBo.getCostCode());
if(!costApply.getChargeState().equals(2)){

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

@ -38,6 +38,8 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* 批量核销
@ -182,12 +184,11 @@ public class VtbVerificationBatchController {
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()+"");
Runnable runnable = () -> {
AuthContextUtils.setTenant("001");
vtbVerificationBatchOperationService.runCompensate(affairCommit.getCostApplyId()+"");
};
new Thread(runnable).start();
}
return r;
}

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

@ -51,6 +51,8 @@ public interface VtbVerificationService extends IService<VtbVerification> {
*/
void release(Long activityId,String userCode,Boolean throwEx);
void mainRelease(Long activityId, SysUser sysUser, TbsActivity activity, TbsCostApply costApply, BigDecimal releaseAmount);
/**
* 取消释放
* @param activityId

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

@ -525,6 +525,11 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
}
return;
}
mainRelease(activityId, sysUser, activity, costApply, releaseAmount);
}
@Override
public void mainRelease(Long activityId, SysUser sysUser, TbsActivity activity, TbsCostApply costApply, BigDecimal releaseAmount) {
TbsActivity param = new TbsActivity();
param.setId(activityId);
param.setActivityState(TbsActivityState.STATE_4_Release);
@ -540,8 +545,8 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
fundFlowService.remove(
new LambdaQueryWrapper<VtbFundFlow>()
.eq(VtbFundFlow::getFundType,VtbFundFlowType.Release)
.eq(VtbFundFlow::getCostApplyId,activity.getCostApplyId())
.eq(VtbFundFlow::getActivityId,activity.getId())
.eq(VtbFundFlow::getCostApplyId, activity.getCostApplyId())
.eq(VtbFundFlow::getActivityId, activity.getId())
);
VtbFundFlow fundFlow = new VtbFundFlow();
fundFlow.setFundType(VtbFundFlowType.Release);
@ -558,7 +563,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
//保存预算日志
List<TbsActivityCenterGoods> centerGoodsList = activityCenterGoodsService.listByActivityId(activityId);
LambdaQueryWrapper<TbsBudgetCostItem> itemLqw = new LambdaQueryWrapper<>();
itemLqw.eq(TbsBudgetCostItem::getActivityId,activityId);
itemLqw.eq(TbsBudgetCostItem::getActivityId, activityId);
List<TbsBudgetCostItem> budgetCostItemList = budgetCostItemService.list(itemLqw);
List<Long> budgetIds = budgetCostItemList.stream().map(TbsBudgetCostItem::getBudgetId).collect(Collectors.toList());
List<TbsBudget> budgetLIst = budgetService.listByIds(budgetIds);
@ -581,14 +586,19 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
}
}
BigDecimal amount = centerGoods.getCenterGoodsAmount().subtract(centerGoods.getUsedAmount());
TbsBudgetLog budgetLog = TbsBudgetLogBuildUtil.buildTbsBudgetLog(BudgetLogOptFlag.State_4,sysUser,costApply,currCostItem,currentBudget,amount,activity);
TbsBudgetLog budgetLog = TbsBudgetLogBuildUtil.buildTbsBudgetLog(BudgetLogOptFlag.State_4, sysUser, costApply,currCostItem,currentBudget,amount, activity);
if(budgetLog.getOptUserId()==null){
budgetLog.setOptUserId(sysUser.getId());
budgetLog.setOptUserCode(sysUser.getCode());
budgetLog.setOptUserName(sysUser.getName());
}
budgetLogList.add(budgetLog);
}
//移除历史记录
budgetLogService.remove(new LambdaQueryWrapper<TbsBudgetLog>()
.eq(TbsBudgetLog::getCostApplyId,activity.getCostApplyId())
.eq(TbsBudgetLog::getCostApplyId, activity.getCostApplyId())
.eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_4.getCode())
.eq(TbsBudgetLog::getActivityId,activity.getId())
.eq(TbsBudgetLog::getActivityId, activity.getId())
);
//重新保存
if(CollectionUtil.isNotEmpty(budgetLogList)){
@ -596,17 +606,17 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
}
//更新付款条件状态
LambdaQueryWrapper<TbsActivityPayCondition> updLqw = new LambdaQueryWrapper<>();
updLqw.eq(TbsActivityPayCondition::getActivityId,activityId);
updLqw.eq(TbsActivityPayCondition::getActivityId, activityId);
TbsActivityPayCondition payCondition = new TbsActivityPayCondition();
payCondition.setFinishedFlag(1);
activityPayConditionService.update(payCondition,updLqw);
//如果为最后的活动,更变费用申请状态
costApplyService.flushCostStatus(costApply.getId(),costApply.getContractFlag()!=null&&costApply.getContractFlag().equals(1));
costApplyService.flushCostStatus(costApply.getId(), costApply.getContractFlag()!=null&& costApply.getContractFlag().equals(1));
// 协议类申请请求OA取消释放拦截
if(costApply.getContractFlag().equals(1)){
R<String> result = seeYonRequestBaseService.postBase(TbsSeeYonConst.API_CONTRACT_RELEASE
+"?id="+costApply.getId()
+"&code="+costApply.getCode(),null,"协议类申请取消释放");
+"?id="+ costApply.getId()
+"&code="+ costApply.getCode(),null,"协议类申请取消释放");
if(result==null||result.getStatus()==null||result.getStatus()!=200){
Assert.throwEx("协议类取消释放时,调用OA失败");
}

2
src/main/java/com/qs/serve/task/TbsTask.java

@ -93,7 +93,7 @@ public class TbsTask {
/**
* 每半小时执行一次
*/
@Scheduled(cron="0 0/10 * * * ?")
@Scheduled(cron="0 0/30 * * * ?")
public void updateCheckState(){
AuthContextUtils.setTenant("001");
tbsCostApplyService.updateCheckState();

Loading…
Cancel
Save