Browse Source

Merge remote-tracking branch 'origin/v1.0' into v1.0

v1.0
15989082884@163.com 2 years ago
parent
commit
71c27263b1
  1. 6
      pom.xml
  2. 45
      src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java
  3. 42
      src/main/java/com/qs/serve/modules/bir/entity/BirActivityCenterGoods.java
  4. 3
      src/main/java/com/qs/serve/modules/exl/common/ExlConst.java
  5. 6
      src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java
  6. 2
      src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java
  7. 91
      src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java
  8. 21
      src/main/java/com/qs/serve/modules/exl/entity/dto/ExlBatchSaveBo.java
  9. 6
      src/main/java/com/qs/serve/modules/exl/mapper/ExlTableConfMapper.java
  10. 2
      src/main/java/com/qs/serve/modules/oss/service/OssService.java
  11. 13
      src/main/java/com/qs/serve/modules/oss/service/impl/OssServiceImpl.java
  12. 4
      src/main/java/com/qs/serve/modules/tbs/common/util/CostSort2WrapperUtil.java
  13. 2
      src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java
  14. 31
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java
  15. 6
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java
  16. 4
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java
  17. 2
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java
  18. 2
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java
  19. 2
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java
  20. 9
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java
  21. 11
      src/main/java/com/qs/serve/task/SysTask.java
  22. 28
      src/main/java/com/qs/serve/task/controller/TaskUserController.java
  23. 40
      src/main/resources/mapper/exl/ExlTableConfMapper.xml

6
pom.xml

@ -32,6 +32,12 @@
<dependencies> <dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.2</version>
</dependency>
<dependency> <dependency>
<groupId>com.fasterxml.jackson.datatype</groupId> <groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId> <artifactId>jackson-datatype-jsr310</artifactId>

45
src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java

