Browse Source

匹配规则异常修复;人员离职定时任务;

v1.0
Yen 2 years ago
parent
commit
ac0ffa9077
  1. 6
      pom.xml
  2. 42
      src/main/java/com/qs/serve/modules/bir/entity/BirActivityCenterGoods.java
  3. 3
      src/main/java/com/qs/serve/modules/exl/common/ExlConst.java
  4. 6
      src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java
  5. 30
      src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java
  6. 21
      src/main/java/com/qs/serve/modules/exl/entity/dto/ExlBatchSaveBo.java
  7. 3
      src/main/java/com/qs/serve/modules/exl/mapper/ExlTableConfMapper.java
  8. 31
      src/main/resources/mapper/exl/ExlTableConfMapper.xml

6
pom.xml

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

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

30
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.entity.ExlColumnConf;
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.ExlQueryFieldDto;
import com.qs.serve.modules.exl.entity.dto.ExlTableBo;
@ -55,8 +56,10 @@ public class ExlTableDataController {
* 翻页查询
* @return
*/
@GetMapping("/page/{tableConfigId}")
public R<?> page(@PathVariable("tableConfigId") Long tableConfigId,@RequestParam Map<String,String> map){
@GetMapping("/page")
public R<?> page(@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
@ -105,17 +108,32 @@ public class ExlTableDataController {
queryMap.put("eqList",eq_conditions);
queryMap.put("likeList",like_conditions);
String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName();
return R.ok(exlTableConfMapper.listData(targetTableName,queryMap));
Long count = exlTableConfMapper.countData(targetTableName,queryMap);
PageVo vo = new PageVo();
vo.initPageByTotal(count);
if(count>0){
List<Map<String,Object>> list = exlTableConfMapper.listData(targetTableName,queryMap);
vo.setList(list);
}else {
vo.setList(new ArrayList());
}
return R.ok(vo);
}
public R<?> export(){
return null;
}
/**
* 新增
* @param param
* @param saveBo
* @return
*/
@PostMapping("/batchSave/{tableConfigId}")
public R<?> batchSave(@PathVariable Long tableConfigId, @RequestBody List<Object> param){
@PostMapping("/batchSave")
public R<?> batchSave( @RequestBody ExlBatchSaveBo saveBo){
List<Object> param = saveBo.getParam();
String tableConfigId = saveBo.getTb_config_cnf_id();
// table
ExlTableConf tableConf = exlTableConfService.getById(tableConfigId);
// columns

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;
}

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

@ -16,6 +16,9 @@ import java.util.Map;
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>> listData(@Param("tableName") String tableName,@Param("query")Map<String,Object> query);

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

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

Loading…
Cancel
Save