From ed66b73e499de71855176289b9ff448cd899e1dc Mon Sep 17 00:00:00 2001 From: Yen Date: Sat, 12 Oct 2024 10:27:30 +0800 Subject: [PATCH] =?UTF-8?q?opt=EF=BC=9A=E6=A0=B8=E9=94=80=E5=9B=9E?= =?UTF-8?q?=E8=B0=83=E6=94=B9=E6=88=90=E5=BC=82=E6=AD=A5=EF=BC=9B=E4=B8=B4?= =?UTF-8?q?=E6=9C=9F=E5=93=81=E6=8A=98=E6=89=A3=E7=8E=87=E9=80=82=E9=85=8D?= =?UTF-8?q?OA=E4=BC=A0=E5=8F=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qs/serve/common/util/HttpUtil.java | 5 ++-- .../GoodsCustomerPriceController.java | 17 +++++++---- .../oms/controller/api/OmsOrderApi.java | 15 ++++++++++ .../qs/serve/modules/oms/entity/OmsOrder.java | 3 ++ .../oms/entity/bo/OmsOrderImminentBo.java | 5 +++- .../modules/oms/mapper/OmsOrderMapper.java | 11 +++++++ .../modules/oms/service/OmsOrderService.java | 5 ++++ .../impl/OmsOrderOptionsServiceImpl.java | 2 +- .../oms/service/impl/OmsOrderServiceImpl.java | 14 ++++++++- .../tbs/controller/TbsActivityController.java | 16 ++++++++-- .../TbsActivityDebugApplicationService.java | 2 ++ .../service/PortalOfCostApplication.java | 2 +- .../VtbVerificationBatchController.java | 13 ++++---- .../vtb/service/VtbVerificationService.java | 2 ++ .../impl/VtbVerificationServiceImpl.java | 30 ++++++++++++------- src/main/java/com/qs/serve/task/TbsTask.java | 2 +- 16 files changed, 113 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/qs/serve/common/util/HttpUtil.java b/src/main/java/com/qs/serve/common/util/HttpUtil.java index 116031ba..0366b619 100644 --- a/src/main/java/com/qs/serve/common/util/HttpUtil.java +++ b/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请求 diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsCustomerPriceController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsCustomerPriceController.java index e7489f0a..73c6fb85 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsCustomerPriceController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsCustomerPriceController.java @@ -133,13 +133,18 @@ public class GoodsCustomerPriceController { */ @GetMapping("/syncCus") public R 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 syncLastMonth(){ + //更新最近一个月价格有变动的客户价格 + goodsCustomerPriceService.syncCustomerPrice(""); return R.ok(); } 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 b2bdbd8a..3d20e0ab 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 @@ -323,6 +323,11 @@ public class OmsOrderApi { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(OmsOrderItem::getOrderId,id); List 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()); + } + } diff --git a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java index b8807884..f0123211 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java +++ b/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->下单(同步到调度系统); diff --git a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderImminentBo.java b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderImminentBo.java index 67f2a9bd..4f373e0b 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderImminentBo.java +++ b/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; diff --git a/src/main/java/com/qs/serve/modules/oms/mapper/OmsOrderMapper.java b/src/main/java/com/qs/serve/modules/oms/mapper/OmsOrderMapper.java index e1e1f981..f27ba912 100644 --- a/src/main/java/com/qs/serve/modules/oms/mapper/OmsOrderMapper.java +++ b/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 { + @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> selectExpiredOrderRates(); + } 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 efdc321c..b970c62d 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 @@ -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 { + BigDecimal getExpiredOrderRateById(String oaId); + + List> selectExpiredOrderRates(); + /** * 确认订单 H5 * @param confirmOrder diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderOptionsServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderOptionsServiceImpl.java index 74ecb116..8c3b7fdb 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderOptionsServiceImpl.java +++ b/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()) 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 33e0e74e..1d6e6c10 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 @@ -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 i private GoodsImminentBatchService goodsImminentBatchService; private RedisService redisService; + @Override + public BigDecimal getExpiredOrderRateById(String oaId) { + return baseMapper.getExpiredOrderRates(oaId); + } + + @Override + public List> selectExpiredOrderRates() { + return baseMapper.selectExpiredOrderRates(); + } @Override public OmsConfirmOrderResult confirmOrder(OmsOrderBo confirmOrder) { @@ -772,7 +782,9 @@ public class OmsOrderServiceImpl extends ServiceImpl 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()); 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 3d1c7dff..5a539488 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 @@ -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(); } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java index 81f468aa..b6960e88 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java +++ b/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()); diff --git a/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java b/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java index 295bc20e..1c88185b 100644 --- a/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java +++ b/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)){ 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 index eccf7d4b..3a155f72 100644 --- a/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationBatchController.java +++ b/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; } 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 1ac5c36c..04739838 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 @@ -51,6 +51,8 @@ public interface VtbVerificationService extends IService { */ void release(Long activityId,String userCode,Boolean throwEx); + void mainRelease(Long activityId, SysUser sysUser, TbsActivity activity, TbsCostApply costApply, BigDecimal releaseAmount); + /** * 取消释放 * @param activityId 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 0a4c34d2..08314942 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 @@ -525,6 +525,11 @@ public class VtbVerificationServiceImpl extends ServiceImpl() .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 centerGoodsList = activityCenterGoodsService.listByActivityId(activityId); LambdaQueryWrapper itemLqw = new LambdaQueryWrapper<>(); - itemLqw.eq(TbsBudgetCostItem::getActivityId,activityId); + itemLqw.eq(TbsBudgetCostItem::getActivityId, activityId); List budgetCostItemList = budgetCostItemService.list(itemLqw); List budgetIds = budgetCostItemList.stream().map(TbsBudgetCostItem::getBudgetId).collect(Collectors.toList()); List budgetLIst = budgetService.listByIds(budgetIds); @@ -581,14 +586,19 @@ public class VtbVerificationServiceImpl extends ServiceImpl() - .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 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 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失败"); } diff --git a/src/main/java/com/qs/serve/task/TbsTask.java b/src/main/java/com/qs/serve/task/TbsTask.java index 808cff91..b93fbef4 100644 --- a/src/main/java/com/qs/serve/task/TbsTask.java +++ b/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();