diff --git a/src/main/java/com/qs/serve/common/model/consts/SysConfigKey.java b/src/main/java/com/qs/serve/common/model/consts/SysConfigKey.java index 84eab2eb..01af48e2 100644 --- a/src/main/java/com/qs/serve/common/model/consts/SysConfigKey.java +++ b/src/main/java/com/qs/serve/common/model/consts/SysConfigKey.java @@ -12,4 +12,6 @@ public interface SysConfigKey { */ String TbsBudgetOverspend = "budget-overspend"; + String ActivityPreCheckDays = "ActivityPreCheckDays"; + } diff --git a/src/main/java/com/qs/serve/modules/sys/service/SysConfigService.java b/src/main/java/com/qs/serve/modules/sys/service/SysConfigService.java index 77459784..1fa4a77f 100644 --- a/src/main/java/com/qs/serve/modules/sys/service/SysConfigService.java +++ b/src/main/java/com/qs/serve/modules/sys/service/SysConfigService.java @@ -10,5 +10,7 @@ import com.qs.serve.modules.sys.entity.SysConfig; */ public interface SysConfigService extends IService { + SysConfig getByKey(String key); + } diff --git a/src/main/java/com/qs/serve/modules/sys/service/impl/SysConfigServiceImpl.java b/src/main/java/com/qs/serve/modules/sys/service/impl/SysConfigServiceImpl.java index 309e06cd..99dc88c8 100644 --- a/src/main/java/com/qs/serve/modules/sys/service/impl/SysConfigServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/sys/service/impl/SysConfigServiceImpl.java @@ -1,5 +1,6 @@ package com.qs.serve.modules.sys.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -18,5 +19,12 @@ import com.qs.serve.modules.sys.mapper.SysConfigMapper; @AllArgsConstructor public class SysConfigServiceImpl extends ServiceImpl implements SysConfigService { + @Override + public SysConfig getByKey(String key) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(SysConfig::getConfigKey,key); + SysConfig sysConfig = this.getOne(lqw); + return sysConfig; + } } 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 new file mode 100644 index 00000000..552b2e5c --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java @@ -0,0 +1,22 @@ +package com.qs.serve.modules.tbs.common; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author YenHex + * @since 2022/11/28 + */ +@Getter +@AllArgsConstructor +public enum TbsCostApplyState { + + //状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回 + State_0_unPublish(0), + State_1_apply(1), + State_2_actioning(2), + State_3_finished(3); + + private Integer code; + +} 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 73dd19fc..3eae7e68 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 @@ -12,6 +12,7 @@ import com.qs.serve.common.util.PageUtil; import com.qs.serve.modules.bms.service.BmsSupplierService; import com.qs.serve.modules.tbs.common.TbsGoodsType; import com.qs.serve.modules.tbs.entity.*; +import com.qs.serve.modules.tbs.entity.bo.TbsActivityReopenBo; import com.qs.serve.modules.tbs.entity.vo.TbsActivityCenterGoodsVo; import com.qs.serve.modules.tbs.service.*; import lombok.AllArgsConstructor; @@ -213,6 +214,22 @@ public class TbsActivityController { return R.ok(); } + /** + * 重新打开核销 + * @param param + * @return + */ + @PostMapping("/reopen") + @SysLog(module = SystemModule.Budget, title = "费用活动", biz = BizType.UPDATE) + @PreAuthorize("hasRole('tbs:activity:update')") + public R reopen(@RequestBody @Valid TbsActivityReopenBo param){ + TbsActivity activity = new TbsActivity(); + activity.setId(param.getActivityId()); + activity.setReopenFlag(param.getState().equals(1)?1:0); + tbsActivityService.updateById(activity); + return R.ok(); + } + /** * 新增 * @param param 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 1cffc394..f9835d54 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 @@ -14,6 +14,7 @@ import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.service.BmsSupplierService; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.service.SysUserService; +import com.qs.serve.modules.tbs.common.TbsCostApplyState; import com.qs.serve.modules.tbs.common.TbsSeeYonConst; import com.qs.serve.modules.tbs.entity.TbsActivity; import com.qs.serve.modules.tbs.service.TbsActivityService; @@ -102,6 +103,14 @@ public class TbsCostApplyController { @SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.UPDATE) @PreAuthorize("hasRole('tbs:costApply:update')") public R updateState(@PathVariable("id") String id){ + if(1==1){ + //todo 测试 + TbsCostApply costApply = new TbsCostApply(); + costApply.setId(Long.parseLong(id)); + costApply.setChargeState(TbsCostApplyState.State_2_actioning.getCode()); + tbsCostApplyService.updateById(costApply); + return R.ok(); + } if(!seeYonProperties.getEnable()){ return R.error("远程服务未开启"); } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java index 365a091e..9c7f84de 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java @@ -119,12 +119,35 @@ public class TbsActivity implements Serializable { @JsonProperty private String delFlag; + /** 释放标识 */ + private Integer finishedFlag; + /** 合计金额 */ private BigDecimal totalAmount; /** 使用金额 */ private BigDecimal usedAmount; + /** 释放人员id */ + private String releaseUserId; + + /** 释放人员 */ + private String releaseUserName; + + /** 释放标识 */ + private Integer releaseFlag; + + /** 重新打开标识(可重新打开过期活动进行核销) */ + private Integer reopenFlag; + + /** 释放金额 */ + private BigDecimal releaseAmount; + + /** 释放时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime releaseTime; + /** 产品类型 */ @TableField(exist = false) private String goodsType; @@ -152,5 +175,10 @@ public class TbsActivity implements Serializable { /** 科目与成本中心 */ @TableField(exist = false) private List subjectCenterList; + + /** 显示释放费用按钮 */ + @TableField(exist = false) + private Integer showReleaseButton; + } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityCenterGoods.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityCenterGoods.java index 67efe9b0..16b114e1 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityCenterGoods.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityCenterGoods.java @@ -154,6 +154,33 @@ public class TbsActivityCenterGoods implements Serializable { @JsonProperty private String delFlag; + /** 活动开始时间 */ + @NotNull(message = "活动开始时间不能为空") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate actStartDate; + + /** 活动结束时间 */ + @NotNull(message = "活动结束时间不能为空") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate actEndDate; + + /** 预算开始时间 */ + @NotNull(message = "活动开始时间不能为空") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate preStartDate; + + /** 预算结束时间 */ + @NotNull(message = "活动结束时间不能为空") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate preEndDate; + + /** 预计核销时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate preCheckDate; + @TableField(exist = false) private String spuName; diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityReopenBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityReopenBo.java new file mode 100644 index 00000000..27eacc18 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityReopenBo.java @@ -0,0 +1,16 @@ +package com.qs.serve.modules.tbs.entity.bo; + +import lombok.Data; + +/** + * @author YenHex + * @since 2022/11/28 + */ +@Data +public class TbsActivityReopenBo { + + private Long activityId; + + private Integer state; + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java index 8b5a8e16..b37c9b6b 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java @@ -2,10 +2,8 @@ package com.qs.serve.modules.tbs.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.qs.serve.common.util.Assert; -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.common.model.consts.SysConfigKey; +import com.qs.serve.common.util.*; import com.qs.serve.modules.bms.entity.*; import com.qs.serve.modules.bms.service.*; import com.qs.serve.modules.goods.entity.GoodsCategory; @@ -15,6 +13,10 @@ import com.qs.serve.modules.goods.entity.dto.TbsCenterDto; import com.qs.serve.modules.goods.service.GoodsCategoryService; import com.qs.serve.modules.goods.service.GoodsSkuService; import com.qs.serve.modules.goods.service.GoodsSpuService; +import com.qs.serve.modules.sys.entity.SysConfig; +import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.service.SysConfigService; +import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.tbs.common.TbsCenterType; import com.qs.serve.modules.tbs.common.TbsGoodsType; import com.qs.serve.modules.tbs.entity.*; @@ -29,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -60,6 +63,9 @@ public class TbsActivityServiceImpl extends ServiceImpl { + + /** + * 释放活动费用 + * @param activityId + */ + void release(Long activityId); + + /** * 提交审批 * @param vtbVerificationBo diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbFundFlowServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbFundFlowServiceImpl.java index d95841ab..81cf03b7 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbFundFlowServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbFundFlowServiceImpl.java @@ -59,6 +59,8 @@ public class VtbFundFlowServiceImpl extends ServiceImpl allFunFlow = this.listByActivity(activityId); List activitySubjectList = activitySubjectService.listByActivityId(activityId); List activityCenterList = activityCenterService.listByActivity(activityId); @@ -71,6 +73,9 @@ public class VtbFundFlowServiceImpl extends ServiceImpl> fundFlowMapBySubject = allFunFlow.stream().collect(Collectors.groupingBy(VtbFundFlow::getSubjectId)); 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 482dc757..24c96b7a 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 @@ -3,10 +3,13 @@ package com.qs.serve.modules.vtb.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.modules.bms.entity.BmsSubject; import com.qs.serve.modules.bms.service.BmsSubjectService; +import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.service.*; import com.qs.serve.modules.vtb.common.VtbFundFlowType; @@ -27,6 +30,8 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -53,20 +58,41 @@ public class VtbVerificationServiceImpl extends ServiceImpl fundFlowList = fundFlowService.listByActivity(activity.getId(),VtbFundFlowType.Verification); + BigDecimal totalFunFlow = BigDecimal.ZERO; + for (VtbFundFlow fundFlow : fundFlowList) { + totalFunFlow = totalFunFlow.add(fundFlow.getUsedAmount()); + } + BigDecimal allowAmount = activity.getTotalAmount().subtract(totalFunFlow); + if(allowAmount.compareTo(BigDecimal.ZERO)<1){ + Assert.throwEx("无可用费用"); + } + return allowAmount; + } + /** * 校验和生成核销费用 * @param verificationBo @@ -163,7 +225,6 @@ public class VtbVerificationServiceImpl extends ServiceImpl addFundFlowListOfSubject = new ArrayList<>(); Long subjectId = verificationSubject.getSubjectId(); BigDecimal usedAmount = verificationSubject.getUsedAmount(); - BigDecimal subtractAmount = verificationSubject.getUsedAmount(); List activityCenterGoodsOfSubject = centerGoodsMapBySubject.get(subjectId); //统计前面项合计金额 BigDecimal totalPrefixAmount = BigDecimal.ZERO;