diff --git a/cms-api/cms-admin-svc/src/main/java/com/qs/serve/controller/WxSvcLoginApi.java b/cms-api/cms-admin-svc/src/main/java/com/qs/serve/controller/WxSvcLoginApi.java index c864216..7e4434c 100644 --- a/cms-api/cms-admin-svc/src/main/java/com/qs/serve/controller/WxSvcLoginApi.java +++ b/cms-api/cms-admin-svc/src/main/java/com/qs/serve/controller/WxSvcLoginApi.java @@ -195,6 +195,7 @@ public class WxSvcLoginApi { redisService.set(redisKey,pctoken); tokenMap.put("token", pctoken); tokenMap.put("userId", wxUser.getSysUserId()); + tokenMap.put("openId", wxUser.getOpenId()); tokenMap.put("IP", loginUser.getLoginIp()); tokenMap.put("tenant", sysTenantMapper.selectById(loginUser.getTenant())); tokenMap.put("loginType",client); @@ -229,6 +230,7 @@ public class WxSvcLoginApi { tokenMap.put("IP", loginUser.getLoginIp()); tokenMap.put("tenant", sysTenantMapper.selectById(loginUser.getTenant())); tokenMap.put("loginType",client); + tokenMap.put("openId","test-open-id"); tokenMap.put("client",client); //关联 objectMap.put("adminTokenInfo",tokenMap); diff --git a/cms-framework/cms-framework-redis/src/main/java/com/qs/serve/framework/redis/utils/CodeGenUtil.java b/cms-framework/cms-framework-redis/src/main/java/com/qs/serve/framework/redis/utils/CodeGenUtil.java index fd5a626..d0c1a99 100644 --- a/cms-framework/cms-framework-redis/src/main/java/com/qs/serve/framework/redis/utils/CodeGenUtil.java +++ b/cms-framework/cms-framework-redis/src/main/java/com/qs/serve/framework/redis/utils/CodeGenUtil.java @@ -87,6 +87,7 @@ public class CodeGenUtil { return IdUtil.getSnowflakeNextIdStr(); } + public static String getCommonValue(String key){ Long value = getIdx(key); String digitsNum = ""; diff --git a/cms-modules/cms-actuator/src/main/java/com/qs/serve/actuator/SysLogAspect.java b/cms-modules/cms-actuator/src/main/java/com/qs/serve/actuator/SysLogAspect.java index 3c9bd94..b27715a 100644 --- a/cms-modules/cms-actuator/src/main/java/com/qs/serve/actuator/SysLogAspect.java +++ b/cms-modules/cms-actuator/src/main/java/com/qs/serve/actuator/SysLogAspect.java @@ -27,6 +27,8 @@ import org.springframework.web.servlet.HandlerMapping; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.lang.reflect.Method; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.Collection; import java.util.Iterator; import java.util.Map; @@ -95,9 +97,9 @@ public class SysLogAspect { } //GET只保存请求时间长的请求 - if(request.getMethod().equals("GET") && !isLongTime){ - return; - } +// if(request.getMethod().equals("GET") && !isLongTime){ +// return; +// } // 获取当前的用户 LoginUser loginUser = AuthContextUtils.getLoginUser(false); SysOperationLog operLog = new SysOperationLog(); @@ -128,6 +130,12 @@ public class SysLogAspect { // 处理设置注解上的参数 getControllerMethodDescription(joinPoint, controllerLog, operLog); operLog.setTenantId(AuthContextUtils.getTenant()); + + + LocalDate localDateTime = LocalDate.now(); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMM"); + String localTime = df.format(localDateTime); + operLog.setTableNameExt(localTime); // 保存数据库 AsyncManager.me().execute(AsyncFactory.saveOperationLog(operLog)); } catch (Exception exp) { diff --git a/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcRebateParam.java b/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcRebateParam.java index 3844054..cafbd2e 100644 --- a/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcRebateParam.java +++ b/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcRebateParam.java @@ -48,7 +48,7 @@ public class TzcRebateParam{ private Integer checkModel; /** 超过多少金额自动核销变为人工核销 */ - @NotNull(message = "超过多少金额自动核销变为人工核销不能为空") + //@NotNull(message = "超过多少金额自动核销变为人工核销不能为空") private BigDecimal checkMaxAmount; /** 自动核销日期类型:0-手动设置;1-自然月;2-自然周 */ diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/sync/AsyncFactory.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/sync/AsyncFactory.java index 89c952e..10dad5c 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/sync/AsyncFactory.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/sync/AsyncFactory.java @@ -22,6 +22,8 @@ import com.qs.serve.modules.vtb.service.impl.VtbVerificationOperationServiceImpl import lombok.extern.slf4j.Slf4j; import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.TimerTask; import java.util.concurrent.TimeUnit; diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/sys/entity/SysOperationLog.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/sys/entity/SysOperationLog.java index 1585b3d..b15bb20 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/sys/entity/SysOperationLog.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/sys/entity/SysOperationLog.java @@ -112,5 +112,8 @@ public class SysOperationLog implements Serializable { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private LocalDateTime queryEndTime; + @TableField(exist = false) + private String tableNameExt; + } diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityCheckController.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityCheckController.java new file mode 100644 index 0000000..1e35f73 --- /dev/null +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityCheckController.java @@ -0,0 +1,172 @@ +package com.qs.serve.modules.tbs.controller; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.annotation.SysLog; +import com.qs.serve.common.enums.BizType; +import com.qs.serve.common.enums.SystemModule; +import com.qs.serve.framework.base.model.R; +import com.qs.serve.framework.base.model.dto.CommonIdsParam; +import com.qs.serve.modules.erp.entity.vo.ErpDispatchSumPmsVo; +import com.qs.serve.modules.erp.entity.vo.SubjectDispatchSumVo; +import com.qs.serve.modules.erp.mapper.ErpDispatchDataMapper; +import com.qs.serve.modules.tbs.entity.TbsActivity; +import com.qs.serve.modules.tbs.entity.TbsActivitySubject; +import com.qs.serve.modules.tbs.entity.TbsCostApply; +import com.qs.serve.modules.tbs.mapper.TbsActivityMapper; +import com.qs.serve.modules.tbs.service.*; +import com.qs.serve.modules.tzc.entity.TzcRebatePeriod; +import com.qs.serve.modules.tzc.entity.dto.TzcRebateCalculateDTO; +import com.qs.serve.modules.tzc.service.TzcRebateApplication4VerificationService; +import com.qs.serve.modules.tzc.service.TzcRebatePeriodService; +import com.qs.serve.modules.vtb.entity.bo.VtbVerificationBatchBo; +import com.qs.serve.modules.vtb.entity.bo.VtbVerificationBo; +import com.qs.serve.modules.vtb.entity.bo.VtbVerificationSubjectBo; +import com.qs.serve.modules.vtb.entity.bo.VtbVerificationSubjectCenterBo; +import com.qs.serve.modules.vtb.event.VtbRebateAutoEvent; +import com.qs.serve.modules.vtb.service.VtbFundFlowService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.Nullable; +import org.springframework.context.ApplicationEventPublisher; +import org.springframework.web.bind.annotation.*; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 预算 费用活动 + * @module 预算 + * @service 费用活动 + * @author YenHex + * @since 2022-11-08 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("tbs/activity") +public class TbsActivityCheckController { + + private final VtbFundFlowService vtbFundFlowService; + private final TbsActivityService tbsActivityService; + private final TbsCostApplyService tbsCostApplyService; + private final TbsCostApplyPart1Service tbsCostApplyPart1Service; + private final TbsActivityApplicationService tbsActivityApplicationService; + private final TbsActivityGoodsService tbsActivityGoodsService; + private final TbsActivitySubjectService tbsActivitySubjectService; + private final ErpDispatchDataMapper erpDispatchDataMapper; + private final TzcRebatePeriodService tzcRebatePeriodService; + private final TbsActivityMapper tbsActivityMapper; + private final TzcRebateApplication4VerificationService tzcRebateApplication4VerificationService; + private final ApplicationEventPublisher eventPublisher; + + + public void createAutoEvent(){ + List rebateAutoActIds = tbsActivityMapper.listRebateAutoActIds(); + for (Long actId : rebateAutoActIds) { + createAutoEvent(actId); + } + } + + /** + * 创建返利自动核销事件 + * @param activityId + */ + @GetMapping("/createRebateAutoEvent/{actId}") + public void createAutoEvent(@PathVariable("actId") Long activityId){ + TbsActivity activity = tbsActivityService.getById(activityId); + TbsCostApply costApply = tbsCostApplyService.getById(activity.getCostApplyId()); + VtbVerificationBo commitBo = createVerificationBo(activity); + if (commitBo == null) return; + eventPublisher.publishEvent(new VtbRebateAutoEvent(this, commitBo, costApply.getUserId())); + } + + @Nullable + private VtbVerificationBo createVerificationBo(TbsActivity activity) { + Long activityId = activity.getId(); + // 通过周期查询发货金额 + ErpDispatchSumPmsVo erpDispatchSumPmsVo = tbsActivityService.getDispatchSumByActivity(activity); + BigDecimal dispatchAmount = erpDispatchSumPmsVo.getTotalAmount(); + // 此次核销金额 + TzcRebateCalculateDTO calculateDTO = tzcRebateApplication4VerificationService.getActivityRebateAmount(activityId,dispatchAmount); + BigDecimal vtbAmt = calculateDTO.getTotalReturnAmt(); + if (vtbAmt.compareTo(BigDecimal.ZERO)==0){ + // 没有返利金额 + return null; + } + // 计算返利金额 + VtbVerificationBo commitBo = new VtbVerificationBo(); + commitBo.setActivityId(activityId); + commitBo.setAttachIds(null); + commitBo.setRemark("返利核销自动:"+calculateDTO.getDebugMsg()); + commitBo.setChannelList(null); + commitBo.setPointList(null); + List activitySubjects = tbsActivitySubjectService.listByActivityId(activityId); + List subjectBoList = new ArrayList<>(); + + // 平均每个科目金额 + BigDecimal avgAmt = vtbAmt.divide(BigDecimal.valueOf(activitySubjects.size()), 2,RoundingMode.DOWN); + // 剩余金额,计算最后一项金额 + BigDecimal surplusAmt = vtbAmt; + for (int i = 0; i < activitySubjects.size(); i++) { + VtbVerificationSubjectBo subjectBo = new VtbVerificationSubjectBo(); + subjectBo.setSubjectId(activitySubjects.get(i).getSubjectId()); + subjectBo.setCountSession(0); + subjectBo.setCountPerson(0); + if (i==activitySubjects.size()-1){ + subjectBo.setAmount(surplusAmt); + }else { + subjectBo.setAmount(avgAmt); + surplusAmt = surplusAmt.subtract(avgAmt); + } + } + + commitBo.setSubjectList(subjectBoList); + commitBo.setPayConditionId(0L); + commitBo.setPayWayId(0L); + // 不释放 + commitBo.setInputReleaseFlag(0); + commitBo.setAutoFlag(1); + return commitBo; + } + + /** + * 年度返利批量自动核销事件 + * @param costApplyId + */ + @GetMapping("/createBatchRebateAutoEvent/{costApplyId}") + public void createBatchRebateAutoEvent(@PathVariable("costApplyId") Long costApplyId){ + TbsCostApply costApply = tbsCostApplyService.getById(costApplyId); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsActivity::getCostApplyId,costApplyId) + .eq(TbsActivity::getActivityState,0) + .eq(TbsActivity::getAutoCheckState,1); + List activityList = tbsActivityService.list(lqw); + List verificationBoList = new ArrayList<>(); + BigDecimal totalAmount = BigDecimal.ZERO; + for (TbsActivity activity : activityList) { + VtbVerificationBo verificationBo = this.createVerificationBo(activity); + if (verificationBo==null){ + continue; + } + verificationBoList.add(verificationBo); + for (VtbVerificationSubjectCenterBo centerBo : verificationBo.getSubjectCenterList()) { + + } + } + VtbVerificationBatchBo batchBo = new VtbVerificationBatchBo(); + batchBo.setVerificationList(verificationBoList); + batchBo.setRemark("年度返利核销"); + //batchBo.setPayWayId(0); + batchBo.setCostApplyId(costApplyId); + //batchBo.setTotalAmount(); + batchBo.setRebateOfYearFlag(1); + + } + + +} + diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController2.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController2.java index c6ac6c5..8f39b0f 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController2.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController2.java @@ -61,67 +61,6 @@ public class TbsActivityController2 { private final TzcRebateApplication4VerificationService tzcRebateApplication4VerificationService; private final ApplicationEventPublisher eventPublisher; - - public void createAutoEvent(){ - List rebateAutoActIds = tbsActivityMapper.listRebateAutoActIds(); - for (Long actId : rebateAutoActIds) { - createAutoEvent(actId); - } - } - - /** - * 创建返利自动核销事件 - * @param activityId - */ - @GetMapping("/createRebateAutoEvent/{actId}") - public void createAutoEvent(@PathVariable("actId") Long activityId){ - TbsActivity activity = tbsActivityService.getById(activityId); - TbsCostApply costApply = tbsCostApplyService.getById(activity.getCostApplyId()); - // 通过周期查询发货金额 - ErpDispatchSumPmsVo erpDispatchSumPmsVo = tbsActivityService.getDispatchSumByActivity(activity); - BigDecimal dispatchAmount = erpDispatchSumPmsVo.getTotalAmount(); - // 此次核销金额 - TzcRebateCalculateDTO calculateDTO = tzcRebateApplication4VerificationService.getActivityRebateAmount(activityId,dispatchAmount); - BigDecimal vtbAmt = calculateDTO.getTotalReturnAmt(); - if (vtbAmt.compareTo(BigDecimal.ZERO)==0){ - // 没有返利金额 - return; - } - // 计算返利金额 - VtbVerificationBo commitBo = new VtbVerificationBo(); - commitBo.setActivityId(activityId); - commitBo.setAttachIds(null); - commitBo.setRemark("返利核销自动:"+calculateDTO.getDebugMsg()); - commitBo.setChannelList(null); - commitBo.setPointList(null); - List activitySubjects = tbsActivitySubjectService.listByActivityId(activityId); - List subjectBoList = new ArrayList<>(); - - // 平均每个科目金额 - BigDecimal avgAmt = vtbAmt.divide(BigDecimal.valueOf(activitySubjects.size()), 2,RoundingMode.DOWN); - // 剩余金额,计算最后一项金额 - BigDecimal surplusAmt = vtbAmt; - for (int i = 0; i < activitySubjects.size(); i++) { - VtbVerificationSubjectBo subjectBo = new VtbVerificationSubjectBo(); - subjectBo.setSubjectId(activitySubjects.get(i).getSubjectId()); - subjectBo.setCountSession(0); - subjectBo.setCountPerson(0); - if (i==activitySubjects.size()-1){ - subjectBo.setAmount(surplusAmt); - }else { - subjectBo.setAmount(avgAmt); - surplusAmt = surplusAmt.subtract(avgAmt); - } - } - - commitBo.setSubjectList(subjectBoList); - commitBo.setPayConditionId(0L); - commitBo.setPayWayId(0L); - // 不释放 - commitBo.setInputReleaseFlag(0); - eventPublisher.publishEvent(new VtbRebateAutoEvent(this, commitBo, costApply.getUserId())); - } - /** * 获取返利年度的活动ID * @param costApplyId diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetMatchApplication.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetMatchApplication.java index 9ca8159..4660e31 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetMatchApplication.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetMatchApplication.java @@ -1,5 +1,6 @@ package com.qs.serve.modules.tbs.service; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.qs.serve.framework.base.model.AmountDTO; import com.qs.serve.framework.base.util.CollectionUtil; import com.qs.serve.common.utils.StringUtils; @@ -88,16 +89,24 @@ public class TbsBudgetMatchApplication { TbsCostApply costApply = tbsCostApplyMapper.selectById(costApplyId); + boolean isBack = costApply.getChargeState().equals(TbsCostApplyState.State_4_refused.getCode())|| + costApply.getChargeState().equals(TbsCostApplyState.State_7_changed.getCode()); - //加载所有预算 + //加载所有预算(防止赠品和试吃品时,条件出现不生效) allBudgetIds.add(0L); - List allBudgetList = budgetMapper.selectBatchIds(allBudgetIds); + List allBudgetList = budgetMapper + .selectList(new LambdaQueryWrapper() + .in(TbsBudget::getId,allBudgetIds) + .eq(!isBack,TbsBudget::getStopFlag,0) + .eq(!isBack,TbsBudget::getInactiveFlag,0) + ); + Map allBudgetMap = new HashMap<>(allBudgetList.size()); for (TbsBudget budget : allBudgetList) { //不是回退和异动,需要过滤停用条件 if(!costApply.getChargeState().equals(TbsCostApplyState.State_4_refused.getCode())&& !costApply.getChargeState().equals(TbsCostApplyState.State_7_changed.getCode())){ - //跨年和不运作状态时跳过 + //跨年和不运作状态时跳过(使用赠品和试吃品时,条件出现不生效) if(budget.getStopFlag().equals(1)||budget.getInactiveFlag().equals(1)){ continue; } diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java index 1c8fbb0..2518d49 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java @@ -335,6 +335,10 @@ public class TzcRebateApplication4CostServiceImpl implements TzcRebateApplicatio for (String levelNumStr : levelNumSet) { // 当前坎级最高返利金额 BigDecimal currentLevelMaxAmount = levelAmountMap.get(levelNumStr); + if (currentLevelMaxAmount==null){ + DebugStrUtil.appendStr("获取坎级 "+levelNumStr+" ,返利金额金额为空"); + currentLevelMaxAmount = BigDecimal.ZERO; + } if (currentLevelMaxAmount.compareTo(BigDecimal.ZERO)>0){ currentConfAmount = currentConfAmount.add(currentLevelMaxAmount); } diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationBo.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationBo.java index 9c98ba6..8d5df33 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationBo.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationBo.java @@ -63,5 +63,8 @@ public class VtbVerificationBo implements Serializable { /** 是否释放(这个值取反 0-表示释放;1-表示不释放) */ private Integer inputReleaseFlag; + /** 是否系统自动执行 */ + private Integer autoFlag; + } diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java index 5c6e953..3a327a7 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java @@ -828,6 +828,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl phoneCode(@PathVariable("phone") String phone){ //拦截未注册的手机号 + phone = phone.trim(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(SysUser::getMobile,phone); Long count = sysUserService.count(lqw); diff --git a/cms-modules/cms-system/src/main/resources/mapper/sys/SysOperationLogMapper.xml b/cms-modules/cms-system/src/main/resources/mapper/sys/SysOperationLogMapper.xml index 34494d6..dadf2de 100644 --- a/cms-modules/cms-system/src/main/resources/mapper/sys/SysOperationLogMapper.xml +++ b/cms-modules/cms-system/src/main/resources/mapper/sys/SysOperationLogMapper.xml @@ -53,7 +53,7 @@ - INSERT INTO sys_operation_log + INSERT INTO sys_operation_log_${tableNameExt} (module,title, biz_type, inter_type, code_method, req_method, req_url, req_param, req_ip, user_type, user_id, err_msg, json_result, elapsed_time, user_agent, create_time, create_by, tenant_id,creator_name) VALUES