@ -1,12 +1,18 @@
package com.qs.serve.modules.bir.controller; package com.qs.serve.modules.bir.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.aliyun.oss.OSS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.config.properties.AliYunOssProperties;
import com.qs.serve.common.model.annotation.SysLog; import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.IdUtil;
import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.StringUtils; import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.bir.entity.BirActivityCenterGoods; import com.qs.serve.modules.bir.entity.BirActivityCenterGoods;
@ -23,6 +29,7 @@ import com.qs.serve.modules.bms.service.BmsChannelPointService;
import com.qs.serve.modules.bms.service.BmsChannelService; import com.qs.serve.modules.bms.service.BmsChannelService;
import com.qs.serve.modules.bms.service.BmsSupplierChannelService; import com.qs.serve.modules.bms.service.BmsSupplierChannelService;
import com.qs.serve.modules.his.service.HisUserChannelPointService; import com.qs.serve.modules.his.service.HisUserChannelPointService;
import com.qs.serve.modules.oss.service.OssService;
import com.qs.serve.modules.tbs.entity.TbsActivityChannel; import com.qs.serve.modules.tbs.entity.TbsActivityChannel;
import com.qs.serve.modules.tbs.service.TbsActivityChannelService; import com.qs.serve.modules.tbs.service.TbsActivityChannelService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -31,7 +38,10 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -46,6 +56,8 @@ import java.util.stream.Collectors;
@RequestMapping("bir/centerGoods") @RequestMapping("bir/centerGoods")
public class BirActivityCenterGoodsController { public class BirActivityCenterGoodsController {
private OssService ossService;
private AliYunOssProperties aliYunOSSProperties;
private BirActivityCenterGoodsService centerGoodsService; private BirActivityCenterGoodsService centerGoodsService;
/** /**
@ -77,7 +89,7 @@ public class BirActivityCenterGoodsController {
*/ */
@GetMapping("/export") @GetMapping("/export")
@PreAuthorize("hasRole('bms:channel:query')") @PreAuthorize("hasRole('bms:channel:query')")
public R<List<BirActivityCenterGoods>> export(BirActivityCenterGoods param){ public R<?> export(BirActivityCenterGoods param){
LambdaQueryWrapper<BirActivityCenterGoods> channelWrapper = new LambdaQueryWrapper<>(param); LambdaQueryWrapper<BirActivityCenterGoods> channelWrapper = new LambdaQueryWrapper<>(param);
if(param.getKeyNumStart()!=null){ if(param.getKeyNumStart()!=null){
Integer keyNumStart = Integer.parseInt(param.getKeyNumStart().replace("-","")); Integer keyNumStart = Integer.parseInt(param.getKeyNumStart().replace("-",""));
@ -88,7 +100,36 @@ public class BirActivityCenterGoodsController {
channelWrapper.le(BirActivityCenterGoods::getKeyNum,keyNumEnd); channelWrapper.le(BirActivityCenterGoods::getKeyNum,keyNumEnd);
} }
List<BirActivityCenterGoods> list = centerGoodsService.list(channelWrapper); List<BirActivityCenterGoods> list = centerGoodsService.list(channelWrapper);
return R.ok(list);
String templateFileName = "tempFiles";
InputStream inputStream = null;
try {
ByteArrayOutputStream os = new ByteArrayOutputStream();
ExcelWriter excelWriter = EasyExcel.write().withTemplate(templateFileName).file(os).build();
WriteSheet writeSheet = EasyExcel.writerSheet().build();
excelWriter.fill(list, writeSheet);
excelWriter.finish();
byte[] buffer = os.toByteArray();
inputStream = new ByteArrayInputStream(buffer);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM/dd");
String prefix = aliYunOSSProperties.getPrefix();
String dir = prefix + "/" + sdf.format(new Date())+"/";
String fileName = dir + IdUtil.getSnowflakeNextId() + ".xlsx";
OSS oss = ossService.getOSSClient();
oss.putObject(aliYunOSSProperties.getBucket(),fileName,inputStream);
return R.ok(fileName,"ok");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(inputStream!=null){
inputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return R.error();
} }
} }

42
src/main/java/com/qs/serve/modules/bir/entity/BirActivityCenterGoods.java

@ -5,6 +5,7 @@ import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
@ -32,72 +33,89 @@ public class BirActivityCenterGoods implements Serializable {
private Long id; private Long id;
/** 活动费用明细 */ /** 活动费用明细 */
@ExcelProperty("活动费用明细ID")
@NotNull(message = "活动费用明细不能为空") @NotNull(message = "活动费用明细不能为空")
private Long activityCenterGoodsId; private Long activityCenterGoodsId;
/** 年月 */ /** 年月 */
@ExcelProperty("年月")
@NotNull(message = "年月不能为空") @NotNull(message = "年月不能为空")
private Integer keyNum; private Integer keyNum;
/** 天数 */ /** 天数 */
@ExcelProperty("天数")
@NotNull(message = "天数不能为空") @NotNull(message = "天数不能为空")
private Integer days; private Integer days;
@ExcelProperty("当月有多少天")
@NotNull(message = "天数不能为空") @NotNull(message = "天数不能为空")
private Integer dayOfMouth; private Integer dayOfMouth;
/** 开始日期 */ /** 开始日期 */
@ExcelProperty("开始日期")
@NotNull(message = "开始日期不能为空") @NotNull(message = "开始日期不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDate starDate; private LocalDate starDate;
/** 结束日期 */ /** 结束日期 */
@ExcelProperty("结束日期")
@NotNull(message = "结束日期不能为空") @NotNull(message = "结束日期不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDate endDate; private LocalDate endDate;
/** 分配的预算金额 */ /** 分配的预算金额 */
@ExcelProperty("分配的预算金额")
@NotNull(message = "分配的预算金额不能为空") @NotNull(message = "分配的预算金额不能为空")
private BigDecimal splitAmount; private BigDecimal splitAmount;
/** 分配的核销金额 */ /** 分配的核销金额 */
@ExcelProperty("分配的核销金额")
@NotNull(message = "分配的核销金额不能为空") @NotNull(message = "分配的核销金额不能为空")
private BigDecimal splitUsedAmount; private BigDecimal splitUsedAmount;
/** 分配的释放金额 */ /** 分配的释放金额 */
@ExcelProperty("分配的释放金额")
@NotNull(message = "分配的释放金额不能为空") @NotNull(message = "分配的释放金额不能为空")
private BigDecimal splitReleaseAmount; private BigDecimal splitReleaseAmount;
/** 成本明细编码 */ /** 成本明细编码 */
@ExcelProperty("成本明细编码")
@Length(max = 30,message = "成本明细编码长度不能超过30字") @Length(max = 30,message = "成本明细编码长度不能超过30字")
private String centerGoodsCode; private String centerGoodsCode;
/** 费用申请id */ /** 费用申请id */
@ExcelProperty("费用申请id")
@NotNull(message = "费用申请id不能为空") @NotNull(message = "费用申请id不能为空")
private Long costApplyId; private Long costApplyId;
/** 活动id */ /** 活动id */
@ExcelProperty("活动id")
@NotNull(message = "活动id不能为空") @NotNull(message = "活动id不能为空")
private Long activityId; private Long activityId;
/** 活动编码 */ /** 活动编码 */
@ExcelProperty("活动编码")
@NotBlank(message = "活动编码不能为空") @NotBlank(message = "活动编码不能为空")
@Length(max = 30,message = "活动编码长度不能超过30字") @Length(max = 30,message = "活动编码长度不能超过30字")
@TableField(condition = SqlCondition.LIKE) @TableField(condition = SqlCondition.LIKE)
private String activityCode; private String activityCode;
/** 活动总金额 */ /** 活动总金额 */
@ExcelProperty("活动总金额")
private BigDecimal activityTotalAmount; private BigDecimal activityTotalAmount;
/** 活动总核销金额 */ /** 活动总核销金额 */
@ExcelProperty("活动总核销金额")
private BigDecimal activityTotalCheckAmount; private BigDecimal activityTotalCheckAmount;
/** 活动完成主题 */ /** 活动完成主题 */
@ExcelProperty("活动完成主题")
private Integer activityFinishedFlag; private Integer activityFinishedFlag;
/** 活动释放 */ /** 活动释放 */
@ExcelProperty("活动释放金额")
private BigDecimal activityTotalReleaseAmount; private BigDecimal activityTotalReleaseAmount;
/** 科目id */ /** 科目id */
@ -105,18 +123,21 @@ public class BirActivityCenterGoods implements Serializable {
private Long subjectId; private Long subjectId;
/** 科目编码 */ /** 科目编码 */
@ExcelProperty("科目编码")
@NotBlank(message = "科目编码不能为空") @NotBlank(message = "科目编码不能为空")
@Length(max = 50,message = "科目编码长度不能超过50字") @Length(max = 50,message = "科目编码长度不能超过50字")
@TableField(condition = SqlCondition.LIKE) @TableField(condition = SqlCondition.LIKE)
private String subjectCode; private String subjectCode;
/** 科目名称 */ /** 科目名称 */
@ExcelProperty("科目名称")
@NotBlank(message = "科目名称不能为空") @NotBlank(message = "科目名称不能为空")
@Length(max = 50,message = "科目名称长度不能超过50字") @Length(max = 50,message = "科目名称长度不能超过50字")
@TableField(condition = SqlCondition.LIKE) @TableField(condition = SqlCondition.LIKE)
private String subjectName; private String subjectName;
/** 成本中心类型 */ /** 成本中心类型 */
@ExcelProperty("成本中心类型")
@NotBlank(message = "成本中心类型不能为空") @NotBlank(message = "成本中心类型不能为空")
@Length(max = 50,message = "成本中心类型长度不能超过50字") @Length(max = 50,message = "成本中心类型长度不能超过50字")
private String centerType; private String centerType;
@ -127,38 +148,46 @@ public class BirActivityCenterGoods implements Serializable {
private String centerId; private String centerId;
/** 成本中心编码 */ /** 成本中心编码 */
@ExcelProperty("成本中心编码")
@NotBlank(message = "成本中心编码不能为空") @NotBlank(message = "成本中心编码不能为空")
@Length(max = 50,message = "成本中心编码长度不能超过50字") @Length(max = 50,message = "成本中心编码长度不能超过50字")
@TableField(condition = SqlCondition.LIKE) @TableField(condition = SqlCondition.LIKE)
private String centerCode; private String centerCode;
/** 成本中心名称 */ /** 成本中心名称 */
@ExcelProperty("成本中心名称")
@NotBlank(message = "成本中心名称不能为空") @NotBlank(message = "成本中心名称不能为空")
@Length(max = 200,message = "成本中心名称长度不能超过200字") @Length(max = 200,message = "成本中心名称长度不能超过200字")
@TableField(condition = SqlCondition.LIKE) @TableField(condition = SqlCondition.LIKE)
private String centerName; private String centerName;
/** 成本中心金额 */ /** 成本中心金额 */
@ExcelProperty("成本中心金额")
@NotNull(message = "成本中心金额不能为空") @NotNull(message = "成本中心金额不能为空")
private BigDecimal centerAmount; private BigDecimal centerAmount;
/** 成本中心占比 */ /** 成本中心占比 */
@ExcelProperty("成本中心占比")
@NotNull(message = "成本中心占比不能为空") @NotNull(message = "成本中心占比不能为空")
private BigDecimal centerRate; private BigDecimal centerRate;
/** 费用额度 */ /** 费用额度 */
@ExcelProperty("费用额度")
@NotNull(message = "费用额度不能为空") @NotNull(message = "费用额度不能为空")
private BigDecimal centerGoodsAmount; private BigDecimal centerGoodsAmount;
/** 费用占比 */ /** 费用占比 */
@ExcelProperty("费用占比")
@NotNull(message = "费用占比不能为空") @NotNull(message = "费用占比不能为空")
private BigDecimal centerGoodsRate; private BigDecimal centerGoodsRate;
/** 已用费用 */ /** 已用费用 */
@ExcelProperty("已用费用")
@NotNull(message = "已用费用不能为空") @NotNull(message = "已用费用不能为空")
private BigDecimal usedAmount; private BigDecimal usedAmount;
/** 目标类型(brand、category、series、spu、sku) */ /** 目标类型(brand、category、series、spu、sku) */
@ExcelProperty("商品维度类型")
@NotBlank(message = "目标类型(brand、category、series、spu、sku)不能为空") @NotBlank(message = "目标类型(brand、category、series、spu、sku)不能为空")
@Length(max = 30,message = "目标类型(brand、category、series、spu、sku)长度不能超过30字") @Length(max = 30,message = "目标类型(brand、category、series、spu、sku)长度不能超过30字")
private String targetType; private String targetType;
@ -168,12 +197,14 @@ public class BirActivityCenterGoods implements Serializable {
private Long targetId; private Long targetId;
/** 目标编码 */ /** 目标编码 */
@ExcelProperty("商品维度编码")
@NotBlank(message = "目标编码不能为空") @NotBlank(message = "目标编码不能为空")
@Length(max = 30,message = "目标编码长度不能超过30字") @Length(max = 30,message = "目标编码长度不能超过30字")
@TableField(condition = SqlCondition.LIKE) @TableField(condition = SqlCondition.LIKE)
private String targetCode; private String targetCode;
/** 目标名称 */ /** 目标名称 */
@ExcelProperty("商品维度名称")
@NotBlank(message = "目标名称不能为空") @NotBlank(message = "目标名称不能为空")
@Length(max = 200,message = "目标名称长度不能超过200字") @Length(max = 200,message = "目标名称长度不能超过200字")
@TableField(condition = SqlCondition.LIKE) @TableField(condition = SqlCondition.LIKE)
@ -192,10 +223,12 @@ public class BirActivityCenterGoods implements Serializable {
private String centerLv1Id; private String centerLv1Id;
/** 一级成本中心 */ /** 一级成本中心 */
@ExcelProperty("一级成本中心编码")
@Length(max = 50,message = "一级成本中心长度不能超过50字") @Length(max = 50,message = "一级成本中心长度不能超过50字")
private String centerLv1Code; private String centerLv1Code;
/** 一级成本中心 */ /** 一级成本中心 */
@ExcelProperty("一级成本中心")
@Length(max = 255,message = "一级成本中心长度不能超过255字") @Length(max = 255,message = "一级成本中心长度不能超过255字")
private String centerLv1Name; private String centerLv1Name;
@ -204,10 +237,12 @@ public class BirActivityCenterGoods implements Serializable {
private String centerLv2Id; private String centerLv2Id;
/** 二级成本中心 */ /** 二级成本中心 */
@ExcelProperty("二级成本中心编码")
@Length(max = 50,message = "二级成本中心长度不能超过50字") @Length(max = 50,message = "二级成本中心长度不能超过50字")
private String centerLv2Code; private String centerLv2Code;
/** 二级成本中心 */ /** 二级成本中心 */
@ExcelProperty("二级成本中心")
@Length(max = 255,message = "二级成本中心长度不能超过255字") @Length(max = 255,message = "二级成本中心长度不能超过255字")
private String centerLv2Name; private String centerLv2Name;
@ -233,30 +268,35 @@ public class BirActivityCenterGoods implements Serializable {
private String tenantId; private String tenantId;
/** 活动开始时间 */ /** 活动开始时间 */
@ExcelProperty("活动开始时间")
@NotNull(message = "活动开始时间不能为空") @NotNull(message = "活动开始时间不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDate actStartDate; private LocalDate actStartDate;
/** 活动结束时间 */ /** 活动结束时间 */
@ExcelProperty("活动结束时间")
@NotNull(message = "活动结束时间不能为空") @NotNull(message = "活动结束时间不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDate actEndDate; private LocalDate actEndDate;
/** 预算开始时间 */ /** 预算开始时间 */
@ExcelProperty("预算开始时间")
@NotNull(message = "预算开始时间不能为空") @NotNull(message = "预算开始时间不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDate preStartDate; private LocalDate preStartDate;
/** 预算结束时间 */ /** 预算结束时间 */
@ExcelProperty("预算结束时间")
@NotNull(message = "预算结束时间不能为空") @NotNull(message = "预算结束时间不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDate preEndDate; private LocalDate preEndDate;
/** 预计核销时间 */ /** 预计核销时间 */
@ExcelProperty("预计核销时间")
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDate preCheckDate; private LocalDate preCheckDate;
@ -266,12 +306,14 @@ public class BirActivityCenterGoods implements Serializable {
private Long supplierId; private Long supplierId;
/** 客户编码 */ /** 客户编码 */
@ExcelProperty("客户编码")
@NotBlank(message = "客户编码不能为空") @NotBlank(message = "客户编码不能为空")
@Length(max = 30,message = "客户编码长度不能超过30字") @Length(max = 30,message = "客户编码长度不能超过30字")
@TableField(condition = SqlCondition.LIKE) @TableField(condition = SqlCondition.LIKE)
private String supplierCode; private String supplierCode;
/** 客户名称 */ /** 客户名称 */
@ExcelProperty("客户名称")
@NotBlank(message = "客户名称不能为空") @NotBlank(message = "客户名称不能为空")
@Length(max = 200,message = "客户名称长度不能超过200字") @Length(max = 200,message = "客户名称长度不能超过200字")
@TableField(condition = SqlCondition.LIKE) @TableField(condition = SqlCondition.LIKE)

3
src/main/java/com/qs/serve/modules/exl/common/ExlConst.java

@ -14,6 +14,9 @@ public interface ExlConst {
String TYPE_MONEY = "money"; String TYPE_MONEY = "money";
String TYPE_STRING = "string"; String TYPE_STRING = "string";
String TABLE_CONFIG_PARAM = "tb_config_cnf_id";
String PRE_COLUMN_START = "START--"; String PRE_COLUMN_START = "START--";
String PRE_COLUMN_END = "END--"; String PRE_COLUMN_END = "END--";

6
src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java

@ -1,6 +1,7 @@
package com.qs.serve.modules.exl.common; package com.qs.serve.modules.exl.common;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.qs.serve.common.util.Assert;
import com.qs.serve.modules.exl.entity.ExlColumnConf; import com.qs.serve.modules.exl.entity.ExlColumnConf;
import java.util.HashMap; import java.util.HashMap;
@ -47,7 +48,10 @@ public class TableCreateSqlUtil {
for (ExlColumnConf columnConf : columnList) { for (ExlColumnConf columnConf : columnList) {
if(columnConf.getKeyFlag().equals(1)){ if(columnConf.getKeyFlag().equals(1)){
String val = jsonObject.getString(columnConf.getColumnName()); String val = jsonObject.getString(columnConf.getColumnName());
val = val == null||val.length()<1? "null_":val+"_"; if(val==null){
Assert.throwEx("["+columnConf.getColumnName()+"]不能为空");
}
val = val+"_";
unionId.append(val); unionId.append(val);
} }
} }

2
src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java

@ -55,7 +55,7 @@ public class ExlTableConfController {
* @param param * @param param
* @return * @return
*/ */
//@GetMapping("/list") @GetMapping("/list")
public R<List<ExlTableConf>> getList(ExlTableConf param){ public R<List<ExlTableConf>> getList(ExlTableConf param){
LambdaQueryWrapper<ExlTableConf> lqw = new LambdaQueryWrapper<>(param); LambdaQueryWrapper<ExlTableConf> lqw = new LambdaQueryWrapper<>(param);
List<ExlTableConf> list = exlTableConfService.list(lqw); List<ExlTableConf> list = exlTableConfService.list(lqw);

91
src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java

@ -16,6 +16,7 @@ import com.qs.serve.modules.exl.common.QsSqlSessionUtil;
import com.qs.serve.modules.exl.common.TableCreateSqlUtil; import com.qs.serve.modules.exl.common.TableCreateSqlUtil;
import com.qs.serve.modules.exl.entity.ExlColumnConf; import com.qs.serve.modules.exl.entity.ExlColumnConf;
import com.qs.serve.modules.exl.entity.ExlTableConf; import com.qs.serve.modules.exl.entity.ExlTableConf;
import com.qs.serve.modules.exl.entity.dto.ExlBatchSaveBo;
import com.qs.serve.modules.exl.entity.dto.ExlConditionDto; import com.qs.serve.modules.exl.entity.dto.ExlConditionDto;
import com.qs.serve.modules.exl.entity.dto.ExlQueryFieldDto; import com.qs.serve.modules.exl.entity.dto.ExlQueryFieldDto;
import com.qs.serve.modules.exl.entity.dto.ExlTableBo; import com.qs.serve.modules.exl.entity.dto.ExlTableBo;
@ -24,6 +25,7 @@ import com.qs.serve.modules.exl.service.ExlColumnConfService;
import com.qs.serve.modules.exl.service.ExlTableConfService; import com.qs.serve.modules.exl.service.ExlTableConfService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -36,7 +38,7 @@ import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* 动态Excel表 表配置 * 动态Excel表 数据查询
* @author YenHex * @author YenHex
* @since 2023-08-11 * @since 2023-08-11
*/ */
@ -52,17 +54,42 @@ public class ExlTableDataController {
private ExlTableConfMapper exlTableConfMapper; private ExlTableConfMapper exlTableConfMapper;
/** /**
* test * 翻页查询
* @return * @return
*/ */
@GetMapping("/page/{tableConfigId}") @GetMapping("/page")
public R<?> test(@PathVariable("tableConfigId") Long tableConfigId,@RequestParam Map<String,String> map){ public R<?> page(@RequestParam Map<String,String> map){
String tableConfigId = map.get(ExlConst.TABLE_CONFIG_PARAM);
map.remove(ExlConst.TABLE_CONFIG_PARAM);
// table // table
ExlTableConf tableConf = exlTableConfService.getById(tableConfigId); ExlTableConf tableConf = exlTableConfService.getById(tableConfigId);
// columns // columns
LambdaQueryWrapper<ExlColumnConf> columnLqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ExlColumnConf> columnLqw = new LambdaQueryWrapper<>();
columnLqw.eq(ExlColumnConf::getTableConfId,tableConfigId); columnLqw.eq(ExlColumnConf::getTableConfId,tableConfigId);
List<ExlColumnConf> columnList = exlColumnConfService.list(columnLqw); List<ExlColumnConf> columnList = exlColumnConfService.list(columnLqw);
// query
Map<String, Object> queryMap = buildQueryMap(map, columnList);
String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName();
Long count = exlTableConfMapper.countData(targetTableName,queryMap);
PageVo vo = new PageVo();
vo.initPageByTotal(count);
if(count>0){
// page
Integer pageSize = PageUtil.getPageSize();
Integer startRow = PageUtil.getStartRow();
queryMap.put("startRow",startRow);
queryMap.put("pageSize",pageSize);
List<Map<String,Object>> list = exlTableConfMapper.listData(targetTableName,queryMap);
vo.setList(list);
}else {
vo.setList(new ArrayList());
}
return R.ok(vo);
}
@NotNull
private Map<String, Object> buildQueryMap(Map<String, String> map, List<ExlColumnConf> columnList) {
Map<String,Object> queryMap = new HashMap<>(10);
// condition // condition
List<ExlConditionDto> ge_conditions = new ArrayList<>(); List<ExlConditionDto> ge_conditions = new ArrayList<>();
List<ExlConditionDto> le_conditions = new ArrayList<>(); List<ExlConditionDto> le_conditions = new ArrayList<>();
@ -93,29 +120,44 @@ public class ExlTableDataController {
} }
} }
} }
// page
Integer pageSize = PageUtil.getPageSize();
Integer startRow = PageUtil.getStartRow();
// query
Map<String,Object> queryMap = new HashMap<>(10);
queryMap.put("startRow",startRow);
queryMap.put("pageSize",pageSize);
queryMap.put("leList",le_conditions); queryMap.put("leList",le_conditions);
queryMap.put("geList",ge_conditions); queryMap.put("geList",ge_conditions);
queryMap.put("eqList",eq_conditions); queryMap.put("eqList",eq_conditions);
queryMap.put("likeList",like_conditions); queryMap.put("likeList",like_conditions);
String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName(); return queryMap;
return R.ok(exlTableConfMapper.listData(targetTableName,queryMap));
} }
/**
* 导出数据
* @param map
* @return
*/
@GetMapping("/export")
public R<?> export(@RequestParam Map<String,String> map){
String tableConfigId = map.get(ExlConst.TABLE_CONFIG_PARAM);
map.remove(ExlConst.TABLE_CONFIG_PARAM);
// table
ExlTableConf tableConf = exlTableConfService.getById(tableConfigId);
// columns
LambdaQueryWrapper<ExlColumnConf> columnLqw = new LambdaQueryWrapper<>();
columnLqw.eq(ExlColumnConf::getTableConfId,tableConfigId);
List<ExlColumnConf> columnList = exlColumnConfService.list(columnLqw);
// query
Map<String, Object> queryMap = buildQueryMap(map, columnList);
String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName();
List<Map<String,Object>> list = exlTableConfMapper.listData(targetTableName,queryMap);
return R.ok(list);
}
/** /**
* 新增 * 新增
* @param param * @param saveBo
* @return * @return
*/ */
@PostMapping("/batchSave/{tableConfigId}") @PostMapping("/batchSave")
public R<?> batchSave(@PathVariable Long tableConfigId, @RequestBody List<Object> param){ public R<?> batchSave( @RequestBody ExlBatchSaveBo saveBo){
List<Object> param = saveBo.getParam();
String tableConfigId = saveBo.getTb_config_cnf_id();
// table // table
ExlTableConf tableConf = exlTableConfService.getById(tableConfigId); ExlTableConf tableConf = exlTableConfService.getById(tableConfigId);
// columns // columns
@ -124,6 +166,23 @@ public class ExlTableDataController {
List<ExlColumnConf> columnList = exlColumnConfService.list(columnLqw); List<ExlColumnConf> columnList = exlColumnConfService.list(columnLqw);
String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName(); String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName();
//移除旧历史
int keyCount = (int) columnList.stream().filter(a -> a.getKeyFlag().equals(1)).count();
if(keyCount>0){
StringBuilder removeSql = new StringBuilder("delete from "+targetTableName+" where union_row_id in (");
for (int k = 0;k < param.size(); k++) {
Object obj = param.get(k);
JSONObject jsonObject = JSONObject.parseObject(JsonUtil.objectToJson(obj));
String unionId = TableCreateSqlUtil.buildUnionId(columnList,jsonObject);
removeSql.append("'"+unionId+"'");
if(k+1<param.size()){
removeSql.append(",");
}
}
removeSql.append(");");
QsSqlSessionUtil.executeSql(removeSql.toString(),sqlSessionTemplate);
}
//insert into table (cloumns) values (vals),(vals) //insert into table (cloumns) values (vals),(vals)
StringBuilder insertSql = new StringBuilder("insert into "+targetTableName +"( `union_row_id`,"); StringBuilder insertSql = new StringBuilder("insert into "+targetTableName +"( `union_row_id`,");
for (int i = 0; i < columnList.size(); i++) { for (int i = 0; i < columnList.size(); i++) {

21
src/main/java/com/qs/serve/modules/exl/entity/dto/ExlBatchSaveBo.java

@ -0,0 +1,21 @@
package com.qs.serve.modules.exl.entity.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author YenHex
* @since 2023/8/16
*/
@Data
public class ExlBatchSaveBo {
@NotNull
String tb_config_cnf_id;
@NotNull
List<Object> param;
}

6
src/main/java/com/qs/serve/modules/exl/mapper/ExlTableConfMapper.java

@ -16,6 +16,12 @@ import java.util.Map;
public interface ExlTableConfMapper extends BaseMapper<ExlTableConf> { public interface ExlTableConfMapper extends BaseMapper<ExlTableConf> {
@InterceptorIgnore(tenantLine = "1")
Long countData(@Param("tableName") String tableName,@Param("query")Map<String,Object> query);
@InterceptorIgnore(tenantLine = "1")
List<Map<String,Object>> pageData(@Param("tableName") String tableName,@Param("query")Map<String,Object> query);
@InterceptorIgnore(tenantLine = "1") @InterceptorIgnore(tenantLine = "1")
List<Map<String,Object>> listData(@Param("tableName") String tableName,@Param("query")Map<String,Object> query); List<Map<String,Object>> listData(@Param("tableName") String tableName,@Param("query")Map<String,Object> query);

2
src/main/java/com/qs/serve/modules/oss/service/OssService.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.oss.service; package com.qs.serve.modules.oss.service;
import com.aliyun.oss.OSS;
import com.qs.serve.modules.oss.entity.OssPolicySignVo; import com.qs.serve.modules.oss.entity.OssPolicySignVo;
/** /**
@ -14,5 +15,6 @@ public interface OssService {
*/ */
OssPolicySignVo getPolicySign(); OssPolicySignVo getPolicySign();
OSS getOSSClient();
} }

13
src/main/java/com/qs/serve/modules/oss/service/impl/OssServiceImpl.java

@ -25,6 +25,19 @@ public class OssServiceImpl implements OssService {
AliYunOssProperties aliYunOSSProperties; AliYunOssProperties aliYunOSSProperties;
@Override
public OSS getOSSClient() {
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
String endpoint = aliYunOSSProperties.getEndpoint();
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = aliYunOSSProperties.getAccessKeyId();
String accessKeySecret = aliYunOSSProperties.getAccessKeySecret();
// 填写Bucket名称,例如examplebucket。
String bucketName = aliYunOSSProperties.getBucket();
// 创建OSSClient实例。
return new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
}
@Override @Override
public OssPolicySignVo getPolicySign() { public OssPolicySignVo getPolicySign() {
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。 // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。

4
src/main/java/com/qs/serve/modules/tbs/common/util/CostSort2WrapperUtil.java

@ -81,8 +81,8 @@ public class CostSort2WrapperUtil {
//商品排序 //商品排序
Collections.sort(list, (o1, o2) -> { Collections.sort(list, (o1, o2) -> {
int len1 = o1.getConditionGoodsIds().split("_").length; int len1 = o1.getConditionGoodsIds()==null?0:o1.getConditionGoodsIds().split("_").length;
int len2 = o2.getConditionGoodsIds().split("_").length; int len2 = o2.getConditionGoodsIds()==null?0:o2.getConditionGoodsIds().split("_").length;
log.debug("时间区间相同,len1:{} , len2:{}",len1,len2); log.debug("时间区间相同,len1:{} , len2:{}",len1,len2);
return len2 - len1; return len2 - len1;
}); });

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

@ -399,7 +399,7 @@ public class TbsActivityController {
@SysLog(module = SystemModule.Budget, title = "费用活动", biz = BizType.DELETE) @SysLog(module = SystemModule.Budget, title = "费用活动", biz = BizType.DELETE)
@PreAuthorize("hasRole('tbs:activity:release')") @PreAuthorize("hasRole('tbs:activity:release')")
public R<?> release(@PathVariable("id") Long id){ public R<?> release(@PathVariable("id") Long id){
verificationService.release(id); verificationService.release(id,true);
return R.ok(); return R.ok();
} }

31
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java

@ -1,18 +1,30 @@
package com.qs.serve.modules.tbs.service.impl; package com.qs.serve.modules.tbs.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.framework.manager.AsyncFactory; import com.qs.serve.common.framework.manager.AsyncFactory;
import com.qs.serve.common.framework.manager.AsyncManager; import com.qs.serve.common.framework.manager.AsyncManager;
import com.qs.serve.common.model.enums.BudgetLogOptFlag;
import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.modules.seeyon.service.SeeYonOperationService; import com.qs.serve.modules.seeyon.service.SeeYonOperationService;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.tbs.common.TbsBudgetCheckState; import com.qs.serve.modules.tbs.common.TbsBudgetCheckState;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst; import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil;
import com.qs.serve.modules.tbs.entity.TbsBudget; import com.qs.serve.modules.tbs.entity.TbsBudget;
import com.qs.serve.modules.tbs.entity.TbsBudgetLog;
import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import com.qs.serve.modules.tbs.service.TbsBudgetLogService;
import com.qs.serve.modules.tbs.service.TbsScheduleItemBudgetService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/** /**
* 预算申请 * 预算申请
* @author YenHex * @author YenHex
@ -23,7 +35,9 @@ import org.springframework.stereotype.Service;
@AllArgsConstructor @AllArgsConstructor
public class TbsBudgetApplyOperationServiceImpl implements SeeYonOperationService { public class TbsBudgetApplyOperationServiceImpl implements SeeYonOperationService {
private TbsBudgetMapper budgetMapper; private final TbsBudgetMapper budgetMapper;
private final TbsBudgetLogService budgetLogService;
private final TbsScheduleItemBudgetService scheduleItemBudgetService;
@Override @Override
public boolean checkSyFormIdIsNotNull(String targetId) { public boolean checkSyFormIdIsNotNull(String targetId) {
@ -68,6 +82,21 @@ public class TbsBudgetApplyOperationServiceImpl implements SeeYonOperationServic
//启用预算 //启用预算
tbsBudget.setBudgetState(1); tbsBudget.setBudgetState(1);
budgetMapper.updateById(tbsBudget); budgetMapper.updateById(tbsBudget);
SysUser sysUser = getSysUserService().getById(AuthContextUtils.getSysUserId());
LambdaQueryWrapper<TbsScheduleItemBudget> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsScheduleItemBudget::getBudgetId,param.getTargetId());
List<TbsScheduleItemBudget> scheduleItemBudgets = scheduleItemBudgetService.list(lqw);
//保存预算流水日志
List<TbsBudgetLog> budgetLogList = new ArrayList<>();
for (TbsScheduleItemBudget scheduleItemBudget : scheduleItemBudgets) {
TbsBudgetLog budgetLog = TbsBudgetLogBuildUtil.toTbsBudgetLog(sysUser, tbsBudget, scheduleItemBudget, BudgetLogOptFlag.State_0,scheduleItemBudget.getBudgetAmount());
if (budgetLog!=null){
budgetLogList.add(budgetLog);
}
}
budgetLogService.saveBatch(budgetLogList);
} }
return null; return null;
} }

6
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java

@ -103,7 +103,7 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi
} }
//更新金额 //更新金额
List<TbsBudgetChangeScheduleItem> changeScheduleItemList = tbsBudgetChangeScheduleItemService.listByChangeId(budgetChange.getId()); List<TbsBudgetChangeScheduleItem> changeScheduleItemList = tbsBudgetChangeScheduleItemService.listByChangeId(budgetChange.getId());
if(CollectionUtil.isNotEmpty(changeConditionList)){ if(CollectionUtil.isNotEmpty(changeScheduleItemList)){
List<Long> scheduleItemBudgetIds = changeScheduleItemList.stream().map(TbsBudgetChangeScheduleItem::getSourceId).collect(Collectors.toList()); List<Long> scheduleItemBudgetIds = changeScheduleItemList.stream().map(TbsBudgetChangeScheduleItem::getSourceId).collect(Collectors.toList());
List<TbsScheduleItemBudget> scheduleItemBudgetList = tbsScheduleItemBudgetService.listByIds(scheduleItemBudgetIds); List<TbsScheduleItemBudget> scheduleItemBudgetList = tbsScheduleItemBudgetService.listByIds(scheduleItemBudgetIds);
for (TbsScheduleItemBudget item : scheduleItemBudgetList) { for (TbsScheduleItemBudget item : scheduleItemBudgetList) {
@ -127,7 +127,7 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi
boolean changeAmtIsNotNull = changeItem.getBudgetAmount()!=null&&changeItem.getNewBudgetAmount()!=null; boolean changeAmtIsNotNull = changeItem.getBudgetAmount()!=null&&changeItem.getNewBudgetAmount()!=null;
if(changeAmtIsNotNull && changeItem.getBudgetAmount().compareTo(changeItem.getNewBudgetAmount())!=0){ if(changeAmtIsNotNull && changeItem.getBudgetAmount().compareTo(changeItem.getNewBudgetAmount())!=0){
BudgetLogOptFlag optType; BudgetLogOptFlag optType;
BigDecimal amount = changeItem.getBudgetAmount().subtract(changeItem.getNewBudgetAmount()); BigDecimal amount = changeItem.getNewBudgetAmount().subtract(changeItem.getBudgetAmount());
if(amount.compareTo(BigDecimal.ZERO)>0){ if(amount.compareTo(BigDecimal.ZERO)>0){
optType = BudgetLogOptFlag.State_2; optType = BudgetLogOptFlag.State_2;
}else if(amount.compareTo(BigDecimal.ZERO)<0){ }else if(amount.compareTo(BigDecimal.ZERO)<0){
@ -139,7 +139,7 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi
tbsBudgetLogService.save(budgetLog); tbsBudgetLogService.save(budgetLog);
} }
if(changeItem.getNewPreDispatchAmount()!=null){ if(changeItem.getNewPreDispatchAmount()!=null){
item.setPreDispatchAmount(changeItem.getPreDispatchAmount()); item.setPreDispatchAmount(changeItem.getNewPreDispatchAmount());
tbsScheduleItemBudgetService.updateById(item); tbsScheduleItemBudgetService.updateById(item);
} }
} }

4
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java

@ -140,7 +140,7 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl<TbsBudgetChangeMappe
TbsBudgetChange budgetChange = TbsBudgetChange.toNewObject(budget); TbsBudgetChange budgetChange = TbsBudgetChange.toNewObject(budget);
budgetChange.setOrgAttachIds(budget.getAttachIds()); budgetChange.setOrgAttachIds(budget.getAttachIds());
budgetChange.setNewAttachIds(param.getAttachIds()); budgetChange.setNewAttachIds(param.getAttachIds());
budgetChange.setChangeCode(CodeGenUtil.generate(CodeGenUtil.SourceKey.BudgetChange)); budgetChange.setChangeCode("BU"+CodeGenUtil.generate(CodeGenUtil.SourceKey.BudgetChange));
budgetChange.setUserId(sysUser.getId()); budgetChange.setUserId(sysUser.getId());
budgetChange.setUserCode(sysUser.getCode()); budgetChange.setUserCode(sysUser.getCode());
budgetChange.setUserName(sysUser.getName()); budgetChange.setUserName(sysUser.getName());
@ -185,7 +185,7 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl<TbsBudgetChangeMappe
resultItem.setChangeId(changeId); resultItem.setChangeId(changeId);
//设置当前项调整的最终金额 //设置当前项调整的最终金额
for (TbsBudgetLogWithAmount withAmount : budgetLogWithAmountList) { for (TbsBudgetLogWithAmount withAmount : budgetLogWithAmountList) {
if(withAmount.getId().equals(scheduleItemBudget.getScheduleItemId())){ if(withAmount.getId().equals(scheduleItemBudget.getId())){
resultItem.setBudgetAmount(withAmount.getAmt()); resultItem.setBudgetAmount(withAmount.getAmt());
break; break;
} }

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

@ -172,7 +172,7 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
budgetConditionService.remove(lqw); budgetConditionService.remove(lqw);
}else { }else {
budget = CopierUtil.copy(budgetBo,new TbsBudget()); budget = CopierUtil.copy(budgetBo,new TbsBudget());
budget.setBudgetNumber(CodeGenUtil.generate(CodeGenUtil.SourceKey.Budget)); budget.setBudgetNumber("BM"+CodeGenUtil.generate(CodeGenUtil.SourceKey.Budget));
} }
List<Long> skuIds = budgetBo.getSkuIds(); List<Long> skuIds = budgetBo.getSkuIds();
List<Long> spuIds = budgetBo.getSpuIds(); List<Long> spuIds = budgetBo.getSpuIds();

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

@ -280,7 +280,7 @@ public class VtbVerificationApplication {
//释放费用 //释放费用
boolean isRelease = affairCommit.getReleaseFlag()!=null&&affairCommit.getReleaseFlag().equals(1); boolean isRelease = affairCommit.getReleaseFlag()!=null&&affairCommit.getReleaseFlag().equals(1);
if( isRelease &&(isFinish||isStop)){ if( isRelease &&(isFinish||isStop)){
this.vtbVerificationService.release(verification.getActivityId()); this.vtbVerificationService.release(verification.getActivityId(),false);
} }
if(isNext){ if(isNext){
//判断是否直接跳过审批的申请 //判断是否直接跳过审批的申请

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

@ -33,7 +33,7 @@ public interface VtbVerificationService extends IService<VtbVerification> {
* 释放活动费用 * 释放活动费用
* @param activityId * @param activityId
*/ */
void release(Long activityId); void release(Long activityId,Boolean throwEx);
/** /**
* 冻结 * 冻结

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

@ -158,6 +158,8 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
activity.setUsedAmount(finalAmt); activity.setUsedAmount(finalAmt);
if(finalAmt.compareTo(activity.getTotalAmount())==0) { if(finalAmt.compareTo(activity.getTotalAmount())==0) {
activity.setActivityState(TbsActivityState.STATE_1_Finished); activity.setActivityState(TbsActivityState.STATE_1_Finished);
activity.setFinishedFlag(1);
activity.setFinishedTime(LocalDateTime.now());
} }
activityService.updateById(activity); activityService.updateById(activity);
@ -413,10 +415,13 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void release(Long activityId) { public void release(Long activityId,Boolean throwEx) {
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
TbsActivity activity = activityService.getById(activityId); TbsActivity activity = activityService.getById(activityId);
if(!activity.getActivityState().equals(TbsActivityState.STATE_0_Todo)){ if(!activity.getActivityState().equals(TbsActivityState.STATE_0_Todo)){
if(!throwEx){
return;
}
Assert.throwEx("活动状态非待核销状态,操作失败"); Assert.throwEx("活动状态非待核销状态,操作失败");
} }
if(activity.getCancelFlag().equals(1)){ if(activity.getCancelFlag().equals(1)){
@ -515,7 +520,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
activity.setActivityState(TbsActivityState.STATE_1_Baning); activity.setActivityState(TbsActivityState.STATE_1_Baning);
}else { }else {
//解冻 //解冻
activity.setReopenFlag(0); activity.setReopenFlag(1);
if(this.checkCommitting(dbAct.getId())){ if(this.checkCommitting(dbAct.getId())){
activity.setActivityState(TbsActivityState.STATE_1_Checking); activity.setActivityState(TbsActivityState.STATE_1_Checking);
}else { }else {

11
src/main/java/com/qs/serve/task/SysTask.java

@ -34,4 +34,15 @@ public class SysTask {
taskUserController.test(); taskUserController.test();
} }
/**
* 同步离职
*/
@Scheduled(cron="0 0 2 * * ?")
public void task2(){
AuthContextUtils.setTenant("001");
taskUserController.doLeave();
}
} }

28
src/main/java/com/qs/serve/task/controller/TaskUserController.java

@ -5,7 +5,9 @@ import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.JsonUtil; import com.qs.serve.common.util.JsonUtil;
import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService; import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.entity.SysUserLeave;
import com.qs.serve.modules.sys.entity.dto.SyUser; import com.qs.serve.modules.sys.entity.dto.SyUser;
import com.qs.serve.modules.sys.service.SysUserLeaveService;
import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst; import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.wx.service.WxUserService; import com.qs.serve.modules.wx.service.WxUserService;
@ -17,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -35,6 +38,31 @@ public class TaskUserController {
SeeYonRequestBaseService seeYonRequestBaseService; SeeYonRequestBaseService seeYonRequestBaseService;
SysUserService sysUserService; SysUserService sysUserService;
SysUserLeaveService sysUserLeaveService;
public R<?> doLeave(){
LambdaQueryWrapper<SysUserLeave> lqw = new LambdaQueryWrapper<>();
lqw.select(SysUserLeave::getUserId,SysUserLeave::getId);
lqw.le(SysUserLeave::getLeaveEffectDate, LocalDate.now());
lqw.eq(SysUserLeave::getLeaveStatus,0);
List<SysUserLeave> sysUserLeaves = sysUserLeaveService.list(lqw);
if(sysUserLeaves.size()<1){
return null;
}
for (SysUserLeave userLeaf : sysUserLeaves) {
userLeaf.setLeaveStatus(1);
}
sysUserLeaveService.updateBatchById(sysUserLeaves);
List<String> userIds = sysUserLeaves.stream().map(a->a.getUserId()).collect(Collectors.toList());
LambdaQueryWrapper<SysUser> updLqw = new LambdaQueryWrapper<>();
updLqw.in(SysUser::getId,userIds);
SysUser sysUser = new SysUser();
sysUser.setServingState(0);
sysUser.setServingLeaveDate(LocalDate.now());
sysUserService.update(sysUser,updLqw);
return R.ok();
}
/** /**
* 同步致远的用户到CRM * 同步致远的用户到CRM

40
src/main/resources/mapper/exl/ExlTableConfMapper.xml

@ -30,30 +30,50 @@
exl_table_conf.`create_by`, exl_table_conf.`create_by`,
exl_table_conf.`update_by`, exl_table_conf.`update_by`,
exl_table_conf.`del_flag` </sql> exl_table_conf.`del_flag` </sql>
<select id="listData" resultType="java.util.Map">
select * from ${tableName}
<sql id="exlBaseWhere">
<where> <where>
<if test="query.leList!=null and query.leList.size > 0"> <if test="query.leList!=null and query.leList.size > 0">
<foreach collection="query.leList" item ="item" index="i" open="(" close=")" separator=","> and
and ${item.column} &lt;= #{item.value} <foreach collection="query.leList" item ="item" index="i" separator="and">
${item.column} &lt;= #{item.value}
</foreach> </foreach>
</if> </if>
<if test="query.geList!=null and query.geList.size > 0"> <if test="query.geList!=null and query.geList.size > 0">
<foreach collection="query.geList" item ="item" index="i" open="(" close=")" separator=","> and
and ${item.column} &gt;= #{item.value} <foreach collection="query.geList" item ="item" index="i" separator="and">
${item.column} &gt;= #{item.value}
</foreach> </foreach>
</if> </if>
<if test="query.eqList!=null and query.eqList.size > 0"> <if test="query.eqList!=null and query.eqList.size > 0">
<foreach collection="query.eqList" item ="item" index="i" open="(" close=")" separator=","> and
and ${item.column} = #{item.value} <foreach collection="query.eqList" item ="item" index="i" separator="and">
${item.column} = #{item.value}
</foreach> </foreach>
</if> </if>
<if test="query.likeList!=null and query.likeList.size > 0"> <if test="query.likeList!=null and query.likeList.size > 0">
<foreach collection="query.likeList" item ="item" index="i" open="(" close=")" separator=","> and
and ${item.column} like concat('%', #{item.value} ,'%') <foreach collection="query.likeList" item ="item" index="i" separator="and">
${item.column} like concat('%', #{item.value} ,'%')
</foreach> </foreach>
</if> </if>
</where> </where>
</sql>
<select id="listData" resultType="java.util.Map">
select * from ${tableName}
<include refid="exlBaseWhere"></include>
</select>
<select id="countData" resultType="java.lang.Long">
select count(*) from ${tableName}
<include refid="exlBaseWhere"></include>
</select>
<select id="pageData" resultType="java.util.Map">
select * from ${tableName}
<include refid="exlBaseWhere"></include>
limit #{query.startRow},#{query.pageSize} limit #{query.startRow},#{query.pageSize}
</select> </select>

Loading…
Cancel
Save