From e4aa762decdc28e1da83fb4265daced029049a35 Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 26 Jul 2023 11:17:00 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=B4=B9=E7=94=A8=E5=8C=B9=E9=85=8D?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E8=A1=A8=EF=BC=9B=E8=B4=B9=E7=94=A8=E4=BD=9C?= =?UTF-8?q?=E5=BA=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qs/serve/common/util/CodeGenUtil.java | 1 + .../modules/seeyon/SeeYonController.java | 5 +- .../modules/tbs/common/TbsCostApplyState.java | 3 +- .../controller/TbsCostApplyController.java | 11 +++ .../serve/modules/tbs/entity/TbsBudget.java | 5 +- .../tbs/entity/TbsScheduleItemBudget.java | 6 ++ .../service/TbsBudgetMatchApplication.java | 68 ++++++++++++++++++- .../tbs/service/TbsCostApplyService.java | 6 ++ .../service/impl/TbsBudgetServiceImpl.java | 6 +- .../service/impl/TbsCostApplyServiceImpl.java | 27 ++++++++ .../mapper/tbs/TbsBudgetMatchMapper.xml | 4 ++ 11 files changed, 133 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/qs/serve/common/util/CodeGenUtil.java b/src/main/java/com/qs/serve/common/util/CodeGenUtil.java index 3c3f0b5c..1e1a7f75 100644 --- a/src/main/java/com/qs/serve/common/util/CodeGenUtil.java +++ b/src/main/java/com/qs/serve/common/util/CodeGenUtil.java @@ -32,6 +32,7 @@ public class CodeGenUtil { @AllArgsConstructor public enum SourceDataKey{ SaleRegion("S","SaleRegion"), + Budget("","Budget"), BizRegion("B","BizRegion"); private String prefix; private String code; diff --git a/src/main/java/com/qs/serve/modules/seeyon/SeeYonController.java b/src/main/java/com/qs/serve/modules/seeyon/SeeYonController.java index a52ba4a8..07d2bcf4 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/SeeYonController.java +++ b/src/main/java/com/qs/serve/modules/seeyon/SeeYonController.java @@ -67,7 +67,10 @@ public class SeeYonController { SysUser sysUser = sysUserService.getById(userId); sysUser.checkSyAccount(); query.setMemberId(sysUser.getSyUserId()); - return R.ok(123456L); + query.setPageNum(1); + query.setPageSize(1); + long count = listAllCha(query).getData().getTotal(); + return R.ok(count); } /** diff --git a/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java b/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java index b848060b..b06854f1 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java +++ b/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java @@ -21,7 +21,8 @@ public enum TbsCostApplyState { State_2_actioning(2), State_3_finished(3), State_4_refused(4), - State_5_stop(5); + State_5_stop(5), + State_6_remove(6); private Integer code; diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java index 19c33f02..1dcc0faf 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java @@ -75,6 +75,17 @@ public class TbsCostApplyController { private SysPostUserService postUserService; private TbsCostApplyOperationServiceImpl tbsCostApplyOperationServiceImpl; + /** + * 作废费用申请 + * @param id + * @return + */ + @DeleteMapping("/removeCostById/{id}") + public R removeCostById(@PathVariable("id") String id){ + + return R.ok(); + } + /** * 统计即将逾期 * @return diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java index 96431900..c6ccd777 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java @@ -34,9 +34,12 @@ public class TbsBudget implements Serializable { @TableId(type = IdType.AUTO) private Long id; - /** 预算编码 */ + /** 预算名称 */ private String budgetCode; + /** 预算编码 */ + private String budgetNumber; + /** 费用启用状态 0/1 */ private Integer budgetState; diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsScheduleItemBudget.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsScheduleItemBudget.java index 05051eeb..d6925fe3 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsScheduleItemBudget.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsScheduleItemBudget.java @@ -138,6 +138,12 @@ public class TbsScheduleItemBudget implements Serializable { @TableField(exist = false) private String conditionGoodsIds; + @TableField(exist = false) + private String budgetName; + + @TableField(exist = false) + private String budgetCode; + public BigDecimal compareTargetExpenseRate(){ if(budgetAmount!=null&&preDispatchAmount!=null&&preDispatchAmount.compareTo(BigDecimal.ZERO)!=0){ return budgetAmount.divide(preDispatchAmount,BigDecimal.ROUND_DOWN); diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetMatchApplication.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetMatchApplication.java index df1166b8..c8be68d0 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetMatchApplication.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetMatchApplication.java @@ -1,6 +1,8 @@ package com.qs.serve.modules.tbs.service; +import com.qs.serve.modules.tbs.common.TbsGoodsType; import com.qs.serve.modules.tbs.common.util.CostSort2WrapperUtil; +import com.qs.serve.modules.tbs.entity.TbsActivity; import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods; import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget; import com.qs.serve.modules.tbs.entity.dto.TbsCenterGoodsGroupDTO; @@ -24,11 +26,20 @@ import java.util.*; public class TbsBudgetMatchApplication { private final TbsActivityCenterGoodsService tbsActivityCenterGoodsService; + private final TbsActivityService activityService; private final TbsBudgetMatchMapper budgetMatchMapper; public TbsBudgetTableVo buildResultTable(Long costApplyId){ + List activityList = activityService.listByCostApplyId(costApplyId); + Map activityMap = new HashMap<>(activityList.size()); + for (TbsActivity activity : activityList) { + activityMap.put(activity.getId(),activity); + } List activityCenterGoodsList = tbsActivityCenterGoodsService.listByCostApplyId(costApplyId); + // 记录使用金额 Map usableAmountMap = new HashMap<>(); + // 提取命中的预算 + Map matchItemBudgetsMap = new HashMap<>(); for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { // 通过TbsActivityCenterGoods获取匹配条件的预算 List scheduleItemBudgetList = this.centerGoodsMatchTbsScheduleItemBudget(centerGoods); @@ -47,15 +58,68 @@ public class TbsBudgetMatchApplication { usableAmountMap.put(scheduleItemBudgetId,usableAmt); //标记使用那个预算 centerGoods.setScheduleItemBudgetId(itemBudget.getId()); + matchItemBudgetsMap.put(scheduleItemBudgetId,itemBudget); break; } } } //TODO 拼接Table,要重新设计显示内容 - TbsBudgetTableVo tableData = new TbsBudgetTableVo(); + List topTheadHeaderList = new ArrayList<>(); + List tableValueList = new ArrayList<>(); + List leftTheadHeaderList = new ArrayList<>(); + + for (Long scheduleItemBudgetId : matchItemBudgetsMap.keySet()) { + TbsScheduleItemBudget itemBudget = matchItemBudgetsMap.get(scheduleItemBudgetId); + TbsBudgetTableVo.TopTheadHeader header = new TbsBudgetTableVo.TopTheadHeader(); + header.setId(scheduleItemBudgetId.toString()); + header.setLabel(itemBudget.getBudgetName()+"-"+itemBudget.getItemName()); + header.setBudgetAmount(itemBudget.getUnUsedBudgetAmount()); + header.setTotalAmount(itemBudget.getFinalBudgetAmount()); + header.setCostAppliedAmount(itemBudget.getUsedBudgetAmount()); + header.setCostApplyAmount(BigDecimal.ZERO); + topTheadHeaderList.add(header); + } + TbsBudgetTableVo.TopTheadHeader overTopHeader = new TbsBudgetTableVo.TopTheadHeader(); + overTopHeader.setId("0"); + overTopHeader.setLabel("无匹配预算"); + overTopHeader.setBudgetAmount(BigDecimal.ZERO); + topTheadHeaderList.add(overTopHeader); + + for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { + TbsBudgetTableVo.LeftTheadHeader theadHeader = new TbsBudgetTableVo.LeftTheadHeader(); + String actCode = activityMap.get(centerGoods.getActivityId()).getActivityCode(); + theadHeader.setActivityCode(actCode); + theadHeader.setId(centerGoods.getId()+""); + theadHeader.setSubjectId(centerGoods.getSubjectId()); + theadHeader.setSubjectName(centerGoods.getSubjectName()); + theadHeader.setCenterId(centerGoods.getCenterId()); + theadHeader.setCenterName(centerGoods.getCenterName()); + theadHeader.setTargetType(centerGoods.getTargetType()); + theadHeader.setTargetId(centerGoods.getTargetId()); + if(centerGoods.getTargetType().equals(TbsGoodsType.sku.name())){ + centerGoods.initSpuSkuName(); + theadHeader.setLabel(centerGoods.getSpuName()+"("+centerGoods.getSkuName()+")"); + }else { + theadHeader.setLabel(centerGoods.getTargetName()); + } + theadHeader.setLabelCombo(actCode+"-" + +theadHeader.getSubjectName()+"-" + +theadHeader.getCenterName()+"-" + +theadHeader.getLabel()); + leftTheadHeaderList.add(theadHeader); + TbsBudgetTableVo.TableValue tableValue = new TbsBudgetTableVo.TableValue(); + tableValue.setTopId(centerGoods.getScheduleItemBudgetId()+""); + tableValue.setLeftId(centerGoods.getCenterId()+""); + tableValue.setValue(centerGoods.getCenterGoodsAmount()); + tableValueList.add(tableValue); + } + TbsBudgetTableVo tableData = new TbsBudgetTableVo(); + tableData.setTableValueList(tableValueList); + tableData.setTopTheadHeaderList(topTheadHeaderList); + tableData.setLeftTheadHeaderList(leftTheadHeaderList); //TODO 关联通用数据 - return null; + return tableData; } /** diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java index 871aaa1a..044d85ce 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java @@ -16,6 +16,12 @@ import java.util.List; */ public interface TbsCostApplyService extends IService { + /** + * 作废 + * @param id + */ + void removeCostById(Long id); + /** * 统计即将逾期 * @param userId diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java index b7bc3f18..a1de0fb3 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java @@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qs.serve.common.model.enums.BudgetLogOptFlag; -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.util.*; import com.qs.serve.modules.bms.entity.BmsSubject; import com.qs.serve.modules.bms.service.BmsSubjectService; import com.qs.serve.modules.goods.entity.GoodsCategory; @@ -100,6 +97,7 @@ public class TbsBudgetServiceImpl extends ServiceImpl budgetConditionService.remove(lqw); }else { budget = CopierUtil.copy(budgetBo,new TbsBudget()); + budget.setBudgetNumber(CodeGenUtil.getDataCode(CodeGenUtil.SourceDataKey.Budget)); } List skuIds = budgetBo.getSkuIds(); List spuIds = budgetBo.getSpuIds(); 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 8f546549..b93c4222 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 @@ -44,6 +44,9 @@ import com.qs.serve.modules.tbs.entity.dto.TbsContractCostSubItem; import com.qs.serve.modules.tbs.entity.dto.TbsCostSubItem; import com.qs.serve.modules.tbs.mapper.*; import com.qs.serve.modules.tbs.service.*; +import com.qs.serve.modules.vtb.common.VtbVerificationState; +import com.qs.serve.modules.vtb.entity.VtbVerification; +import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; @@ -93,8 +96,32 @@ public class TbsCostApplyServiceImpl extends ServiceImpl vtbLqw = new LambdaQueryWrapper<>(); + vtbLqw.eq(VtbVerification::getCostApplyId,id); + vtbLqw.and( + qw->qw.eq(VtbVerification::getVerificationState, VtbVerificationState.Finished) + .or() + .eq(VtbVerification::getVerificationState, VtbVerificationState.Commiting) + ); + long count = verificationMapper.selectCount(vtbLqw); + if(count>0){ + Assert.throwEx("含核销记录不可作废"); + } + //删除费用占用的预算 + LambdaQueryWrapper rmLogLqw = new LambdaQueryWrapper<>(); + rmLogLqw.eq(TbsBudgetLog::getCostApplyId,id); + budgetLogService.remove(rmLogLqw); + } + @Override public Long selectCountOverdueState(String userId) { int sysConfOfWarningDays = 0; diff --git a/src/main/resources/mapper/tbs/TbsBudgetMatchMapper.xml b/src/main/resources/mapper/tbs/TbsBudgetMatchMapper.xml index fcddcb9b..796efcc4 100644 --- a/src/main/resources/mapper/tbs/TbsBudgetMatchMapper.xml +++ b/src/main/resources/mapper/tbs/TbsBudgetMatchMapper.xml @@ -21,6 +21,8 @@ + + @@ -33,6 +35,8 @@ temp_tbg3.amt used_budget_amount, tb.condition_flag budget_condition_flag, tb.subject_id subject_id, + tb.budget_code budget_name, + tb.budget_number budget_code, tbc.target_level_path_ids condition_goods_ids from tbs_schedule_item_budget tsib left join tbs_budget tb on tsib.budget_id = tb.id From 2c78cd7347e57c4e1286e134e140c6a82be92dcb Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 26 Jul 2023 11:34:23 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=B4=B9=E7=94=A8=E4=BD=9C=E5=BA=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qs/serve/modules/tbs/common/TbsCostApplyState.java | 2 +- .../modules/tbs/service/impl/TbsCostApplyServiceImpl.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java b/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java index b06854f1..4daeaf93 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java +++ b/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java @@ -15,7 +15,7 @@ import java.util.List; @AllArgsConstructor public enum TbsCostApplyState { - //状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回;5-中止 + //状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回;5-中止;6-作废 State_0_unPublish(0), State_1_apply(1), State_2_actioning(2), 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 b93c4222..bc48ac96 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 @@ -116,6 +116,9 @@ public class TbsCostApplyServiceImpl extends ServiceImpl0){ Assert.throwEx("含核销记录不可作废"); } + TbsCostApply costApply4Update = new TbsCostApply(); + costApply4Update.setId(id); + costApply4Update.setChargeState(TbsCostApplyState.State_6_remove.getCode()); //删除费用占用的预算 LambdaQueryWrapper rmLogLqw = new LambdaQueryWrapper<>(); rmLogLqw.eq(TbsBudgetLog::getCostApplyId,id);